- Entry Variants Branch Support
- Added support for passing an optional
branchparameter to the.Variant()method in bothEntryandQueryclasses. - If the branch parameter is null or empty, it automatically falls back to the Stack's configured branch or "main".
- Added comprehensive unit and integration tests for Entry and Query variant branch logic.
- Added support for passing an optional
- Removed
Newtonsoft.Jsondependency; all JSON serialisation now usesSystem.Text.Json(BCL) Entry.ToJson(),Query.Count(),AssetLibrary.Count()now returnJsonObjectinstead ofJObjectAssetLibrary.Query(JsonObject)— parameter type changed fromJObjecttoJsonObjectContentType.Fetch(),GlobalField.Fetch(),GlobalFieldQuery.Find()now returnJsonObjectinstead ofJObjectSerializerSettings→SerializerOptions- Model classes use
[JsonPropertyName]instead of[JsonProperty] - Requires .NET 10 or later
- Updated
contentstack.utilsdependency to2.0.0(final, non-beta)
- Added
Endpointclass for dynamic region-to-URL resolution via CDN-backedregions.json - Added
ContentstackRegionMapto mapContentstackRegionenum to registry region IDs - Added
GCP_EUregion support - Added
ApiErrorBodyParserfor consistent API error envelope parsing - Added
JsonNodeConversionandJsonObjectMergeutilities to replace Newtonsoft equivalents - Added
ContentstackJsonDefaults— sharedJsonSerializerOptionsused across all custom converters
Config.BaseUrlnow resolves hosts from the regions registry; removed hardcodedregionCode()andHostURL- Replaced
Console.WriteLinewithDebug.WriteLineinContentstackConvertto suppress parse warnings from application stdout
- Replaced
refresh-region.cswithrefresh-region.py— avoids MSBuild compiling the script as source - Added
build/contentstack.csharp.targetsto auto-deliverrefresh-region.pyto consumer projects on first build - Added
Assets/regions.jsonto.gitignore - Added
EndpointTest.cs - Updated .NET version in SCA scan CI from
7.0.xto10.0.x
- See Migrating from Newtonsoft.Json to System.Text.Json for the full upgrade path from v2.x.
- Added
Endpointclass for dynamic region-to-URL resolution via CDN-backedregions.json - Added
ContentstackRegionMapto mapContentstackRegionenum to registry region IDs - Added
GCP_EUregion support
Config.BaseUrlnow resolves hosts from the regions registry; removed hardcodedregionCode()andHostURL
- Replaced
refresh-region.cswithrefresh-region.py— avoids MSBuild compiling the script as source - Added
build/contentstack.csharp.targetsto auto-deliverrefresh-region.pyto consumer projects on first build - Added
Assets/regions.jsonto.gitignore - Added
EndpointTest.cs
- Removed
Newtonsoft.Jsondependency; all JSON serialisation now usesSystem.Text.Json(BCL)AssetJsonConverterandEntryJsonConverternow implementSystem.Text.Json.Serialization.JsonConverter<T>ContentstackCollection<T>no longer carries[JsonObject]; directJsonSerializerusage on this type is not supported
- Updated
contentstack.utilsfrom1.0.6to2.0.0-beta.1(major version bump)
- Migrated all internal JSON handling to
System.Text.Json - Added
ApiErrorBodyParserfor consistent API error envelope parsing - Added
JsonNodeConversionandJsonObjectMergeutilities to replace Newtonsoft equivalents - Added
ContentstackJsonDefaults— sharedJsonSerializerOptionsused across all custom converters
- Replaced
Console.WriteLinewithDebug.WriteLineinContentstackConvertto suppress parse warnings from application stdout
- Updated .NET version in SCA scan CI from
7.0.xto10.0.x
- Register
EmbeddedObjectConverterinContentstackClientconstructor so.includeEmbeddedItems().Fetch<T>()deserializes_embedded_itemscorrectly when the model implementsIEntryEmbedable. No changes required in consumer code. - Upgraded utils dependency from
contentstack.utils 1.3.0tocontentstack.utils 1.4.0which ships the concreteEmbeddedObjectclass andEmbeddedObjectConverter.
- Timeline Preview Support
- Added
ReleaseIdandPreviewTimestampproperties toLivePreviewConfigfor temporal content queries - Enhanced
LivePreviewQueryAsync()to supportpreview_timestampandrelease_idparameters - Implemented Timeline Preview API headers (
preview_timestamp,release_id) in preview requests - Added intelligent cache fingerprinting system to prevent stale timeline data
- New
IsCachedPreviewForCurrentQuery()method for Timeline-aware cache validation - Fork isolation now maintains independent Timeline contexts for concurrent operations
- Timeline Preview works seamlessly with complex nested content types and group fields
- Added
- Integration Test Coverage Enhancement
- Added comprehensive Timeline Preview integration test suites (70+ test cases)
- New test categories:
TimelinePreviewApiTests,TimelineAuthenticationTests,TimelineCacheValidationTests - Enhanced performance testing with Timeline-specific benchmarking
- Added authentication flow validation for Management Token vs Preview Token scenarios
- Comprehensive error handling tests for Timeline Preview edge cases
- CDA / – AssetFields support
- Added
AssetFields(params string[] fields)to request specific asset-related metadata via the CDAasset_fields[]query parameter - Implemented on: Entry (single entry fetch), Query (entries find), Asset (single asset fetch), AssetLibrary (assets find)
- Valid parameters:
user_defined_fields,embedded_metadata,ai_generated_metadata,visual_markups - Method is chainable; when called with no arguments, the query parameter is not set
- Added
- CDA / – Asset localisation support
- Added
SetLocale(string locale)on Asset for single-asset fetch by locale (e.g.stack.Asset(uid).SetLocale("en-us").Fetch()) - Added
Titleproperty on Asset for localised title in API response - AssetLibrary
SetLocalecontinues to support listing assets by locale
- Added
- Error Handling
- Fixed error message extraction from Contentstack API responses across all model classes
- HTTP request errors now properly extract and display actual API error messages instead of generic exception messages
- Improved error handling in Query, Entry, Asset, GlobalField, ContentType, AssetLibrary, GlobalFieldQuery, and Taxonomy classes
- Users will now see meaningful error messages (e.g., "Invalid API key", "Entry not found") instead of generic "Exception of type 'ContentstackException' was thrown" messages
- ErrorCode, StatusCode, and Errors dictionary are now properly populated from API responses
- Improved Error messages
- Taxonomy
- Fixed NullReferenceExceptions
- Fixed InvalidCastException in
GetContentstackErrorwhen exception is not a WebException - Fixed JsonReaderException in
GetContentstackErrorwhen response is not valid JSON - All exceptions now properly throw TaxonomyException (extends ContentstackException) with descriptive error messages
- AssetLibrary
- Added new
Wheremethod for simple key-value pair queries - Enhanced
Querymethod to support multiple calls with intelligent merging
- Added new
- Improved query handling with better null safety and error handling
- Added Support For AWS-AU Region
- Fetch Assets using tags
- Fixed token issue for Live Preview
- Fixed Timeline issue of Entry not getting updated
- Added Support for Global Fields
- Added Support for Timeline Preview
- Reset
LivePreviewConfigto prevent overwriting fetched data with live preview data during regular fetch calls.
- Remove updateLPContent call to resolve incorrect display of unsaved changes
- Added support to access different properties of asset
- Added support for fetch asset by Query
- Live Preview 2.0 Implementation
- Removed exclusion of env when adding headers
- Taxonomy class added
- Added Early Access Header Support
- GCP_NA region support added
- AddParam method added for Entry, Asset, AssetLibrary and Query
- Proxy support added
- Timeout support added
- Region support added
- IncludeMetadata support added
- Live preview Query issue
- Entry
- IncludeOnlyReference function added
- IncludeExceptReference function added
- Query
- IncludeOnlyReference function added
- IncludeExceptReference function added
- Live preview feature support added
- Entry
- IncludeEmbeddedItems function added
- Query
- IncludeEmbeddedItems function added
- AssetLibrary
- IncludeFallback function added
- SetLocale function added
- Asset
- IncludeFallback function added
- SetLocale function added
- Entry
- IncludeFallback function added
- Query
- IncludeFallback function added
- AssetLibrary
- Count function added
- Limit, Skip functionality added
- Only, Except function added
- Query
- Count function added
- CSJsonConverter
- Added class CSJsonConverter to allow autoloading of converters
- Stack
- Sync function to allow multiple SyncType
- Entry
- GetContentType exception resolved
- Stack
- AccessToken deprecated with support to add DeliveryToken
- GetEnvironment issue resolved
- GetDeleted at Method addedAssetLibrary
- SyncType issue resolved
- Query
- update function 'IncludeOwner'
- Entry
- update function 'IncludeOwner'
- Stack
- update function 'GetContentType:'
- ContentType
- update function 'Fetch:'
- Config
- added property attribute 'region'
- Query
- added method 'ReferenceIn'
- added method 'ReferenceNotIn'
- Query
- added method 'includeReferenceContentTypeUid'
- Entry
- added method 'includeReferenceContentTypeUid'
-
Query
- added method 'SetLocale'
-
Entry
- added method 'SetLocale'
-
Query
- update method 'Fetch'
- update method 'FindOne'
-
Entry
- update method 'Find'
-
Query
- deprecated method 'SetLanguage'
-
Entry
- deprecated method 'SetLanguage'
-
ContentstackClient
- added method 'GetContentTypes'
- added method 'SyncRecursive'
- added method 'SyncPaginationToken'
- added method 'SyncToken'
-
CotentType
- added method 'Fetch'
Localization support for Query and Entry is added.
- Introduce Contentstack SDK for DOTNET.