Contentstack Delivery .Net SDK

.NET SDK for Contentstack's Content Delivery API

Contentstack is a headless CMS with an API-first approach. It is a CMS that developers can use to build powerful cross-platform applications in their favorite languages. Build your application frontend, and Contentstack will take care of the rest.

For more information, you can check out the GitHub page of our .NET Delivery SDK.

Prerequisites

To get started with C#, you will need:

  • .Net platform
  • IDE (Visual Studio)
  • NuGet.

SDK installation and setup

The .Net SDK provided by contentstack.io is available for Xamarin, Windows Phone and legacy .Net applications. You can integrate contentstack with your application by following these steps.

Open the terminal and install the contentstack module via 'Package Manager' command

PM> Install-Package contentstack.csharp

And via ‘.Net CLI’

dotnet add package contentstack.csharp

To use the module in your application, you need to first Add Namespace to your class

using Contentstack.Core; // ContentstackClient

using Contentstack.Core.Models; // Stack, Query, Entry, Asset, ContentType, ContentstackCollection

using Contentstack.Core.Configuration; // ContentstackOptions

Quickstart in 5 mins

Initialize SDK

You will need to specify the API key, Access token, and Environment Name of your stack to initialize the SDK:

// Initialize the Contentstack 
ContentstackClient client = new ContentstackClient("api_key", "delivery_token", "enviroment_name");

or:

ContentstackOptions options = new ContentstackOptions()
{
	ApiKey = "<api_key>",
	DeliveryToken = "<access_token>",
	Environment = "<environment>"
}
ContentstackClient client = new ContentstackClient(options);

Once you have initialized the SDK, you can start getting content in your app
For Setting other regions:

Refer the below code if you want to use the Europe, Australia, Azure North America, Azure Europe, GCP North America, or GCP Europe region.

ContentstackOptions options = new ContentstackOptions()
{
	ApiKey = "<api_key>",
	DeliveryToken = "<delivery_token>",
	Environment = "<environment>",
	Region = ContentstackRegion.EU
}
ContentstackClient client = new ContentstackClient(options);

Once you have initialized the SDK, you can start getting content in your app.

For Setting the Early Access Header:

Integrating EarlyAccess headers into the ContentstackOptions grants access to features included in the early access program.

ContentstackOptions options = new ContentstackOptions() {
    ApiKey = "<api_key>",
    DeliveryToken = "<delivery_token>",
    Environment = "<environment>",
    Branch = "<branch>"
    EarlyAccess = new string [] {"Taxonomy", "Teams", "Terms", "LivePreview"}
};

ContentstackClient client = new ContentstackClient(options);

Parameters:

NameTypeDescription
EarlyAccess (Optional)Array of StringsArray of header strings for early access features.

Basic Queries

Get a Single Entry

To retrieve a single entry from a content type, use the code snippet given below:

ContentstackClient client = new ContentstackClient("api_key", "delivery_token", "enviroment_name");

Entry entry = client.ContentType("product").Entry("entry_uid");

entry.Fetch<Product>().ContinueWith((t) => { 

    if (!t.IsFaulted) { 

        Console.WriteLine("entry:" + t.Result);  

    } 

});

Get Multiple Entries

To retrieve multiple entries of a particular content type, use the code snippet given below:

ContentstackClient client = new ContentstackClient("api_key", "delivery_token", "enviroment_name");

Query query = client.ContentType("product").Query(); 

query.Where("title", "welcome"); 

query.IncludeSchema(); 

query.IncludeCount(); 

query.ToJSON(); 

query.Find<Product>().ContinueWith((t) => { 

    if (!t.IsFaulted) { 

        ContentstackCollection<Product> result = t.Result; 

        Console.WriteLine("result" + result.items); 

    } 

});

Note By default, the limit for response details per request is 100, with the maximum limit set at 250.

Paginating Responses

In a single instance, theGet Multiple Entriesquery will retrieve only the first 100 itemsof the specified content type. You can paginate and retrieve the rest of the items in batches using theskipandlimit parameters in subsequent requests.

ContentstackClient client = new ContentstackClient("api_key", "delivery_token", "enviroment_name");
Query query = client.ContentType("blog").Query();
query.Skip(20);
query.Limit(20); 
query.Find<Blog>().ContinueWith((t) => { 
    if (!t.IsFaulted) { 
         ContentstackCollection<Blog> result = t.Result; 
         Console.WriteLine("result" + result); 
    } 
});

ContentstackOptions

Represents a set of options to configure a Stack.
NameTypeDescription
ApiKey (required)string

The api key used when communicating with the Contentstack API.

AccessToken string

The access token used when communicating with the Contentstack API.

DeliveryToken (required)string

The delivery token used when communicating with the Contentstack API.

Environment (required)string

The environment used when communicating with the Contentstack API.

Region ContentstackRegion

You can choose from seven regions namely, NA, EU, AU, Azure NA, Azure EU, GCP NA and GCP EU.

Host string

The Host used to set host url for the Contentstack API.

Version string

The Version number for the Contentstack API.

Branch string

The Branch used to set Branch for the Contentstack API.

LivePreview LivePreviewConfig

The Live preview configuration for the Contentstack API.

LivePreviewConfig

Configuration for enabled live preview to get live content data

NameTypeDescription
Enable bool

To enable live preview

Host string

Host for getting live preview content

PreviewToken string

Preview Token for the stack to get content

ContentstackRegion

Fields

 

NameDescription
EUTo specify the EU region.
USTo specify the US region.
AUTo specify the AU region.
AZURE_NATo specify the AZURE NA region
AZURE_EUTo specify the AZURE EU region
GCP_NATo specify the GCP NA region
GCP_EUTo specify the GCP EU region

 

ContentstackCollection

NameTypeDescription
Count int

The total number of items available.

Items IEnumerable<T>

The System.Collections.Generic.IEnumerable<T> of items to be serialized from the API response.

Limit int

The maximum number of items returned in this result.

Skip int

The number of items skipped in this resultset.

ContentstackException

The ContentstackError class is abstraction of general exception class.

NameTypeDescription
ErrorCode int

Contentstack error code.

ErrorMessage string

Contentstack error message

Errors Dictionary<string, object>

Set of errors in detail.

SyncStack

Represents the result of a sync operation.
NameTypeDescription
Items IEnumerable<dynamic>

Readonly property contains all the Contents

PaginationToken string

Readonly property for paginating sync

SyncToken string
Readonly property to delta sync.
TotalCount int

Readonly property to check totalCount

SyncType

The different types of items you can request a sync for.

Fields

Name

Description

All

Only published entries and assets

AssetDeleted

Only deleted assets

AssetPublished

Only published assets

AssetUnpublished

Only unpublished assets

ContentTypeDeleted

Only deleted Content-Types entries

Default

This will bring all published entries and published assets

EntryDeleted

Only deleted entries

EntryPublished

Only published entries

EntryUnpublished

Only unpublished entries

ContentstackClient

Initialize an instance of ‘Stack’
NameTypeDescription
SerializerSettings JsonSerializerSettings

Gets or sets the settings that should be used for deserialization.

ContentstackClient

Initializes an instance of the ContentstackClient class.

NameTypeDescription
apiKeystring

API Key of your stack on Contentstack.

deliveryTokenstring

Delivery token of your stack on Contentstack.

environmentstring

Environment from where you want to fetch content.

hoststring

Specifies the base URL for the Contentstack API.

Default: cdn.contentstack.io

regionContentstackRegion

Specifies the database region for your stack. You can choose from the following: NA, EU, AU, Azure NA, Azure EU, and GCP NA.

Default: ContentstackRegion.US

versionstring

Specifies the version of the Contentstack API to use.

Default: v3

ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");
NameTypeDescription
optionsContentstackOptions

used to get stack details via class ContentstackOptions to create client.

var options = new ContentstackOptions()

 {

       ApiKey = "api_key",

       DeliveryToken = "delivery_token"

       Environment = "environment"

 }

ContentstackClient stack = new ContentstackClient(options);

GetVersion

Get url base version

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

String url = stack.GetVersion();

Asset

Represents a Asset. Creates Asset Instance.

NameTypeDescription
Uidstring

This is Asset Uid of an Asset.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Asset asset = stack.Asset("asset_uid");

AssetLibrary

Represents a AssetLibrary. Creates AssetLibrary Instance.
using Contentstack.Core; 

using Contentstack.Core.Models;

ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

AssetLibrary assetLibrary = stack.AssetLibrary();

ContentType

Represents a ContentType. Creates ContenntType Instance.
NameTypeDescription
contentTypeUidstring
ContentType UID.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentType contentType = stack.ContentType("content_type_uid");

GetApplicationKey

Get stack application key

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

String apiKey = stack.GetApplicationKey();

GetAccessToken

Get stack access token

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

String accessToken = stack.GetAccessToken();

GetEnvironment

Get stack environment

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

String environment = stack.GetEnvironment();

GetContentTypes

This method returns comprehensive information of all the content types of a particular stack in your account.

NameTypeDescription
paramDictionary<string, object>

dictionary of additional parameter

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");


var param = new Dictionary<string, object>();

param.Add("include_global_field_schema",true);

param.Add("limit", 10);

param.Add("skip", 10);

param.Add("include_count", "true");

var result = await stack.GetContentTypes(param);

LivePreviewQuery

To add live preview Query for Contentstack preview call

NameTypeDescription
queryDictionary<string, string>

Query parameter containing hash and content type UID

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

await client.LivePreviewQueryAsync(new System.Collections.Generic.Dictionary<string, string>()

{

	{"live_preview" , "live_preview_hash_from_url_query" },

	{"content_type_uid", "content_type_uid<span>_from_url_query</span>" },

	{"entry_uid", "entry_uid<span>_from_url_query</span>" }

});

RemoveHeader

Remove header key.

NameTypeDescription
keystring

key to be remove from header

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

stack.RemoveHeader("custom_header_key")

SyncToken

Syncs the token.

NameTypeDescription
SyncTokenstring

Sync token.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

SyncStack result = await client.SyncToken("sync_token");

SyncRecursive

Syncs the recursive language.

NameTypeDescription
Localestring

Locale

SyncTypeSyncType

Sync type.

ContentTypeUidstring

Content type uid.

StartFromDateTime

Start from.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

SyncStack result = await client.SyncRecursive();

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

SyncStack result = await client.SyncRecursive(SyncType: SyncType.AssetPublished);

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

SyncStack result = await client.SyncRecursive(ContentTypeUid: "source");

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

SyncStack result = await client.SyncRecursive(StartFrom:DateTime.Now);

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

SyncStack result = await client.SyncRecursive(SyncType: SyncType.EntryPublished, ContentTypeUid: "source");

SyncPaginationToken

Syncs the pagination token.

NameTypeDescription
paginationTokenstring

Pagination token.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

SyncStack result = await stack.SyncPaginationTokenn("pagination_token");

Asset

Creates an instance of Assets. Use a UID to fetch a specific asset, or use the AssetLibrary class to retrieve all assets.

NameTypeDescription
Uid (required)string

Asset uid

Url string

Asset URL

Description string

Asset Description

FileName string

File name for Asset

FileSize string

File size of asset

Tags object[]

Tags assign to asset

SetHeader

To set headers for Contentstack rest calls.

NameTypeDescription
keystring

header name.

valuestring

header value against given header name.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Asset asset = await stack.Asset("asset_uid").SetHeader("custom_key", "custom_value").Fetch();

RemoveHeader

Remove header key.

NameTypeDescription
keystring

key to be remove from header

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Asset asset = await stack.Asset("asset_uid").RemoveHeader("header_to_remove").Fetch();

GetCreateAt

Get created at time.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Asset asset = await stack.Asset("asset_uid").Fetch();

DateTime date = asset.GetCreateAt();

GetCreatedBy

Get created by user uid

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Asset asset = await stack.Asset("asset_uid").Fetch();

string createBy = asset.GetCreatedBy();

GetUpdateAt

Get updated at time.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Asset asset = await stack.Asset("asset_uid").Fetch();

DateTime date = asset.GetUpdateAt();

GetUpdatedBy

Get Update by user uid

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Asset asset = await stack.Asset("asset_uid").Fetch();

string createBy = asset.GetUpdatedBy();

GetDeleteAt

Get deleted at time.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Asset asset = await stack.Asset("asset_uid").Fetch();

DateTime date = asset.GetDeleteAt();

GetDeletedBy

Get Deleted by user uid

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Asset asset = await stack.Asset("asset_uid").fetch();

string createBy = asset.GetDeletedBy();

IncludeBranch

Include branch for publish content.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Asset asset = await stack.Asset("asset_uid").IncludeBranch().Fetch();

IncludeFallback

Include fallback locale publish content, if specified locale content is not publish.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Asset asset = await stack.Asset("asset_uid").IncludeFallback().Fetch();

IncludeMetadata

The includeMetadata method will add the meta information to the response.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Asset asset = await stack.Asset("asset_uid").IncludeMetadata().Fetch();

Fetch

fetches the latest version of a specific asset of a particular stack.

using Contentstack.Core; 

using Contentstack.Core.Models;

ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Asset asset = await stack.Asset("asset_uid").Fetch();

AssetFields

The assetFields method specifies which asset-related fields are included in the API response when fetching an entry or querying entries.

Note The assetFields method is currently supported only in the North America (NA) region.

NameTypeDescription
fieldsstring[]

Asset field names to include in the response.

Default: None

Returns the current instance to enable method chaining.

  • Request behavior: No request is made until Fetch() (single asset) or FetchAll() (multiple assets) is called.
  • Query parameter: When the request runs, the specified asset fields are sent to the CDA as the asset_fields[] query parameter.

Field Behavior

  • Determines which asset-related metadata the CDA returns.
  • Used with stack.Asset(uid).AssetFields(...).Fetch() or stack.AssetLibrary().AssetFields(...).FetchAll().
  • When provided, the SDK sends the selected fields as the asset_fields[] query parameter. Only the requested asset metadata is returned.

Supported Values

  • user_defined_fields
  • embedded_metadata
  • ai_generated_metadata
  • visual_markups

Fetch a single asset with specific fields

using Contentstack.Core;
using Contentstack.Core.Configuration;
using Contentstack.Core.Models;
using Microsoft.Extensions.Options;
var options = new ContentstackOptions
{
    ApiKey = "<API_KEY>",
    DeliveryToken = "<DELIVERY_TOKEN>",
    Environment = "<ENVIRONMENT>"
};
var stack = new ContentstackClient(new OptionsWrapper<ContentstackOptions>(options));
var assetResponse = await stack
    .Asset("asset_uid")
    .AssetFields(
        "user_defined_fields",
        "embedded_metadata",
        "ai_generated_metadata",
        "visual_markups"
    )
    .Fetch();

Query multiple assets with asset fields

using Contentstack.Core;
using Contentstack.Core.Configuration;
using Contentstack.Core.Models;
using Microsoft.Extensions.Options;
var options = new ContentstackOptions
{
    ApiKey = "<API_KEY>",
    DeliveryToken = "<DELIVERY_TOKEN>",
    Environment = "<ENVIRONMENT>"
};
var stack = new ContentstackClient(new OptionsWrapper<ContentstackOptions>(options));
var result = await stack
    .AssetLibrary()
    .AssetFields("ai_generated_metadata", "visual_markups")
    .FetchAll();

setLocale

The setLocale method sets the locale for fetching a single asset. The API returns the asset with localized metadata (for example, title and description), along with the locale and publish_details.locale fields in the response.

NameTypeDescription
localestring

Locale code used to fetch the asset.

Default: None

Field Behavior

  • Specifies which locale’s metadata the API returns for the asset.
  • Used with stack.Asset(uid).SetLocale(...).Fetch().
  • When provided, the locale is sent as the locale query parameter.

Response Impact

The response includes localized fields (for example, title and description) along with locale and publish_details.locale.

Fetch a single asset in a locale

using Contentstack.Core;
using Contentstack.Core.Configuration;
using Contentstack.Core.Models;
using Microsoft.Extensions.Options;

var options = new ContentstackOptions
{
    ApiKey = "<API_KEY>",
    DeliveryToken = "<DELIVERY_TOKEN>",
    Environment = "<ENVIRONMENT>"
};
var stack = new ContentstackClient(new OptionsWrapper<ContentstackOptions>(options));
var asset = await stack
    .Asset("asset_uid")
    .SetLocale("en-us")
    .Fetch();
// Access localized fields from the response
var title = asset.Title;           // Localized title
var locale = asset.Get("locale");  // e.g. "en-us"

Fetch a single asset in a locale with a fallback

using Contentstack.Core;
using Contentstack.Core.Configuration;
using Contentstack.Core.Models;
using Microsoft.Extensions.Options;
var options = new ContentstackOptions
{
    ApiKey = "<API_KEY>",
    DeliveryToken = "<DELIVERY_TOKEN>",
    Environment = "<ENVIRONMENT>"
};
var stack = new ContentstackClient(new OptionsWrapper<ContentstackOptions>(options));
var asset = await stack
    .Asset("asset_uid")
    .SetLocale("en-us")
    .IncludeFallback()
    .Fetch();

Note

  • IncludeFallback() returns content from the fallback locale if the requested locale is not published for the single asset.
  • SetLocale can be chained with IncludeFallback(), IncludeMetadata(), AssetFields(), and AddParam() when fetching a single asset.

AssetLibrary

Get all asset from Stack

SetHeader

To set headers for Contentstack rest calls.

NameTypeDescription
keystring

header name.

valuestring

header value against given header name.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Asset> asset = await stack.AssetLibrary().SetHeader("custom_key", "custom_value").FindAll();

RemoveHeader

Remove header key.

NameTypeDescription
keystring

key to be remove from header

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Asset> asset = await stack.AssetLibrary("asset_uid").RemoveHeader("header_to_remove").FindAll();

SortWithKeyAndOrderBy

Sorts the assets in the given order on the basis of the specified field.
NameTypeDescription
keystring

Field UID

orderstring

ordering for sorting from key

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Asset> asset = await stack.AssetLibrary().SortWithKeyAndOrderBy("field_uid", "order").FindAll();

SetLocale

Sets the locale.



NameTypeDescription
localestring

Locale to be fetch

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Asset> assets = await stack.AssetLibrary().SetLocale("en-us").FetchAll();

Skip

The number of objects to skip before returning any.

NameTypeDescription
numberint

No of objects to skip from returned objects.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Asset> assets = await stack.AssetLibrary().Skip(20).FetchAll();

Limit

A limit on the number of objects to return.

NameTypeDescription
numberint

No of objects to limit.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Asset> assets = await stack.AssetLibrary().Limit(20).FetchAll();

IncludeBranch

Include branch for publish content.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Asset> assets = await stack.AssetLibrary().IncludeBranch().FindAll();

IncludeCount

This method also includes the total number of assets returned in the response.



using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Asset> assets = await stack.AssetLibrary().IncludeCount().FindAll();

IncludeFallback

Include fallback locale publish content, if specified locale content is not publish.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Asset> assets = await stack.AssetLibrary().IncludeFallback().FindAll();

IncludeMetadata

The includeMetadata method will add the meta information to the response.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Asset> assets = await stack.AssetLibrary().IncludeMetadata().FindAll();

Except

Specifies list of field uids that would be excluded from the response.

NameTypeDescription
fieldUidsSystem.String[]

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

AssetLibrary assetLibrary = await stack.AssetLibrary().Except(new String[]{"name", "description"}).FetchAll();

Only

Specifies an array of 'only' keys in BASE object that would be 'included' in the response.

NameTypeDescription
fieldUidSystem.String[]

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

AssetLibrary assetLibrary = await stack.AssetLibrary().Only(new String[]{"name", "description"}).FetchAll();

IncludeRelativeUrls

This method includes the relative url of assets.



using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Asset> assets = await stack.AssetLibrary().IncludeRelativeUrls().FindAll();

FetchAll

Execute a AssetLibrary and Caches its result (Optional)

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Asset> assets = await stack.AssetLibrary().FetchAll();

Count

Total count of the asset in specified Stack

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

AssetLibrary assetLibrary = await stack.AssetLibrary().Count();

Query

AssetLibrary Query allows you to retrieve assets that match specific query criteria, returning a comprehensive list of assets that meet the defined parameters.

NameTypeDescription
queryObjectJObject

The query contains the parameters needed to fetch assets and supports nested structures when required.

Example:

using Contentstack.Core; 

using Contentstack.Core.Models;

ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");


JObject queryObject = new JObject

{

  { "filename", "image3.png" }

};


ContentstackCollection<Asset> assets = await stack.AssetLibrary().Query(queryObject).FetchAll();
NoteYou can also include nested queries as needed, similar to those used in Content Delivery API Queries
JObject queryObject = new JObject
{
{ "bank_offers.card_type", new JObject { { "$ne", "Debit Card" } } }
};

Tags

The tags method retrieves all assets associated with the specified tag

NameTypeDescription
tagsstring[]

An array of tag strings used to filter assets; returns assets matching any specified tag. If null or empty, no tag filtering is applied.

Example:

ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");
AssetLibrary assetLibrary = stack.AssetLibrary();
assetLibrary.Tags(new string[] {"banner"});
ContentstackCollection<Asset> assets = await assetLibrary.FetchAll();

ContentType

ContentType provides Entry and Query instance.

NameTypeDescription
ContentTypeId string

Content type uid

SetHeader

To set headers for Contentstack rest calls.

NameTypeDescription
keystring

header name.

valuestring

header value against given header name.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentType contentType = stack.ContentType("content_type_uid").SetHeader("custom_key", "custom_value");

RemoveHeader

Remove header key.

NameTypeDescription
keystring

key to be remove from header

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentType contentType = await stack.ContentType("content_type_uid").RemoveHeader("header_to_remove");

Fetch

This method returns the complete information, of a specific content type.

NameTypeDescription
paramDictionary<Object>

Dictionary of additional parameter

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

var param = new Dictionary<string, object>();

param.Add("include_global_field_schema",true);

var result = await stack.ContentType("content_Type_uid").Fetch(param);

Entry

Represents a Entry. Create Entry Instance.

NameTypeDescription
entryUidstring

Set entry uid.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = stack.ContentType("content_Type_uid").Entry("entry_uid");

Query

Represents a Query Create Query Instance.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Query query = stack.ContentType("content_Type_uid").Query();

Entry

An initializer is responsible for creating Entry object.

NameTypeDescription
Metadata Dictionary<string, object>

Set key/value attributes of Metadata.

Object Dictionary<string, object>

Set key/value attributes of an current entry instance.

Tags object[]
Set array of Tags
Title string

Title of an entry

Uid string

This is Entry Uid of an entry.

GetContentType

Get contentType name.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

string contentType = stack.ContentType("content_Type_uid").Entry("entry_uid").GetContentType();

GetUid

Get entry uid

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").Fetch<Entry>();

var uid = entry.GetUid();

GetTitle

Get entry title

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").Fetch<Entry>();

var title = entry.GetTitle();

GetTags

Returns tags of this entry.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").Fetch<Entry>();

var tags = entry.GetTags();

GetMetadata

Get metadata of entry.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").Fetch<Entry>();

var metadata = entry.GetMetadata();

GetHTMLText

Get html text for markdown data type

NameTypeDescription
markdownKeystring

field_uid as key.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").Fetch<Entry>();

var result = entry.GetHTMLText("markdownKey");

GetMultipleHTMLText

Get html text for markdown data type which is multiple true

NameTypeDescription
markdownKeystring

Field_uid as key.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").Fetch<Entry>();

List<string> metadata = entry.GetMultipleHTMLText("markdown_field_uid");

GetCreateAt

Get value of creation time of entry.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").Fetch<Entry>();

DateTime datetime = entry.GetCreateAt();

GetCreatedBy

Get uid who created this entry.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").Fetch<Entry>();

string createdBy = entry.GetCreatedBy();

GetUpdateAt

Get value of updating time of entry.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").Fetch<Entry>();

DateTime datetime = entry.GetUpdateAt();

GetUpdatedBy

Get uid who updated this entry.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").Fetch<Entry>();

string updatedBy = entry.GetUpdatedBy();

GetDeletedAt

Get value of deleting time of entry.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").Fetch<Entry>();

DateTime datetime = entry.GetDeletedAt();

GetDeletedBy

Get uid who created this entry.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").Fetch<Entry>();

string deletedBy = entry.GetDeletedBy();

Get

Get object value for key.

NameTypeDescription
keyObject

Key to get value

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").Fetch<Entry>();

Object value = entry.Get("key");

SetCachePolicy

To set cache policy using Entry instance.

NameTypeDescription
cachePolicyCachePolicy

CachePolicy instance

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_type_uid").Entry("entry_uid").SetCachePolicy(CachePolicy.NetworkElseCache).Fetch<Entry>();

SetHeader

To set headers for Contentstack rest calls.

NameTypeDescription
keystring

header name.

valuestring

header value against given header name.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_type_uid").Entry("entry_uid").SetHeader("custom_key", "custom_value").Fetch();

RemoveHeader

Remove header key.

NameTypeDescription
keystring

key to be remove from header

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_type_uid").Entry("entry_uid").RemoveHeader("header_to_remove").Fetch();

SetLocale

Sets the locale.

NameTypeDescription
Localestring

Locale to fetch entry

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_type_uid").Entry("entry_uid").SetLocale("en-us").Fetch<Entry>();

SetUid

Assigns a uid to current instance of an entry.

NameTypeDescription
uidstring

Uid for entry to fetch

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.Entry().SetUid("entry_uid").SetLocale("en-us").Fetch<Entry>();

SetTags

Assign a tag(s) for this Entry.

NameTypeDescription
tagsstring[]

Collection of tags.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.Entry("entry_uid").SetTags(new List<string>() {

	"tag_1"

}).Fetch<Entry>();

IncludeReferenceContentTypeUID

This method also includes the content type UIDs of the referenced entries returned in the response.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").IncludeReferenceContentTypeUID().Fetch<Entry>();

IncludeReference

Add a constraint that requires a particular reference key details.

NameTypeDescription
referenceFieldsstring[]

Array key that to be constrained.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").IncludeReference(new String[]{"reference_uid_1", "reference_uid_2"}).Fetch<Entry>();

IncludeReference

Add a constraint that requires a particular reference key details.

NameTypeDescription
referenceFieldString

Key that to be constrained.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").IncludeReference("reference_uid_1").Fetch<Entry>();

IncludeOnlyReference

Specifies an array of except keys that would be excluded in the response.

NameTypeDescription
keysstring[]

Array of the only reference keys to be included in response.

referenceKeystring

Key who has reference to some other class object.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").IncludeOnlyReference(new String[]{"name", "description"},"referenceUid").Fetch<Entry>();

IncludeExceptReference

Specifies an array of except keys that would be excluded in the response.

NameTypeDescription
keysstring[]

Array of the except reference keys to be excluded in response.

referenceKeystring

Key who has reference to some other class object.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").IncludeExceptReference(new String[]{"name", "description"},"referenceUid").Fetch<Entry>();

IncludeEmbeddedItems

Include Embedded Objects (Entries and Assets) along with entry/entries details.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").IncludeEmbeddedItems().Fetch<Entry>();

IncludeFallback

Include fallback locale publish content, if specified locale content is not publish.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").IncludeFallback().Fetch<Entry>();

IncludeMetadata

The includeMetadata method will add the meta information to the response.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").IncludeMetadata().Fetch<Entry>();

IncludeBranch

Include branch for publish content.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").IncludeBranch().Fetch<Entry>();

Only

Specifies an array of 'only' keys in BASE object that would be 'included' in the response.

NameTypeDescription
fieldUidSystem.String[]

Array of the only reference keys to be included in response.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

AssetLibrary assetLibrary = await stack.Entry().Only(new String[]{"name", "description"}).Fetch();

Except

Specifies list of field uids that would be excluded from the response.

NameTypeDescription
fieldUidsSystem.String[]

Field uid which get excluded from the response.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

AssetLibrary assetLibrary = await stack.Entry("entry_uid").Except(new String[]{"name", "description"}).Fetch();

ToJson

Get key/value pairs in json of current instance.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Entry entry = await stack.ContentType("content_Type_uid").Entry("entry_uid").IncludeReferenceContentTypeUID().Fetch<Entry>();

JObject jObject = entry.ToJson();

Fetch

Fetches the latest version of the entries from Contentstack.io content stack

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

Product product = await stack.ContentType("content_Type_uid").Entry("entry_uid").Fetch<Product>();

Variants

The variants method retrieves details of a specific entry variant or an array of entry variants based on the applied query.

When Personalize creates a variant in the CMS, it assigns a "Variant Alias" to identify that specific variant. When fetching entry variants using the Delivery API, you can pass variant aliases in place of variant UIDs in the x-cs-variant-uid header.

NameTypeDescription
variant_headers (required)string | string[]

List of variants

Example:

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");


Entry entry = await stack

                    .ContentType("content_Type_uid")

                    .Entry("entry_uid")

                    .Variant(new String[]{"variant_uid1/variant_alias1", "variant_uid2/variant_alias2"})

                    .Fetch<Entry>();

assetFields

The assetFields method specifies which asset-related fields are included in the API response when fetching an entry or querying entries.

Regional Behavior

This method is currently supported only for stacks located in the North America (NA) region.

For stacks in the Europe (EU) or Azure North America (Azure NA) regions:

  • The API ignores the asset_fields[] parameter.
  • The response returns the default asset metadata.
  • The system does not return an error or warning message if the parameter is used.

If you are working in these regions, ensure your application logic accounts for the full default metadata response rather than a filtered set of fields.

NameTypeDescription
fieldsstring[]

Asset field names to include in the response.

Default: None

Returns the current Entry instance to enable method chaining. For example: Entry("id").AssetFields("...").Fetch<Entry>().

  • Request behavior: Calling AssetFields(...) only records the asset fields and does not make an API request.
  • Execution: The HTTP request runs only when you call Fetch<T>() (single entry) or Find<T>() (multiple entries).
  • Query parameter: The specified asset fields are sent as the asset_fields[] query parameter so that only those asset-related fields are returned in the response.

Parameter Behavior

  • Specifies which asset-related metadata fields the CDA returns for assets referenced in the entry or entries.
  • Applied when using stack.ContentType(uid).Entry(uid).AssetFields(...).Fetch<T>() or stack.ContentType(uid).Entry().AssetFields(...).Find<T>().
  • When provided, the SDK sends the selected fields as the asset_fields[] query parameter. Only the requested asset metadata is returned in the API response.

Supported Parameter Values

  • user_defined_fields
  • embedded_metadata
  • ai_generated_metadata
  • visual_markups

Note If AssetFields(...) is not called, or is called with no arguments, null, or an empty array, the SDK does not add the asset_fields[] query parameter. The CDA then returns the default asset metadata for referenced assets.

Fetch a single entry with specific fields

using Contentstack.Core;
using Contentstack.Core.Configuration;
using Contentstack.Core.Models;
using Microsoft.Extensions.Options;

var options = new ContentstackOptions
{
    ApiKey = "<API_KEY>",
    DeliveryToken = "<DELIVERY_TOKEN>",
    Environment = "<ENVIRONMENT>"
};

var stack = new ContentstackClient(new OptionsWrapper<ContentstackOptions>(options));

var entry = await stack
    .ContentType("blog_post")
    .Entry("entry_uid")
    .AssetFields("user_defined_fields", "embedded_metadata", "ai_generated_metadata")
    .Fetch<Entry>();

Query multiple entries with asset fields

using Contentstack.Core;
using Contentstack.Core.Configuration;
using Contentstack.Core.Models;
using Microsoft.Extensions.Options;

var options = new ContentstackOptions
{
    ApiKey = "<API_KEY>",
    DeliveryToken = "<DELIVERY_TOKEN>",
    Environment = "<ENVIRONMENT>"
};

var stack = new ContentstackClient(new OptionsWrapper<ContentstackOptions>(options));

var result = await stack
    .ContentType("blog_post")
    .Entry()
    .AssetFields("user_defined_fields", "embedded_metadata")
    .Find<Entry>();

Global Fields

A Global field is a reusable field or group of fields that you define once and reuse across any content type in your stack. This helps you avoid recreating the same set of fields multiple times, saving time and effort.

IncludeGlobalFieldSchema

The IncludeGlobalFieldSchema method fetches the complete schema of a specified Global Field, including all nested fields and configurations

Example:

using Contentstack.Core;
using Contentstack.Core.Configuration;

var options = new ContentstackOptions()
{
   ApiKey = "your_api_key",
   DeliveryToken = "your_delivery_token",
   Environment = "your_environment"
};

ContentstackClient stack = new ContentstackClient(options);
GlobalField globalField = stack.GlobalField("global_field_uid")
   .IncludeGlobalFieldSchema()
   .Fetch();

SetHeader

The SetHeader method sets custom headers when fetching a Global Field, allowing you to pass additional information such as authentication tokens, localization settings, or custom metadata with the API request.

Example:

using Contentstack.Core;
using Contentstack.Core.Configuration;
var options = new ContentstackOptions()
{
   ApiKey = "your_api_key",
   DeliveryToken = "your_delivery_token",
   Environment = "your_environment"
};
ContentstackClient stack = new ContentstackClient(options);
GlobalField globalField = stack.GlobalField("global_field_uid");
globalField.SetHeader("custom_key", "custom_value");
var result = await globalField.Fetch();

fetch

The fetch method retrieves the details of the specified global field.

Example:

using Contentstack.Core;
using Contentstack.Core.Configuration;

var options = new ContentstackOptions()
{
   ApiKey = "your_api_key",
   DeliveryToken = "your_delivery_token",
   Environment = "your_environment"
};

ContentstackClient stack = new ContentstackClient(options);
GlobalField globalField = stack.GlobalField("global_field_uid");
var result = await globalField.Fetch();
Console.WriteLine(result.ToString());

Global Field Query

A Global field is a reusable field or group of fields that you define once and reuse across any content type in your stack. This helps you avoid recreating the same set of fields multiple times, saving time and effort.

find

The find method retrieves all Global Fields from your stack using a Global Field query, providing access to the complete collection of Global Field data.

Example:

using Contentstack.Core;
using Contentstack.Core.Configuration;
var options = new ContentstackOptions()
{
   ApiKey = "your_api_key",
   DeliveryToken = "your_delivery_token",
   Environment = "your_environment"
};
ContentstackClient stack = new ContentstackClient(options);
GlobalFieldQuery query = stack.GlobalFieldQuery();
var result = await query.Find();
Console.WriteLine(result.ToString());

IncludeGlobalFieldSchema

The IncludeGlobalFieldSchema method includes the complete schema for each Global Field when fetching all Global Fields using a query.

Example:

using Contentstack.Core;
using Contentstack.Core.Configuration;
var options = new ContentstackOptions()
{
   ApiKey = "your_api_key",
   DeliveryToken = "your_delivery_token",
   Environment = "your_environment"
};
ContentstackClient stack = new ContentstackClient(options);
var result = await stack.GlobalFieldQuery()
   .IncludeGlobalFieldSchema()
   .Find();

Query

A class that defines a query that is used to query for Entry instance.

When Personalize creates a variant in the CMS, it assigns a "Variant Alias" to identify that specific variant. When fetching entry variants using the Delivery API, you can pass variant aliases in place of variant UIDs in thex-cs-variant-uidheader.

AddQuery

Add a custom query against specified key.

NameTypeDescription
keystring

field uid.

valuestring

field value

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().AddQuery("key", "value").Find<Entry>();

IncludeCount

Retrieve count and data of objects in result.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().IncludeCount().Find<Entry>();

IncludeBranch

Include branch for publish content.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().IncludeBranch().Find<Entry>();

IncludeFallback

Include fallback locale publish content, if specified locale content is not publish.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> entry = await stack.ContentType("content_Type_uid").Query().IncludeFallback().Find<Entry>();

IncludeMetadata

The includeMetadata method will add the meta information to the response.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> entry = await stack.ContentType("content_Type_uid").Query().IncludeMetadata().Find<Entry>();

IncludeEmbeddedItems

Include Embedded Objects (Entries and Assets) along with entry/entries details.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> entry = await stack.ContentType("content_Type_uid").Query().IncludeEmbeddedItems().Find<Entry>();

IncludeOnlyReference

Specifies an array of except keys that would be excluded in the response.

NameTypeDescription
keysstring[]

Array of the only reference keys to be included in response.

referenceKeystring

Key who has reference to some other class object.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> entry = await stack.ContentType("content_Type_uid").Query().IncludeOnlyReference(new String[]{"name", "description"},"referenceUid").Find<Entry>();

IncludeExceptReference

Specifies an array of except keys that would be excluded in the response.

NameTypeDescription
keysstring[]

Array of the except reference keys to be excluded in response.

referenceKeystring

Key who has reference to some other class object.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> entry = await stack.ContentType("content_Type_uid").Query().IncludeExceptReference(new String[]{"name", "description"},"referenceUid").Find<Entry>();

IncludeReference

Add a constraint that requires a particular reference key details.

NameTypeDescription
referenceFieldString

Key that to be constrained.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> entry = await stack.ContentType("content_Type_uid").Query().IncludeReference("reference_uid_1").Find<Entry>();

IncludeReferenceContentTypeUID

This method also includes the content type UIDs of the referenced entries returned in the response.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().IncludeReferenceContentTypeUID().Find<Entry>();

IncludeReference

Add a constraint that requires a particular reference key details.

NameTypeDescription
referenceFieldsstring[]

Array key that to be constrained.

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().IncludeReference(new String[]{"reference_uid_1", "reference_uid_2"}).Find<Entry>();

ReferenceIn

Retrieve entries based reference in query

NameTypeDescription
keystring

They key to constraint on

queryQuery

Query object

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentType contentTypeObj = stack.ContentType("contentType_id");


Query query = contentTypeObj.Query();

query.Where("email_address","content@email.com");


ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().ReferenceIn("user", query).Find<Entry>();

ReferenceNotIn

Retrieve entries based reference not in query

NameTypeDescription
keystring

The key to constraint on

queryQuery

Query object

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentType contentTypeObj = stack.ContentType("contentType_id");


Query query = contentTypeObj.Query();

query.Where("email_address","content@email.com");


ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().ReferenceNotIn("user", query).Find<Entry>();

Regex

Add a regular expression constraint for finding string values that match the provided regular expression.
NameTypeDescription
keystring

The key to be constrained.

regexstring

The regular expression pattern to match.

modifiersstring

Any of the following supported Regular expression modifiers.

  • use i for case-insensitive matching.
  • use m for making dot match newlines.
  • use x for ignoring whitespace in regex

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> entry = await stack.ContentType("content_type_uid").Query().Regex("name", "^browser").Find<Entry>();

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> entry = await stack.ContentType("content_type_uid").Query().Regex("name", "^browser", "i").Find<Entry>();

RemoveQuery

Remove provided query key from custom query if exist.

NameTypeDescription
keystring

Query name to remove.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_type_uid").Query().RemoveQuery("query_key").Find<Entry>();

SetCachePolicy

To set cache policy using Query instance.

NameTypeDescription
cachePolicyCachePolicy

CachePolicy instance

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_type_uid").Query().SetCachePolicy(CachePolicy.NetworkElseCache).Find<Entry>();

SetLocale

Sets the locale.

NameTypeDescription
Localestring

Locale to fetch entry

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_type_uid").Query().SetLocale("en-us").Find<Entry>();

SetHeader

To set headers for Contentstack rest calls.

NameTypeDescription
keystring

header name.

valuestring

header value against given header name.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_type_uid").Query().SetHeader("custom_key", "custom_value").Find<Entry>();

RemoveHeader

Remove header key.

NameTypeDescription
keystring

key to be remove from header

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> entry = await stack.ContentType("content_type_uid").Query().RemoveHeader("header_to_remove").Find<Entry>();

WhereTags

Include tags with which to search entries.

NameTypeDescription
tags (required)string[]

Array of tags you want to match in the entries

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().WhereTags(new String[] {"tag_1", tag_2}).Find<Entry>();

Skip

The number of objects to skip before returning any.

NameTypeDescription
numberstring

No of objects to skip.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().Skip(20).Find<Entry>();

Limit

A limit on the number of objects to return.

NameTypeDescription
numberstring

No of objects to limit.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().Limit(20).Find<Entry>();

Ascending

Sort the results in ascending order with the given key.

NameTypeDescription
fieldUidstring

The key to order by.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().Ascending("name").Find<Entry>();

Descending

Sort the results in descending order with the given key.

NameTypeDescription
fieldUidstring

The key to order by.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().Descending("name").Find<Entry>();

And

Combines all the queries together using AND operator

NameTypeDescription
queryObjectsList<Query>

List of Query instances on which AND query executes.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentType contentTypeObj = stack.ContentType("contentType_id");


Query query1 = contentTypeObj.Query();

query1.Where("username","content");


Query query2 = contentTypeObj.Query();

query2.Where("email_address","content@email.com");


List<Query> queryList = new List<Query>();

queryList.Add(query1);

queryList.Add(query2);


ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().And(queryList).Find<Entry>();

Or

Add a constraint to fetch all entries which satisfy any queries.

NameTypeDescription
queryObjectsList<Query>

List of Query instances on which OR query executes.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentType contentTypeObj = stack.ContentType("contentType_id");


Query query1 = contentTypeObj.Query();

query1.Where("username","content");


Query query2 = contentTypeObj.Query();

query2.Where("email_address","content@email.com");


List<Query> queryList = new List<Query>();

queryList.Add(query1);

queryList.Add(query2);


ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().Or(queryList).Find<Entry>();

Except

Specifies list of field uids that would be excluded from the response.

NameTypeDescription
fieldUidstring[]

field uid which get excluded from the response.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().Except(new String[] {"name", description }).Find<Entry>();

Only

Specifies an array of 'only' keys in BASE object that would be 'included' in the response.

NameTypeDescription
fieldUidstring[]

Array of the 'only' keys to be included in response.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().Only(new String[] {"name", description }).Find<Entry>();

Exists

Add a constraint that requires, a specified key exists in response.

NameTypeDescription
keystring

The key to be constrained.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().Exist("title").Find<Entry>();

NotExists

Add a constraint that requires, a specified key does not exists in response.

NameTypeDescription
keystring

The key to be constrained.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().NotExist("title").Find<Entry>();

NotEqualTo

Add a constraint to the query that requires a particular key's entry to be not equal to the provided value.

NameTypeDescription
keystring

the key to be constrained.

valueObject

The object that must not be equaled.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().NotEqualTo("title", "Demo").Find<Entry>();

Where

Add a constraint to the query that requires a particular key entry's value not be contained in the provided array.

NameTypeDescription
keystring

the key to be constrained.

valueObject

Field value which get included from the response.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().Where("title", "Demo").Find<Entry>();

NotContainedIn

Add a constraint to the query that requires a particular key entry's value not be contained in the provided array.

NameTypeDescription
keystring

the key to be constrained.

valueObject[]

The list of values the key object should not be.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().NotContainedIn("title", new Object[]{ "Demo", "Welcome"}).Find<Entry>();

ContainedIn

Add a constraint to the query that requires a particular key's entry to be contained in the provided array.

NameTypeDescription
keystring

the key to be constrained.

valueObject[]

The possible values for the key's object.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().ContainedIn("title", new Object[]{ "Demo", "Welcome"}).Find<Entry>();

LessThanOrEqualTo

Add a constraint to the query that requires a particular key entry to be less than or equal to the provided value.

NameTypeDescription
keystring

the key to be constrained.

valueObject

The value that provides an upper bound or equal.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().LessThanOrEqualTo("age", 20).Find<Entry>();

LessThan

Add a constraint to the query that requires a particular key entry to be less than the provided value.

NameTypeDescription
keystring

the key to be constrained.

valueObject

The value that provides an upper bound.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().LessThan("age", 20).Find<Entry>();

GreaterThanOrEqualTo

Add a constraint to the query that requires a particular key entry to be greater than or equal to the provided value.

NameTypeDescription
keystring

the key to be constrained.

valueObject

The value that provides a lower bound or equal.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().GreaterThanOrEqualTo("age", 20).Find<Entry>();

GreaterThan

Add a constraint to the query that requires a particular key entry to be greater than the provided value.

NameTypeDescription
keystring

the key to be constrained.

valueObject

The value that provides an lower bound.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().GreaterThan("age", 20).Find<Entry>();

Find

Execute a Query and Caches its result (Optional)

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().Find<Entry>();

FindOne

Execute a Query and Caches its result (Optional)

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().FindOne<Entry>();

Count

Retrieve only count of entries in result.

using Contentstack.Core; 

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");

ContentstackCollection<Entry> collection = await stack.ContentType("content_Type_uid").Query().Count();

Variants

The variants method retrieves details of a specific entry variant or an array of entry variants based on the applied query.

When Personalize creates a variant in the CMS, it assigns a "Variant Alias" to identify that specific variant. When fetching entry variants using the Delivery API, you can pass variant aliases in place of variant UIDs in the x-cs-variant-uid header.

NameTypeDescription
variant_headers (required)string | string[]

List of variants

Example:

using Contentstack.Core;

using Contentstack.Core.Models;


ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");


ContentstackCollection<Entry> collection = await stack

						.ContentType("content_Type_uid")

						.Query()

						.Variant(new String[]{"variant_uid1/variant_alias1", "variant_uid2/variant_alias2"})

						.Find<Entry>();

Taxonomy

Taxonomy helps you categorize pieces of content within your stack to facilitate easy navigation and retrieval of information.

Note All methods in the Query section are applicable for taxonomy-based filtering as well.

EqualAndBelow

The EqualAndBelow method retrieves all entries for a specific taxonomy that match a specific term and its descendant terms, requiring only the target term.

Note This query is applicable for the stack.Taxonomies() and stack.ContentType('uid').Query() methods.

NameTypeDescription
key (required)string

Enter the UID of the taxonomy

value (required)string

Enter the UID of the term

levelsint

Enter the level

Example:

ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");
Query csQuery = stack.Taxonomies();

csQuery.EqualAndBelow("taxonomies.taxonomy_uid", "term_uid", 3);
csQuery.Find<Product>().ContinueWith((queryResult) => {
	//Your callback code.
});

Below

The Below method retrieves all entries for a specific taxonomy that match all of their descendant terms by specifying only the target term and a specific level.

Note If you don't specify the level, the default behavior is to retrieve terms up to level 10.

NameTypeDescription
key (required)string

Enter the UID of the taxonomy

value (required)string

Enter the UID of the term

levelsint

Enter the level

Example:

ContentstackClient stack = new ContentstackClinet("api_key", "delivery_token", "environment");
Query csQuery = stack.Taxonomies();

csQuery.Below("taxonomies.taxonomy_uid", "term_uid", 3);
csQuery.Find<Product>().ContinueWith((queryResult) => {
	//Your callback code.
});

EqualAndAbove

The EqualAndAbove method retrieves all entries for a specific taxonomy that match a specific term and all its ancestor terms, requiring only the target term and a specified level.

Note If you don't specify the level, the default behavior is to retrieve terms up to level 10.

NameTypeDescription
key (required)string

Enter the UID of the taxonomy

value (required)string

Enter the UID of the term

levelsint

Enter the level

Example:

ContentstackClient stack = new ContentstackClient("api_key", "delivery_token", "environment");
Query csQuery = stack.Taxonomies();

csQuery.EqualAndAbove("taxonomies.taxonomy_uid", "term_uid", 3);
csQuery.Find<Product>().ContinueWith((queryResult) => {
	//Your callback code.
});

Above

The Above method retrieves all entries for a specific taxonomy that match only the parent terms of a specified target term, excluding the target term itself and a specified level.

Note If you don't specify the level, the default behavior is to retrieve terms up to level 10.

NameTypeDescription
key (required)string

Enter the UID of the taxonomy

value (required)string

Enter the UID of the term

levelsint

Enter the level

Example:

ContentstackClient stack = new ContentstackClinet("api_key", "delivery_token", "environment");
Query csQuery = stack.Taxonomies();

csQuery.Above("taxonomies.taxonomy_uid", "term_uid", 3);
csQuery.Find<Product>().ContinueWith((queryResult) => {
	//Your callback code.
});