Get Started with .NET Management SDK

This guide helps you get started with the Contentstack .NET Management SDK, which uses the Content Management APIs (CMA) to create, update, delete, and fetch content.

Prerequisite

  • A .NET runtime compatible with the SDK targets (netstandard2.0, and net471/net472 on Windows).

SDK Installation and Setup

Open the terminal and install the package using Package Manager:

PM> Install-Package contentstack.management.csharp

Or using .NET CLI:

dotnet add package contentstack.management.csharp

Import the SDK in your code:

using Contentstack.Management.Core;
using Contentstack.Management.Core.Models;

Initialize a client:

using Contentstack.Management.Core;
var client = new ContentstackClient();

Or initialize with options:

using Contentstack.Management.Core;
var options = new ContentstackClientOptions
{
    Authtoken = "AUTHTOKEN"
};
var client = new ContentstackClient(options);

Authentication

You can authenticate with one of these methods:

  • Authtoken
  • Login with credentials
  • Management token (stack-level token)

Authtoken

An authtoken is a user-specific read-write token for CMA requests.

using Contentstack.Management.Core;
var options = new ContentstackClientOptions
{
    Authtoken = "AUTHTOKEN"
};
var client = new ContentstackClient(options);

Login

To log in with user credentials:

using System.Net;
using Contentstack.Management.Core;
var credentials = new NetworkCredential("EMAIL", "PASSWORD");
var client = new ContentstackClient();
try
{
    ContentstackResponse response = client.Login(credentials);
}
catch (Exception)
{
    // Handle login failure
}

Management Token

Management tokens are stack-level tokens not tied to a user.

using Contentstack.Management.Core;
using Contentstack.Management.Core.Models;
var client = new ContentstackClient();
Stack stack = client.Stack("API_KEY", "MANAGEMENT_TOKEN");

Initialize your SDK

Basic Initialization

using Contentstack.Management.Core;
var options = new ContentstackClientOptions
{
    Authtoken = "AUTHTOKEN"
};
var client = new ContentstackClient(options);

Set Region Host for Management SDK (CMA)

The .NET Management SDK uses the Content Management API (CMA) host configured through ContentstackClientOptions.Host.

By default, the SDK uses AWS North America (api.contentstack.io). Set Host when your stack is in a different region.

Use these host values for each Management API region:

  • AWS North America (AWS NA): api.contentstack.io
  • AWS Europe (AWS EU): eu-api.contentstack.com
  • AWS Australia (AWS AU): au-api.contentstack.com
  • Azure North America (Azure NA): azure-na-api.contentstack.com
  • Azure Europe (Azure EU): azure-eu-api.contentstack.com
  • GCP North America (GCP NA): gcp-na-api.contentstack.com
  • GCP Europe (GCP EU): gcp-eu-api.contentstack.com

Example: initialize the client for AWS Australia (AWS AU):

using Contentstack.Management.Core;
var options = new ContentstackClientOptions
{
    Host = "au-api.contentstack.com",
    Authtoken = "AUTHTOKEN"
};
var client = new ContentstackClient(options);

Example: use the same region-configured options and work with a specific branch:

using Contentstack.Management.Core;
using Contentstack.Management.Core.Models;
var options = new ContentstackClientOptions
{
    Host = "au-api.contentstack.com",
    Authtoken = "AUTHTOKEN"
};
var client = new ContentstackClient(options);
Stack stack = client.Stack("API_KEY", "MANAGEMENT_TOKEN", "BRANCH");

For region configuration guidance across SDKs, see Selecting Region in SDKs.

Set Branch

To work with a specific branch:

using Contentstack.Management.Core;
using Contentstack.Management.Core.Models;
var client = new ContentstackClient();
Stack stack = client.Stack("API_KEY", "MANAGEMENT_TOKEN", "BRANCH");

Proxy Configuration

You can define an HTTP proxy using ContentstackClientOptions:

using System.Net;
using Contentstack.Management.Core;
var contentstackConfig = new ContentstackClientOptions
{
    ProxyHost = "http://127.0.0.1",
    ProxyPort = 9000,
    ProxyCredentials = new NetworkCredential("username", "password"),
    Authtoken = "AUTHTOKEN"
};
var client = new ContentstackClient(contentstackConfig);

Fetch Stack Details

Fetch stack details using a stack management token:

using Contentstack.Management.Core;
using Contentstack.Management.Core.Models;
var client = new ContentstackClient();
Stack stack = client.Stack("API_KEY", "MANAGEMENT_TOKEN");
ContentstackResponse response = stack.Fetch();
var stackJson = response.OpenJObjectResponse();

Create an Entry

Create a model implementing IEntry in EntryModel.cs:

using Contentstack.Management.Core.Abstractions;
using Newtonsoft.Json;
namespace TestModels
{
    public class EntryModel : IEntry
    {
        [JsonProperty("title")]
        public string Title { get; set; }

        [JsonProperty("url")]
        public string Url { get; set; }
    }
}

Create and upload an entry:

using Contentstack.Management.Core;
using Contentstack.Management.Core.Models;
using TestModels;
var client = new ContentstackClient();
Stack stack = client.Stack("API_KEY", "MANAGEMENT_TOKEN");
var entry = new EntryModel
{
    Title = "Your Entry Title",
    Url = "/your-url"
};
ContentstackResponse response = stack.ContentType("CONTENT_TYPE_UID").Entry().Create(entry);

Upload Assets

Upload an asset to your stack:

using Contentstack.Management.Core;
using Contentstack.Management.Core.Models;
var client = new ContentstackClient();
Stack stack = client.Stack("API_KEY", "MANAGEMENT_TOKEN");

var asset = new AssetModel(
    fileName: "sample.json",
    filePath: "/absolute/path/to/sample.json",
    contentType: "application/json",
    title: "Sample Asset"
);
ContentstackResponse response = stack.Asset().Create(asset);