Contentstack - JavaScript Management SDK
JavaScript Management SDK for Contentstack
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. All you have to do is build your application frontend, and Contentstack will take care of the rest.
This SDK uses the Content Management API (CMA). The CMA is used to manage the content of your Contentstack account. This includes creating, updating, deleting, and fetching content of your account. To use the CMA, you will need to authenticate your users with a Management Token or an Authtoken. Read more about it in Authentication.
Note: By using CMA, you can execute GET requests for fetching content. However, we strongly recommend that you always use the Content Delivery API to deliver content to your web or mobile properties.
Prerequisite
You need Node.js version 22 or above installed to use the Contentstack JavaScript Management SDK.
Setup and Installation
For Node.js
Install it via npm:
npm i @contentstack/management;
To import the SDK, use the following command:
import * as contentstack from '@contentstack/management' const contentstackClient = contentstack.client();
Quickstart in 5 mins
Initializing Your SDK
To use the JavaScript CMA SDK, you need to first initialize it. To do this, use the following code:
import * as contentstack from '@contentstack/management'; const contentstackClient = contentstack.client({ authtoken: 'AUTHTOKEN' });
Authentication
To use this SDK, you need to authenticate your users by using the Authtoken, credentials, or Management Token (stack-level token).
Authtoken
An Authtoken is a read-write token used to make authorized CMA requests, and it is a user-specific token.
import * as contentstack from '@contentstack/management'; contentstackClient = contentstack.client({ authtoken: 'AUTHTOKEN' });
Login
The login call allows you to sign in to your Contentstack account and obtain an authentication token (authtoken). Multi-Factor Authentication (MFA) is supported for SDK based logins.
Name | Type | Description |
---|---|---|
email (required) | string | Registered email address used for login |
password (required) | string | Password associated with the registered email |
tfa_token | string | Required for MFA-enabled accounts. One-time passcode generated by an authenticator app for completing MFA during login. |
mfaSecret | string | Required to generate the tfa_token dynamically. Secret key generated when MFA is enabled for the user. |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client() // When user does not have MFA enabled client.login({ email: <emailid>, password: <password> }) .then(() => { })) // When user have MFA enabled client.login({ email: <emailid>, password: <password>, tfa_token: <2FA_token> }) .then(() => { })) import * as contentstack from '@contentstack/management' const client = contentstack.client() client.login({ email: <emailid>, password: <password>, mfaSecret: <mfaSecret> }) .then(() => { }))
Note: The mfaSecret is not passed in the request body—it’s used to generate the OTP dynamically, which is then sent as the tfa_token.
OAuth
Note: This feature requires @contentstack/management version 1.20.0 or later and registered OAuth client credentials.
The JavaScript Management SDK supports OAuth 2.0, enabling secure, token-based access to Contentstack’s Content Management APIs. This integration simplifies authentication by automating token acquisition, refresh, and secure lifecycle management.
With OAuth 2.0, developers can easily implement secure access for both web-based interfaces and command-line tools.
Additional Resource: For more information on the OAuth support in JavaScript Management SDK, refer to Implementing OAuth 2.0 with JavaScript Management SDK documentation.
Key Features
- Easy SDK initialization: Set up OAuth effortlessly by configuring the SDK with minimal credentials.
- Automatic token management: The SDK seamlessly handles token acquisition, automatic refresh on expiry, and secure in-memory storage—ensuring uninterrupted authentication.
- Compatible with both web and CLI applications: The SDK works seamlessly across browser-based apps and command-line tools, supporting multiple secure token storage strategies.
- Built-in logout functionality: Easily terminate the user sessions with a single method that clears tokens and resets the authentication state.
- Token revocation support included: Integrated token revocation allows your app to invalidate access upon logout or session expiration.
Management Token
Management Tokens are stack-level tokens, with no users attached to them.
import * as contentstack from '@contentstack/management'; contentstackClient = contentstack.client(); contentstackClient.stack({ api_key: 'API_KEY', management_token: 'MANAGEMENT_TOKEN' }).contentType('CONTENT_TYPE_UID'); .fetch() .then((contenttype) => { console.log(contenttype)
Fetch Stack Detail
Use the following lines of code to fetch your stack detail using this SDK:
import * as contentstack from '@contentstack/management' contentstackClient = contentstack.client({ authtoken: 'AUTHTOKEN' }); contentstackClient.stack({api_key:'API_KEY'}) .fetch() .then((stack) => { });
Create Entry
To create an entry in a specific content type of a stack, use the following lines of code:
import * as contentstack from '@contentstack/management' var entry = { title:'Sample Entry', url:'/sampleEntry' } contentstackClient = contentstack.client({ authtoken: 'AUTHTOKEN' }); contentstackClient.stack({ api_key:'API_KEY'}) .contentType('CONTENT_TYPE_UID') .entry() .create({ entry }) .then((entry)=>{ });
Create Asset
The following lines of code can be used to upload assets to your stack:
import * as contentstack from '@contentstack/management' var asset = { upload: 'path/to/file', title: 'Asset Title' } const contentstackClient = contentstack.client({ authtoken: 'AUTHTOKEN' }); contentstackClient.stack({ api_key: 'API_KEY' }).asset().create({ asset }) .then((asset) => { });
Contentstack
The Content Management API (CMA) is used to manage the content of your Contentstack account. This includes creating, updating, deleting, and fetching content of your account.
Contentstack
The Content Management API (CMA) is used to manage the content of your Contentstack account. This includes creating, updating, deleting, and fetching content of your account.
Name | Type | Description |
---|---|---|
endpoint | string | API endpoint that a service will talk to. |
host | string | API host |
headers | object | Optional additional headers |
early_access | string | Optional array of header strings for early access features. |
authtoken | string | Optional Authtoken is a read-write token used to make authorized CMA requests, but it is a user-specific token. |
authorization | string | Optional authorization token is a read-write token used to make authorized CMA requests, but it is a user-specific token. |
timeout | number | Optional number of milliseconds before the request times out. |
maxRequests | number | Optional maximum number of requests SDK should send concurrently. |
retryOnError | boolean | Optional boolean for retry on failure. |
retryLimit | number | Optional number of retries before failure. |
retryDelay | number | The number of milliseconds to use for operation retries. |
retryCondition | function | A function to determine if the error can be retried. |
retryDelayOptions.base | number | The base number of milliseconds to use in the exponential backoff for operation retries. |
retryDelayOptions.customBackoff | function | A custom function that accepts a retry count and error and returns the amount of time to delay in milliseconds. (if you want not to retry for specific condition return -1) |
maxContentLength | number | Optional maximum content length in bytes. |
maxBodyLength | number | Optional maximum body length in bytes. |
logHandler | function | A log handler function to process given log messages & errors. |
application | string | Application name and version e.g myApp/version |
integration | string | Integration name and version e.g react/version |
Client Initialization
import * as contentstack from '@contentstack/management' const client = contentstack.client();
Set the `endpoint` to 'https://api.contentstack.io:{port}/{version}'
import * as contentstack from '@contentstack/management' const client = contentstack.client({ endpoint: 'https://api.contentstack.io:{port}/{version}' });
Set the `host` to 'api.contentstack.io'
import * as contentstack from '@contentstack/management' const client = contentstack.client({ host: 'api.contentstack.io' });
Set the `headers` to { 'headerkey': 'value'}
import * as contentstack from '@contentstack/management' const client = contentstack.client({ headers: { 'headerkey': 'value'} });
Set the Early Access Headers
import * as contentstack from '@contentstack/management' const client = contentstack.client({ early_access: ['early_access_1', 'early_access_2'] });
Set the `authtoken`
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken: 'value' });
Set the `authorization`
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authorization: 'Bearer ' })
Set the `timeout` to 50000ms
import * as contentstack from '@contentstack/management' const client = contentstack.client({ timeout: 50000 })
Set the `maxRequests` to 5
import * as contentstack from '@contentstack/management' const client = contentstack.client({ maxRequests: 5 })
Set the `retryOnError` to false
import * as contentstack from '@contentstack/management' const client = contentstack.client({ retryOnError: false })
Set the `retryLimit` to 2
import * as contentstack from '@contentstack/management' const client = contentstack.client({ retryLimit: 2 })
Set the `retryDelay` to 500ms
import * as contentstack from '@contentstack/management' const client = contentstack.client({ retryDelay: 500 })
Set the `retryCondition` on error status 429
import * as contentstack from '@contentstack/management' const client = contentstack.client({ retryCondition: (error) => { if (error.response && error.response.status === 429) { return true } return false } })
Setbaseretry delay for all services to 300 ms
import * as contentstack from '@contentstack/management' const client = contentstack.client({retryDelayOptions: {base: 300}})
Set a custom backoff function to provide delay of 500 ms on retryCount < 3 and -1 for retryCount >= 3 values on retries
import * as contentstack from '@contentstack/management' const client = contentstack.client({retryDelayOptions: {customBackoff: function(retryCount, err) { if (retryCount < 3) { return 500 } else { return -1 //returning -1 will hold next retry for request } }}})
Set the `maxContentLength` to 1024 ** 3
import * as contentstack from '@contentstack/management' const client = contentstack.client({ maxContentLength: 1024 ** 3 })
Set the `maxBodyLength` to 1024 ** 2 * 10 // 10 MB
import * as contentstack from '@contentstack/management' const client = contentstack.client({ maxBodyLength: 1024 ** 2 * 10 })
Set the `logHandler`
import * as contentstack from '@contentstack/management' const client = contentstack.client({ logHandler: (level, data) => { if (level === 'error' && data) { const title = [data.name, data.message].filter((a) => a).join(' - ') console.error(`[error] ${title}`) return } console.log(`[${level}] ${data}`) } })
ContentstackClient
login
The login call is used to sign in to your Contentstack account and obtain the authtoken.
Name | Type | Description |
---|---|---|
email (required) | string | email id for user to login |
password (required) | string | password for user to login |
token | string | token for user to login |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.login({ email: <emailid>, password: <password> }) .then(() => { }))
getUser
The getUser call returns comprehensive information of an existing user account. The information returned includes details of the stacks owned by and shared with the specified user account.
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.getUser() .then((user) => { })
logout
The logOut of your account call is used to sign out the user of Contentstack account.
Name | Type | Description |
---|---|---|
authtoken | string | Authtoken to logout from. |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.logout() .then((response) => { })
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.logout('AUTHTOKEN') .then((response) => { })
stack
Get Stack instance. A stack is a space that stores the content of a project.
Name | Type | Description |
---|---|---|
api_key (required) | string | Stack API Key |
management_token | string | Management token for Stack. |
branch_uid | string | Branch name or alias to access specific branch. |
import * as contentstack from '@contentstack/management' const client = contentstack.client() const stack = {name: 'My New Stack'} client.stack().create({ stack }, { organization_uid: 'org_uid' }) .then((stack) =>{ })
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).fetch() .then((stack) => { })
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key', management_token: 'management_token' }) .contentType('content_type_uid') .fetch() .then((stack) => console.log(stack))
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key', management_token: 'management_token', branch_uid: 'branch_uid' }) .contentType('content_type_uid').fetch() .then((stack) => { })
organization
Organization is the top-level entity in the hierarchy of Contentstack, consisting of stacks and stack resources, and users.
Name | Type | Description |
---|---|---|
uid | string | Organization UID. |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.organization().findAll() .then((organization) => { })
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.organization('org_uid').fetch() .then((organization) => { })
User
All accounts registered with Contentstack are known as Users. A stack can have many users with varying permissions and roles. Read Users to learn more.
update
The Update User API Request updates the details of an existing user account.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.getUser() .then((user) => { user.first_name = 'FirstName' user.last_name = 'LastName' user.company = 'company' return user.update() )} .then((response) => { })
delete
The Delete user call deletes the current authenticated user permanently from your Contentstack account.
import * as contentstack from '@contentstack-devops-bot/management' const client = contentstack.client({ authtoken }) client.getUser() .then((user) => { return user.delete() )} .then((response) => { })
requestPassword
The Request for a password call sends a request for a temporary password to log in to an account in case a user has forgotten the login password.
Name | Type | Description |
---|---|---|
param.email (required) | string | Email id for which password request to be sent. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.getUser() .then((user) => { return requestPassword({ email }) }) .then((response) => { })
resetPassword
The Reset password call sends a request for resetting the password of your Contentstack account.
Name | Type | Description |
---|---|---|
param. reset_password_token (required) | string | Reset password token generated from request password |
param.password (required) | string | New password to set for your account |
param.password_confirmation | string | Confirm password matching your password |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.getUser() .then((user) => { return user.resetPassword({ 'resetToken', 'new_password', 'new_password' }) }) .then((response) => { })
getTasks
The Get all Tasks request retrieves a list of all tasks assigned to you.
Name | Type | Description |
---|---|---|
param.query | Object | Enter the actual query that will be executed to retrieve the tasks. This query should be in JSON format. |
param.sort | Object | Enter the field UID on the basis of which you want to sort your tasks. |
param.limit | number | Enter the maximum number of tasks that you want to retrieve in the response. |
param.skip | number | Enter the number of tasks to be skipped. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.getUser() .then((user) => { return user.getTasks() }) .then((response) => { })
Organization
Organization is the top-level entity in the hierarchy of Contentstack, consisting of stacks and stack resources, and users. Organization allows easy management of projects as well as users within the Organization.
fetch
The fetch Organization call fetches Organization details.
Name | Type | Description |
---|---|---|
param.include_plan | number | The include_plan parameter includes the details of the plan that the organization has subscribed to. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization('organization_uid').fetch() .then((organization) => console.log(organization))
stacks
The Get all stacks in an organization call fetches the list of all stacks in an Organization.
Name | Type | Description |
---|---|---|
param.limit | number | The ‘limit’ parameter will return a specific number of organizations in the output. |
param.skip | number | The ‘skip’ parameter will skip a specific number of organizations in the output. |
param.asc | string | The ‘asc’ parameter allows you to sort the list of organizations in the ascending order with respect to the value of a specific field. |
desc | string | The ‘desc’ parameter allows you to sort the list of Organizations in the descending order with respect to the value of a specific field. |
include_count | boolean | The ‘include_count’ parameter returns the total number of organizations related to the user. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization('organization_uid').stacks({ include_count: true }) .then((collection) => console.log(collection))
addUser
The Add users to organization call allows you to send invitations to add users to your organization. Only the owner or the admin of the organization can add users.
Name | Type | Description |
---|---|---|
param.users | object | List of users to add with roles. |
params.stacks | object | List of user with stack API key and roles id to be assign from stack. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization('organization_uid').addUser({ users: { '[email protected]': ['org_uid1', 'org_uid2' ]}, stacks: { '[email protected]': { 'api_key1': [ 'stack_role_id' ] } } }) .then((response) => console.log(response))
transferOwnership
The Transfer organization ownership call transfers the ownership of an Organization to another user.
Name | Type | Description |
---|---|---|
email (required) | string | Email id of user to transfer the ownership of the organization. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization('organization_uid').transferOwnership('email_id') .then((response) => console.log(response))
getInvitations
The Get all organization invitations call gives you a list of all the Organization invitations.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization('organization_uid').getInvitations() .then((response) => console.log(response))
resendInvitition
The Resend pending organization invitation call allows you to resend Organization invitations to users who have not yet accepted the earlier invitation.
Name | Type | Description |
---|---|---|
invitation_uid (required) | string | The invitation id for which request to be sent |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization('organization_uid').resendInvitition('invitation_uid') .then((response) => console.log(response.notice))
roles
Name | Type | Description |
---|---|---|
param.limit | number | The ‘limit’ parameter will return a specific number of organizations in the output. |
param.skip | number | The ‘skip’ parameter will skip a specific number of organizations in the output. |
param.asc | string | The ‘asc’ parameter allows you to sort the list of organizations in the ascending order with respect to the value of a specific field. |
desc | string | The ‘desc’ parameter allows you to sort the list of Organizations in the descending order with respect to the value of a specific field. |
include_count | boolean | The ‘include_count’ parameter returns the total number of organizations related to the user. |
include_stack_roles | boolean | The Include stack roles will return stack details in roles. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization('organization_uid').roles() .then((roles) => console.log(roles))
fetchAll
The Get all organizations call lists all organizations related to the system user in the order that they were created.
Name | Type | Description |
---|---|---|
param.limit | number | The ‘limit’ parameter will return a specific number of organizations in the output. |
param.skip | number | The ‘skip’ parameter will skip a specific number of organizations in the output. |
param.asc | string | The ‘asc’ parameter allows you to sort the list of organizations in the ascending order with respect to the value of a specific field. |
desc | string | The ‘desc’ parameter allows you to sort the list of Organizations in the descending order with respect to the value of a specific field. |
include_count | boolean | The ‘include_count’ parameter returns the total number of organizations related to the user. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization().fetchAll() .then((collection) => console.log(collection))
organization
Organization is the top-level entity in the hierarchy of Contentstack, consisting of stacks and stack resources, and users.
Name | Type | Description |
---|---|---|
uid | string | Organization UID. |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.organization().findAll() .then((organization) => { })
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.organization('org_uid').fetch() .then((organization) => { })
Stack
A stack is a space that stores the content of a project (a web or mobile property). Within a stack, you can create content structures, content entries, users, etc. related to the project.
update
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).fetch() .then((stack) => { stack.name = 'My New Stack' stack.description = 'My new test stack' return stack.update() }) .then((stack) => console.log(stack))
fetch
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).fetch() .then((stack) => console.log(stack))
contentType
Content type defines the structure or schema of a page or a section of your web or mobile property.
Name | Type | Description |
---|---|---|
uid | string | UID for content type to perform operation on. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType() // OR client.stack({ api_key: 'api_key'}).contentType('uid')
locale
Locale allows you to create and publish entries in any language.
Name | Type | Description |
---|---|---|
uid | string | UID for locale to perform operation on. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).locale() // OR client.stack({ api_key: 'api_key'}).locale('uid')
asset
Assets refer to all the media files (images, videos, PDFs, audio files, and so on) uploaded in your Contentstack repository for future use.
Name | Type | Description |
---|---|---|
uid | string | UID for asset to perform operation on. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).asset() // OR client.stack({ api_key: 'api_key'}).asset('uid')
globalField
A Global field is a reusable field (or group of fields) that you can define once and reuse in any content type within your stack.
Name | Type | Description |
---|---|---|
uid | string | UID for GlobalField to perform operation on. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).globalField() // OR client.stack({ api_key: 'api_key'}).globalField('uid')
environment
Environment corresponds to one or more deployment servers or a content delivery destination where the entries need to be published.
Name | Type | Description |
---|---|---|
uid | string | UID for environment to perform operation on. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).environment() // OR client.stack({ api_key: 'api_key'}).environment('uid')
branch
Name | Type | Description |
---|---|---|
uid | string | UID for branch alias to perform operation on. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).branch() // OR client.stack({ api_key: 'api_key'}).branch('uid')
branchAlias
Branch Alias is a custom name given to a specific branch in a stack to make referencing easier, especially when working with multiple branches.
Name | Type | Description |
---|---|---|
uid | string | UID for branch alias to perform operation on. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).branchAlias() // OR client.stack({ api_key: 'api_key'}).branchAlias('uid')
deliveryToken
Delivery Tokens provide read-only access to the associated environments.
Name | Type | Description |
---|---|---|
uid | string | UID for delivery token to perform operation on. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).deliveryToken() // OR client.stack({ api_key: 'api_key'}).deliveryToken('uid')
extension
Extensions let you create custom fields and custom widgets that lets you customize Contentstack's default UI and behaviour.
Name | Type | Description |
---|---|---|
uid | string | UID for extension to perform operation on. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).extension() // OR client.stack({ api_key: 'api_key'}).extension('uid')
workflow
Name | Type | Description |
---|---|---|
uid | string | UID for workflow to perform operation on. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).workflow() // OR client.stack({ api_key: 'api_key'}).workflow('uid')
webhook
Webhooks allow you to specify a URL to which you would like Contentstack to post data when an event happens.
Name | Type | Description |
---|---|---|
uid | string | UID for webhook to perform operation on. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).webhook() // OR client.stack({ api_key: 'api_key'}).webhook('uid')
label
Labels allow you to group a collection of content within a stack. Using labels you can group content types that need to work together
Name | Type | Description |
---|---|---|
uid | string | UID for label to perform operation on. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).label() // OR client.stack({ api_key: 'api_key'}).label('label_uid')
release
You can pin a set of entries and assets (along with the deploy action, i.e., publish/unpublish) to a ‘release’, and then deploy this release to an environment.
Name | Type | Description |
---|---|---|
uid | string | Uid for release to perform operation on. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).release() // OR client.stack({ api_key: 'api_key'}).release('release_uid')
bulkOperation
Bulk operations such as Publish, Unpublish, and Delete on multiple entries or assets.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).bulkOperation()
users
The Get all users of a stack call fetches the list of all users of a particular stack
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const users = { user_uid: ['role_uid_1', 'role_uid_2' ] } client.stack({ api_key: 'api_key'}).users() .then((users) => console.log(users))
updateUsersRoles
The Update User Role API Request updates the roles of an existing user account. This API Request will override the existing roles assigned to a user.
Name | Type | Description |
---|---|---|
users (required) | object | User object with userid and roles to assign to them. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const users = { user_uid: ['role_uid_1', 'role_uid_2' ] } client.stack({ api_key: 'api_key'}).updateUsersRoles(users) .then((response) => console.log(response.notice))
transferOwnership
The Transfer stack ownership to other users call sends the specified user an email invitation for accepting the ownership of a particular stack.
Name | Type | Description |
---|---|---|
email (required) | string | The email address of the user to whom you wish to transfer the ownership of the stack. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).transferOwnership('emailId') .then((response) => console.log(response.notice))
settings
The Get stack settings call retrieves the configuration settings of an existing stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).settings() .then((settings) => console.log(settings))
resetSettings
The Reset stack settings call resets your stack to default settings, and additionally, lets you add parameters to or modify the settings of an existing stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).resetSettings() .then((settings) => console.log(settings))
addSettings
The Add stack settings call lets you add settings for an existing stack.
Name | Type | Description |
---|---|---|
param (required) | object | Object for adding to the stack settings |
Example 1:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).addSettings({ key: 'value' }) .then((settings) => console.log(settings))
Example 2:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const variables = { stack_variables: { enforce_unique_urls: true, sys_rte_allowed_tags: "style,figure,script", sys_rte_skip_format_on_paste: "GD:font-size" }, rte: { cs_breakline_on_enter: true, cs_only_breakline: true }, live_preview: { enabled: true, "default-env": "blt123123123123", "default-url": "https://preview.example.com" } }; client.stack({ api_key: 'api_key'}).addSettings(variables) .then((settings) => console.log(settings)
share
The Share a stack call shares a stack with the specified user to collaborate on the stack.
Name | Type | Description |
---|---|---|
email (required) | Array<string> | Email id to unshare stack. |
roles (required) | Array<object> | Email and role to assign to the user. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).share([ "[email protected]" ], { "[email protected]": [ "abcdefhgi1234567890" ] }) .then((response) => console.log(response.notice))
unShare
The Unshare a stack call unshares a stack with a user and removes the user account from the list of collaborators.
Name | Type | Description |
---|---|---|
email (required) | string | Email id to unshare stack. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).unShare('[email protected]') .then((response) => console.log(response.notice))
role
A role is a collection of permissions that will be applicable to all the users who are assigned this role.
Name | Type | Description |
---|---|---|
role_uid | string | Role uid for initiating role class |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).role() //or <span>client.stack({ api_key: 'api_key'}).role('role_uid')</span>
create
The Create stack call creates a new stack in your Contentstack account.
Name | Type | Description |
---|---|---|
params.stack.name (required) | string | Name for the stack |
params.stack.master_locale (required) | string | Master locale for the Stack. |
param.stack.description | String | Description for the Stack. |
params.organization_uid | string | Organization uid to create stack within the organization. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const newStack = { stack: { name: 'My New Stack', description: 'My new test stack', master_locale: 'en-us' } } client.stack().create(newStack, { organization_uid: 'org_uid' }) .then((stack) => console.log(stack))
query
The Query on Stack will allow to fetch details of all or specific Stack.
Name | Type | Description |
---|---|---|
params.include_collaborators | boolean | Set this parameter to 'true' to include the details of the stack collaborators. |
params.include_stack_variablesSet | boolean | Set this to 'true' to display the stack variables. Stack variables are extra information about the stack, such as the description, format of date, format of time, and so on. Users can include or exclude stack variables in the response. |
params.include_discrete_variables | boolean | Set this to 'true' to view the access token of your stack. |
params.include_count | boolean | Set this to 'true' to include in the response the total count of the stacks owned by or shared with a user account. |
params.query | object | Queries that you can use to fetch filtered results. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack().query({ query: { name: 'Stack Name' } }).find() .then((stack) => console.log(stack))
auditlog
Audit log displays a record of all the activities performed in a stack and helps you keep a track of all published items, updates, deletes, and current status of the existing content.
Name | Type | Description |
---|---|---|
logItemUid (required) | String | UID of the log item |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).auditLog().fetchAll() .then((logs) => console.log(logs)) client.stack({ api_key: 'api_key' }).auditLog('log_item_uid').fetch() .then((log) => console.log(log))
ContentType
Content type defines the structure or schema of a page or a section of your web or mobile property. To create content for your application, you are required to first create a content type, and then create entries using the content type.
update
The Update ContentType call lets you update the name and description of an existing ContentType. You can also update the JSON schema of a content type, including fields and different features associated with the content type.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType('content_type_uid').fetch() .then((contentType) => { contentType.title = 'My New Content Type' contentType.description = 'Content Type description' return contentType.update() }) .then((contentType) => console.log(contentType))
delete
The Delete ContentType call is used to delete an existing ContentType permanently from your Stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType('content_type_uid').delete() .then((response) => console.log(response.notice))
fetch
The fetch ContentType call fetches ContentType details.
Name | Type | Description |
---|---|---|
version | number | Version number to fetch specific version of ContentType. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType('content_type_uid').fetch() .then((contentType) => console.log(contentType))
entry
Entry is the actual piece of content created using one of the defined content types.
Name | Type | Description |
---|---|---|
uid | string | Entry uid to perform operation on |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry() //OR client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry('entry_uid')
generateUid
Generate uid from the title of content type
Name | Type | Description |
---|---|---|
title (required) | string | Title for which ContentType uid needs to be generated. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType().generateUid('name')
create
Name | Type | Description |
---|---|---|
params.content_type (required) | object | ContentType details and schema to create. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const content_type = {name: 'My New contentType'} client.stack({ api_key: 'api_key'}).contentType().create({ content_type }) .then((contentType) => console.log(contentType))
query
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType().query({ query: { name: 'Content Type Name' } }).find() .then((contentTypes) => console.log(contentTypes))
import
Name | Type | Description |
---|---|---|
params.content_type (required) | string | File path to import content type |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const data = { content_type: 'path/to/file.json', } client.stack({ api_key: 'api_key'}).contentType().import(data) .then((contentType) => console.log(contentType))
GlobalField
A Global field is a reusable field (or group of fields) that you can define once and reuse in any content type within your stack.
A nested global field is a reusable group of sub-fields that you define once and embed within other global fields or content types. This allows for a more structured and scalable way to manage complex content models across your stack
Note: Pass api_version 3.2 for nested global fields.
update
The Update GlobalField call lets you update the name and description of an existing GlobalField.
Example 1:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).globalField('global_field_uid').fetch() .then((globalField) => { globalField.title = 'My New global field' globalField.description = 'global field description' return globalField.update() }) .then((globalField) => console.log(globalField))
Example 2:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).globalField('global_field_uid', { api_version: '3.2' }).fetch() .then((globalField) => { globalField.title = 'My New global field' globalField.description = 'global field description' return globalField.update() }) .then((globalField) => console.log(globalField))
delete
The Delete GlobalField call is used to delete an existing GlobalField permanently from your Stack.
Example 1:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).globalField('global_field_uid').delete() .then((response) => console.log(response.notice))
Example 2:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).globalField('global_field_uid', { api_version: '3.2'}).delete() .then((response) => console.log(response.notice))
fetch
The fetch GlobalField call fetches GlobalField details.
Name | Type | Description |
---|---|---|
version | number | Version number to fetch specific version of GlobalField. |
Example 1:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).globalField('global_field_uid').fetch() .then((globalField) => console.log(globalField))
Example 2:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).globalField('global_field_uid', { api_version: '3.2'}).fetch() .then((globalField) => console.log(globalField))
create
The Create a GlobalField call creates a new globalField in a particular stack of your Contentstack account.
Name | Type | Description |
---|---|---|
params.global_field (required) | object | GlobalField details and schema to create. |
Example 1:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const global_field = {name: 'My New global field'} client.stack({ api_key: 'api_key'}).globalField().create({ global_field }) .then((globalField) => console.log(globalField))
Example 2:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const global_field = {name: 'My New global field'} client.stack({ api_key: 'api_key'}).globalField({ api_version: '3.2'}).create({ global_field }) .then((globalField) => console.log(globalField))
query
Example 1:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).globalField().query({ query: { name: 'Global Field Name' } }).find() .then((globalField) => console.log(globalField))
Example 2:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).globalField({ api_version: '3.2'}).query({ query: { name: 'Global Field Name' } }).find() .then((globalField) => console.log(globalField))
import
The Import a global field call imports a global field into a stack.
Name | Type | Description |
---|---|---|
params.global_field (required) | string | File path to import GlobalField |
Example 1:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const data = { global_field: 'path/to/file.json', } client.stack({ api_key: 'api_key'}).globalField().import(data) .then((globalField) => console.log(globalField))
Example 2:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const data = { global_field: 'path/to/file.json', } client.stack({ api_key: 'api_key'}).globalField({ api_version: '3.2'}).import(data) .then((globalField) => console.log(globalField))
Entry
An entry is the actual piece of content created using one of the defined content types. Read more about Entries.
update
The update an entry call updates an entry of a selected content type.
Here's how you can update an entry:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry('uid') .fetch() .then((entry) => { entry.title = 'My New Entry' entry.description = 'Entry description' return entry.update() }) .then((entry) => console.log(entry))
Here's how you can update an entry in a specific locale:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry('uid') .fetch() .then((entry) => { entry.title = 'My New Entry' entry.description = 'Entry description' return entry.update({ locale: 'en-at' }) }) .then((entry) => console.log(entry))
Here's how you can update an entry with multiple assets:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry('uid') .fetch() .then((entry) => { entry.title = 'My New Entry' entry.file = entry.file.uid // for single asset pass asset uid to entry asset field value entry.multiple_file = ['asset_uid_1', 'asset_uid_2'] // for multiple asset pass array of asset uid to entry asset field values return entry.update({ locale: 'en-at' }) }) .then((entry) => console.log(entry))
Here's how you can update an entry with referenced entries:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry('uid') .fetch() .then((entry) => { entry.title = 'My New Entry' entry.reference = entry.reference.uid // for single reference pass reference uid to entry reference field value entry.multiple_reference = ['reference_uid_1', 'reference_uid_2'] // for multiple reference pass array of reference uid to entry reference field values entry.multiple_content_type_reference = [{_content_type_uid: 'content_type_uid_1', uid: 'reference_uid_1'}, {_content_type_uid: 'content_type_uid_2', uid: 'reference_uid_2'}] // for multiple reference pass array of reference uid to entry reference field values return entry.update({ locale: 'en-at' }) }) .then((entry) => console.log(entry))
delete
The Delete an entry call is used to delete a specific entry from a content type.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry('uid') .delete() .then((response) => console.log(response.notice))
fetch
Name | Type | Description |
---|---|---|
params.version | number | Enter the version number of the entry that you want to retrieve. However, to retrieve a specific version of an entry, you need to keep the environment parameter blank. |
params.locale | string | Enter the code of the language of which the entries need to be included. Only the entries published in this locale will be displayed. |
params.include_workflow (required) | boolean | Enter 'true' to include the workflow details of the entry. |
params.include_publish_details | string | Enter 'true' to include the publish details of the entry. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry('uid') .fetch() .then((entry) => console.log(entry))
publish
Name | Type | Description |
---|---|---|
params.publishDetails (required) | object | Details of entry to be publish. |
params.locale | string | Enter the code of the locale that the entry belongs to. |
params.version | number | Entry version to be publish |
params.scheduledAt | string | Schedule date for publishing entry. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const entry = { "locales": [ "en-us" ], "environments": [ "development" ] } client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry('uid') .publish({ publishDetails: entry, locale: "en-us", version: 1, scheduledAt: "2019-02-08T18:30:00.000Z"}) .then((response) => console.log(response.notice))
unpublish
Name | Type | Description |
---|---|---|
params.publishDetails (required) | object | Details of entry to be unpublished. |
params.locale | string | Enter the code of the locale that the entry belongs to. |
params.version | number | Entry version to be publish |
params.scheduledAt | string | Schedule date for publishing entry. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const entry = { "locales": [ "en-us" ], "environments": [ "development" ] } client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry('uid') .unpublish({ publishDetails: entry, locale: "en-us", version: 1, scheduledAt: "2019-02-08T18:30:00.000Z"}) .then((response) => console.log(response.notice))
publishRequest
This multipurpose request allows you to either send a publish request or accept/reject a received publish request.
Name | Type | Description |
---|---|---|
params.publishing_rule (required) | object | Details for the publish request |
locale | string | Enter the code of the locale that the entry belongs to. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const publishing_rule = { "uid": "uid", "action": "publish" "status": 1, "notify": false, "comment": "Please review this." } client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry('uid') .publishRequest({ publishing_rule, locale: 'en-us'}) .then((response) => console.log(response.notice))
setWorkflowStage
The Set Entry Workflow Stage request allows you to either set a particular workflow stage of an entry or update the workflow stage details of an entry.
Name | Type | Description |
---|---|---|
params.publishing_rule (required) | object | Details for the publish request |
locale | string | Enter the code of the locale that the entry belongs to. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const workflow_stage = { "comment": "Workflow Comment", "due_date": "Thu Dec 01 2018", "notify": false, "uid": "workflow_stage_uid", "assigned_to": [{ "uid": "user_uid", "name": "Username", "email": "user_email_id" }], "assigned_by_roles": [{ "uid": "role_uid", "name": "Role name" }] } client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry('uid') .setWorkflowStage({workflow_stage, locale: 'en-us'}) .then((response) => console.log(response.notice));
create
The Create an entry call creates a new entry in a particular stack of your Contentstack account.
Name | Type | Description |
---|---|---|
params.entry (required) | object | Entry details to create. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const entry = { title: 'Sample Entry', url: '/sampleEntry', file = asset_uid, / multiple_file = ['asset_uid_1', 'asset_uid_2'], reference: reference.uid, multiple_reference: ['reference_uid_1', 'reference_uid_2'], multiple_content_type_reference: [{_content_type_uid: 'content_type_uid_1', uid: 'reference_uid_1'}, {_content_type_uid: 'content_type_uid_2', uid: 'reference_uid_2'}] } client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry().create({ entry }) .then((entry) => console.log(entry))
query
Name | Type | Description |
---|---|---|
params.locale | string | Enter the code of the language of which the entries need to be included. Only the entries published in this locale will be displayed. |
params.include_workflow | boolean | Enter 'true' to include the workflow details of the entry. |
params.include_publish_details | boolean | Enter 'true' to include the publish details of the entry. |
params.query | object | Queries that you can use to fetch filtered results. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry().query({ query: { title: 'entry title' } }).find() .then((entry) => console.log(entry))
import
The Import an entry call imports an entry into a stack.
Name | Type | Description |
---|---|---|
params.entry (required) | string | File path to import Entry |
locale | string | Enter the code of the language to import the entry of that particular language. |
overwrite | boolean | Select 'true' to replace an existing entry with the imported entry file. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const data = { entry: 'path/to/file.json', } client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry().import(data) .then((entry) => console.log(entry))
Asset
Assets refer to all the media files (images, videos, PDFs, audio files, and so on) uploaded in your Contentstack repository for future use. These files can be attached and used in multiple entries.
update
The Update Asset call lets you update the name and description of an existing Asset.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).asset('uid') .fetch() .then((asset) => { asset.title = 'My New asset' asset.description = 'Asset description' return asset.update() }) .then((asset) => console.log(asset))
delete
The Delete asset call will delete an existing asset from the stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).asset('uid') .delete() .then((response) => console.log(response.notice))
fetch
Name | Type | Description |
---|---|---|
params.version | number | Enter the version number of the asset that you want to retrieve. However, to retrieve a specific version of an entry, you need to keep the environment parameter blank. |
params.include_publish_details | string | Enter 'true' to include the publish details of the entry. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).asset('uid') .fetch() .then((asset) => console.log(asset))
replace
The Replace asset call will replace an existing asset with another file on the stack.
Name | Type | Description |
---|---|---|
params.asset (required) | object | Asset details to replace. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const asset = { upload: 'path/to/file.png', title: 'Title', description: 'Desc' } client.stack({ api_key: 'api_key'}).asset('uid').replace(asset) .then((asset) => console.log(asset))
publish
The publish call is used to publish a specific version of an asset on the desired environment either immediately or at a later date/time.
Name | Type | Description |
---|---|---|
params.publishDetails (required) | object | Details of asset to be publish. |
params.locale | string | Enter the code of the locale that the entry belongs to. |
params.version | number | Asset version to be publish |
params.scheduledAt | string | Schedule date for publishing Asset. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const asset = { "locales": [ "en-us" ], "environments": [ "development" ] } client.stack({ api_key: 'api_key'}).asset('uid') .publish({ publishDetails: asset, locale: "en-us", version: 1, scheduledAt: "2019-02-08T18:30:00.000Z"}) .then((response) => console.log(response.notice))
unpublish
The unpublish call is used to unpublish a specific version of an asset on the desired environment either immediately or at a later date/time.
Name | Type | Description |
---|---|---|
params.publishDetails (required) | object | Details of asset to be unpublished. |
params.locale | string | Enter the code of the locale that the entry belongs to. |
params.version | number | Asset version to be publish |
params.scheduledAt | string | Schedule date for publishing Asset. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const asset = { "locales": [ "en-us" ], "environments": [ "development" ] } client.stack({ api_key: 'api_key'}).asset('uid') .unpublish({ publishDetails: asset, locale: "en-us", version: 1, scheduledAt: "2019-02-08T18:30:00.000Z"}) .then((response) => console.log(response.notice))
folder
The Folder allows to fetch and create folders in assets.
Name | Type | Description |
---|---|---|
uid | string | Folder uid to perform operation |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).asset().folder() OR client.stack({ api_key: 'api_key'}).asset().folder('folder_uid')
create
The Create an asset call creates a new asset.
Name | Type | Description |
---|---|---|
params.asset (required) | object | Asset details to create. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const asset = { upload: 'path/to/file.png', title: 'Title', description: 'Desc' } client.stack({ api_key: 'api_key'}).asset().create(asset) .then((asset) => console.log(asset))
query
Name | Type | Description |
---|---|---|
params.include_publish_details | boolean | Enter 'true' to include the publish details of the entry. |
params.query | object | Queries that you can use to fetch filtered results. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).asset() .query({ query: { filename: 'Asset Name' } }) .find() .then((asset) => console.log(asset))
download
The Download function will get downloadable file in specified format.
Name | Type | Description |
---|---|---|
param.url | string | The url for the asset to download |
param.responseType | string | Optional parameter to specify the response type. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).asset('uid') .fetch() .then((asset) => asset.download({responseType: 'blob'})) .then((response) => // Write response data to destination file. )
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).asset() .download({url: 'asset_url_to_download', responseType: 'blob'}) .then((response) => // Write response data to destination file. )
Branch
Branches efficiently present independent workspaces where developers and content managers can work parallely on content models and content. It helps sync the development activities of websites.
delete
The Delete Branch call is used to delete an existing Branch permanently from your Stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).branch('uid') .delete() .then((response) => console.log(response.notice))
fetch
The fetch Branch call fetches Branch details.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).branch('uid') .fetch() .then((branch) => console.log(branch))
create
The Create a Branch call creates a new branch in a particular stack of your Contentstack account.
Name | Type | Description |
---|---|---|
params.branch (required) | object | Branch details to create. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const branch = { name: 'branch_name', source: 'master' } client.stack({ api_key: 'api_key'}).branch().create({ branch }) .then((branch) => console.log(branch))
query
The query on Branch will allow to fetch details of all or specific Branch.
Name | Type | Description |
---|---|---|
params.include_publish_details | boolean | Enter 'true' to include the publish details of the entry. |
params.query | object | Queries that you can use to fetch filtered results. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).branch() .query() .find() .then((branch) => console.log(branch))
compare all
The compare all call is used to compare the differences between all the content types and global fields of two branches.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}) .branch('branch_uid') .compare('compare_branch_uid') .all({skip: 0, limit: 100}) .then(response => console.log(response))
compare contentType
The contentType call is used to compare the differences only between the content types of two branches.
You can specify the content type UID to fetch the difference of a specific content type. If no UID is specified, differences for all content types are fetched in a paged way.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const compare = client.stack({ api_key: 'API_KEY' }).branch(_base_branch_uid).compare(_compare_branch_uid) compare.contentType({ uid: UID, skip: 4, limit: 20, include_schemas: true }) .then(response) .catch(error)
compare globalField
The globalField call is used to compare the differences only between the global fields of two branches.
You can specify the global field UID to fetch the difference of a specific global field. If no UID is specified, differences for all global fields are fetched in a paged way.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const compare = client.stack({ api_key: 'API_KEY' }).branch(_base_branch_uid).compare(_compare_branch_uid) compare.globalField({ uid: UID, skip: 4, limit: 20, include_schemas: true }) .then(response) .catch(error)
merge
The merge call is used to merge two branches. You can choose to use a default merge strategy for all content types and global fields, or you can opt for specific merge strategies for particular content types or global fields.
import * as contentstack from '@contentstack/management' const branch = contentstack.client({ authtoken }).stack({ api_key: 'api_key'}).branch() branch.merge({ base_branch: "main", compare_branch: "dev", default_merge_strategy: "merge_prefer_base", item_merge_strategies: [ { uid: "global_field_uid", type: "global_field", merge_strategy: "merge_prefer_base" } ], merge_comment: "Merging dev into main", no_revert: true })
fetch mergeQueue
The fetch mergeQueue call is used to fetch a specific merge job in a specific branch.
import * as contentstack from '@contentstack/management' const branch = contentstack.client.stack({ api_key: 'API_KEY' }).branch('branch_uid') branch.mergeQueue( 'UID') .fetch() .then(response) .catch(error)
find mergeQueue
The find mergeQueue call is used to fetch all merge jobs in a specific branch.
import * as contentstack from '@contentstack/management' const branch = contentstack.client.stack({ api_key: 'API_KEY' }).branch(branch_uid) branch.mergeQueue() .find() .then(response) .catch(error)
BranchAlias
Branches efficiently present independent workspaces where developers and content managers can work parallely on content models and content. It helps sync the development activities of websites.
A branch alias is a custom name given to a specific branch in a stack to make referencing easier, especially when working with multiple branches.
createOrUpdate
The Create or Update BranchAlias call lets you update the name of an existing BranchAlias.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}) .branchAlias('branch_alias_id') .createOrUpdate('branch_uid') .then((branch) => { branch.name = 'new_branch_name' return branch.update() }) .then((branch) => console.log(branch))
delete
The Delete BranchAlias call is used to delete an existing BranchAlias permanently from your Stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).branchAlias('uid') .delete() .then((response) => console.log(response.notice))
fetch
The fetch BranchAlias call fetches BranchAlias details.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).branchAlias('branch_alias_id') .fetch() .then((branch) => console.log(branch))
fetchAll
Name | Type | Description |
---|---|---|
params.limit | number | The limit parameter will return a specific number of Branch in the output. |
params.skip | number | The skip parameter will skip a specific number of Branch in the output. |
params.include_count | boolean | To retrieve the count of Branch. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).branchAlias() .fetchAll() .then((collection) => console.log(collection))
Folder
update
The Update Folder call lets you update the name and description of an existing Folder.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).asset().folder('uid') .fetch() .then((folder) => { folder.name = 'My New folder' return folder.update() }) .then((folder) => console.log(folder))
delete
The Delete folder call will delete an existing folder from the stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'})asset() .folder('uid') .delete() .then((response) => console.log(response.notice))
fetch
The fetch a folder call returns comprehensive information about folder of a stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).asset() .folder('uid') .fetch() .then((folder) => console.log(folder))
create
The Create a Folder call creates a folder into the assets.
Name | Type | Description |
---|---|---|
params.asset (required) | object | Folder details to create. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const asset = {name: 'My New contentType'} client.stack({ api_key: 'api_key'}).asset().folder().create({ asset }) .then((folder) => console.log(folder))
BulkOperation
Bulk operations such as Publish, Un-publish, and Delete on multiple entries or assets.
publish
The Publish entries and assets in bulk request allows you to publish multiple entries and assets at the same time.
Name | Type | Description |
---|---|---|
params.details | object | Set this with details containing 'entries', 'assets', 'locales', and 'environments' to which you want to publish the entries or assets. If you do not specify a source locale, the entries or assets will be published in the master locale automatically. |
params.skip_workflow_stage_check | boolean | Set this to 'true' to publish the entries that are at a workflow stage where they satisfy the applied publish rules. |
params.approvals | boolean | Set this to 'true' to publish the entries that do not require an approval to be published. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const publishDetails = { entries: [ { uid: '{{entry_uid}}', content_type: '{{content_type_uid}}', version: '{{version}}', locale: '{{entry_locale}}' } ], assets: [{ uid: '{{uid}}' }], locales: [ 'en' ], environments: [ '{{env_uid}}' ] } client.stack({ api_key: 'api_key'}).bulkOperation().publish({ details: publishDetails }) .then((response) => { console.log(response.notice) })
// For Nested bulk publish pass api_version param with value 3.2 import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const publishDetails = { environments:["{{env_uid}}","{{env_uid}}"], locales:["en-us"], entries:[ { _content_type_uid: '{{content_type_uid}}', uid: '{{entry_uid}}' }, { _content_type_uid: '{{content_type_uid}}', uid: '{{entry_uid}}' }, { _content_type_uid: '{{content_type_uid}}', uid: '{{entry_uid}}' } ] } client .stack({ api_key: 'api_key'}) .bulkOperation().publish({ details: publishDetails, api_version: 3.2 }) .then((response) => { console.log(response.notice) })
unpublish
The Unpublish entries and assets in bulk request allows you to unpublish multiple entries and assets at the same time.
Name | Type | Description |
---|---|---|
params.details | object | Set this with details containing 'entries', 'assets', 'locales', and 'environments' to which you want to unpublish the entries or assets. If you do not specify a source locale, the entries or assets will be unpublished in the master locale automatically. |
params.skip_workflow_stage_check | boolean | Set this to 'true' to un-publish the entries that are at a workflow stage where they satisfy the applied un-publish rules. |
params.approvals | boolean | Set this to 'true' to un-publish the entries that do not require an approval to be published. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const publishDetails = { entries: [ { uid: '{{entry_uid}}', content_type: '{{content_type_uid}}', version: '{{version}}', locale: '{{entry_locale}}' } ], assets: [{ uid: '{{uid}}' }], locales: [ 'en' ], environments: [ '{{env_uid}}' ] } client.stack({ api_key: 'api_key'}).bulkOperation().unpublish({ details: publishDetails }) .then((response) => { console.log(response.notice) })
// Bulk nested publish import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const publishDetails = { environments:["{{env_uid}}","{{env_uid}}"], locales:["en-us"], items:[ { _content_type_uid: '{{content_type_uid}}', uid: '{{entry_uid}}' }, { _content_type_uid: '{{content_type_uid}}', uid: '{{entry_uid}}' }, { _content_type_uid: '{{content_type_uid}}', uid: '{{entry_uid}}' } ] } client.stack({ api_key: 'api_key'}).bulkOperation().unpublish({ details: publishDetails, is_nested: true }) .then((response) => { console.log(response.notice) })
delete
The Delete entries and assets in bulk request allows you to delete multiple entries and assets at the same time.
Name | Type | Description |
---|---|---|
params.details | object | Set this with details specifing the content type UIDs, entry UIDs or asset UIDs, and locales of which the entries or assets you want to delete. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const publishDetails = { entries: [ { uid: '{{entry_uid}}', content_type: '{{content_type_uid}}', locale: '{{entry_locale}}' } ], assets: [{ uid: '{{uid}}' }] } client.stack({ api_key: 'api_key'}).bulkOperation().delete({ details: publishDetails }) .then((response) => { console.log(response.notice) })
addItems
The addItems method allows you to add multiple items to a release in bulk.
Name | Type | Description |
---|---|---|
params.data | object | The data containing the items to be added. |
params.bulk_version | string | The bulk operation version . (2.0) |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const itemsData = { items: [ { uid: 'entry_uid', content_type: 'content_type_uid' } ] } client.stack({ api_key: 'api_key'}).bulkOperation().addItems({ data: itemsData }) .then((response) => { console.log(response) })
updateItems
The updateItems method allows you to update multiple items in a release in bulk.
Name | Type | Description |
---|---|---|
params.data | object | The data containing the items to be added. |
params.bulk_version | string | The bulk operation version . (2.0) |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const itemsData = { items: [ { uid: 'entry_uid', content_type: 'content_type_uid' } ] or [ '$all' ] } client.stack({ api_key: 'api_key'}).bulkOperation().updateItems({ data: itemsData }) .then((response) => { console.log(response) })
jobStatus
The jobStatus method allows you to check the status of a bulk job.
Name | Type | Description |
---|---|---|
params.job_id | string | The bulk job's UID |
params.bulk_version | string | The bulk operation version . (2.0) |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).bulkOperation().jobStatus({ job_id: 'job_id' }) .then((response) => { console.log(response) })
Extension
Extensions let you create custom fields and custom widgets that lets you customize Contentstack's default UI and behavior. Read more about Extensions.
update
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).extension('extension_uid') .fetch() .then((extension) => { extension.title = 'My Extension Type' return extension.update() }) .then((extension) => console.log(extension))
delete
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).extension('extension_uid') .delete() .then((response) => console.log(response.notice))
fetch
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).extension('extension_uid') .fetch() .then((extension) => console.log(extension))
upload
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const extension = { upload: 'path/to/file', title: 'Title', tags: [ 'tag1', 'tag2' ], data_type: 'text', title: 'Old Extension', multiple: false, config: {}, type: 'Type of extenstion you want to create widget/dashboard/field' } client.stack({ api_key: 'api_key'}).extension().upload(extension) .then((extension) => console.log(extension))
create
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const extension = { tags: [ 'tag1', 'tag2' ], data_type: 'text', title: 'Old Extension', src: "Enter either the source code (use 'srcdoc') or the external hosting link of the extension depending on the hosting method you selected.", multiple: false, config: {}, type: 'field' } client.stack({ api_key: 'api_key'}).extension().create({ extension }) .then((extension) => console.log(extension))
query
Name | Type | Description |
---|---|---|
params.include_count | boolean | Enter 'true' to include the count of extension |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).extension() .query() .find() .then((extensions) => console.log(extensions))
Release
You can pin a set of entries and assets (along with the deploy action, i.e., publish/unpublish) to a ‘release’, and then deploy this release to an environment. This will publish/unpublish all the items of the release to the specified environment.
update
The Update Release call lets you update the name and description of an existing Release.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const release = { name: "Release Name", description: "2018-12-12", locked: false, archived: false } var release = client.stack({ api_key: 'api_key'}).release('release_uid') Object.assign(release, cloneDeep(release)) release.update() .then((release) => console.log(release))
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).release('release_uid').fetch() .then((release) => { release.title = 'My New release' release.description = 'Release description' return release.update() }) .then((release) => console.log(release))
fetch
The fetch Release call fetches Release details.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).release('release_uid') .fetch() .then((release) => console.log(release))
delete
The Delete Release call is used to delete an existing Release permanently from your Stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).release('release_uid') .delete() .then((response) => console.log(response.notice))
item
A ReleaseItem is a set of entries and assets that needs to be deployed (published or unpublished) all at once to a particular environment.
Name | Type | Description |
---|---|---|
params.environments (required) | array | The environment(s) on which the Release should be deployed. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).release('release_uid').item() .fetchAll() .then((items) => console.log(items))
deploy
Deploying a release performs the selected action (publish or unpublish) on the items of that release associated with a specific environment.
Name | Type | Description |
---|---|---|
params.environments (required) | array | The environment(s) on which the Release should be deployed. |
params.locales | array | The locale(s) on which the Release should be deployed. |
params.action | string | The action on which the Release should be deployed. |
params. scheduledAt | string | The schedule time for the Release to deploy. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).release('release_uid').deploy({ environments: [ "production", "uat" ], locales: [ "en-us", "ja-jp" ], scheduledAt: '2018-12-12T13:13:13:122Z', action: 'publish', }) .then((response) => console.log(response.notice))
clone
The Clone a Release request allows you to clone (make a copy of) a specific Release in a stack.
Name | Type | Description |
---|---|---|
params.name (required) | string | The name of the cloned Release. |
params.description | string | description of the cloned Release. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).release('release_uid') .clone({ name: 'New Name', description: 'New Description'}) .then((release) => console.log(release))
create
The Create a Release request allows you to create a new Release in your stack. To add entries/assets to a Release, you need to provide the UIDs of the entries/assets in ‘items’ in the request body.
Name | Type | Description |
---|---|---|
params.release | object | Release details. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const release = { name: "Release Name", description: "2018-12-12", locked: false, archived: false } client.stack({ api_key: 'api_key'}).release().create({ release }) .then((release) => console.log(release))
query
Name | Type | Description |
---|---|---|
params.include_count | boolean | The 'include_count’ parameter includes the count of total number of releases in your stack, along with the details of each release. |
params.include_items_count | boolean | The ‘include_items_count’ parameter returns the total number of items in a specific release. |
params.limit | number | The ‘limit’ parameter will return a specific number of releases in the output. |
params.skip | number | The ‘skip’ parameter will skip a specific number of releases in the response. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).release().query() .find() .then((release) => console.log(release))
ReleaseItem
A ReleaseItem is a set of entries and assets that needs to be deployed (published or unpublished) all at once to a particular environment.
delete
The Delete method request deletes one or more items (entries and/or assets) from a specific Release.
Name | Type | Description |
---|---|---|
params.item | object | Add a single item to a Release |
params.items | object | Add multiple items to a Release |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).release('release_uid').delete() .then((response) => console.log(response.notice))
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const items = [ { uid: "entry_or_asset_uid1", version: 1, locale: "en-us", content_type_uid: "demo1", action: "publish" }, { uid: "entry_or_asset_uid2", version: 4, locale: "fr-fr", content_type_uid: "demo2", action: "publish" } ] client.stack({ api_key: 'api_key'}).release('release_uid') .item() .create({ items }) .then((release) => console.log(release))
create
The Create method allows you to add an one or more items (entry or asset) to a Release.
Name | Type | Description |
---|---|---|
params.item | object | Add a single item to a Release |
params.items | object | Add multiple items to a Release |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const item = { version: 1, uid: "entry_or_asset_uid", content_type_uid: "your_content_type_uid", action: "publish", locale: "en-us" } client.stack({ api_key: 'api_key'}).release('release_uid') .item() .create({ item }) .then((release) => console.log(release))
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const items = [ { uid: "entry_or_asset_uid1", version: 1, locale: "en-us", content_type_uid: "demo1", action: "publish" }, { uid: "entry_or_asset_uid2", version: 4, locale: "fr-fr", content_type_uid: "demo2", action: "publish" } ] client.stack({ api_key: 'api_key'}).release('release_uid') .item() .create({ items }) .then((release) => console.log(release))
findAll
The Get all items in a Release request retrieves a list of all items (entries and assets) that are part of a specific Release.
Name | Type | Description |
---|---|---|
params.include_count | boolean | The include_count parameter includes the count of total number of items in Release, along with the details of each items. |
params.limit | number | The limit parameter will return a specific number of release items in the output. |
params.skip | number | The skip parameter will skip a specific number of release items in the response. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).release('release_uid') .item() .findAll() .then((items) => console.log(items))
move
The move method allows you to move multiple items within a specific release.
Name | Type | Description |
---|---|---|
params.param | object | The data containing the items to be moved. |
params.release_version | string | The release version(2.0) |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const moveData = { items: [ { uid: 'entry_uid', content_type: 'content_type_uid' } ] } client.stack({ api_key: 'api_key'}).release('release_uid').item().move({ param: moveData, release_version: '1.0' }) .then((response) => { console.log(response) })
Labels
Labels allow you to group a collection of content within a stack. Using labels you can group content types that need to work together. Read more about Labels.
update
The Update label call is used to update an existing label.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).label('label_uid') .fetch() .then((label) => { label.name = 'My New Content Type' return label.update() }) .then((label) => console.log(label))
delete
The Delete label call is used to delete a specific label.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).label('label_uid').delete() .then((response) => console.log(response.notice))
fetch
The fetch Label returns information about a particular label of a stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).label('label_uid').fetch() .then((label) => console.log(label))
create
The Create a label call creates a new label.
Name | Type | Description |
---|---|---|
params.label | Object | The label details you want to create with ContentType uid list. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const label = { name: 'First label', content_types: ['content_type_uid'] } client.stack({ api_key: 'api_key'}).label() .create({ label }) .then((label) => console.log(label))
query
The Query on Label will allow to fetch details of all or specific Label.
Name | Type | Description |
---|---|---|
params.include_count | boolean | The include_count parameter includes the count of total number of label in your stack, along with the details of each label. |
params.limit | number | The limit parameter will return a specific number of label in the output. |
params.skip | number | The skip parameter will skip a specific number of label in the response. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).label() .query({ query: { name: 'Label Name' } }).find() .then((label) => console.log(label))
Locale
Contentstack has a sophisticated multilingual capability. It allows you to create and publish entries in any language. This feature allows you to set up multilingual websites and cater to a wide variety of audience by serving content in their local language(s). Read more about Locales.
update
The Update Locale call lets you update the name and description of an existing Locale.
Name | Type | Description |
---|---|---|
body | JSONObject | The request body |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).locale('locale_code').fetch() .then((locale) => { locale.fallback_locale = 'en-at' return locale.update() }) .then((locale) => console.log(locale))
delete
The Delete Locale call is used to delete an existing Locale permanently from your Stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).locale('locale_code').delete() .then((response) => console.log(response.notice))
fetch
The fetch Locale call fetches Locale details.
Name | Type | Description |
---|---|---|
version | Int | UID of the content type of which you want to retrieve the details |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).locale('locale_code').fetch() .then((locale) => console.log(locale))
create
The Create a content type call creates a new content type in a particular stack of your Contentstack account.
Name | Type | Description |
---|---|---|
body | JSONObject | The request body |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).locale().create({ locale: { code: 'en-at' } ) .then((locale) => console.log(locale))
query
The Query on Locale will allow to fetch details of all or specific Locale
Name | Type | Description |
---|---|---|
include_count | Boolean | Total count of content types available in your stack. |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack(api_key).locale().query({ query: { code: 'locale-code' } }).find() .then((locales) => console.log(locales))
AuditLog
An audit log displays a record of all the activities performed in a stack and helps you track all published items, updates, deletes, and the current status of the existing content.
fetch
The fetch AuditLog call fetches AuditLog details.
Name | Type | Description |
---|---|---|
audit_log_item_uid | string | UID of the audit log item |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).auditLog('audit_log_item_uid').fetch() .then((log) => console.log(log))
fetchAll
The fetchAll method retrieves the details of all the branches of a stack.
Name | Type | Description |
---|---|---|
limit | Int | Limit on API response to provide content in the list |
skip | Int | Offset for skipping content in response |
include_count | Boolean | To retrieve the count of Branch. |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).auditLog().fetchAll() .then((logs) => console.log(logs))
Environment
A publishing environment corresponds to one or more deployment servers or a content delivery destination where the entries need to be published.
update
The Update Environment call lets you update the name and description of an existing Environment.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).environment('name') .fetch() .then((environment) => { environment.title = 'My New Content Type' environment.description = 'Content Type description' return environment.update() }) .then((environment) => console.log(environment))
delete
The Delete Environment call is used to delete an existing Environment permanently from your Stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).environment('name') .delete() .then((response) => console.log(response.notice))
fetch
The fetch Environment call fetches Environment details.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).environment('name') .fetch() .then((environment) => console.log(environment))
create
The Create a Environment call creates a new environment in a particular stack of your Contentstack account.
Name | Type | Description |
---|---|---|
params.environments | object | The environment details with name, server, urls, and deploy content. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const environment = { name: 'development', servers: [ { name: 'default' } ], urls: [ { locale: 'en-us', url: 'http://example.com/' } ], deploy_content: true } client.stack({ api_key: 'api_key'}).environment().create({ environment }) .then((environment) => console.log(environment))
query
The Query on Environment will allow to fetch details of all or specific Environment.
Name | Type | Description |
---|---|---|
params.include_count | boolean | The `include_count’ parameter includes the count of total number of environment in your stack, along with the details of each environment. |
params.limit | The ‘limit’ parameter will return a specific number of environment in the output. | |
params.skip | The ‘skip’ parameter will skip a specific number of environment in the response. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).environment() .query({ query: { name: 'Environment Name' } }).find() .then((environment) => console.log(environment))
DeliveryToken
Delivery tokens provide read-only access to the associated environments.
update
The update method allows you to modify the existing management token within the stack.
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).managementToken('management_token_uid') .fetch() .then((managementToken) => { managementToken.title = 'My New management token' managementToken.description = 'management token description' return managementToken.update() }) .then((managementToken) => console.log(managementToken))
delete
The Delete DeliveryToken call is used to delete an existing DeliveryToken permanently from your Stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).deliveryToken('delivery_token_uid') .delete() .then((response) => console.log(response.notice))
fetch
The fetch DeliveryToken call fetches DeliveryToken details.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).deliveryToken('delivery_token_uid') .fetch() .then((deliveryToken) => console.log(deliveryToken))
create
The Create a DeliveryToken call creates a new deliveryToken in a particular stack of your Contentstack account.
Name | Type | Description |
---|---|---|
params.token | object | The token details with name, description and scope for the token to be created. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const token = { name: 'Test', description: 'This is a demo token.', scope: [{ module: 'environment', environments: ['development'], acl: { read: true } }] } client.stack({ api_key: 'api_key'}).deliveryToken() .create({ token }) .then((deliveryToken) => console.log(deliveryToken))
query
The Query on Delivery Token will allow to fetch details of all or specific Delivery Token.
Name | Type | Description |
---|---|---|
params.include_count | boolean | The `include_count’ parameter includes the count of total number of delivery token in your stack, along with the details of each delivery token |
params.limit | number | The ‘limit’ parameter will return a specific number of delivery token in the output. |
params.skip | number | The ‘skip’ parameter will skip a specific number of delivery token in the response. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).deliveryToken() .query({ query: { name: 'token_name' } })) .find() .then((contentstackCollection) => console.log(contentstackCollection))
ManagementToken
Management Tokens are tokens that provide you with read-write access to your stack's content. When used in conjunction with the stack API key, they authorize Content Management API (CMA) requests for the purpose of managing your stack's content.
update
The update method allows you to modify the existing management token within the stack.
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).managementToken('management_token_uid') .fetch() .then((managementToken) => { managementToken.title = 'My New management token' managementToken.description = 'management token description' return managementToken.update() }) .then((managementToken) => console.log(managementToken))
delete
The delete method removes the existing management token from the stack.
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).managementToken('management_token_uid') .delete() .then((response) => console.log(response.notice))
fetch
The fetch method retrieves the details of a specific management token from the stack.
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).managementToken('management_token_uid') .fetch() .then((managementToken) => console.log(managementToken))
create
The create method allows you to create a new management token in the stack.
Name | Type | Description |
---|---|---|
params.token | object | The details of the token, including its name, description, and scope, are specified for the token to be created |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const token = { "token":{ "name":"Test Token", "description":"This is a sample management token.", "scope":[ { "module":"content_type", "acl":{ "read":true, "write":true } }, { "module":"branch", "branches":[ "main" ], "acl":{ "read":true } }, { "module":"branch_alias", "branch_aliases":[ "tst" ], "acl":{ "read":true } } ], "expires_on":"2024-12-10", "is_email_notification_enabled":true } } client.stack({ api_key: 'api_key'}).managementToken() .create({ token }) .then((managementToken) => console.log(managementToken))
query
The Get all managementToken request retrieves comprehensive information about all the management tokens created in a stack.
Name | Type | Description |
---|---|---|
params.include_count | boolean | The include_count parameter includes the total count of management tokens in your stack, along with the details of each individual management token. |
params.limit | int | The limit parameter retrieves a specific number of management tokens in the output. |
params.skip | int | The skip parameter will skip a specific number of management tokens in the response. |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).managementToken() .query({ query: { name: 'token_name' } })) .find() .then((contentstackCollection) => console.log(contentstackCollection))
Role
A role is a collection of permissions that will be applicable to all the users who are assigned this role.
update
The Update role call lets you modify an existing role of your stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).role('role_uid') .fetch({ include_rules: true, include_permissions: true}) .then((role) => { role.name = 'My New Role' role.description = 'Role description' role.rules = [ { module: 'asset', assets: ['$all'], acl: { read: true, create: true, update: true, publish: true, delete: true } }, { module: 'environment', environments: [], acl: { read: true } }, { module: 'locale', locales: [Array], acl: { read: true } }] return role.update() }) .then((role) => console.log(role))
delete
The Delete role call deletes an existing role from your stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).role('role_uid').delete() .then((response) => console.log(response.notice))
create
The Create call creates a new role in a particular stack of your Contentstack account.
Name | Type | Description |
---|---|---|
params.role | object | The role details with name, description and rules to be created. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const role = { "name": "Role Name", "description": "From CMA Js", "rules": [ { "module": "environment", "environments": [], "acl": { "read": true } }, { "module": "locale", "locales": [], "acl": { "read": true } }, { "module": "taxonomy", "taxonomies": [ "taxonomy_UID" ], "terms": [ "taxonomy_UID.term_UID" ], "content_types": [ { "uid": "$all", "acl": {} } ] } ] } client.stack({ api_key: 'api_key'}).role() .create({ role }) .then((role) => console.log(role))
fetch
The Get a single role request returns comprehensive information on a specific role.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).role('role_uid').fetch() .then((role) => console.log(role))
fetchAll
The ‘Get all roles’ request returns comprehensive information about all roles created in a stack.
Name | Type | Description |
---|---|---|
params.include_count | boolean | The `include_count’ parameter includes the count of total number of role in your stack, along with the details of each role. |
params.include_permissions | boolean | Set this parameter to 'true' to include the details of the permissions assigned to a particular role. |
params.limit | number | The ‘limit’ parameter will return a specific number of role in the output. |
params.skip | number | The ‘skip’ parameter will skip a specific number of role in the response. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).role() .fetchAll() .then((role) => console.log(role))
query
The Query on Role will allow to fetch details of all or specific role.
Name | Type | Description |
---|---|---|
params.include_count | boolean | The `include_count’ parameter includes the count of total number of role in your stack, along with the details of each role. |
params.include_permissions | boolean | Set this parameter to 'true' to include the details of the permissions assigned to a particular role. |
params.limit | number | The ‘limit’ parameter will return a specific number of role in the output. |
params.skip | number | The ‘skip’ parameter will skip a specific number of role in the response. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).role() .query({ query: { filename: 'Asset Name' } }) .find() .then((role) => console.log(role))
Webhook
A webhook is a mechanism that sends real-time information to any third-party app or service to keep your application in sync with your Contentstack account. Webhooks allow you to specify a URL to which you would like Contentstack to post data when an event happens.
update
The Update Webhook call lets you update the name and description of an existing Webhook.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).webhook('webhook_uid') .fetch() .then((webhook) => { webhook.title = 'My New Webhook' webhook.description = 'Webhook description' return webhook.update() }) .then((webhook) => console.log(webhook))
delete
The Delete Webhook call is used to delete an existing Webhook permanently from your Stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).webhook('webhook_uid') .delete() .then((response) => console.log(response.notice))
fetch
The fetch Webhook call fetches Webhook details.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).webhook('webhook_uid') .fetch() .then((webhook) => console.log(webhook))
executions
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).webhook('webhook_uid') .executions() .then((webhook) => console.log(webhook))
retry
The retry webhook execution will perform retry execution.
Name | Type | Description |
---|---|---|
executionUid | string | execution UID that you receive when you execute the 'Get executions of webhooks' call. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}) .retry( executionUid ) .then((webhook) => console.log(webhook))
create
The Create a webhook request allows you to create a new webhook in a specific stack.
Name | Type | Description |
---|---|---|
params.webhook | object | The webhook details including name, destinations, channels, and retry policy. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const webhook = { name: 'Test', destinations: [{ target_url: 'http://example.com', http_basic_auth: 'basic', http_basic_password: 'test', custom_header: [{ header_name: 'Custom', value: 'testing' }] }], channels: [ 'assets.create' ], retry_policy: 'manual', disabled: false } client.stack({ api_key: 'api_key'}).webhook() .create({ webhook }) .then((webhook) => console.log(webhook))
fetchAll
The Get all Webhook call lists all Webhooks from Stack.
Name | Type | Description |
---|---|---|
params.include_count | boolean | The `include_count’ parameter includes the count of total number of webhook in your stack, along with the details of each webhook. |
params.limit | number | The ‘limit’ parameter will return a specific number of webhook in the output. |
params.skip | number | The ‘skip’ parameter will skip a specific number of webhook in the response. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).webhook() .fetchAll() .then((webhook) => console.log(webhook))
import
The Import a webhook call imports a web hook into a stack.
Name | Type | Description |
---|---|---|
params.webhook (required) | string | File path to import webhook |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const data = { webhook: 'path/to/file.json', } client.stack({ api_key: 'api_key'}).webhook().import(data) .then((webhook) => console.log(webhook)) //OR client.stack({ api_key: 'api_key'}).webhook('webhook_uid').import(data) .then((webhook) => console.log(webhook))
Workflow
Workflow is a tool that allows you to streamline the process of content creation and publishing, and lets you manage the content lifecycle of your project smoothly.
update
The Update Workflow request allows you to add a workflow stage or update the details of the existing stages of a workflow.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).workflow('workflow_uid').fetch() .then((workflow) => { workflow.name = 'My New Workflow' workflow.description = 'Workflow description' return workflow.update() }) .then((workflow) => console.log(workflow))
disable
The Disable Workflow request allows you to disable a workflow.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).workflow('workflow_uid') .disable() .then((workflow) => console.log(workflow))
enable
The Enable Workflow request allows you to enable a workflow.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).workflow('workflow_uid') .enable() .then((workflow) => console.log(workflow))
delete
The Delete Workflow call is used to delete an existing Workflow permanently from your Stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).workflow('workflow_uid') .delete() .then((response) => console.log(response.notice))
fetch
The fetch workflow retrieves the comprehensive details of a specific Workflow of a stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).workflow('workflow_uid') .fetch() .then((workflow) => console.log(workflow))
getPublishRules
The get Workflow call is used to get details of an existing Workflow from your Stack.
Name | Type | Description |
---|---|---|
params.action | string | Enter the action that has been set in the Publishing Rule. Example:publish/unpublish |
params.locale | string | Enter the code of the locale where your Publishing Rule will be applicable. |
environment | string | Enter the UID of the environment where your Publishing Rule will be applicable. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).workflow() .contentType('contentType_uid') .getPublishRules() .then((collection) => console.log(collection))
create
The Create a Workflow request allows you to create a Workflow.
Name | Type | Description |
---|---|---|
params.workflow | object | The workflow details with workflow stages. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const workflow = { "workflow_stages": [ { "color": "#2196f3", "SYS_ACL": { "roles": { "uids": [] }, "users": { "uids": [ "$all" ] }, "others": {} }, "next_available_stages": [ "$all" ], "allStages": true, "allUsers": true, "specificStages": false, "specificUsers": false, "entry_lock": "$none", "name": "Review" }, { "color": "#74ba76", "SYS_ACL": { "roles": { "uids": [] }, "users": { "uids": [ "$all" ] }, "others": {} }, "allStages": true, "allUsers": true, "specificStages": false, "specificUsers": false, "next_available_stages": [ "$all" ], "entry_lock": "$none", "name": "Complete" } ], "admin_users": { "users": [] }, "name": "Workflow Name", "enabled": true, "content_types": [ "$all" ] } client.stack({ api_key: 'api_key'}).workflow() .create({ workflow }) .then((workflow) => console.log(workflow))
fetchAll
Name | Type | Description |
---|---|---|
params.limiit | number | The limit parameter will return a specific number of workflow in the output. |
params.skip | number | The skip parameter will skip a specific number of workflow in the output. |
params.include_count | boolean | To retrieve the count of workflow. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).workflow() .fetchAll() .then((collection) => console.log(collection))
publishRule
The Publish rule allow you to create, fetch, delete, update the publish rules.
Name | Type | Description |
---|---|---|
uid | string | Uid for publish rule. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).workflow().publishRule().fetchAll() .then((collection) => console.log(collection)) client.stack({ api_key: 'api_key'}).workflow().publishRule('rule_uid').fetch() .then((publishrule) => console.log(publishrule))
PublishRules
create
The Create Publish Rules request allows you to create publish rules for the publish rules of a stack.
Name | Type | Description |
---|---|---|
params.workflow | object | The workflow details with workflow stages. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const publishing_rule = { "publish rules": "publish rules_uid", "actions": [], "content_types": ["$all"], "locales": ["en-us"], "environment": "environment_uid", "approvers": { "users": ["user_uid"], "roles": ["role_uid"] }, "publish rules_stage": "publish rules_stage_uid", "disable_approver_publishing": false } client.stack({ api_key: 'api_key'}).publishRules() .create({ publishing_rule }) .then((publishRules) => console.log(publishRules))
Taxonomy
Taxonomy helps you categorize pieces of content within your stack to facilitate easy navigation, search, and retrieval of information. You can hierarchically organize your web properties based on your requirements, such as their purpose, target audience, or any other aspects of your business.
create
The create method lets you create a new taxonomy in your stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client() const taxonomy = { uid: 'taxonomy_testing1', name: 'taxonomy testing', description: 'Description for Taxonomy testing' } client.stack({ api_key: 'api_key'}).taxonomy().create({taxonomy}) .then((taxonomy) => console.log(taxonomy))
fetch
The fetch method retrieves the details of a specific taxonomy in your stack.
Name | Type | Description |
---|---|---|
taxonomyUid (required) | string | UID of the taxonomy |
include_terms_count | boolean | Include count of all the terms that are in the taxonomy |
include_referenced_terms_count | boolean | Include count of the terms which are referred in atleast 1 entry |
include_referenced_entries_count | boolean | Include count of the entries where atleast 1 term of this taxonomy is referred |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).taxonomy('taxonomyUid').fetch().then((taxonomy) => console.log(taxonomy))
query
The query method retrieves the details of all the existing taxonomies in your stack.
Name | Type | Description |
---|---|---|
include_terms_count | boolean | Include count of all the terms that are in the taxonomy |
include_referenced_terms_count | boolean | Include count of the terms which are referred in atleast 1 entry |
include_referenced_entries_count | boolean | Include count of the entries where atleast 1 term of this taxonomy is referred |
include_count | boolean | Include count of the taxonomies that matched the query |
asc|desc | string | Sort the given field in either ascending or descending order |
query | string | Used to give a custom query in a string format, currently restricted to only query on uid |
typeahead | string | Used to match the given string in all taxonomies & return the matched result |
deleted | boolean | Used to fetch only the deleted taxonomies |
skip | number | Skip the number of taxonomies |
limit | number | Limit the result to number of taxonomies |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).taxonomy().query().find().then((taxonomy) => console.log(taxonomy))
update
The update method lets you update an existing taxonomy in your stack.
Name | Type | Description |
---|---|---|
taxonomyUid (required) | string | UID of the taxonomy |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).taxonomy('taxonomyUid').fetch() .then((taxonomy) => { taxonomy.name = 'taxonomy name' return taxonomy.update() }) .then((taxonomy) => console.log(taxonomy))
delete
The delete method lets you remove an existing taxonomy from the stack.
Name | Type | Description |
---|---|---|
taxonomyUid (required) | string | UID of the taxonomy |
force | boolean | Setting this to true will force delete the taxonomy and all its child terms. By default it is set to false. |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).taxonomy('taxonomyUid').delete().then((taxonomy) => console.log(taxonomy))
Terms
Terms are the fundamental building blocks in a taxonomy. They are used to create hierarchical structures and are integrated into entries to classify and categorize information systematically.
create
The create method lets you add a new term to your taxonomy.
import * as contentstack from '@contentstack/management' const client = contentstack.client() const term = { uid: 'termUid', name: 'term name', parent_uid: 'parent_uid', order: 2 } client.stack({ api_key: 'api_key'}).taxonomy('taxonomyUid') terms().create(term) .then((term) => console.log(term))
fetch
The fetch method is used to retrieve the information about a specific term in your taxonomy.
Name | Type | Description |
---|---|---|
include_children_count | boolean | Include count of number of children under each term |
include_referenced_entries_count | boolean | Include count of the entries where this term is referred |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).taxonomy('taxonomyUid').terms('termUid').fetch().then((term) => console.log(term))
query
The query method is used to retrieve the information of all the terms in your taxonomy.
Name | Type | Description |
---|---|---|
depth | number | Include the terms from the root upto the depth specified if set to a number greater than 0, include all the terms if set to 0, default depth will be set to 1 |
include_children_count | boolean | Include count of number of children under each term if set to true |
include_referenced_entries_count | boolean | Include count of the entries where this term is referred |
include_count | boolean | Include count of the terms that matched the query |
include_order | boolean | Include order of the terms relative to their siblings |
asc|desc | string | Sort the given field in either ascending or descending order |
skip | number | Skip the number of terms |
limit | number | Limit the result to number of terms |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).taxonomy('taxonomyUid').terms().query().find().then((terms) => console.log(terms))
update
The update method is used to update the details of an exisiting term in the taxonomy.
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).taxonomy('taxonomyUid').terms('termUid').fetch().then((term) => { term.name = 'taxonomy name' return term.update() }) .then((term) => console.log(term))
delete
The delete method lets you remove an existing term from a taxonomy.
Name | Type | Description |
---|---|---|
force | boolean | Setting this to true will force delete the taxonomy and all its child terms. By default it is set to false. |
termUid (required) | string | UID of the term |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).taxonomy('taxonomyUid').term('termUid').delete() .then((response) => console.log(response.notice))
ancestors
The ancestors method is used to retrieves the list of all the ancestors of an existing term
Name | Type | Description |
---|---|---|
termUid (required) | string | UID of the term |
include_children_count | boolean | Include count of number of children under each term |
include_referenced_entries_count | boolean | Include count of the entries where atleast 1 term of this taxonomy is referred |
include_count | boolean | Include count of the terms that matched the query |
skip | number | Skip the number of terms |
limit | number | Limit the result to number of terms |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).taxonomy('taxonomyUid').term('termUid').ancestors() .then((terms) => console.log(terms))
descendants
The descendants method is used to retrieves the list of all the descendants of an existing term.
Name | Type | Description |
---|---|---|
termUid (required) | string | UID of the term |
depth | number | Include the terms from the current term’s depth, upto the depth specified if set to a number greater than 0, include all the terms from the current term’s depth if set to 0, default depth will be set to 1, which will be to include the immediate terms from the current term’s depth |
include_children_count | boolean | Include count of number of children under each term |
include_referenced_entries_count | boolean | Include count of the entries where atleast 1 term of this taxonomy is referred |
include_count | boolean | Include count of the terms that matched the query |
include_order | boolean | Include order of the terms relative to their siblings |
skip | number | Skip the number of terms |
limit | number | Limit the result to number of terms |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).taxonomy('taxonomyUid').term('termUid').descendants() .then((terms) => console.log(terms))
move
The move method lets you move an existing term or change the parent UID of the term.
Name | Type | Description |
---|---|---|
termUid (required) | string | UID of the term |
force | boolean | Setting this to true will force delete the taxonomy and all its child terms. By default it is set to false. |
import * as contentstack from '@contentstack/management' const client = contentstack.client() const term = { parent_uid: 'parent_uid', order: 2 } client.stack({ api_key: 'api_key'}).taxonomy('taxonomyUid').terms('termUid').move({term}) .then((term) => console.log(term))
search
The search method lets you search an existing term in the taxonomy.
Name | Type | Description |
---|---|---|
termUid (required) | string | UID of the term |
include_children_count | boolean | Include count of number of children under each term |
include_referenced_entries_count | boolean | Include count of the entries where atleast 1 term of this taxonomy is referred |
include_count | boolean | Include count of the terms that matched the query |
query | string | Used to give a custom query in a string format, currently restricted to only query on taxonomy_uid & term_uid |
typeahead | string | Used to match the given string in all terms & return the matched result, should either match with term uid or term name |
skip | number | Skip the number of terms |
limit | number | Limit the result to number of terms |
import * as contentstack from '@contentstack/management' const client = contentstack.client() client.stack({ api_key: 'api_key'}).taxonomy('taxonomyUid').terms().search('termString').then((term) => console.log(term))
Teams
Teams streamline the process of assigning roles and permissions by grouping users together. Rather than assigning roles to individual users or at the stack level, you can assign roles directly to a team. This ensures that all users within a team share the same set of role permissions, making role management more efficient.
fetch
The fetch method retrieves details of a specific team.
Name | Type | Description |
---|---|---|
includeUserDetails | boolean | If true, include detailed user information for team members; otherwise, include only user UIDs. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization('organization_uid').teams('teamUid').fetch() .then((team) => console.log(team)
create
The create method creates a new team.
Name | Type | Description |
---|---|---|
includeUserDetails | boolean | If true, include detailed user information for team members; otherwise, include only user UIDs. |
team | object | Details required for team creation. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const team = { name: 'name', organizationUid: 'organization_uid', users: [], stackRoleMapping: [], organizationRole: 'organizationRole' } client.organization('organizationUid').teams().create(team) .then((response) => console.log(response))
fetchAll
The fetchAll method retrieves the details of all teams.
Name | Type | Description |
---|---|---|
includeUserDetails | boolean | If true, include detailed user information for team members; otherwise, include only user UIDs. |
asc|desc | string | Sort in either ascending or descending order |
typeahead | string | Used to match the given string in all teams name & return the matched result |
skip | number | Skip the number of teams |
limit | number | Limit the result to number of teams |
user_uid | comma separated string | list of user UIDs to be filtered |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization('organizationUid').teams().fetchAll() .then((teams) => console.log(teams))
delete
The delete method deletes an existing team.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization('organization_uid').teams('teamUid').delete() .then((response) => console.log(response)
update
The update method involves adding and removing users from teams, assigning and removing stack roles within teams, updating team descriptions, and adjusting team organization roles.
Name | Type | Description |
---|---|---|
includeUserDetails | boolean | If true, include detailed user information for team members; otherwise, include only user UIDs. |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const updateData = { name: 'updatedname', users: [{ email: '[email protected]' }], organizationRole: 'blt09e5dfced326aaea', stackRoleMapping: [] } client.organization(s'organizationUid').teams('teamUid').update(updateData) .then((response) => console.log(response))
TeamUsers
The TeamUsers method retrieves the UIDs of the users.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization('organizationUid').teams('teamUid').teamUsers().fetchAll() .then((response) => console.log(response))
stackRoleMappings
The stackRoleMappings method retrieves the stack role mapping details.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization(s'organizationUid').teams('teamUid').stackRoleMappings().fetchAll() .then((response) => console.log(response))
TeamUsers
The TeamUsers methods allows uou to retrieve, add, and remove users from a team.
add
The add method adds an user to the team.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const usersMail = { emails: ['emailId1','emailId2' ] } client.organization('organizationUid').teams('teamUid').teamUsers('userId').add(usersMail) .then((response) => console.log(response))
fetchAll
The fetchAll method allows you to fetch all details of the users of a team.
Name | Type | Description |
---|---|---|
includeUserDetails | boolean | If true, include detailed user information for team members; otherwise, include only user UIDs. |
include_count | boolean | Include total count of users |
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization('organizationUid').teams('teamUid').teamUsers('userId').fetchAll() .then((users) => console.log(users))
remove
The remove method removes an user from the team.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization('organization_uid').teams('teamUid').teamUsers('userId').remove() .then((response) => console.log(response)
StackRoleMappings
The StackRoleMappings methods allows you to retrieve, add, update and delete users from a team.
add
The add method adds an user to the team.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const addRole = { stackApiKey: 'stackApiKey', roles: ['role_uid'] } client.organization('organizationUid').teams('teamUid').stackRoleMappings().add(addRole) .then((response) => console.log(response))
fetchAll
The fetchAll method allows you to fetch all details of the roles of that team.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization('organizationUid').teams('teamUid').stackRoleMappings().fetchAll() .then((response) => console.log(response))
delete
The delete method deletes all roles of the stack.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.organization('organization_uid').teams('teamUid').stackRoleMappings('stackApiKey').delete() .then((response) => console.log(response)
update
The update method is used to update the roles.
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const updateRoles = { roles: ['role_uid1', 'role_uid2'] } client.organization('organizationUid').teams('teamUid').stackRoleMappings('stackApiKey').update(updateRoles) .then((response) => console.log(response))
Variant Group
Variant groups are collections of related variants. These groups allow you to manage and deliver content tailored to specific languages, regions, or other criteria, ensuring that users receive the most relevant version of the content based on their context or preferences.
Create variant group
The Create a variant group method creates a new variant group in a specific stack.
Name | Type | Description |
---|---|---|
variant_group (required) | object | Details of the variant group object |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const variant_group = { "name": "Colors", "content_types": [ "iphone_product_page" ] } client .stack({ api_key: 'api_key'}) .variantGroup() .create({ variant_group }) .then((variantGroup) => console.log(variantGroup))
Update variant group
The Update variant group method allows you to update the name of an existing variant group. You can also modify its JSON schema, including its fields and associated features.
Name | Type | Description |
---|---|---|
variant_group_uid (required) | string | Enter the UID of the Variant Group |
data (required) | Object | Details of the entry variant |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const data = { name: 'updated name' } client .stack({ api_key: 'api_key'}) .variantGroup('variant_group_uid') .update(data) .then((variantGroup) => console.log(variantGroup))
Delete variant group
The Delete variant group method allows you to permanently delete an existing variant group from your stack.
Name | Type | Description |
---|---|---|
variant_group_uid (required) | string | Enter the UID of the Variant Group |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }); client .stack({ api_key: 'api_key'}) .variantGroup('variant_group_uid') .delete() .then((response) => console.log(response.notice))
Get all variant group (For Stack and ContentType)
The Get all variant groups method allows you to retrieve details for all or specific variant groups.
Name | Type | Description |
---|---|---|
params.query (required) | object | Queries to retrieve filtered results |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client .stack({ api_key: 'api_key'}) .variantGroup() .query() .find() .then((response) => console.log(response))
Variant
Variants enable content editors to tailor content for personalized messaging. They help address diverse needs by optimizing reuse and reducing duplication.
Create variant
The Create a variant method creates a new variant in a specific variant group in your stack.
Name | Type | Description |
---|---|---|
params.variant (required) | object | Details of the entry variant |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const variant = { "uid": "iphone_color_white", // optional "name": "White" } client.stack({ api_key: 'api_key'}) .variantGroup('variant_group_uid') .variants().create({ variant }) .then((variant) => console.log(variant))
Update variant
The Update variant method updates an entry for the specified variant group and variants.
Name | Type | Description |
---|---|---|
variant_uid (required) | string | Enter the UID of the variant |
data (required) | object | Details of the entry variant entry |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const data = { name: 'updated name' } client.stack({ api_key: 'api_key'}) .variantGroup('variant_group_uid') .variants('variant_uid') .update(data) .then((variant) => console.log(variant))
Delete variant
The Delete variant method deletes a specific variant from a variant group.
Name | Type | Description |
---|---|---|
variant_uid (required) | string | Enter the UID of the variant |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}) .variantGroup('variant_group_uid') .variants('variant_uid') .delete() .then((response) => console.log(response.notice));
Get a single variant
The Get a single variant method allows you to retrieve the details of a specified variant.
Name | Type | Description |
---|---|---|
variant_uid (required) | string | Enter the UID of the variant |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}) .variantGroup('variant_group_uid') .variants('variant_uid') .fetch(); .then((variant) => console.log(variant));
Create variant
The Create variant method allows you to create an ungrouped variant.
Name | Type | Description |
---|---|---|
data (required) | object | Details of the entry variant |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const data = { "uid": "iphone_color_white", // optional "name": "White", "personalize_metadata": { "experience_uid": "exp1", "experience_short_uid": "expShortUid1", "project_uid": "project_uid1", "variant_short_uid": "variantShort_uid1" }, } client.stack({ api_key: 'api_key'}).variants().create({ data }) .then((variant) => console.log(variant))
Ungrouped Variant
Ungrouped variants are individual variants that are not linked to any variant group. This means they exist independently, without being part of a larger set or category of related variants. This approach allows for greater flexibility in managing and using these variants as they are not constrained by group associations.
Create variant
The Create variant method allows you to create an ungrouped variant.
Name | Type | Description |
---|---|---|
data (required) | object | Details of the entry variant |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const data = { "uid": "iphone_color_white", // optional "name": "White", "personalize_metadata": { "experience_uid": "exp1", "experience_short_uid": "expShortUid1", "project_uid": "project_uid1", "variant_short_uid": "variantShort_uid1" }, } client.stack({ api_key: 'api_key'}).variants().create({ data }) .then((variant) => console.log(variant))
Delete variant
The Delete variant method allows you to delete a specific variant.
Name | Type | Description |
---|---|---|
variant_uid (required) | String | Enter the UID of the variant |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).variants('variant_uid').delete() .then((response) => console.log(response.notice))
Get a single variant
The Get a single variant method allows you to retrieve the details for a specific variant.
Name | Type | Description |
---|---|---|
variant_uid (required) | String | Enter the UID of the variant |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).variants('variant_uid').fetch() .then((variant) => console.log(variant))
Get all variant
The Get all variants method allows you to retrieve details for all or specific variants.
Name | Type | Description |
---|---|---|
params.query (required) | object | Queries to retrieve filtered results |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).variants().query({ query: { title: 'variant title' } }).find() .then((variants) => console.log(variants)) ))
Get variants by UIDs
The Get variants by UIDs method allows you to retrieve the details for specific variants by their specified UIDs.
Name | Type | Description |
---|---|---|
variant_uids (required) | string[] | Enter the UIDs of variants |
Example:
import * as contentstack from '@Contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).variants().fetchByUIDs(['uid1','uid2',.....]).then((variants) => console.log(variants))
Entry Variant
The Entry Variants feature allows you to easily create and manage different content variations for various audiences, languages, and marketing experiments.
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.
Get all entry variants
The Get all entry variants method allows you to retrieve details for all or specific entries.
Name | Type | Description |
---|---|---|
content_type_uid (required) | string | Enter the UID of the content type |
entry_uid (required) | string | Enter the UID of the entry |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry('entry_uid').variants().query().find() .then((variant) => console.log(variant))
Get a single entry variant
The Get a single entry variant method allows you to retrieve the details for a specific entry variant.
Name | Type | Description |
---|---|---|
variant_uid/variant_alias (required) | string | Enter the UID/Alias of the variant |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry('entry_uid').variants('variant_uid/variant_alias').fetch() .then((variant) => console.log(variant))
Delete entry variant
The Delete entry variant method allows you to delete a specific entry variant.
Name | Type | Description |
---|---|---|
variant_uid/variant_alias (required) | string | Enter the UID/Alias of the variant |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) client.stack({ api_key: 'api_key'}).contentType('content_type_uid').entry('entry_uid').variants('variant_uid/variant_alias').delete() .then((response) => console.log(response.notice))
Update entry variant
The Update entry variant method allows you to update a specific entry variant.
Name | Type | Description |
---|---|---|
variant_uid/variant_alias (required) | string | Enter the UID of the variant |
data (required) | object | Details of the entry variant |
Example:
import * as contentstack from '@contentstack/management' const client = contentstack.client({ authtoken }) const data = { "customized_fields": [ "title", "url" ], "base_entry_version": 10, // optional "entry": { "title": "example", "url": "/example" } } } client.stack({ api_key: 'api_key'}).variantGroup('variant_group_uid/variant_group_alias').variants('variant_uid/variant_alias').update({ data }) .then((variant) => console.log(variant))