Administration

September 15, 2026 · View on GitHub

Environment-level configuration, workflow definitions, and the subscription-scoped endpoints.

Examples assume a configured IManagementClient client — see configuration.

These follow the same result and identifier conventions as everything else — see requests and results. The full request and response shapes are in the Management API reference.

Environment resources

AreaMethods
LanguagesListLanguagesAsync, GetLanguageAsync, CreateLanguageAsync, ModifyLanguageAsync
WorkflowsListWorkflowsAsync, CreateWorkflowAsync, UpdateWorkflowAsync, DeleteWorkflowAsync
CollectionsGetCollectionsAsync, ModifyCollectionsAsync
SpacesListSpacesAsync, GetSpaceAsync, CreateSpaceAsync, ModifySpaceAsync, DeleteSpaceAsync
WebhooksListWebhooksAsync, GetWebhookAsync, CreateWebhookAsync, EnableWebhookAsync, DisableWebhookAsync, DeleteWebhookAsync
PreviewGetPreviewConfigurationAsync, UpdatePreviewConfigurationAsync
Custom appsListCustomAppsAsync, GetCustomAppAsync, CreateCustomAppAsync, ModifyCustomAppAsync, DeleteCustomAppAsync
RolesListEnvironmentRolesAsync, GetEnvironmentRoleAsync
Environment usersInviteUserIntoEnvironmentAsync, UpdateUserRolesAsync
Environment lifecycleGetEnvironmentInformationAsync, CloneEnvironmentAsync, GetEnvironmentCloningStateAsync, MarkEnvironmentAsProductionAsync, ModifyEnvironmentAsync, DeleteEnvironmentAsync
ValidationValidateEnvironmentAsync, InitiateEnvironmentAsyncValidationTaskAsync, GetAsyncValidationTaskAsync, ListAsyncValidationTaskIssuesAsync

Languages, spaces and custom apps are modified with the patch factories described in content modelLanguagePatch, SpacePatch, CustomAppPatch — which name the property and take a correctly-typed value:

await client.ModifyLanguageAsync(Reference.ByCodename("de-DE"),
[
    LanguagePatch.Name("Deutsch"),
    LanguagePatch.FallbackLanguage(Reference.ByCodename("en-US")),
]);

await client.ModifySpaceAsync(Reference.ByCodename("marketing"), [SpacePatch.RootItem(null)]);   // null unsets

An async validation task's issues can be numerous, so that listing has a page overload — see pagination.

Languages and workflow definitions

Creating a language:

await client.CreateLanguageAsync(new LanguageCreateModel
{
    Name = "German",
    Codename = "de-DE",
    IsActive = true,
    FallbackLanguage = Reference.ByCodename("en-US")
});

A workflow here is the definition — its steps and the scopes it applies to. Moving a variant through a workflow is a content operation, in content items and variants.

Subscription-scoped operations

These resolve against /v2/subscriptions/{id} rather than an environment:

ListSubscriptionProjectsAsync, ListSubscriptionUsersAsync, GetSubscriptionUserAsync, ActivateSubscriptionUserAsync, DeactivateSubscriptionUserAsync.

Important

They take a Subscription API key, not the Management API key an environment call uses. It is minted at https://app.kontent.ai/subscription/<subscription-id>/api-keys, only a subscription admin can create one, and an environment's Management API key will not authenticate these endpoints.

They need SubscriptionId set; calling one without it throws InvalidOperationException naming the missing option. A client that only calls them needs no EnvironmentId:

await using var client = new ManagementClient(new ManagementOptions
{
    ApiKey = "<your Subscription API key>",
    SubscriptionId = "<your subscription id>",
});

var projects = (await client.ListSubscriptionProjectsAsync()).EnsureSuccess();

A client has one ApiKey. If you need both scopes, register two named clients — see named clients.

Users are addressed with UserIdentifier rather than Reference — see identifiers.