Change language publish status
Describes how to work with RESTful operations for language versions in the Optimizely Service API.
From Service API 5.3.0, the individual status of a language version can be controlled via the model property PublishStatuses
, which is a list of PublishStatus
.
Example of PublishStatuses
, which sets the individual publish statuses for “en” and “sv” versions.
PublishStatuses = new List<PublishStatus>()
{
new PublishStatus()
{
IsPublished = true,
Language = "en",
StartPublish = now.AddDays(-1),
StopPublish = now.AddYears(1)
},
new PublishStatus()
{
IsPublished = false,
Language = "sv",
StartPublish = now.AddDays(-1),
StopPublish = now.AddYears(1)
}
}
The PublishStatuses
property can be used for nodes and entries.
new Entry
{
Code = "Code 3",
Catalog = "TESTROOTCATALOG",
EndDate = now.AddYears(1),
EntryType = "Variation",
InventoryStatus = "Enabled",
IsActive = true,
MetaClass = DefaultEntryMetaClassName,
Name = "Test",
StartDate = now.AddDays(-1),
MetaFields = new List<MetaFieldProperty>
{
new MetaFieldProperty
{
Name = "Description",
Type = MetaDataType.LongHtmlString.ToString(),
Data = new List<MetaFieldData>
{
new MetaFieldData
{
Language="en",
Value = "Description"
}
}
},
new MetaFieldProperty()
{
Name = "DisplayName",
Type = MetaDataType.ShortString.ToString(),
Data = new List<MetaFieldData>
{
new MetaFieldData()
{
Language="en",
Value = "DisplayName"
},
new MetaFieldData
{
Language="sv",
Value = "DisplayName in svenska"
}
}
},
new MetaFieldProperty
{
Name = AnotherMultiLanguageStringMetaFieldName,
Type = MetaDataType.ShortString.ToString(),
Data = new List<MetaFieldData>
{
new MetaFieldData
{
Language="EN",
Value = "Set with lang key EN for en"
},
new MetaFieldData
{
Language="Sv",
Value = "Set with lang key Sv for sv"
}
}
},
Variation = new VariationProperties
{
MaxQuantity = 100,
MinQuantity = 0,
TaxCategory = "",
Weight = 5.1,
},
Dimension = new DimensionProperties
{
Length = 50,
Height = 60,
Width = 70
},
PublishStatuses = new List<PublishStatus>()
{
new PublishStatus()
{
IsPublished = true,
Language = "en",
StartPublish = now.AddDays(-1),
StopPublish = now.AddYears(1)
},
new PublishStatus()
{
IsPublished = false,
Language = "sv",
StartPublish = now.AddDays(-2),
StopPublish = now.AddYears(2)
}
}
}
Example of a returned JSON.
{
"IsActive" : true,
"MetaFields" : [
{
"Data" : [
{
"Language" : "en",
"Value" : ""
},
{
"Language" : "sv",
"Value" : "Set with lang key Sv for sv"
}
],
"Name" : "AnotherMultilanguageString",
"Type" : "ShortString"
},
{
"Data" : [
{
"Language" : "en",
"Value" : "13.440000000"
},
{
"Language" : "sv",
"Value" : "15,230000000"
}
],
"Name" : "DecimalType",
"Type" : "Decimal"
},
{
"Data" : [
{
"Language" : "en",
"Value" : "Description"
},
{
"Language" : "sv",
"Value" : "Description"
}
],
"Name" : "Description",
"Type" : "LongString"
},
{
"Data" : [],
"Name" : "DictionaryMulti",
"Type" : "EnumMultiValue"
},
{
"Data" : [
{
"Language" : "en",
"Value" : ""
},
{
"Language" : "sv",
"Value" : ""
}
],
"Name" : "DictionarySingle",
"Type" : "DictionarySingleValue"
},
{
"Data" : [
{
"Language" : "en",
"Value" : "DisplayName"
},
{
"Language" : "sv",
"Value" : "DisplayName in svenska"
}
],
"Name" : "DisplayName",
"Type" : "ShortString"
},
{
"Data" : [
{
"Language" : "en",
"Value" : ""
},
{
"Language" : "sv",
"Value" : ""
}
],
"Name" : "IntegerMetaFieldName",
"Type" : "Int"
},
{
"Data" : [
{
"Language" : "en",
"Value" : "hello;world"
},
{
"Language" : "en",
"Value" : "hi;there"
},
{
"Language" : "sv",
"Value" : "hello;world"
},
{
"Language" : "sv",
"Value" : "hi;there"
}
],
"Name" : "AStringDictionaryMetaField",
"Type" : "StringDictionary"
},
{
"Data" : [ ],
"Name" : "_ExcludedCatalogEntryMarkets",
"Type" : "EnumMultiValue"
}
],
"SeoInformation" : [
{
"LanguageCode" : "en",
"Title" : null,
"Uri" : "Test-en.aspx",
"UriSegment" : "test",
"Description" : null,
"Keywords" : null
},
{
"LanguageCode" : "sv",
"Title" : null,
"Uri" : "Test-sv.aspx",
"UriSegment" : "test",
"Description" : null,
"Keywords" : null
}
],
"PublishStatuses" : [
{
"Language" : "en",
"IsPublished" : true,
"StartPublish" : "2018-11-14T10:24:00.257Z",
"StopPublish" : "2019-11-15T10:24:00.257Z"
},
{
"Language" : "sv",
"IsPublished" : false,
"StartPublish" : "2018-11-14T10:24:00.257Z",
"StopPublish" : "2019-11-15T10:24:00.257Z"
}
],
"Code" : "Code 3",
"Name" : "Test",
"StartDate" : "2018-11-14T10:24:00.257Z",
"EndDate" : "2019-11-15T10:24:00.257Z",
"MetaClass" : "DefaultMetadataClass",
"Catalog" : "TESTROOTCATALOG",
"Prices" : [],
"EntryType" : "Variation",
"ChildCatalogEntries" : [],
"InventoryStatus" : "Enabled",
"WarehouseInventories" : [],
"Associations" : [],
"Assets" : [],
"Nodes" : [],
"Variation" : {
"MinQuantity" : 0.000000000,
"MaxQuantity" : 100.000000000,
"Weight" : 5.1,
"TaxCategory" : ""
},
"Dimension" : {
"Length" : 50.0,
"Height" : 60.0,
"Width" : 70.0
}
}
You can use PublishStatuses
in both POST (create) and PUT (update) operations. It will be returned in GET operations.
For POST and PUT, if PublishStatuses
is null, it is skipped. You also can update the statuses of some, but not all, languages.
Note
- If
IsActive
is set to false, it overrides theIsPublished
status of all languages.- You cannot “unpublish” the master language version. There must be always a published, master language version.
- You cannot "unpublish" a published version. If you have a draft version in a non-master language, set
IsPublished
to false for that language to keep in draft. If it is published, setting IsPublished to false has no effect. UseStartPublish
andStopPublish
to expire the content instead.- While you can send a list with duplicated languages, only the first matching publish status for a language is used.
StartPublish
andStopPublish
of a master language overrideStartDate
andEndDate
.
Updated about 1 year ago