- Fix: Bumped package version to 2.0.1. The 2.0.0 package published on nuget.org was built before
EmbeddedObjectConverterwas added, so the published package and source had silently diverged under the same version number. This release re-publishes with the version number unambiguously matching the source.
- Breaking: Replaced Newtonsoft.Json with System.Text.Json across the package. The
Newtonsoft.Jsonpackage reference is removed; addSystem.Text.Json(or rely on the BCL on supported runtimes) as needed in consuming projects. - Breaking:
GetVariantAliases(JObject, string)/GetVariantAliases(JArray, string)→GetVariantAliases(JsonObject, string)/GetVariantAliases(JsonArray, string). - Breaking:
GetVariantMetadataTags(JObject, string)/GetVariantMetadataTags(JArray, string)→GetVariantMetadataTags(JsonObject, string)/GetVariantMetadataTags(JsonArray, string). - Breaking:
GetDataCsvariantsAttribute(JObject/JArray, string)is deprecated and now maps toJsonObject/JsonArrayoverloads. - Breaking:
Node.attrsvalues are nowSystem.Text.Json.JsonElementinstead ofNewtonsoft.Json.Linq.JToken— updatenode.attrs["src"].Value<string>()tonode.attrs["src"].GetString(). - Breaking: Model classes use
[JsonPropertyName]instead of[JsonProperty]. - Breaking: Requires .NET 10 or later (previously netstandard2.0 / net6.0).
- New: Multi-region endpoint resolution via
Endpoint.GetContentstackEndpoint(region, service)— resolves Contentstack service URLs for all 7 supported regions (NA, EU, AU, Azure-NA, Azure-EU, GCP-NA, GCP-EU) and 18 service keys (contentDelivery, contentManagement, auth, graphqlDelivery, preview, images, assets, automate, launch, developerHub, brandKit, genAI, personalizeManagement, personalizeEdge, composableStudio, assetManagement, and more). - New:
Utils.GetContentstackEndpoint(region, service)proxy — access endpoint resolution directly from theUtilsclass without importingContentstack.Utils.Endpoints. - New:
omitHttpsflag strips thehttps://scheme from returned URLs — pass directly to SDK host configuration (e.g.new ContentstackOptions { Host = Endpoint.GetContentstackEndpoint("eu", "contentDelivery", omitHttps: true) }). - New: Case-insensitive region alias support —
"us","NA","AWS-NA","azure_na"all resolve correctly to the same region. - New:
regions.jsonregistry auto-downloaded fromartifacts.contentstack.comon first use and cached on disk — no setup required. The SDK self-heals if the file is missing. - New:
Scripts/refresh-region.pybundled inside the NuGet package — automatically placed in your project'sScripts/folder on firstdotnet build. Runpython3 Scripts/refresh-region.py(Mac/Linux) orpython Scripts/refresh-region.py(Windows) anytime to pull the latest regions from CDN.
- See Migrating from Newtonsoft.Json to System.Text.Json for the full upgrade path from v1.x.
- New: Multi-region endpoint resolution via
Endpoint.GetContentstackEndpoint(region, service)— resolves Contentstack service URLs for all 7 supported regions (NA, EU, AU, Azure-NA, Azure-EU, GCP-NA, GCP-EU) and 18 service keys (contentDelivery, contentManagement, auth, graphqlDelivery, preview, images, assets, automate, launch, developerHub, brandKit, genAI, personalizeManagement, personalizeEdge, composableStudio, assetManagement, and more). - New:
Utils.GetContentstackEndpoint(region, service)proxy — access endpoint resolution directly from theUtilsclass without importingContentstack.Utils.Endpoints. - New:
omitHttpsflag strips thehttps://scheme from returned URLs — pass directly to SDK host configuration (e.g.new ContentstackOptions { Host = Endpoint.GetContentstackEndpoint("eu", "contentDelivery", omitHttps: true) }). - New: Case-insensitive region alias support —
"us","NA","AWS-NA","azure_na"all resolve correctly to the same region. - New:
regions.jsonregistry auto-downloaded fromartifacts.contentstack.comon first use and cached on disk — no setup required. The SDK self-heals if the file is missing. - New:
Scripts/refresh-region.pybundled inside the NuGet package — automatically placed in your project'sScripts/folder on firstdotnet build. Runpython3 Scripts/refresh-region.py(Mac/Linux) orpython Scripts/refresh-region.py(Windows) anytime to pull the latest regions from CDN.
- Breaking: Replaced Newtonsoft.Json with System.Text.Json across the package. The
Newtonsoft.Jsonpackage reference is removed; addSystem.Text.Json(or rely on the BCL on supported runtimes) as needed in consuming projects. - Breaking: Variant metadata APIs that previously took
JObject/JArraynow useSystem.Text.Json.Nodes.JsonObjectandJsonArray(GetVariantAliases,GetVariantMetadataTags, and obsoleteGetDataCsvariantsAttributeoverloads). - JSON serialization uses the same model attributes with
System.Text.Json.Serialization(JsonPropertyName,JsonConverter), including custom converters for RTE/GQL-shaped JSON and path-mapped embedded models (PathMappedJsonConverter<T>). - RTE JSON deserialization tolerates trailing commas when using the documented test/helper patterns (
AllowTrailingCommas); attribute dictionaries may surfaceJsonElementvalues instead of boxed strings—use helpers or unwrap explicitly if you accessNode.attrsdirectly. - Internal:
LangVersionset to latest for multi-target builds; utilities normalize attribute values where the HTML pipeline expects strings.
- Added
EmbeddedObjectas a concrete implementation ofIEmbeddedObject, covering bothIEmbeddedEntryandIEmbeddedAsset. - Added
EmbeddedObjectConverterto resolveIEmbeddedObjectduring JSON deserialization without requiring changes in consumer code. - Custom fields on embedded entries and assets are preserved via
[JsonExtensionData].
- Added Live Preview editable tags support through
addEditableTagsandaddTags. - Added variant-aware CSLP tag generation using
_applied_variants/system.applied_variants. - Added nested fields, arrays, references, and null-safe editable tag generation.
- Added configurable locale casing through
AddEditableTagsOptions.UseLowerCaseLocale. - Added unit tests for Live Preview editable tags.
- Added
GetVariantMetadataTags(JObject, string)andGetVariantMetadataTags(JArray, string)as the canonical API for building thedata-csvariantspayload (same behavior as the previous helpers).
- Added
GetVariantAliasesandGetDataCsvariantsAttributefor variant alias extraction anddata-csvariantsserialization; Invalid arguments throwArgumentException.
- Improved error messages
- Used 'title' and 'target' in a tags
- Used Class Name and Id property in JsonToHTML converter
- Classname and ID property support in text node
- Editable tags added
- Style attributes supported in converted HTML.
- Fragment tag support added
- Json RTE content to Html Support added.
- Introduce ContentStack Utils SDK for DOTNET.