# llms-full.md — Contentstack.com Full Content # Source sitemap: https://www.contentstack.com/sitemap.xml # Docs pages: 2053 | Other pages: 203 --- ## URL: https://www.contentstack.com/ --- title: "Agentic Experience Platform" description: "Contentstack is the creator of the industry's first Agentic Experience Platform (AXP). By unifying a composable Content Cloud, a real-time Data Cloud and an autonomous Agent OS, Contentstack eliminates operational debt, empowering enterprise teams to automate complex digital workflows and deliver hyper-personalized, adaptive digital experiences." url: "https://www.contentstack.com/" product: "Contentstack" page_type: "marketing" last_updated: "2026-08-17" --- # Agentic Experience Platform Contentstack is the creator of the industry's first Agentic Experience Platform (AXP). By unifying a composable Content Cloud, a real-time Data Cloud and an autonomous Agent OS, Contentstack eliminates operational debt, empowering enterprise teams to automate complex digital workflows and deliver hyper-personalized, adaptive digital experiences. - [Begin the journey](https://www.contentstack.com/platforms/ai) - [Try for free](https://www.contentstack.com/try-for-free) --- ## URL: https://www.contentstack.com/docs --- title: "Contentstack Documentation" description: "Discover comprehensive documentation for Contentstack, empowering developers and content managers to build, manage, and optimize digital experiences seamlessly." url: "https://www.contentstack.com/docs" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-17" --- # Contentstack Documentation Everything you need to build, manage, and deliver content-rich digital experiences—powered by Contentstack's composable DXP platform, all in one place. --- ## URL: https://www.contentstack.com/docs/administration --- title: "Administration" description: "Manage users, roles, permissions, and settings in Contentstack. Ensure secure access control and streamlined administration." url: "https://www.contentstack.com/docs/administration" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-05-19" filename: administration.md --- # Administration Configure roles, monitor audit logs, and centralize user management, settings, and security policies. ### Invite Users to Organization Assign roles and invite users to your Contentstack organization to enable seamless collaboration across your team. [Learn more](https://www.contentstack.com/administration/invite-users-to-organization) ### Teams Teams simplify role and permission assignments by grouping users to spread roles across them. [Learn more](https://www.contentstack.com/administration/about-teams) ### Single-Sign On Access Contentstack through corporate identity provider credentials, instead of Contentstack account credentials. [Learn more](https://www.contentstack.com/administration/about-single-sign-on-sso) ### SCIM Use SCIM (System for Cross-domain Identity Management) to automate provisioning or deprovisioning of users and groups. [Learn more](https://www.contentstack.com/administration/about-scim) ### Platform Discovery Explore Platform Discovery to understand feature usage, uncover unused capabilities, and align Contentstack features with business goals. [Learn more](https://www.contentstack.com/administration/about-platform-discovery) ### Security Management Contentstack has a robust account security mechanism in place to prevent accounts from being hacked. [Learn more](https://www.contentstack.com/administration/change-password) ### AI Settings Enable AI for products and monitor credit usage with centralized AI Settings and controls. [Learn more](https://www.contentstack.com/administration/ai-settings) ### Administration APIs Manage organization by using our APIs [Learn more](https://www.contentstack.com/developers/apis/scim-api) --- ## URL: https://www.contentstack.com/docs/administration-troubleshooting/faqs --- title: "Administration Troubleshooting Guides" description: "Discover answers to common troubleshooting questions about Administration." url: "https://www.contentstack.com/docs/administration-troubleshooting/faqs" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: faqs.md --- # Administration Troubleshooting Guides ## Basic Login, Passwords & Account Lockouts ### Resolving Account Login Failure Due to Lockout Login attempts fail when an account has been locked, typically following multiple failed password attempts. Access to the platform is not granted and authentication cannot proceed. **Root Cause** The account has been locked, preventing any successful authentication attempts. **Resolution** 1. Contact the Organization Owner or Admin to unlock the user account via the Organization settings. 2. Contact Contentstack Support if the Organization Admin is unable to perform the unlock. After following the instructions in the reactivation email, attempt to log in to verify if access is restored. ### Password Reset Email Failure Due to Expired Organization Login attempts fail due to an invalid password, and the Forgot Password flow does not send a reset email. Access to the account is not granted because the organization has expired, disabling automated email triggers. **Root Cause** The organization associated with the account has reached its expiration date, which prevents the password reset process from functioning and sending emails. **Resolution** 1. Obtain access to an active organization. After obtaining access to an active organization, attempt to log in or trigger a password reset to verify if access is restored. ### Account Activation Failure Due to Non-Identifiable User Account Invite emails for new accounts fail to deliver or the accounts cannot be activated. This occurs when the user account does not comply with the user-license policy. **Root Cause** User licenses must correspond to real, personally identifiable users; generic or shared accounts are not supported and cannot be activated. **Resolution** 1. Identify a specific, personally identifiable user. 2. Send the invitation to the identifiable user's email address. After inviting an identifiable user, verify if the invitation process completes. ### Resolving NoSuchBucket Error During Platform Loading NoSuchBucket errors may prevent the platform from loading or hinder login attempts. The application fails to initialize, blocking access to the platform dashboard. **Root Cause** Corrupted or outdated authentication data stored in the browser cache prevents the platform from loading correctly. **Resolution** 1. Navigate to the browser settings. 2. Clear the browser cache and cookies. After clearing the browser data, restart the browser and attempt to log in to verify if the platform loads successfully. ### Login Page Fails to Advance After Password Reset Attempting to log in to Contentstack may fail when the login page does not proceed, even after a successful password reset and while the user profile remains in an active state. **Root Cause** Corrupted or incomplete organization associations prevent the login process from advancing correctly. **Resolution** 1. Contact the organization owner or administrator to request removal from the organization. 2. Request a new invitation to the organization from the administrator. 3. Accept the new invitation to re-establish the organization association. 4. Attempt to log in to the Contentstack account. After rejoining the organization, attempt to log in using account credentials. If the login page advances and access is granted, the issue is resolved. ## Single Sign-On (SSO) & IdP Configuration ### Resolving SSO Login Requirement After Disabling Strict Mode A message stating access is allowed only through SSO appears even after Strict Mode has been disabled, blocking login with credentials. This occurs when the system incorrectly mandates SSO access for non-SSO users. **Root Cause** A known UI issue prevents the "Allow Access without SSO" checkbox from appearing as expected when adding a user to an organization. **Resolution** 1. Navigate to the organization settings to add the user. 2. Refresh the page while adding the user to make the checkbox visible. 3. Locate the "Allow Access without SSO" checkbox that appears after the refresh. 4. Select the "Allow Access without SSO" checkbox. 5. Save the settings to allow the user to log in without SSO. After saving the settings, attempt to log in using standard credentials. If the login is successful without an SSO redirect, the issue is resolved. ### Training Organization Missing After SSO Logi Training organizations fail to appear in the organization dropdown after a successful SSO login. **Root Cause** A regional mismatch exists between the location of the training instance and the user's SSO login region, preventing the organization from being displayed. **Resolution** 1. Create a training instance in a region that aligns with the SSO login region. 2. Use new email credentials to set up the instance. After creating the instance in the correct region and logging in, check the organization list to verify if the training organization is visible. ### Login Failure Due to Missing or Incorrect SSO Details Login attempts fail when the provided SSO details are missing or incorrect. **Root Cause** The login failure occurs because the correct SSO name for the organization has not been provided. **Resolution** 1. Contact the organization owner or admin to obtain the correct SSO name. 2. Select "Log in via Email" to access the account using credentials. After entering the correct SSO name or selecting the email login option, attempt to log in to verify if access is restored. ### Resolving Unexpected SSO Session Timeouts and Logouts Unexpected daily logouts occur for SSO users regardless of Identity Provider session settings. Automatic logouts occur once the Contentstack SSO session timeout expires. **Root Cause** The SSO session timeout is controlled by Contentstack settings, which default to 12 hours and override the session duration set by the Identity Provider. **Resolution** 1. Access the SSO session timeout settings in Contentstack. 2. Update the SSO session timeout value to a preferred duration between 1 and 24 hours. 3. Note that each SSO login starts a new session; logging out and back in resets the session timer, but the session duration cannot exceed the configured limit. After updating the timeout settings, verify if the session duration reflects the new configuration. ### Login Failure in SSO-Enabled Organizations via Credentials Login attempts fail for SSO-enabled organizations even when "Strict SSO" is disabled. Despite the setting, the system displays an error message stating that access is restricted to SSO authentication only. **Root Cause** The "Allow Access Without SSO" configuration is not explicitly enabled for the specific user within the organization settings. **Resolution** 1. Access the **Organization User settings**. 2. Explicitly enable the **Allow Access Without SSO** setting for the affected user. 3. If the user still cannot access the platform, remove and re-invite the user to refresh their access permissions and SSO-related flags. After updating the user settings or re-inviting the user, verify if the account can successfully authenticate without using SSO. ### Newly Invited SSO User Unable to Proceed Past Login Screen Accessing Contentstack as a newly invited SSO user may fail at the login screen. **Root Cause** The user account is in a locked state, which prevents authentication even when the user has valid invitations and credentials. **Resolution** 1. Reset the login lock for the affected user. 2. Ask the user to attempt to log in to Contentstack. If the user successfully proceeds past the login screen, the issue is resolved. ### SSO Login Failure Due to Expired or Outdated Certificate Attempting to log in via SSO as an organization owner may fail when the SSO certificate is not updated. **Root Cause** The SSO certificate has expired or is outdated, preventing successful authentication between the Identity Provider and Contentstack. **Resolution** 1. Navigate to the SSO configuration settings in Contentstack. 2. Update the SSO certificate with the current valid certificate from the Identity Provider. 3. Save the configuration changes. After updating the SSO certificate, attempt to log in using SSO. If the login is successful, the issue is resolved. ### SSO Login Fails Due to an Incorrect SAML Email Attribute The SSO Connection Test may fail during SAML configuration even when the certificate and URL are correctly set up. **Root Cause** An incorrect email attribute was being passed in the SAML assertion, causing the connection test to fail. **Resolution** 1. Review the SAML attribute mapping in the identity provider configuration. 2. Update the email attribute to the correct value. 3. Re-run the SSO Connection Test in Contentstack. After correcting the attribute and re-running the test, verify that the SSO connection succeeds and that users can authenticate. ### SSO Login Fails Due to Unsupported Long-Form SAML Attribute Names SSO configuration and testing may fail even when the certificate and URL are correctly uploaded. **Root Cause** Contentstack requires short attribute names (email, first\_name, last\_name) for SAML assertions. Long schema URNs (for example, http://schemas.xmlsoap.org/ws/2005/05/identity/claims/Email) are not supported. **Resolution** 1. Open the identity provider's application configuration. 2. Replace any long schema URNs used for SAML attributes with the supported short names: email, first\_name, and last\_name. 3. Save the updated configuration. After updating the attribute names, retest SSO to confirm authentication completes successfully. ### SSO Login Fails Due to a Missing or Mismatched Email/NameID in the IdP SSO login may fail without a clear error, even though the issue does not originate on the Contentstack side. **Root Cause** This behavior typically originates from the identity provider configuration. Common causes include: the user has no email address defined in the IdP, the email address configured in the IdP does not match the one used for authentication, or the NameID field in the IdP settings is not set to EmailAddress. **Resolution** 1. Confirm the affected user has an email address defined in the identity provider. 2. Verify the email address in the IdP matches the one used during authentication. 3. Confirm the NameID field in the IdP settings is set to EmailAddress. After correcting the identity provider configuration, ask the user to retry SSO login to verify access is restored. ### SSO Login Fails With “Access Denied” Due to Corrupted IdP/Profile Mapping A user may be unable to log in at all via SSO, receiving an “access denied” error, even though they belong to the correct Active Directory or identity provider groups and other users in the same group can log in without issue. **Root Cause** A corrupted user profile or a misconfigured IdP role mapping can block authentication for a specific user, even when their group membership is correct on the identity provider side. **Resolution** 1. Validate the affected user's identity provider group membership to confirm it is correct. 2. Verify the IdP role mapping configuration for signs of misconfiguration. 3. Clear browser cache or attempt login in an incognito window to rule out a client-side cause. 4. If the error persists, remove the user from both the Contentstack groups and the identity provider, purge their profile and cache data, and re-add them to the appropriate groups to generate a fresh IdP mapping. After re-provisioning the account, confirm the user can log in, authenticate via SSO, and access their assigned stacks. ### Safely Removing Users From Contentstack After IdP Deprovisioning Users removed or deactivated in an identity provider such as Okta may still appear in Contentstack's user list. **Root Cause** Contentstack does not automatically remove a user's account when that user is deprovisioned in the identity provider; removal must be performed manually within Contentstack. **Resolution** 1. Confirm the user no longer exists in the identity provider and does not require Contentstack access. 2. If the user holds stack ownership, reassign ownership to another user before proceeding. 3. Delete the user directly within Contentstack. Deleting the user this way does not affect the SSO configuration for remaining users, provided the user no longer exists in the IdP. Once deleted, the user loses all access to Contentstack. ### Cannot Stay Logged Into Multiple Organizations With Different SSO Configurations Users who belong to two organizations with different SSO configurations may be unable to use the Org Switcher to move between both in the same browser session. **Root Cause** Contentstack manages sessions using browser cookies scoped to the application hostname (for example, app.contentstack.com). When two organizations use different SSO configurations but share the same hostname, only one active session is possible per browser at a time, so the Org Switcher cannot maintain simultaneous sessions across both. **Resolution** The Org Switcher does not support two concurrent SSO sessions on a shared hostname. 1. Use separate browser sessions, such as a second browser or an incognito window, to access each organization at the same time if simultaneous access is required. 2. Contact your Customer Success Manager to discuss a dedicated hostname or alternative configuration if this limitation affects regular workflows. Confirm that each organization can be accessed individually, and that simultaneous access across both is possible using separate browser sessions. ### New Users Cannot Authenticate When Invited via the Contentstack UI in Strict-Mode SSO Organizations New users can be provisioned and invited successfully, but are still unable to log in via SSO, while existing users in the same organization continue to log in without issue. **Root Cause** When an organization has SSO Strict Mode enabled, users invited directly through the Contentstack UI are provisioned for standard email/password access, which conflicts with Strict Mode's requirement that all access be governed by the identity provider. Users added this way cannot authenticate via SSO, while users originally provisioned through the IdP are unaffected. **Resolution** 1. Confirm whether the organization has SSO Strict Mode enabled. 2. If so, provision the new user directly from the identity provider (for example, Okta or Microsoft Entra ID) side, rather than inviting them through the Contentstack UI. 3. If email/password access is needed instead of SSO, have the Organization Owner disable Strict Mode and then re-invite the user with Allow Access without SSO enabled. After provisioning the user through the identity provider, confirm they can log in successfully via SSO. ### SSO Access Denied Due to an Incorrect SAML Group or Role Attribute Users may receive an “Access denied! You are not part of Contentstack” error during SSO login, or find that only some Okta/IdP groups can log in while others, especially newly created ones, cannot, even though all groups appear correctly provisioned. **Root Cause** In the confirmed cases, this was traced to the SAML attribute carrying group information: either the attribute was not named roles, as Contentstack requires, or the group values sent by the identity provider did not exactly match the IdP Role Identifier strings configured in the Contentstack IDP panel, including spacing and punctuation. Affected users were denied access even though they appeared correctly provisioned. **Resolution** 1. In the identity provider's SAML application, open the Attribute Statements / Group Attribute Statements configuration. 2. Ensure the attribute that sends the user's groups is named roles. 3. Confirm the group values being sent exactly match the IdP Role Identifier strings configured in the Contentstack IDP panel, including spacing and punctuation. 4. Capture a fresh SAML response (for example, using a SAML tracer) to confirm it includes the expected group/role attribute. 5. If mismatches remain for specific users, remove and re-add them to the group on the IdP side to trigger a fresh sync cycle. After correcting the attribute name and group values, confirm the previously denied users or groups can authenticate successfully via SSO. ### SCIM-Assigned Roles Get Overwritten by IdP Role Mapping at Every Login Users may be repeatedly downgraded to a lower-privilege role, such as Read-Only, immediately after login, despite having the correct role assigned in both Contentstack and the identity provider. **Root Cause** When both SCIM provisioning and IdP Role Mapping are enabled at the same time, the IdP role mapping re-evaluates and can overwrite the SCIM-assigned role every time a user logs in. This causes roles to silently revert, even though SCIM assigned the correct role in advance through group synchronization. **Resolution** 1. Confirm whether both SCIM provisioning and IdP Role Mapping are enabled for the organization. 2. If so, disable IdP Role Mapping so that SCIM remains the single source of truth for role assignment and synchronization. 3. Review the identity provider's group-to-role mappings for the affected users to confirm they are configured correctly. After disabling IdP Role Mapping, confirm the user's role remains stable across multiple logins. ### Misleading “Failed Login Attempt” Email Notifications Sent to SSO Users SSO-enabled users may receive an email about failed login attempts or a changed password, even though their account was never compromised and their SSO access continues to work normally. **Root Cause** This notification is triggered by multiple failed attempts on Contentstack's standard username/password login page, regardless of whether the account is actually configured for SSO. Since SSO-enabled accounts are authenticated entirely through the identity provider, Contentstack does not manage their password, so these notifications do not reflect any real impact to the account or its SSO access. **Resolution** 1. Confirm the account is configured for SSO, meaning authentication is handled entirely by the identity provider. 2. Disregard the notification, since it does not indicate that the account or its SSO access has been affected. 3. Continue logging in through the normal SSO flow to confirm access is unaffected. After logging in via SSO, confirm access works normally despite having received the notification. ## Multi-Factor Authentication (2FA) & Security ### Two-Factor Authentication Login Failure Due to Expired Training Instance Login attempts fail after entering a two-factor authentication verification code and clicking Verify. No error message is displayed, and access to the account is not granted. **Root Cause** The training instances associated with the account have expired, which prevents the login completion. **Resolution** 1. Access the appropriate link to create a new training instance. After creating a new training instance, attempt to log in using the two-factor authentication process to verify if access is restored ### Resolving 2FA SMS Code Delivery Failure Login attempts fail when the two-factor authentication code is not received via SMS. Authentication cannot be completed because the required verification code is not delivered. **Root Cause** Two-factor authentication codes fail to deliver via SMS, preventing the completion of the login process. **Resolution** 1. Install the Authy app on your mobile device. 2. Switch the two-factor authentication method from SMS to app-based authentication. 3. Configure the Authy app to receive authentication codes for the account. After configuring the Authy app, enter the generated code into the login prompt to verify if access is restored. ### 2FA Authentication Failure Due to Authy Service Issue Login attempts fail when an unexpected two-factor authentication requirement appears and verification codes are not received. Authentication cannot be completed, preventing access to the account. **Root Cause** A service issue with Authy prevents the delivery of multi-factor authentication codes required for the login process. **Resolution** 1. Contact Contentstack Support to request a temporary disablement of two-factor authentication for the account. 2. Re-enable multi-factor authentication through the account security settings once the Authy service issue is resolved. After the temporary disablement of 2FA, attempt to log in to verify if access is restored. ### Unexpected User Session Logouts Unexpected session logouts may occur in Contentstack when security configurations such as Two-Factor Authentication are not enabled. **Root Cause** Missing security configurations, such as Two-Factor Authentication (2FA), can lead to unintended session termination or security-related drops. **Resolution** 1. Enable Two-Factor Authentication (2FA) for the affected user account. 2. Monitor the account for any further unexpected logouts. After enabling 2FA, monitor the session stability during platform use. If the user remains logged in without further interruptions, the issue is resolved. ### Regaining Access After Losing or Breaking Your MFA Device Login is blocked when the device enrolled for two-factor authentication is lost, broken, or otherwise inaccessible, and no backup method is available. **Root Cause** Contentstack does not provide a self-service way to bypass multi-factor authentication when the enrolled device is unavailable. Disabling MFA on an account requires explicit approval from the Organization Owner. **Resolution** 1. Contact the Organization Owner to request approval to disable MFA on the affected account. 2. Once approval is confirmed, Contentstack Support disables MFA for the account. 3. Log in using the account's username and password now that MFA has been disabled. 4. Set up MFA again on a new device if continued use of two-factor authentication is desired. After MFA is disabled and login is confirmed, verify that a new authentication method can be configured successfully if needed. ### Resetting a User's MFA as an Organization Admin Organization Admins may be unaware that MFA can be reset directly from the Organization Users list, and may escalate to Contentstack Support instead of using the self-service option already built into the product. **Root Cause** Resetting a user's MFA is a standard, self-service action available to anyone with Administration access, it does not require a separate feature to be enabled or a Support ticket. **Resolution** 1. Navigate to Administration (via the App Switcher), then open the Users tab. 2. Click the vertical ellipses in the Actions column next to the affected user, and select Reset MFA. 3. In the Reset Multi-Factor Authentication modal, click Proceed to confirm. 4. The user receives an email with a link to reset their MFA configuration on a new device. After the reset is triggered, confirm the user receives the reset-MFA email and can successfully reconfigure MFA on their device, without needing to contact Contentstack Support. ### MFA SMS Code Not Received Due to Browser Cache A two-factor authentication SMS code may fail to arrive during login, even though the phone number on file is correct. **Root Cause** Corrupted or stale browser cache and cookies can interfere with the delivery or recognition of SMS-based verification codes during login. **Resolution** 1. Try logging in using an incognito or private browser window. 2. If the issue persists, try a different browser. 3. Clear the browser cache and cookies, then retry the login. After clearing the cache or switching browsers, verify that the SMS code is received and that login completes successfully. ## Profile Updates & Email Changes ### Password Reset Email Not Received Due to Expired Training Instance Login attempts fail and the Forgot Password option does not trigger a password reset email. Access to the account is not granted because the expected reset communication is not received. **Root Cause** The email address used for login is associated with an expired training instance, which prevents the password reset process from functioning. **Resolution** 1. Create a new training instance using a different email address. 2. Create a new training instance using the same email address while selecting a different region instead of AWS NA. After creating a new training instance, attempt to log in or trigger the password reset process to verify if access is restored. ### Updating User Email Addresses Following Domain Changes Email address updates to a new domain fail when the email field is non-editable. This occurs because the platform does not allow direct modification of existing user email addresses. **Root Cause** User email addresses are immutable in Contentstack and cannot be modified once an account has been created. **Resolution** 1. Remove users with the old email domains from the organization. 2. Re-invite users using their new email addresses. 3. Reassign the necessary roles and permissions to the newly invited accounts. 4. Configure alias support on the Identity Provider, such as Okta or Azure AD, if SSO is enabled. After re-inviting the users and reassigning permissions, have the users log in with their new email addresses to verify if access is restored. ### Live Preview Fails to Load with Third-Party Authentication Live Preview fails to load when the application uses a third-party authentication provider and redirection. Preview windows remain empty or fail to initialize because the authentication flow is blocked. **Root Cause** Live Preview does not support third-party OAuth authentication flows because iframes block the required redirects as per documented security limitations. **Resolution** 1. Verify if the application uses third-party OAuth authentication flows (such as Keycloak) that require redirection. 2. Refer to the Live Preview limitations documentation to confirm unsupported authentication methods. 3. Note that this restriction is expected behavior and cannot be bypassed using Content Security Policy (CSP) changes. After reviewing the authentication flow and documentation, verify if removing the redirection requirement for the preview environment allows the preview to lo ## Organization & Stack Invitations ### Stack Invitation Acceptance Failure Due to Missing Organization Access Stack invitations cannot be accepted when login credentials for the platform have not yet been established. Access to the specific stack is not granted until login credentials for the platform have been established. **Root Cause** Organization-level access and valid login credentials must be established before a user can accept invitations to individual stacks. **Resolution** 1. Obtain organization-level access to the platform. 2. Log in through Okta. 3. Accept the stack invitation once organization access is confirmed. After obtaining organization access and logging in, check the stack list to verify if access is restored. ### Login Failure Due to Missing Organization Membership Attempting to access Contentstack may fail during the login process. **Root Cause** The user account is not associated with any organization, preventing access to the platform. **Resolution** 1. Request an organization invitation from the relevant administrator. 2. Accept the invitation to join the organization. 3. Attempt to log in to Contentstack. If the user successfully accesses the platform after joining the organization, the issue is resolved ### Demo Organization Not Visible in Dashboard Accessing a demo organization may result in visibility issues when the organization does not appear in the dashboard and access emails are missing. **Root Cause** The user lacks formal ownership or an accepted invitation for the specific organization, preventing it from appearing in the user interface. **Resolution** 1. Contact Contentstack Support to request an organization ownership transfer email. 2. Accept the ownership transfer invitation. After accepting the ownership transfer, verify the visibility of the organization in the dropdown menu. If the organization appears as expected, the issue is resolved. ### Dashboard Loading Error When Accessing Organization Entries Attempting to access entries within an organization may result in the dashboard failing to load and displaying a "Something went wrong" error. **Root Cause** Role-related inconsistencies in user permissions prevent the dashboard from syncing and loading correctly. **Resolution** 1. Contact the organization owner or administrator to refresh account permissions. 2. Change the organization role from Member to Admin, then revert it to the original role (or vice versa if currently an Admin). 3. Remove the user from the organization and re-add them with the correct role to resync access. After re-adding the user and updating roles, attempt to access the organization entries. If the dashboard loads without error, the issue is resolved. ### Unable to Log In or Reset Password for Lytics link Logging in to Lytics or resetting account passwords may fail when using the standard login page or credentials. **Root Cause** The account requires authentication through a specific OAuth link rather than the standard login process. **Resolution** 1. Request the manual OAuth login link from Contentstack Support. 2. Use the OAuth link instead of the standard login page to log in to Lytics. After using the OAuth link, attempt to authenticate. If the login is successful, the issue is resolved. ### Restricted Stack Access for IdP-Managed Users Stack access may be restricted and roles may be unassignable when SSO or Identity Provider management is enabled for an organization. **Root Cause** When SSO/IdP is enabled and managed externally, user roles and stack permissions must be synchronized through the Identity Provider rather than being manually updated within the Contentstack platform. **Resolution** 1. Verify the user is already part of the organization and has accepted the organization-level invitation. 2. Coordinate with the internal IdP team to assign the appropriate roles and permissions via IdP groups for the required stack. 3. Ensure the internal team creates and maps the necessary groups in the IdP for new stacks. 4. Test stack access after the user has been assigned to the correct IdP groups. After the IdP team updates the group assignments, attempt to access the specific stack in Contentstack. If the user can see the stack and perform actions aligned with their assigned role, the issue is resolved. ### Login Failure Due to Incorrect Region or Data Center Selection Login attempts may fail or return incorrect-password errors when the wrong regional login URL is used (for example, an Azure-Europe link for an account hosted on AWS-Europe, or an EU link for an NA-hosted account), even when the credentials themselves are correct. **Root Cause** Contentstack credentials and SSO configurations are tied to the specific region and data center where the account was created (such as AWS NA, AWS EU, Azure EU, or GCP NA). Attempting to authenticate through a different region's URL causes the login to fail even when the credentials are correct. For more detail on how regions work, see the Contentstack documentation on regions (https://www.contentstack.com/docs/administration/about-regions). **Resolution** 1. Confirm which region and data center the organization is hosted in. 2. Use the corresponding regional login URL (for example, https://eu-app.contentstack.com/#!/login for AWS EU, or https://gcp-na-app.contentstack.com/#!/login for GCP NA). 3. Retry login or SSO authentication using the correct regional endpoint. After switching to the correct regional login URL, attempt to log in again to verify that authentication completes without password or redirect errors. ### Dashboard Fails to Load or “Cannot Access Entry” Error Despite Admin Permissions A user with confirmed administrator-level permissions may be able to log in but find that the stack dashboard fails to load, or that opening any entry returns a “cannot access entry” error stating the page is unavailable. **Root Cause** Failed network requests to the /extensions API can prevent the dashboard from rendering or entries from loading, even when the user's permissions and role are correctly configured. **Resolution** 1. Confirm the affected user has been granted the correct permissions and role within the stack. 2. Have Contentstack Support remove the affected user from the organization. 3. Have the organization admin re-add the user with the same role. After re-adding the user, verify that the dashboard loads and that entries can be opened without the “cannot access entry” error. ### Unexpected Session Logouts Can Occur Even When Authentication Is Working Normally A user may be logged out of Contentstack unexpectedly while editing, without any advance warning, even though nothing appears to be wrong with their account or credentials. **Root Cause** Contentstack manages authentication using access tokens and refresh tokens that work together to maintain the session in the background. Under normal conditions, the refresh token automatically renews the access token so the session continues without requiring the user to log in again. However, sessions can still be invalidated by factors such as browser security policies, network interruptions, extended inactivity, manual logout, or other security-related events, and both tokens expiring at the same time, while rare, remain possible. **Resolution** An occasional unexpected logout can happen even when authentication is otherwise functioning normally, due to browser- or network-level session invalidation rather than an account problem. 1. As a best practice, save work periodically during long editing sessions, since a session is not guaranteed to persist indefinitely. 2. If logouts become frequent under otherwise stable network and browser conditions, report the pattern, including browser, network conditions, and session duration, so it can be investigated further. If logouts persist or increase in frequency, share these details so the behavior can be reviewed further. ## SCIM & Automated User Provisioning ### SCIM Provisioning Stops After API Token Deprecation SCIM provisioning may stop functioning even though the associated SSO configuration continues to work normally. **Root Cause** The SCIM API token associated with the identity provider connection has been deprecated, halting provisioning independently of the SSO setup. **Resolution** 1. Navigate to Contentstack Marketplace > Manage Apps, and locate the app connection for your identity provider. 2. Uninstall the existing identity provider app connection. 3. Re-authenticate and reinstall the app to generate a new SCIM API token. 4. Avoid using a deprecated identity provider app integration for new configurations going forward. After reinstalling the app, confirm that SCIM provisioning resumes for new and existing users. This action does not affect the existing SSO configuration. ### SCIM/SSO Error Due to Incorrect Authorization URL A SCIM-related error may appear while configuring SSO in certain regions, such as GCP NA. **Root Cause** The OAuth authorization URL used during setup was not constructed correctly for the account's region. **Resolution** 1. Refer to the Contentstack OAuth documentation for constructing the correct authorization URL. 2. Update the SSO/SCIM configuration with the properly constructed authorization URL for the account's region. After updating the authorization URL, retry the SCIM sync to verify the error no longer occurs. ### OAuth Authorization in Automate Workflows Breaks When Tied to a User Account OAuth-based authorization used within Contentstack Automate workflows may stop working unexpectedly across all stacks, even though it had previously been functioning normally. **Root Cause** OAuth authorization in Automate is tied to the individual user account that originally authorized it, creating a dependency on that user's account state, such as account disablement or permission changes. A platform-level issue previously caused this OAuth authorization to stop working unexpectedly; that issue has since been fixed on the platform side. **Resolution** 1. As the more stable long-term approach, use Management Tokens instead of OAuth for Automate workflows. Management Tokens are not tied to an individual user account, which removes this dependency and reduces the risk of workflow failure due to user-related changes. 2. If you are currently affected by an OAuth authorization failure of this kind, contact Contentstack Support to confirm your environment reflects the platform-side fix. After switching to Management Tokens, or after confirming the platform fix is reflected in your environment, confirm Automate workflows run without interruption. ## Browser & Client-Specific Login Issuees ### “Next” Button Not Visible After Scanning the MFA QR Code Until the Browser Is Zoomed Out While setting up two-factor authentication, a user may scan the QR code successfully but be unable to find or click the “Next” button needed to complete setup. **Root Cause** At certain browser zoom levels, the “Next” button on the MFA setup screen can render off-screen or hidden after the QR code is scanned, preventing the user from completing the setup step, even though the scan itself succeeded. **Resolution** 1. After scanning the QR code during MFA setup, if the “Next” button is not visible, zoom out the browser window. 2. Click “Next” to complete MFA setup. After zooming out and clicking “Next,” confirm MFA setup completes and login succeeds. ### Verification Code Not Received Because MFA Uses an Authenticator App, Not SMS or Email A user may expect a verification code to arrive by email or SMS and be unable to log in when no such code appears. **Root Cause** When MFA is enabled on an account, the verification code must be generated by an authenticator app (such as Google Authenticator, Microsoft Authenticator, or Authy) configured during MFA setup. It is not sent by email or SMS. **Resolution** 1. Confirm MFA is enabled on the account. 2. Open the authenticator app that was configured during MFA setup. 3. Use the code currently displayed in the app, rather than waiting for an email or SMS code, to complete login. After entering the app-generated code, confirm login succeeds. ### Blank Content Blocks and Login Failures Caused by Stale Session Token Caching Multiple editorial users may experience login failures and blank content blocks within the CMS at the same time. **Root Cause** The behavior is consistent with a session or authentication token caching issue on the client side, where the browser fails to automatically refresh the cached session, resulting in login failures and content blocks that do not render. **Resolution** 1. Clear the browser cache and cookies. 2. Log back in to Contentstack. After clearing the cache and logging back in, confirm content blocks render correctly and login no longer fails. If the issue recurs at scale, capture a HAR file (from the browser's Network tab) before clearing the cache to help identify why the session failed to refresh automatically. --- ## URL: https://www.contentstack.com/docs/administration/about-administration-roles --- title: "About Administration Roles" description: "Discover Contentstack's role-based access control system, offering precise governance with Administration and product roles for streamlined management." url: "https://www.contentstack.com/docs/administration/about-administration-roles" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-13" filename: about-administration-roles.md --- # About Administration Roles Contentstack uses **role-based access control** (**RBAC**) to govern who can manage your organization and what they can do. Administration roles are organization-level roles that control organization-wide capabilities, such as managing users, roles, teams, security configuration, and audit logs. Administration roles are separate from product roles. An Administration role governs the organization itself, while a product role governs access within a specific product, such as the CMS, Assets, or AgentOS. Every invited user receives at least one Administration role, and that role determines the level of organization-wide control they hold. ## Out-of-the-Box Administration Roles Contentstack provides four default Administration roles: * **Owner:** The highest level of access in an organization. An Owner role can do everything an Admin role can do, and can also transfer organization ownership to another user. Each organization can only have one Owner role. * **Admin:** Full access to organization administration. An Admin manages organization users, roles, and teams; configures System for Cross-domain Identity Management (SCIM) provisioning, security settings, and webhooks; and reviews organization analytics, stacks, and audit logs. The Admin role also includes the access needed to invite users and assign product roles across the organization. * **Security Manager:** Manages the organization's identity and security configuration. A Security Manager configures Single Sign-On (SSO), SCIM provisioning, security settings, and webhooks, and reviews audit logs. The role provides read-only visibility into organization users, roles, teams, and stacks, but does not manage users or assign roles. * **Product Analytics Viewer:** Read-only access to organization analytics. A Product Analytics Viewer views organization information and analytics but cannot manage users, roles, or settings. * **Member:** The default role assigned to every invited user. A Member has read-only access to organization information and no organization-wide administrative capabilities. A user's access within each product depends on the product roles assigned to them. At least one Administration role is required for every user, and Member is preselected during the invitation flow. **Note:** The Administration Member role is distinct from product-specific Member roles, such as the Assets Member role. The Administration Member role controls organization access, while a product Member role controls access within that product. ## What Each Role Can Do The table below compares the four Administration roles across key organization-level capabilities: Capability Admin Security Manager Product Analytics Viewer Member Organization users Manage View — — Roles Manage View — — Teams Manage View — — Single Sign-On (SSO) — Manage — — SCIM provisioning Manage Manage — — Security configuration Manage Manage — — Webhooks configuration Manage Manage — — Organization analytics View — View — Audit logs View View — — Stacks View View — — Organization information View View View View ## How Administration Roles Work With Product Roles A user's effective access is determined by the combination of their Administration role and the product roles assigned to them. The Administration role sets organization-wide capabilities, and product roles scope what the user can do inside each product they are assigned. For example, a user with the Member Administration role and the CMS Content Manager product role can work with content in their assigned stacks but cannot manage organization users or settings. A user with the Admin Administration role can manage the organization regardless of their product roles. **Additional Resource:** * To learn about the default roles available for each product, refer to the [About Product Roles](/docs/administration/about-product-roles) documentation. * To assign Administration roles when onboarding users, refer to the [Invite Users to Organization](/docs/administration/invite-users-to-organization) documentation. --- ## URL: https://www.contentstack.com/docs/administration/about-organizations --- title: "About Organizations" description: "Manage your Contentstack organization efficiently with centralized control over users, stacks, permissions, and subscription insights." url: "https://www.contentstack.com/docs/administration/about-organizations" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-13" filename: about-organizations.md --- # About Organizations Organizations form the highest tier in Contentstack's entity hierarchy. [Users](/docs/headless-cms/about-stack-users), [stacks](/docs/headless-cms/about-stack), and all associated resources reside within an organization. This centralized structure allows management of users and stacks through a single administrative panel. The Organization feature is primarily for administrators ([Owner and Admins](/docs/administration/about-administration-roles)), allowing them to manage roles and permissions for the users and stacks of the account. Organizations serve two main purposes: * Simplify the process of managing stacks and permissions for a group of users or a company * View consolidated subscription plan and usage information If you have required rights, you can access the [Organization Settings](/docs/administration/organization-settings-overview) to learn about the Organization, users associated with it, and more. --- ## URL: https://www.contentstack.com/docs/administration/about-platform-discovery --- title: "About Platform Discovery" description: "Explore Platform Discovery to understand feature usage, uncover unused capabilities, and align Contentstack features with business goals." url: "https://www.contentstack.com/docs/administration/about-platform-discovery" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-15" filename: about-platform-discovery.md --- # About Platform Discovery Platform Discovery is a centralized dashboard in Contentstack that shows which capabilities are active across your organization, which are enabled but unused, and which require a plan upgrade. Use it to understand your organization's current Contentstack footprint and identify opportunities to increase adoption. ## Overview Platform Discovery gives your organization a unified view of every Contentstack capability, organized into feature cards on a single dashboard. Each card shows whether a feature is in active use, enabled but inactive, or unavailable on your current plan. Platform Discovery acts as a command center for maximizing platform value and **return on investment** (**ROI**). The dashboard provides visibility into: * Features currently being used across your organization. * Features enabled but not actively used. * Features that require a plan upgrade. * Business impact areas supported by each capability. Platform Discovery helps teams identify opportunities to improve operational efficiency, accelerate delivery timelines, and maximize platform adoption. Platform Discovery helps organizations: * Maximize ROI by identifying underused capabilities. * Reduce **total cost of ownership** (**TCO**) by consolidating tooling. * Improve feature awareness across technical and business teams. * Connect platform capabilities directly to business outcomes. * Create a clearer roadmap for platform expansion and digital maturity. ## Access Platform Discovery To access the Platform Discovery dashboard: 1. Open “App Switcher” in the top navigation bar. 2. Select **Platform Discovery**. The Platform Discovery dashboard appears. ## Understand the Dashboard The dashboard displays feature cards representing available Contentstack capabilities. Each card includes: * Feature name * Current usage status (Active, No Recent Activity, or Requires Plan Upgrade) * Short feature description * Impact area alignment * Additional learning resources * Feature-specific activity definitions You can use the dashboard to quickly understand which capabilities are actively contributing to your organization’s workflows and which features may require additional adoption. ## Feature Status Overview Each feature card displays one of the following statuses: * Active: Indicates recent qualifying usage or configuration activity. * No Recent Activity: Indicates the feature is enabled but has not shown recent activity. * Requires Plan Upgrade: Indicates the feature is unavailable in the current subscription plan. These visual indicators help teams quickly identify realized value, adoption opportunities, and expansion opportunities. Status Description Active The feature has recent usage or active configuration detected in your organization. No Recent Activity The feature is enabled but has not shown qualifying activity recently. Requires Plan Upgrade The feature is not available in your current plan. **Additional Resource:** [Feature Activity Definitions](/docs/administration/feature-activity-definitions): Detailed criteria used to determine Active and No Recent Activity statuses for each Contentstack feature. --- ## URL: https://www.contentstack.com/docs/administration/about-product-roles --- title: "About Product Roles" description: "Discover how Contentstack's product roles streamline access control in CMS, Assets, and Administration, with customizable and default options." url: "https://www.contentstack.com/docs/administration/about-product-roles" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-13" filename: about-product-roles.md --- # About Product Roles Product roles are organization-level roles that control access within a specific Contentstack product, such as the CMS, Assets, or Administration. While Administration roles govern the organization itself, product roles determine what a user can do inside each product they are assigned. Contentstack provides out-of-the-box product roles for every product. You assign these roles during the user invitation flow, and you can extend them with custom roles when the default roles do not match your access requirements. ## How Product Roles Work A user's effective permissions within a product are determined by the product role assigned at the organization level, combined with any project-level roles assigned for the stacks, spaces, or other projects they can access. Organization-level product roles set product-wide capabilities. Project-level roles refine access within an individual stack, space, or other projects. Assigning both gives you centralized control with granular, per-project access. ## CMS Roles The CMS provides three default organization-level roles. * **Admin:** Full access to CMS administration, including managing stacks, content types, environments, and users within assigned stacks. * **Developer:** Access to build and configure content structures, such as content types, global fields, and extensions, along with content access. * **Content Manager:** Access to create, edit, and publish content within assigned stacks, without the structural or administrative permissions of a Developer or Admin. ## Assets Roles Assets provides three default organization-level roles. * **Product Admin:** Full access to Assets administration across assigned spaces. Commonly manages users, roles, spaces, asset types, user-defined fields, and languages. * **Asset Type Manager:** Manages asset types and user-defined fields. Typically supports metadata modeling and schema configuration. * **Member:** Provides access to Assets but does not grant administrative permissions by itself. Capabilities depend on the space-level roles assigned per space. **Additional Resource:** For a detailed explanation of how Assets applies roles at the product and space levels, refer to the [About Assets Roles](/docs/assets/about-assets-roles) documentation. ## Custom Product Roles When the default roles do not match a team's responsibilities, you can create custom organization-level roles for a product through Administration. Custom roles let you select specific permission categories and actions, such as View, Create, Edit, or Delete. **Note:** Only organization-level (product-level) custom roles can be created through Administration. Project-level custom roles must be created from the respective project or its per-product settings page. **Additional Resource:** To create a custom organization-level role, refer to the [Create Custom Roles](/docs/administration/create-custom-roles) documentation. ## Related Resource * [Get all roles in an Organization](/docs/developers/apis/administration-api/organizations#get-all-roles-in-an-organization) --- ## URL: https://www.contentstack.com/docs/administration/about-regions --- title: "About Regions" description: "Discover how Contentstack Regions empower developers to create dynamic, personalized digital experiences. Explore comprehensive documentation on Contentstack's Regions feature for efficient content management across multiple locales and platforms." url: "https://www.contentstack.com/docs/administration/about-regions" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: about-regions.md --- # About Regions A Contentstack region refers to the location of the data centers where your organization's data resides. While subscribing to a [Contentstack account](https://www.contentstack.com/login), you can decide the data center that will host your organization’s data. Contentstack currently supports seven regions: **AWS North America**, **AWS Europe**, **AWS Australia**, **Azure North America**, **Azure Europe**, **GCP North America**, and **GCP Europe.**. ## Data Centers Contentstack supported regions are hosted in the following data centers: * For AWS North America, our main region is **Oregon, US (us-west-1)** and the backup region is **North Virginia, US (us-east-1)**. * For AWS Europe, our main region is **Ireland, Europe (eu-west-1)** and the backup is **Frankfurt, Europe (eu-central-1)**. * For AWS Australia, our primary region is **Sydney** and our backup region is **Singapore.** * For Azure North America, our primary region is **West US 2** and our backups are configured in **US East** region(**MongoDB Database** backups) and **West US** region(**Assets** backups). * For Azure Europe, our primary region is **West Europe (Netherlands)** and our backup region is **EU Central 1 (Frankfurt).** * For GCP North America, our primary region is **Oregon, US (us-west1)** and the backup region is **South Carolina, US (us-east1).** * For GCP Europe, our primary region is **Europe-west1 (Belgium)** and our backup region is **Europe-west3 (Frankfurt).** ## Features of Contentstack Regions * Global Availability * Independent Data Centers * Speed and Security ### Global Availability Each data center is installed in a specific region, but it is capable of serving customers across the globe. For example: The AWS Europe data center is installed in the European region and it is capable of serving customers across all of Europe and other continents. ### Independent Data Centers * Each region is a separate, independent region. Therefore a region doesn't work as a fallback or disaster recovery option for the other. You can't use a region as a backup of your primary region. * The data stored in one region cannot be accessed by anyone from a different region. * You cannot store your organization's content in multiple regions. For example: If you choose the AWS Europe data center as your region, all of your organization's data will reside in the AWS Europe region * Each region has its own login URLs and other endpoints. ### Speed and Security * Contentstack regions offer high level of [data security and privacy](https://www.contentstack.com/trust). * The Contentstack app functions at the optimum level in all the available regions. ## Using Regions in Contentstack * [Login Endpoints](/docs/administration/login-endpoints) * [API Endpoints](/docs/administration/api-endpoints) * [Selecting Regions in Contentstack Starter Apps](/docs/administration/selecting-region-in-contentstack-starter-apps) * [Selecting Regions in SDKs](/docs/administration/selecting-region-in-sdks) * [Configure Regions in the CLI](/docs/headless-cms/configure-regions-in-the-cli) --- ## URL: https://www.contentstack.com/docs/administration/about-scim --- title: "About SCIM" description: "About SCIM" url: "https://www.contentstack.com/docs/administration/about-scim" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: about-scim.md --- # About SCIM **SCIM (System for Cross-domain Identity Management)** is a secure protocol that enables automatic user provisioning. It eases the process of managing user identity data between an identity provider (such as OneLogin) and service providers (such as Contentstack). Contentstack’s SCIM integration allows you to manage users of your Contentstack organization via your IdP (Identity Provider) such as OneLogin. So, whenever new users are added or removed from your IdP, they are automatically added or removed from the Contentstack organization, respectively. **Note**: Only the users with [Owner, Admin, or Security Manager](/docs/administration/about-administration-roles) roles can set up SCIM. Setting up SCIM requires configuring it under **Administration** in your Contentstack organization. Here are the detailed guides that outline how you can set up SCIM with [OneLogin](/docs/administration/set-up-scim-provisioning-with-onelogin), [Microsoft Azure AD](/docs/administration/set-up-scim-provisioning-with-microsoft-azure-ad), and [Okta](/docs/administration/set-up-scim-provisioning-with-okta-native-app). **Note**: SCIM is a plan-based feature. If you cannot see these settings, contact [Contentstack support](mailto:support@contentstack.com) to enable this feature for your organization. We also provide APIs so you can manage user provisioning with custom IdP clients or manage provisioning programmatically. ## Related Resource * [SCIM API](/docs/developers/apis/scim-api) --- ## URL: https://www.contentstack.com/docs/administration/about-scim-group-mapping --- title: "About SCIM Group Mapping" description: "About SCIM Group Mapping" url: "https://www.contentstack.com/docs/administration/about-scim-group-mapping" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: about-scim-group-mapping.md --- # About SCIM Group Mapping The **SCIM Group Mapping** functionality allows you to assign roles to a group of users across your organization and its products in Contentstack. When you add a user to a group via an IdP (Identity Provider) such as OneLogin, the roles you have defined for the group apply to that user. **Note**: Only the organization [Owner, Admin, or Security Manager](/docs/administration/about-administration-roles) can use the SCIM group mapping functionality. To set roles for a group, navigate to **Administration** through the App Switcher and open the **SCIM** settings. Then, from the groups you have created via your IdP, select a group and assign its roles. You can assign organization-level Administration and product roles, along with project-level roles for individual stacks, spaces, or AgentOS projects. For example, if you assign the **Content Manager** role to a “Content Manager group” for every stack in the organization, all the users belonging to this group have the **Content Manager** role for those stacks. **Note**: It is recommended to disable SSO role-mapping when SCIM is enabled, because SCIM groups perform the role assignments in advance. ## Related Resource * [SCIM API](/docs/developers/apis/scim-api) --- ## URL: https://www.contentstack.com/docs/administration/about-single-sign-on-sso --- title: "About Single Sign-On (SSO)" description: "About Single Sign-On (SSO)" url: "https://www.contentstack.com/docs/administration/about-single-sign-on-sso" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: about-single-sign-on-sso.md --- # About Single Sign-On (SSO) **Note**: SSO can only be set up by the [owner](/docs/administration/about-administration-roles) of an [organization](/docs/administration/about-organizations). _Contentstack supports Single Sign-On (SSO). If your Contentstack organization is SSO-enabled, users can access the organization through your corporate identity provider credentials, instead of Contentstack account credentials. This eliminates the normal login process and enables faster and secure access to your apps._ Single Sign-On is a method that enables a particular system (usually the concerned organization’s identity provider) to authenticate users and subsequently inform Contentstack that the users have been authenticated. The users are then allowed to access their resources in Contentstack without having to sign in using Contentstack credentials. **Note**: When a user opts out of SSO from an SSO-enabled organization, the user needs to use the [Reset Password](/docs/administration/forgot-reset-password) option to create a new password for a new login session.   Contentstack uses the most-commonly adopted SSO standard, i.e., Security Assertion Markup Language 2.0 (SAML 2.0). Consequently, our SSO implementation can be integrated with any well-known identity provider (IdP) that supports SAML 2.0. You can refer to our [SSO Guides](/docs/administration) section to learn how you can integrate SSO with any IdP. **Note:** You can now enable encryption for the SAML attributes via your IdP. [Read more](/docs/administration/enable-saml-encryption). To access the SSO settings, log in to your [Contentstack account](https://app.contentstack.com/#!/login), go to the **Organization Settings** page, and then click on the **SINGLE SIGN-ON** tab. You can browse through the following topics, mentioned in the “More Articles” section, to learn how you can set up SSO, how it works, and more. --- ## URL: https://www.contentstack.com/docs/administration/about-teams --- title: "About Teams" description: "Contentstack’s Teams feature simplifies the assignment of roles and permissions, by grouping users." url: "https://www.contentstack.com/docs/administration/about-teams" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: about-teams.md --- # About Teams Teams is an organization-level feature that groups users so you can assign roles to many people at once instead of one user at a time. You assign roles to a team, and every member of that team inherits those roles. As an organization grows, assigning and maintaining roles for each user across stacks, spaces, and projects becomes difficult to manage and audit. Teams makes the group the unit of access: you define the roles once, and membership determines who receives them. When responsibilities change, you update the team instead of each user. ## Key Benefits * **Bulk role assignment**: Assign roles to a group of users in a single action instead of configuring each user individually. * **Consistent permissions**: Every member of a team shares the same set of roles, which keeps access predictable and easier to audit. * **Organization, product, and project-level roles**: Assign organization-level Administration roles and product roles across the CMS, Assets, and AgentOS, along with project-level roles for individual stacks, spaces, or AgentOS projects. * **Additive role inheritance**: A user who belongs to more than one team inherits the combined roles of all those teams. * **Centralized governance**: Teams are managed under Administration, so access stays under organization-level control. ## When to Use Teams Use Teams when several users need the same access and managing them individually is inefficient. Common scenarios include: * Onboarding a group of new users who all need the same roles. * Giving a cross-functional group access to a specific set of stacks, spaces, or projects without affecting unrelated ones. * Granting temporary access for a seasonal campaign or short-term project, then removing it by deleting the team. * Restructuring access after an organizational change by adjusting team roles instead of reassigning every user. Assign roles directly to individual users when the access is unique to one person and is unlikely to be reused. ## How Teams Works You access **Teams** under **Administration** through the "App Switcher". Teams is an organization-wide feature, so it applies across the products and projects in your organization. ![Teams option in Contentstack Administration](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/blt4dfdc86f847dc591/0d09b3f545bd2512639a48ac/Admins-teams.png?locale=en-us) * **Who can manage teams**: The organization Owner and Admin can create, edit, and delete teams. The Security Manager role can view teams but cannot manage them. * **Role assignment**: Each team must have at least one Administration role. You can also assign product roles per product and project-level roles per stack, space, or AgentOS project. * **Role inheritance**: A user who belongs to multiple teams inherits the roles from all of them. If two teams assign different roles for the same project, the user holds both. * **Stack ownership precedence**: If a user is the owner of a stack, the owner permission takes precedence over any stack-level role assigned through a team. * **Reflected in Users and Roles**: Roles assigned through a team also appear under the [Users and Roles](/docs/administration/about-administration-roles) module. --- ## URL: https://www.contentstack.com/docs/administration/account-lockout-policy --- title: "Account Lockout Policy" description: "Enhance Contentstack login security with account lockout policies and multi-factor authentication to protect against unauthorized access and brute-force attacks." url: "https://www.contentstack.com/docs/administration/account-lockout-policy" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: account-lockout-policy.md --- # Account Lockout Policy To strengthen login security, Contentstack enforces an account lockout policy that prevents unauthorized access through repeated failed login attempts. This helps protect user accounts from brute-force attacks or credential guessing. ## How Account Lockout Works When a user enters incorrect login credentials consecutively, the account becomes temporarily locked for increasing durations based on the number of failed attempts. If unsuccessful attempts continue, the account gets locked indefinitely. During the lockout period, login access is restricted. However, authorized users can still use the **Forgot Password?** option to reset their password and regain access. **Failed Login Attempts** **Lockout Duration** 1 to 4 attempts 0 mins 5th attempt 5 mins 6th attempt 10 mins 7th attempt 15 mins 8th attempt 20 mins 9th attempt 25 mins 10th attempt Locked indefinitely **Note:** * Starting from the **5th failed** login attempt, Contentstack sends an email notification for each additional failed attempt. The email includes the login attempt details, such as the browser, device, and IP address used, to help you identify suspicious activity. * After the **10th failed** attempt, the user account remains locked until manually reviewed. Contact your Contentstack organization [admin or owner](/docs/administration/about-administration-roles) to get unlocked. ## Unlock Users Organization admins and owners can manually unlock users individually or in bulk. To unlock users individually or in bulk, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to **Administration** > **Users** through “App Switcher”. 2. Click the vertical ellipsis in the **Action** column next to the locked user.![Action column ellipsis for a locked user](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0465f2f1b10ad97e/693aa8495bb1c13b1837e284/Unlock_Users_1.png) Or select up to **10 users** using the respective checkboxes. ![Selecting multiple users with checkboxes](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf879e21d28d5d776/693aa84afe65010a443ecf9e/Unlock_Users_2.png) 3. Click **Unlock User**. 4. Review the selected users in the confirmation modal and click **Continue** or **Proceed** to restore access. **Note**: * The **Unlock User** option is not available for: * Users who are part of multiple Contentstack organizations * Org owners In both cases, contact Contentstack [support](mailto:support@contentstack.com) to unlock the user. * The **Unlock User** button appears only if **all users selected in bulk** are unlockable. If one or more selected users are ineligible (e.g., multi-org users or organization owner or already unlocked user), the option will not be shown. ## Best Practices To avoid account lockouts, follow these best practices to ensure secure and uninterrupted access to your Contentstack account: * Ensure login credentials are entered correctly * Use a secure and updated password manager * Reset your password promptly if forgotten For additional security, enable [Multi-Factor Authentication (MFA)](/docs/administration/multi-factor-authentication) to protect your account with an extra layer of verification. --- ## URL: https://www.contentstack.com/docs/administration/ai-credits --- title: "AI Credits" description: "Monitor AI credit usage, track monthly consumption, and configure excess usage limits for AI-powered services." url: "https://www.contentstack.com/docs/administration/ai-credits" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: ai-credits.md --- # AI Credits AI Credits are used to measure and manage AI-powered services within Contentstack. They provide visibility into your organization’s AI usage through a centralized dashboard, offering real-time data to help you track consumption, monitor trends, and prevent service interruptions. The AI Credits dashboard provides a monthly view of usage and allows you to configure limits to control how credits are consumed. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions * AI-enabled Contentstack products **Note:** At least one product must be enabled in the [Global AI Settings](/docs/administration/ai-settings) to view the AI Credits usage data. If no products are enabled, the dashboard will show zero usage. ## What You Will Learn * How to open the AI Credits dashboard. * How to read monthly credit allocation and usage. * How to configure a Block or Allow Excess Usage for credit consumption. ## View Your AI Credits To access your credits usage, log in to your [Contentstack account](https://www.contentstack.com/login) and follow the steps: 1. Navigate to the "App Switcher" icon in the top-right corner and click **Administration**.![App Switcher Administration](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am284c5c2e12346360/b90cbb1704689e43cd246cbe/App-Switcher-Administration.png?locale=en-us) 2. From the top header, select **AI Settings**.![AI Settings](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am3c56af473fd87a78/5acfc761c145d4eb62cd82f3/AI-Settings.png?locale=en-us) 3. Click the **AI Credits** option in the left navigation.![AI Credits](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/ame9d12c475dcbd39f/bd4d93fe19b947833627dbd6/AI_Credits.png?locale=en-us) ### Credits Dashboard 4. The **Dashboard** provides an overview of credit allocation and consumption for the **current month**.![AI Credits Dashboard](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am6f53ff75730da0b6/389311adc464848d9c574b1c/AI-Credits-Dashboard.png?locale=en-us) 1. **Monthly Credit Allocation:** The top section of the dashboard provides a high-level overview of your organization's AI resources. 1. **Organization Credit Usage Percentage:** Displays the percentage of base credits consumed in the month. 2. **Credit Allocation:** Shows the total number of credits used and allocated per month. 2. **Days Until Reset:** Indicates the number of days remaining until credits reset. **Tip:** AI credits reset on the **1st of every month**. 3. **Monthly Credit Usage:** The lower section of the dashboard provides a granular, visual breakdown of consumption patterns across the organization:![AI Credits Dashboard Usage Graph](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am357c6c8f773f19c8/c09268ba12d32f3a243e1e7d/AI-Credits-Dashboard-Usage-Graph.png?locale=en-us) 1. **Day-over-Day Monthly Usage Graph:** Displays daily credit utilization to identify spikes in activity and analyze peak usage periods. 2. **Credits Consumed per Product:** The graph is color-coded to differentiate between various AI-enabled products. 3. **Interactive Hover Details:** Hover over the data points on the graph to view exact credit usage for a selected day and product. ### Credits Management 5. The **Management** tab allows you to define how the system behaves after the credit allocation is exhausted.![AI Credits Management](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amd790e570b5c41a3e/0a21e722256ce2c6f3ede683/AI-Credits-Management.png?locale=en-us) 1. **Block Excess Usage:** (Default): Blocks all AI operations when 100% of your allocation is consumed. 2. **Allow Excess Usage:** Allows usage beyond the credit limit to a specified amount of credits. Select this option and enter a specific numerical limit to define your additional credit allowance. Once you save the changes, you can resume your AI operations until you reach the defined limit. **Note:** Usage beyond the basic credit allocation is billed at a higher rate. Navigate to the AI Credits **Dashboard** to view the **Allowed Excess Usage** to track the total number of extra credits utilized. ![AI Credits Dashboard Excess Usage](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am93587cfab48dfdf8/f74d8b3369ecf7080d15e3bb/AI-Credits-Dashboard-Excess-Usage.png?locale=en-us) **Additional Resource:** To learn more, refer to the [Analytics for AI Credits](/docs/analytics/analytics-for-ai-credits) documentation. --- ## URL: https://www.contentstack.com/docs/administration/ai-settings --- title: "AI Configuration : Global AI Settings" description: "Manage AI enablement across Contentstack. Use Global AI Settings to centrally enable or disable AI for specific products and control organization-wide usage." url: "https://www.contentstack.com/docs/administration/ai-settings" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: ai-settings.md --- # AI Configuration : Global AI Settings Use the Global AI Settings page to control which products have access to AI features. By default, all AI products use Contentstack's Managed LLM. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions * Active subscription with AI capabilities ## What You Will Learn * How to open the Global AI Settings page. * How to accept the Contentstack AI Terms of Service. * How to enable or disable AI features for individual products. ## Manage Your AI Configuration To manage your AI configurations, log in to your [Contentstack account](https://www.contentstack.com/login) and follow the steps: 1. Navigate to the "App Switcher" icon in the top-right corner and click **Administration**.![App Switcher Administration](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am284c5c2e12346360/b90cbb1704689e43cd246cbe/App-Switcher-Administration.png?locale=en-us) 2. From the top header, select **AI Settings**.![AI Settings option in the top header](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am3c56af473fd87a78/5acfc761c145d4eb62cd82f3/AI-Settings.png?locale=en-us) 3. By default, you land on the **AI Configuration** page. 4. As a first-time user, you are required to accept **Contentstack AI Terms of Service**. Once that is completed, you can proceed with **Global AI Setting** configuration. 5. The **Global AI Settings** tab lets you enable or disable AI features for individual products. This ensures AI is active only where you want to use it.![Global AI Settings product toggles](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am481f6af94fda88f2/710085f0de4983f4b6417957/Global-AI-Settings.png?locale=en-us) 1. **AI Product Controls:** Displays how many products currently have AI enabled. 2. **Enable All:** To activate AI capabilities across all supported products, click the **Enable All** link. 3. **Product Toggles:** Each product has an individual toggle switch. Click the respective toggle button to enable or disable the product. 1. **Enabled:** The product can use AI features and utilize credits. 2. **Disabled:** AI features are turned off, and the product does not consume credits. --- ## URL: https://www.contentstack.com/docs/administration/api-endpoints --- title: "API Endpoints" description: "Explore Contentstack's comprehensive API endpoints documentation to streamline your development process. Learn how to leverage Contentstack Regions for seamless content management across your applications." url: "https://www.contentstack.com/docs/administration/api-endpoints" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: api-endpoints.md --- # API Endpoints This page lists the base API endpoints for Contentstack services across supported cloud providers and regions. It is intended for developers configuring integrations, SDKs, or network allowlists, and should be used when selecting the correct regional base URL for API calls (including GraphQL Live Preview). **Tip:** Instead of hardcoding the base URLs below, you can retrieve them at runtime using the getContentstackEndpoint helper from the @contentstack/utils SDK. This is recommended for apps that support multiple regions or may add regions in the future. See [Get Contentstack Endpoints](/docs/developers/sdks/utils-sdk/javascript/get-contentstack-endpoints) for the full API reference and examples. ## Base API URLs for the AWS North America Region Content Delivery: https://cdn.contentstack.io/ Content Management: https://api.contentstack.io/ Image Delivery: https://images.contentstack.io/ Assets (other than images): https://assets.contentstack.io/ Automate: https://automations-api.contentstack.com/ GraphQL: https://graphql.contentstack.com/ Brand Kit: https://brand-kits-api.contentstack.com/ Brand Kit GenAI and Knowledge Vault: https://ai.contentstack.com/brand-kits Personalize Management: https://personalize-api.contentstack.com Personalize Edge: https://personalize-edge.contentstack.com Launch: https://launch-api.contentstack.com ## Base API URLs for AWS Europe Region Content Delivery: https://eu-cdn.contentstack.com/ Content Management: https://eu-api.contentstack.com/ Image Delivery: https://eu-images.contentstack.com/ Assets (other than images): https://eu-assets.contentstack.com/ Automate: https://eu-prod-automations-api.contentstack.com GraphQL: https://eu-graphql.contentstack.com/ Brand Kit: https://eu-brand-kits-api.contentstack.com Brand Kit GenAI and Knowledge Vault: https://eu-ai.contentstack.com/brand-kits Personalize Management: https://eu-personalize-api.contentstack.com Personalze Edge: https://eu-personalize-edge.contentstack.com Launch: https://eu-launch-api.contentstack.com ## Base API URLs for AWS Australia Region Content Delivery: https://au-cdn.contentstack.com/ Content Management: https://au-api.contentstack.com/ Image Delivery: https://au-images.contentstack.com/ Assets (other than images): https://au-assets.contentstack.com/ Automate: https://au-prod-automations-api.contentstack.com GraphQL: https://au-graphql.contentstack.com/ Brand Kit: https://au-brand-kits-api.contentstack.com Brand Kit GenAI and Knowledge Vault: https://au-ai.contentstack.com/brand-kits Personalize Management: https://au-personalize-api.contentstack.com Personalze Edge: https://au-personalize-edge.contentstack.com Launch: https://au-launch-api.contentstack.com ## Base API URLs for Azure North America Region Content Delivery: https://azure-na-cdn.contentstack.com/ Content Management: https://azure-na-api.contentstack.com/ Image Delivery: https://azure-na-images.contentstack.com/ Assets (other than images): https://azure-na-assets.contentstack.com/ Automate: https://azure-na-automations-api.contentstack.com GraphQL: https://azure-na-graphql.contentstack.com/ Brand Kit: https://azure-na-brand-kits-api.contentstack.com Brand Kit GenAI and Knowledge Vault: https://azure-na-ai.contentstack.com/brand-kits Personalize Management: https://azure-na-personalize-api.contentstack.com Personalize Edge: https://azure-na-personalize-edge.contentstack.com Launch: https://azure-na-launch-api.contentstack.com ## Base API URLs for Azure Europe Region Content Delivery: https://azure-eu-cdn.contentstack.com/ Content Management: https://azure-eu-api.contentstack.com/ Image Delivery: https://azure-eu-images.contentstack.com/ Assets (other than images):https://azure-eu-assets.contentstack.com/ Automate: https://azure-eu-automations-api.contentstack.com GraphQL: https://azure-eu-graphql.contentstack.com/ Brand Kit: https://azure-eu-brand-kits-api.contentstack.com Brand Kit GenAI and Knowledge Vault: https://azure-eu-ai.contentstack.com/brand-kits Personalize Management: https://azure-eu-personalize-api.contentstack.com Personalize Edge: https://azure-eu-personalize-edge.contentstack.com Launch: https://azure-eu-launch-api.contentstack.com ## Base API URLs for GCP North America Region Content Delivery: https://gcp-na-cdn.contentstack.com/ Content Management: https://gcp-na-api.contentstack.com/ Image Delivery: https://gcp-na-images.contentstack.com/ Assets (other than images): https://gcp-na-assets.contentstack.com/ GraphQL:https://gcp-na-graphql.contentstack.com/ Brand Kit: https://gcp-na-brand-kits-api.contentstack.com Brand Kit GenAI and Knowledge Vault: https://gcp-na-ai.contentstack.com/brand-kits Personalize Management: https://gcp-na-personalize-api.contentstack.com Personalize Edge: https://gcp-na-personalize-edge.contentstack.com Launch: https://gcp-na-launch-api.contentstack.com ## Base API URLs for GCP Europe Region Content Delivery:https://gcp-eu-cdn.contentstack.com/ Content Management: https://gcp-eu-api.contentstack.com/ Image Delivery: https://gcp-eu-images.contentstack.com/ Assets (other than images): https://gcp-eu-assets.contentstack.com/ GraphQL: https://gcp-eu-graphql.contentstack.com/ Personalize Management: https://gcp-eu-personalize-api.contentstack.com Personalize Edge: https://gcp-eu-personalize-edge.contentstack.com Launch: https://gcp-eu-launch-api.contentstack.com ## Base API URLs for Live Preview Support in GraphQL AWS North America (AWS NA): https://graphql-preview.contentstack.com/ AWS Europe (AWS EU): https://eu-graphql-preview.contentstack.com/ AWS Australia (AWS AU): https://au-graphql-preview.contentstack.com/ Azure North America (Azure NA): https://azure-na-graphql-preview.contentstack.com/ Azure Europe (Azure EU): https://azure-eu-graphql-preview.contentstack.com/ GCP North America: https://gcp-na-graphql-preview.contentstack.com/ ## Programmatic Access to Endpoints If you are working with JavaScript or TypeScript, use the getContentstackEndpoint helper from @contentstack/utils instead of hardcoding endpoint URLs. This helper returns the correct base URL for a given region and service at runtime. ``` import { getContentstackEndpoint } from '@contentstack/utils'; const cdnUrl = getContentstackEndpoint('eu', 'contentDelivery'); // Returns: 'https://eu-cdn.contentstack.com' ``` Supported regions include: * na (alias: us) * eu * au * azure-na * azure-eu * gcp-na * gcp-eu **Additional Resource:** For the complete API signature, supported parameters, and error handling details, refer to the [Get Contentstack Endpoints](/docs/developers/sdks/utils-sdk/javascript/get-contentstack-endpoints) documentation --- ## URL: https://www.contentstack.com/docs/administration/bulk-operations-on-organization-users --- title: "Bulk Operations on Organization Users" description: "Efficiently manage organization users with bulk operations. Remove, update stack access, or change roles in one step." url: "https://www.contentstack.com/docs/administration/bulk-operations-on-organization-users" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-13" filename: bulk-operations-on-organization-users.md --- # Bulk Operations on Organization Users Bulk operations let you manage multiple organization users in a single step. You can remove users, update their stack access, change their organization roles, force password resets, reset Multi-Factor Authentication (MFA), and more. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What you will learn * How to select multiple organization users for a bulk action. * Which bulk operations you can apply to the selected users. * How each operation affects user roles, stack access, sessions, and MFA. **Note**: If any bulk action is not visible for your organization, please reach out to our [support](mailto:support@contentstack.com) team. ## Perform Bulk Operations on Organization Users Log in to your [Contentstack account](https://www.contentstack.com/login) and follow the steps: 1. Navigate to **Administration** through “App Switcher”. 2. Click the **Users** tab. 3. Select the checkboxes next to the users you want to manage. **Note**: You can only select up to **10 users** at a time. 4. In the floating panel that appears, select the operation you want to perform. * **Remove**: Removes the selected users from the organization. * **Update Organization Role**: Updates the organization role for the selected users. * **Update Stack Access**: Updates the stack access for selected users. **Note**: The new stack access applied would overwrite the existing access the users had in respective stacks. * **Force Password Reset**: Sends a password reset email to the selected users. * **Reset MFA**: Sends an MFA reset link email to the selected users. * **Force Kill Session**: Selected users will be logged out immediately and will need to log in again. Use this to quickly secure accounts during suspicious activity or access concerns. **Note**: You cannot terminate your own sessions. Users added to multiple organizations or no active sessions will be skipped. Bulk operations help you manage organization users more efficiently by reducing repetitive administrative tasks. --- ## URL: https://www.contentstack.com/docs/administration/change-organization-role-of-existing-users --- title: "Change Organization Role of Existing Users" description: "How to update an existing user's organization-level Administration and product roles, along with project-level roles, in Contentstack." url: "https://www.contentstack.com/docs/administration/change-organization-role-of-existing-users" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-13" filename: change-organization-role-of-existing-users.md --- # Change Organization Role of Existing Users Contentstack uses **role-based access control** (**RBAC**) to manage access across your organization and its products. This page shows you how to update the roles of an existing organization user. For an existing user, you can update: * **Administration roles**: Organization-level roles, such as Owner, Admin, Security Manager, Product Analytics Viewer, and Member, that control organization-wide capabilities. * **Product roles**: Organization-level roles for each product, such as the CMS, Assets, and AgentOS, that control product-wide access. * **Project-level roles**: Roles applied to individual stacks, spaces, or AgentOS projects within a product. A user can hold more than one role at the same time. For example, a user can be both a Member and a Product Analytics Viewer. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to edit an existing user's Administration, product, and project-level roles. * Which role rules apply when updating a user, such as the required Administration role. ## Change a User's Roles To change the roles of a user, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the steps given below: 1. Navigate to **Administration** through the App Switcher, then click the **Users** tab to view organization users. 2. Click the vertical ellipsis next to the user and select **Edit**.![Edit option for a user on the Users tab](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am6efdbeb486a9b14c/24a548bbc0f9c8f3c4e5c1e5/RBAC_Edit_User.png?locale=en-us) 3. On the **Edit User** screen, update the following as required: * The organization-level **Administration** roles. * The product roles for each product, such as the CMS, Assets, and AgentOS. * The assigned stacks, spaces, or AgentOS projects, and the project-level roles for each. 4. Click **Update** to save your changes.![Update button on the Edit User screen](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amfa61bf74c627dcd7/91132031a9c760e8cec51097/RBAC_Edit_User_2.png?locale=en-us) Changes take effect immediately. **Note:** * At least one **Administration** role must always remain assigned. By default, the **Member** role is selected. * Organization-level (product-level) custom roles created in **Administration** are available for selection here. Project-level custom roles, such as custom stack, space, or AgentOS project roles, must be created from the respective project or its per-product settings page before they can be assigned. **Additional Resource:** * To learn about the organization-level Administration roles, refer to the [About Administration Roles](/docs/administration/about-administration-roles) documentation. * To learn about the default roles available for each product, refer to the [About Product Roles](/docs/administration/about-product-roles) documentation. ## Related Resource * [Get all roles in an Organization](/docs/developers/apis/administration-api/organizations#get-all-roles-in-an-organization) --- ## URL: https://www.contentstack.com/docs/administration/change-password --- title: "Change Password" description: "Secure your Contentstack account by regularly updating passwords. Learn to reset it via profile or API. Enable MFA for added protection." url: "https://www.contentstack.com/docs/administration/change-password" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: change-password.md --- # Change Password Regularly updating your password helps protect your Contentstack account from unauthorized access. It is recommended to choose a strong, unique password that is not reused across other platforms. Contentstack allows users to update their password directly from their profile settings. **Note:** Changing your password signs you out of all sessions across browsers, tabs, and devices. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Your current account password ## What You Will Learn * How to reset your password from your Contentstack profile. * How changing your password affects your active sessions. ## Change your Password To change your password, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the following steps: 1. Click the "Profile" icon in the top-right corner of the dashboard and select **Profile** from the dropdown.![Profile menu in dashboard](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt83c07302ecd7ecb8/6866312a4282266725808b7d/Change_Password_1.png) 2. In the **Profile** section, click the **Security** tab in the left navigation panel.![Security tab in profile](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9e4fdef08f90fdbd/6866312b94765cae0bb265ad/Change_Password_2.png) 3. Under **Email & Password**, click **Reset Password**.![Reset Password button](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltff9af47d8a22eaea/6867b1a15839bcd64ad94cd7/Change_Password_3.png) 4. In the **Reset Password** modal, enter your current password in the **Old Password** field. Type your new password in the **New Password** field. Re-enter your password in the **Confirm Password** field.![Reset Password modal fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7f9ea0ea6892503b/686632133f6f2e58602dd4ac/Change_Password_4.png) **Note:** Ensure the new password meets your organization’s [password policy](/docs/administration/security-configuration#password-policies). 5. Click **Update** to apply the new password. Use the new credentials for your next login. **Tip**: For security, avoid reusing old passwords and consider enabling [Multi-Factor Authentication (MFA)](/docs/administration/multi-factor-authentication) for an extra layer of protection. **Additional Resource:** If you do not remember your password, refer to the [Forgot (Reset) Password](/docs/administration/forgot-reset-password) document for more information. ## Related Resource * [Reset Password API request](/docs/developers/apis/administration-api/users#reset-password) --- ## URL: https://www.contentstack.com/docs/administration/change-personal-details --- title: "Change Personal Details" description: "Update your Contentstack profile easily: Edit your name, company, and profile image. Ensure accurate info for seamless account management." url: "https://www.contentstack.com/docs/administration/change-personal-details" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: change-personal-details.md --- # Change Personal Details The profile page in Contentstack lets you edit your personal details, such as name, company name, and view your email address. Keeping this information updated helps ensure accurate account identification and communication. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to edit your profile image, first name, last name, and company name. * Which profile field is read-only and cannot be changed. ## Edit your Personal Details To edit your personal details, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the following steps: 1. Click the "Profile" icon in the top-right corner of the dashboard and select **Profile** from the dropdown.![Profile option in the profile dropdown](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt84b9ef96ae63e906/6863da3df4c619a92bfcd87d/Change_Personal_Details_1.png) 2. In the **Profile** section, you can edit the following fields: * **Profile Image**: Upload or replace your profile image * **First Name**: Required and editable * **Last Name**: Required and editable * **Company Name**: Optional and editable **Note:** The email address is visible, but is read-only and cannot be changed. 3. Click **Save** to apply the changes to your profile. ![Save button on the profile page](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0f5024a01613e676/6863da3d53d8e3a5d1da9e54/Change_Personal_Details_2.png) Ensure your personal details are accurate to maintain a consistent experience across your Contentstack organization. For email address changes or profile access issues, contact Contentstack [support](mailto:support@contentstack.com). --- ## URL: https://www.contentstack.com/docs/administration/choosing-a-region --- title: "Choosing a Region" description: "Choosing a Region" url: "https://www.contentstack.com/docs/administration/choosing-a-region" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: choosing-a-region.md --- # Choosing a Region You can choose a [region](/docs/administration/about-regions) for your organization data while subscribing for a [Contentstack (organization) account](https://www.contentstack.com/login). Contact our [support team](mailto:support@contentstack.com) for more details. --- ## URL: https://www.contentstack.com/docs/administration/contentstack-accessibility-statement --- title: "Contentstack Accessibility Statement" description: "Learn about Contentstack's commitment to accessibility, WCAG 2.2 compliance, and tools to create inclusive digital experiences for all users." url: "https://www.contentstack.com/docs/administration/contentstack-accessibility-statement" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: contentstack-accessibility-statement.md --- # Contentstack Accessibility Statement Contentstack is committed to fostering an inclusive digital environment for all users. We continuously enhance our platform to align with accessibility best practices, ensuring usability for individuals of all abilities. This statement outlines our approach, compliance with accessibility standards, and how we support customers in building accessible digital experiences. ## Our Commitment to Accessibility At Contentstack, we are committed to ensuring an inclusive and accessible experience for all users. We strive to empower our customers to build digital experiences that are usable by everyone, regardless of their abilities or the assistive technologies they rely on. Our product and design teams continuously improve accessibility across our platform by adhering to recognized industry standards and best practices. ## Compliance with WCAG Standards Contentstack follows the **Web Content Accessibility Guidelines** ([WCAG](https://www.w3.org/WAI/standards-guidelines/wcag/)) to provide an accessible experience for our users. These guidelines define success criteria across three levels of conformance: **A**, **AA**, and **AAA**. Currently, Contentstack is **partially conformant with WCAG 2.2 Level AA**. We prioritize accessibility for the most common user interactions to ensure the best possible experience for the majority of our users. Our goal is to work toward full compliance wherever feasible. ## How Contentstack Supports Accessible Digital Experiences As a **Headless CMS**, Contentstack gives you full control over the accessibility of the digital experiences you create—whether it's a website, mobile app, or another digital product. You can integrate third-party accessibility tools and implement best practices to achieve your desired level of compliance. While Contentstack does not enforce front-end accessibility requirements at the platform level, our system does not impose any limitations that would prevent full **WCAG 2.2 AAA** compliance if you choose to implement it. For guidance on creating accessible content, refer to the [Authoring Tool Accessibility Guidelines (ATAG) 2.0,](https://www.w3.org/TR/IMPLEMENTING-ATAG20/#part_b) **Section B**. ## How Accessibility is Built into our Design Process Accessibility is a **core focus area** at Contentstack. We incorporate accessibility considerations throughout the product lifecycle to enhance usability for all users. Our approach includes: * Conducting **inclusive research** and developing **accessibility personas** to better understand user needs. * Ensuring **keyboard navigability**, proper **color contrast**, and **clear visual hierarchy** in our designs. * Designing with assistive technologies in mind, including **screen readers**, **magnifiers**, and **voice navigation tools**. * Implementing **regular accessibility audits** and **user feedback loops** to identify and address barriers proactively. While we recognize that accessibility is an ongoing effort, we are committed to continuous improvement and working toward achieving the highest level of compliance. ## Accessibility Tools and Resources To help you assess and improve accessibility, we recommend the following tools: ### Accessibility Checking and Validation Ensuring digital accessibility requires regular testing and validation. We recommend using industry-standard tools to assess compliance with WCAG guidelines and identify areas for improvement. Below are some trusted tools to help evaluate and enhance accessibility in your digital experiences: * [Axe](https://www.deque.com/axe/) by Deque Systems * [WAVE](https://wave.webaim.org/) by WebAIM * [Lighthouse](https://developer.chrome.com/docs/lighthouse/overview?hl=it) by Google ### Assistive Technologies Assistive technologies enhance accessibility by enabling alternative navigation, screen reading, and voice command support. Here are some widely used tools: * [NVDA](https://www.nvaccess.org/) (NonVisual Desktop Access) * [JAWS](https://www.freedomscientific.com/products/software/jaws/) (Job Access With Speech) * [VoiceOver](https://support.apple.com/en-in/guide/voiceover/welcome/mac) for Mac ## Need Help? If you have any questions or need further assistance regarding accessibility, please reach out to our [support](mailto:support@contentstack.com) team. ## Additional Resources For further guidance on accessibility standards and best practices, explore the following resources. * [WCAG Standards](https://www.w3.org/WAI/standards-guidelines/wcag/) * [Contentstack Browser Support](/docs/headless-cms/what-you-need-to-get-started) **Note**: Devices that exclusively use a touch interface are not supported. --- ## URL: https://www.contentstack.com/docs/administration/create-a-team --- title: "Create a Team" description: "Learn how to create a team in Contentstack for efficient user grouping and role assignments." url: "https://www.contentstack.com/docs/administration/create-a-team" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: create-a-team.md --- # Create a Team A team lets you assign organization-level Administration roles and product roles across the CMS, Assets, and AgentOS to a group of users at once. Use teams to manage permissions consistently across your organization without assigning roles to each user individually. ### Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## Create a Team To create a team, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to **Administration** through the App Switcher. 2. Click **Teams** in the top navigation bar. 3. Click the **\+ New Team** button. 4. In the **Create New Team** modal, enter a **Team Name** (required) and an optional **Description**, then click **Create Team**. The team is created and the team configuration page opens. ### Assign Roles (Mandatory) 5. To assign roles to the team, perform the following steps: 1. #### CMS Roles 1. Under the **CMS** section, click **\+ Manage Roles**. 2. Click the **Select Stack(s)** dropdown and select stacks. 3. Select the roles (**Admin**, **Developer**, **Content Manager**) for the stacks from the **Select Default Roles** dropdown. 4. In the **Roles Per Stacks** section, you can assign different roles per stack. 5. After setting up the CMS roles, click **Save**. 2. #### Assets Roles 1. Under the **Assets** section, click **\+ Manage Roles**. 2. Click the **Select Space(s)** dropdown and select spaces. 3. Select the roles (**Product Admin**, **Asset Type Manager**, **Member**) for the spaces from the **Select Default Roles** dropdown. 4. In the **Roles Per Spaces** section, you can assign different roles per space. 5. After setting up the Assets roles, click **Save**. 3. #### AgentOS Roles 1. Under the **AgentOS** section, click **\+ Manage Roles**. 2. Select the AgentOS projects and choose the roles (**AgentOS Admin**, **AgentOS Member**) for each. 3. After setting up the AgentOS roles, click **Save**. 4. #### Administration Roles 1. Under the **Administration** section, click **\+ Manage Roles**. **Note:** At least one Administration role must be assigned. 2. Select one or more Administration roles (**Admin**, **Security Manager**, **Product Analytics Viewer**, or **Member**), then click **Save**. 6. To review your assigned roles, click the vertical ellipsis and select **Preview Roles**. 7. To remove all role assignments and start over, click **Clear All Roles**. 8. Click **Save** to apply the settings. ### Invite Users To invite users to the team, perform the following steps: 1. Click the **Users** tab within the team. 2. Click the **\+ Invite Users** button. 3. Enter one or more email addresses, then click **Invite**. **Note:** Users who are new to Contentstack receive an email with a link to set up their account. ## Related Resource * [Create a team API request](/docs/developers/apis/administration-api/teams#create-a-team). --- ## URL: https://www.contentstack.com/docs/administration/create-custom-roles --- title: "Create Custom Roles" description: "Learn how to create custom roles in Contentstack to align permissions with team duties, ensuring compliance and effective access management." url: "https://www.contentstack.com/docs/administration/create-custom-roles" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-13" filename: create-custom-roles.md --- # Create Custom Roles Custom roles define organization-level (product-level) permissions for a Contentstack product when the default roles do not match a team's responsibilities. You create custom roles through Administration, select the permission categories that apply to the product, and choose the actions each role can perform. Use custom roles to align access with internal responsibilities and compliance requirements, such as granting view-only access to one product area while restricting another. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to create an organization-level custom role for a product. * Where custom roles become available after creation. ## Create a Custom Role To create a custom organization-level role, log in to your Contentstack account and perform the steps given below: 1. Navigate to **Administration** through the "App Switcher", then click the **Roles** tab to view roles. 2. Click **\+ New Role**.![New Role button on the Roles page](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am610bb094e57628c4/b4e5c25f85fd96aa4279fbb1/Create_Roles_1.png?locale=en-us) 3. Enter a **Name** and a **Description**. 4. Under **Choose a Product**, select the product the role applies to, such as **CMS**, **Assets**, or **Administration**.![Choose a Product selection on the New Role page](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am0c1b315c82a3ffc4/6c518da3cc6cdcd2bb3ae194/Create_Roles_2.png?locale=en-us) 5. Review the permission categories available for the selected product. The categories vary by product. For example, Assets includes Spaces, Fields, Asset Types, Users, Roles, and Languages. 6. For each category, click **\+ Select Permissions**, or click the vertical ellipsis and select **Manage Permissions**. 7. In the permissions side panel, select the required actions for the category, such as **View**, **Create**, **Edit**, or **Delete**.![Permissions side panel with action selections](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amd5ed9777f7afb5d6/7a162e9d12fbcc1cc93a9914/Create_Roles_3.png?locale=en-us) 8. Click **Save**. **Tip**: Configure permissions only for the areas this role should access. Leave other categories unselected to restrict access. 9. Click **Create Role**.![Create Role button confirming the new custom role](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am21ee0c8220302ff9/73ef0171f0857889904ecd99/Create_Roles_4.png?locale=en-us) The custom role is created and appears on the Roles listing page with a Custom tag. ## Where Custom Roles Are Available After you create an organization-level custom role, it becomes available for selection when you: * Invite new users. * Edit an existing user's organization-level roles for that product. **Note**: Only organization-level (product-level) custom roles can be created through Administration. Project-level custom roles, such as custom stack, space, or AgentOS project roles, must be created from the respective project or its per-product settings page. Project-level custom roles appear in the invitation flow once created, but you cannot create them from Administration. **Additional Resource**: To assign roles when onboarding users, refer to the [Invite Users to Organization](/docs/administration/invite-users-to-organization) documentation. --- ## URL: https://www.contentstack.com/docs/administration/customer-entitlements --- title: "Customer Entitlements" description: "Customer Entitlements in Contentstack allows the owners and Admins to know the user and usage information." url: "https://www.contentstack.com/docs/administration/customer-entitlements" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: customer-entitlements.md --- # Customer Entitlements The Organization Settings page shows information about the number of users, usage, and analytics for your organization. This page explains how to view user limits, remove inactive users, and read the organization usage analytics. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to view the total user limit for your organization. * How to remove inactive users from the organization. * How to view usage by stacks, bandwidth, API requests, and top URLs. * How to filter usage analytics data. ## Users ### Total Limit for Users To access the analytics for your organization, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Click the “Org Admin” icon on the left navigation panel to navigate to the **Organization Settings** page. 2. Click the **Mission Control** tab to view the **Usage Overview** page. ### Remove Inactive Users When users are removed from the stack, your **Organization User List** may reach a limit due to the number of inactive users. Therefore, removing inactive users from the organization list is advisable instead of the stack. A user removed from an organization also loses access to all stacks it contains. To remove an inactive user from the organization, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to the **Organization Settings** page. 2. Click the **Users** tab to view the list of users in the organization. ![Users tab listing organization users height=](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt22607af0f5d52f50/66cc3b438bdacf4b2d245c46/Users_Screen.png) 3. Hover over the user you want to remove and click the **Remove** icon that appears on the right.![Remove icon next to an organization user](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7b82fc89e5977746/66cc3b43769673218d6780aa/RemoveUsers_Icon.png) 4. Confirm your decision to remove the user from the organization.![Confirm remove user dialog](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt648453618eb8fbc8/66cc3b437696735f226780a6/Remove_Popup.png) ## API Calls, Usage, and Bandwidth ### Usage by Stacks The Usage by Stacks section gives a quick overview of the usage of various entities by the stacks of your organization. To view the different usage by stacks in the organization over a period, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: **Additional Resources:** Refer to the [Product Analytics](/docs/analytics/about-analytics) documentation for detailed information. 1. Click the **Product Analytics** tab to view the **Usage Overview** page. 2. Scroll down the page to view the **Usage by Stacks** section.![Usage by Stacks section](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdfc7f9eb4e21de7d/65f7e7fef4a4cf34b214ee3a/Usage_By_Stacks.png) ### Bandwidth Usage The **Bandwidth** section gives an overview of data usage in the form of a bar chart. The dates are mapped on the X-axis and the corresponding Bandwidth usage (in MB) is mapped on the Y-axis. Set the time frame of your choice and get the desired results as shown below: ![Bandwidth usage bar chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt16ce569aff5c774d/66cc3c8d70d8f81962fea60e/Usage_by_Stacks_Bandwidth.png) Hover over any bar in your chart and you can see the corresponding bandwidth usage (in MB) for a specific duration. ### API Requests Usage The **API Requests** section under the **Usage Type**, illustrates the API utilization over a particular period, using a bar chart. Time is mapped on the X-axis and the corresponding API utilization is mapped on the Y-axis. You can set the time frame of your choice and get the desired results as shown below: ![API requests usage bar chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0bff6f6360fa0a0f/66cc64698f533f14fde17cbc/Usage_By_Stacks_API_requests.png) Hover over any bar in your chart to see the corresponding API utilization for a specific duration. ### Top URLs The **Top URLs** section highlights the most frequently hit API URLs, along with the number of times those URLs were called for a specific duration. ![Top URLs section](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf5ec2da234b6b882/66cc3c8d19b6830681088a31/TOP_URLs.png) ### Apply Filters Using Filters, you can filter the data of the **Usage Analytics** and **Tops URLs** sections. You can retrieve data for a specific service, specific group, and specific duration. #### Services Filter Use the **Services** filter to view the usage of the data of specific services only. You can choose either a single service or all services at a time. ![Services filter options](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9183bbfa215cc2be/66cc6469b3f7660708c70879/services_filter.png) #### Group By Filter The **Group By** filter lets you view the usage data grouped by **Daily**, **Weekly,** or **Monthly** usage. ![Group By filter options](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdb8edd67cf88b76c/66cc64698f533f7cb4e17cb8/Usage_Analytics_Group_By.png) #### Duration Filter The **Duration** filter gives you quick options to view data of the **last 30 days**, **last 14 days**, **last 7 days,** or **last 1 day**. The **Custom Date** option lets you select a custom date range within the last 30 days as shown below: ![Duration filter with custom date range](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf4c7891d35890539/66cc646970d8f8a8bffea81e/Usage_Analytics_Date_Filterpng.png) --- ## URL: https://www.contentstack.com/docs/administration/data-storage --- title: "Data Storage" description: "Explore Contentstack's comprehensive documentation on data storage, covering regions, and learn how to efficiently manage your data storage needs for your digital projects. Discover best practices and guidelines for optimizing data storage strategies." url: "https://www.contentstack.com/docs/administration/data-storage" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: data-storage.md --- # Data Storage The AWS North America, AWS Europe, AWS Australia, Azure North America, Azure Europe, GCP North America, and GCP Europe regions are completely separate and isolated from each other. Every piece of your [organization](/docs/administration/about-organizations) data resides in your choice of [region](/docs/administration/about-regions). This means that you cannot decide to store some parts of the organization data in one region and the rest in another. **Note**: Once an organization has been registered/created, you cannot change the organization region. --- ## URL: https://www.contentstack.com/docs/administration/delete-a-team --- title: "Delete a Team" description: "Learn how to delete an existing team in Contentstack." url: "https://www.contentstack.com/docs/administration/delete-a-team" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: delete-a-team.md --- # Delete a Team Contentstack allows you to delete an existing team created in your organization. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions **Note**: Only the Organization **Owner** or **Admin** can delete teams created by other stakeholders. * An existing [team](/docs/administration/create-a-team) ## What You Will Learn * How to delete a team from your organization. * What happens to member permissions when a team is deleted. ## Delete a Team To delete a team, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to **Administration** through the "App Switcher", and select **Teams**. 2. In the **Actions** column for the team you want to delete, click the vertical ellipsis, then click the **Delete** option (trash bin icon). 3. In the **Delete Team** modal, click **Delete Team** to confirm. **Warning**: Deleting a team removes the roles it assigns, and its members lose the permissions they inherited from the team. ## Related Resource * [Administration API: Delete a team](/docs/developers/apis/administration-api/teams#delete-a-team) --- ## URL: https://www.contentstack.com/docs/administration/edit-a-team --- title: "Edit a Team" description: "Learn how to edit an existing team in Contentstack." url: "https://www.contentstack.com/docs/administration/edit-a-team" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: edit-a-team.md --- # Edit a Team You can edit an existing team by updating its name, description, assigned roles, or membership. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions **Note**: Only the Organization **Owner** or **Admin** can edit teams created by other stakeholders. * An existing [team](/docs/administration/create-a-team) ## What You Will Learn * How to update a team's name and description. * How to update a team's assigned Administration, product, and project-level roles. * How to add or remove users on a team. ## Edit a Team To edit a team, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to **Administration** through the App Switcher, and select **Teams**. 2. In the **Actions** column for the team you want to edit, click the vertical ellipsis, then click the **Edit** option (pencil icon). 3. On the team page, you can: 1. Update the **Team Name** or **Description**. 2. Update the assigned Administration and product roles, and add or remove project-level roles for stacks, spaces, or AgentOS projects. 3. Add or remove users. For details, refer to the Invite Users section in the [Create a Team](/docs/administration/create-a-team) document. When you modify settings in the **Team** tab, click **Save** to apply the changes. In the **Users** tab, changes are immediate; there is no Save button, and you can add or remove users directly. ## Related Resource * [Administration API: Edit a team](/docs/developers/apis/administration-api/teams#update-a-team) --- ## URL: https://www.contentstack.com/docs/administration/enable-saml-encryption --- title: "Enable SAML Encryption" description: "Enable SAML Encryption" url: "https://www.contentstack.com/docs/administration/enable-saml-encryption" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: enable-saml-encryption.md --- # Enable SAML Encryption Security Assertion Markup Language (SAML) is an open standard for trading authorized content such as logins, identifiers, and other suitable attributes between Contentstack and an IdP. SAML simplifies and secures the authentication process by authorizing users with a single set of authentication credentials. An IdP stores specific SAML attributes that help validate users during logins. Allowing encryption of the SAML attributes adds another layer of security so that personal or corporate data is not compromised. **Note**: Enabling SAML encryption is optional. Even without the encryption, communication between the IdP and Contentstack application transpires over encrypted links. ## Prerequisites * [Organization Owner](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to enable encryption for SAML attributes in Contentstack. * How to download the Contentstack public certificate for SAML encryption. ## Enabling encryption for SAML attributes in Contentstack Once you enable the encryption, the IdP will encrypt the SAML attributes using the public key obtained from Contentstack. To enable SAML encryption, perform the following steps: 1. Log in to your [Contentstack account](https://app.contentstack.com/#!/login), go to the [Organization Settings](/docs/administration/organization-settings-overview) page, and click on the **Single Sign-On** tab. ![SSO.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt8ec8db6a88618de0/6241b47f79348e75f916206b/SSO.png) **Note**: Only the owner of an organization can set up SSO. 2. Click on the **2\. IdP Configuration** tab. ![IdP\_Config.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt098ad58147de6967/6241b47f7239af5fef4137d1/IdP_Config.png) 3. Check the **Enable SAML Encryption** checkbox, and click on **Save**. ![Enable\_SAML.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt137da74f9d600ad8/6241b47f13968918d3ddd10e/Enable_SAML.png) ## Download the Contentstack Public Certificate for SAML Encryption You will need a public certificate to encrypt your SAML attributes via your IdP. Download the Contentstack Public Certificate for either the [NA region](https://app.contentstack.com/public_cert.cer) or the [EU region](https://eu-app.contentstack.com/public_cert.cer) and upload it to your IdP to configure the SAML encryption. --- ## URL: https://www.contentstack.com/docs/administration/faqs --- title: "Administration FAQs" description: "Discover the frequently asked questions for administration in Contentstack." url: "https://www.contentstack.com/docs/administration/faqs" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: faqs.md --- # Administration FAQs ## Organization FAQs ### What is an organization? Organization is specifically designed for administrators to simplify the process of managing stacks and permissions of a group or company. Organization encapsulates all users, stacks and all the resources within stacks. It allows you to manage roles and permissions for the users and stacks of your account and enables smoother collaboration between the users.  For more information, refer to the [Organization](/docs/administration/about-organizations) documentation. ### Can I transfer the ownership of my organization? If yes, how? Yes, you can. To do so, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the steps given below: 1. Click on the “**ORGANIZATION”** drop-down on the header and select the Organization you want to access 2. Click on the “Org Admin” icon on the left. This will open the “Settings” page. 3. In the “Organization Info” section, click on the “Transfer Ownership” button on the right-hand side.  4. Enter the email ID of the user to whom you wish to transfer the Organization"s ownership and click on “**Transfer**”. This will send an email invitation to the user to accept the ownership of the organization. If the user does not receive the invitation, you can resend the invitation by clicking on “**Resend**”. Once the invited user accepts the ownership invitation, the organization will cease to be under your ownership and you will be assigned the ‘Member’ role.  **Note**: Only the owner of the organization can transfer the ownership of the organization. ### How do I create an organization? To create a new organization, contact the Contentstack support team at [support@contentstack.com](mailto:support@contentstack.com). ### How do I get the details of an organization? To get the details of an organization, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Click on the  "ORGANIZATION" drop-down on the header and select the Organization you want to access. 2. Click on the “Org Admin” icon on the left navigation panel. This will open the ‘Organization Settings’ page which consists of the details of the organization as shown in the following screenshot: Note: Only the Owner and the Admin users can view this info. ### How do I delete an organization? You cannot delete an organization. To permanently disable your organization, contact the Contentstack support team at [support@contentstack.com](mailto:support@contentstack.com). ### How do I get a list of all stacks in my organization? To get a list of all stacks in an organization, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the steps given below: 1. Click on the "ORGANIZATION" drop-down on the header and select the Organization that you want to access. 2. Click the “Org Admin” icon on the left navigation panel. 3. Click on the **Stacks** tab on the left-hand side of the page. This will open the **Stacks** page that displays the list of all the stacks that belong to the organization. ### How do I invite users to my organization? Only the Owner and the Admin users of the organization has the right to invite users to the organization. To invite users to an organization, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the steps given below: 1. Click on the "ORGANIZATION" drop-down on the header and select the Organization you want to access. 2. Click on the “Org Admin” icon on the left navigation panel. 3. Click on the **Users** tab on the left-hand side of the page. This will open the **Users** page that displays the list of users who belong to that organization. 4. Click on the **Invite User** button on top of the page. 5. In the “Invite User” form that opens, enter the following details:Under the **Email** section, enter the email ID(s) of the user(s) you wish to share the stack with.In the **Organization Roles** section, you also need to assign a role to the user. You can select either the ‘ADMIN’ or ‘MEMBER’ role.In the **Stack-level permissions** section, assign stack-specific roles to these users. 6. Click on **Invite** to send the invitation to the user(s). ### How do I get a list of all users in my organization? To get a list of all users in an organization, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the steps given below: 1. Click on the “ORGANIZATION” drop-down on the header and select the Organization that you want to access. 2. Click on the “Org Admin” icon on the left navigation panel. 3. Click on the **Users** tab on the left-hand side of the page. This will open the **Users Overview** page that displays the list of users who belong to that organization. ### How do I remove a user from my organization? To remove a user from an organization, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the steps given below: 1. Click on the **ORGANIZATION** drop-down on the header and select the Organization that you want to access. 2. Click on the “Org Admin” icon on the left navigation panel. 3. Click on the **Users** tab. This will open the **Users** page that displays the list of users who belong to that organization. 4. Click on the user that you wish to remove and click on the “Remove” icon. ### What is the difference between roles created within organizations and stacks? In Contentstack, roles can be assigned at two level: Organization-level roles and Stack-level roles. While inviting a user to an organization, you can assign Member and Admin roles. These roles define what you can do in the organization. Read more about [organization roles](/docs/administration/about-administration-roles). When inviting a user to a stack, you can assign Developer, Content Manager or a custom role. These role define what a user can do within the stack. Read more about [stack roles](/docs/headless-cms/about-stack-roles). ### Are there any limits to the number of users or stacks that can be added to an organization? Yes, there are limits to your usage in an organization. These limits depend on the plan that you have subscribed for. To get the plan details and usage of your organization, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Click on the **ORGANIZATION** drop-down on the header and select the Organization that you want to access. 2. Click on the “Org Admin” icon on the left navigation panel. 3. Click on the **Plan & Usage** tab. This will lead you to the **Plan & Usage** page that will display the current usage and maximum allowed limit of the current plan’s features, which include stacks, assets, entries, content types, and users, API calls, and bandwidth. ### How to update a user role in an organization? To update a user role in an organization, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the steps given below: Click on the **ORGANIZATION** drop-down on the header and select the Organization that you want to open.Click on the “Org Admin” icon on the left navigation panel.Click on the **Users** tab on the left-hand side of the page. This will open the **Users** page that displays the list of users who belong to that organization. Click on the user whose role you wish to update. This will open the ‘User Details’ page.Reassign the respective organization roles for the user.Click on the **Update** button to update the roles of the user(s). Note: You need to be the organization owner or be assigned the 'admin' role in order to update the roles of users in an organization. ### Where can I find the organization ID? To retrieve the organization ID of an organization, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the steps given below: 1. Click on the **ORGANIZATION** drop-down on the header and select the Organization that you want to access. 2. Click on the “Org Admin” icon on the left navigation panel. 3. By default, the **Organization Info** section is opened which displays the name and ID of an Organization. ### How to change the name of an organization? You cannot change the name of an organization. In order to do so, please contact our [Support](mailto:support@contentstack.com) team. ### What is the difference between an admin and member role? Users who are assigned the ‘Admin’ role will be able to access and modify the organization information, invite users, view usage, etc. whereas users assigned the ‘Member’ role will not be able to access any Organization settings. ### When a user is removed from the organization, will they still be able to access the stacks shared with/created by them? No, after a user has been removed from the organization, he/she will not able to access the stacks shared/created by them in the organization. ## Users and Roles FAQs ### I want other users to add and edit content for my website. Is it possible? Yes, you can [add users](/docs/headless-cms/add-a-new-user) to add and edit content for your website. For that, you need to share the relevant stack with other users. ### I want to add new users to the stack but cannot see anything in the “Settings” section. How do I do this? If you do not see the **Users & Roles** option under "Settings,” it means you do not have permission to add new users to your [stack](/docs/headless-cms/about-stack). Please contact the stack [owner](/docs/headless-cms/types-of-roles#owner) to add users or to grant you the necessary permissions. ### How many users can I add per stack? You can add an unlimited number of users to a [stack](/docs/headless-cms/about-stack). ### Can I control access to content for users and groups? Yes, you can control access to content for users and groups by assigning them specific roles. We recommend you to go through the [Roles](/docs/headless-cms/types-of-roles) section in order to achieve this functionality. ### ​Are all the roles editable? No. The [Owner](/docs/headless-cms/types-of-roles#owner) and the [Admin](/docs/headless-cms/types-of-roles#admin) roles are not editable. Other roles are editable. ### ​Can a developer remove all users from a stack? No, the [developer](/docs/headless-cms/types-of-roles#developer) can remove only those users whom he/she has invited to the stack. ### ​Can the admin of a stack delete the stack? Only the owner of the stack has the right to [delete a stack](/docs/administration/organization-stacks#delete-a-stack). ### ​What are the benefits of creating a Custom role? The [Custom Role](/docs/headless-cms/types-of-roles#custom-role) gives you the provision to apply permissions at [entry](/docs/headless-cms/about-entries), [field](/docs/headless-cms/about-fields), and [asset](/docs/headless-cms/about-assets) levels. ### ​Can a stack have multiple owners? No, each stack can have only one Owner, who has complete rights to the content and settings of a stack. In addition to that, the Owner has the right to delete a stack as well as [transfer the ownership](/docs/headless-cms/transfer-stack-ownership) of the stack to another user. ### ​Is there a difference between the “Admin” and “Developer” roles? Yes, both the roles are different and the differences that are mentioned in the [Stack Admin vs Stack Developer](/docs/administration/stack-admin-vs-stack-developer) section. ### Who can add users to a stack? Only the [Owner](/docs/headless-cms/types-of-roles#owner), [Admin](/docs/headless-cms/types-of-roles#admin), and users assigned the “[Developer](/docs/headless-cms/types-of-roles#developer)” role can add users to a stack. ### Can a user with a Custom Role view the settings of a stack? Users with the [Custom](/docs/headless-cms/types-of-roles#custom-role) or [Content Manager](/docs/headless-cms/types-of-roles#content-manager) role cannot view the full Stack settings, but they may have access to limited or specific settings, depending on their assigned permissions. ### ​Are there any limitations when creating roles? Yes, there are certain limitations in Roles. They are as follows: * **Title**: The title of a role should be between **1** and **160** characters. * **Description**: The description of a role should not exceed **320** characters. * **Permissions Limitations**: When creating a custom role, you cannot add individual components beyond certain limits in permissions. The maximum allowed limit of components (Content Types, Entries, Assets, Locales, Environments) within the permissions of a custom role is **100**. ## Single Sign-On (SSO) FAQs ### How do I enable SSO for an organization? To enable [SSO](/docs/administration/about-single-sign-on-sso), you need to meet these two conditions: * You must be the [owner](/docs/administration/about-administration-roles) of the organization * SSO must be a part of your Contentstack plan If you meet these two conditions, you can set up SSO for your organization by following the [Set up SSO](/docs/administration/set-up-sso-in-contentstack) guide. ### How can a user, who always logged in to his/her SSO-enabled Contentstack account via SSO (and does not have normal login credentials), access the same organization after SSO has been disabled for the organization? When a user is included in an SSO-enabled Organization, he/she accesses the Organization through SSO using their IdP credentials instead of their Contentstack credentials (which they might not have created). If, later on, SSO is disabled for the Organization, the user will not be able to log in to Contentstack through IdP. However, the user is still part of the Organization. To access the same organization, the user will have to perform the following steps: 1. Open [Contentstack login](https://www.contentstack.com/login) page and click the **Forgot Password?** link. 2. Enter the email address and click **SEND INSTRUCTIONS**. Now, the user will receive the password reset instructions on the email address. The user needs to follow the instruction and login to their Contentstack account. ### If the Identity Provider (IdP) experiences a system failure, how can we make changes to our content? An organization [owner](/docs/administration/about-administration-roles) can always use his Contentstack credentials to [log in](https://www.contentstack.com/login) to Contentstack and make relevant changes, irrespective of whether SSO has been enabled or not. If the IdP experiences system fails, then the owner can perform the following steps: 1. Log in to the Contentstack account. 2. Go to [Organization settings](/docs/administration/organization-settings-overview) page and open the **Single Sign-On** tab, go to **User Management**, disable [Strict Mode](/docs/administration/set-up-sso-in-contentstack#user-management-in-contentstack), and grant access to the required user(s) by checking the **Allow Access without SSO** option. These users will now be able to access the organization using their Contentstack credentials, instead of through SSO (IdP credentials). However, if the user does not have a Contentstack account, he/she will receive an email with the account setup instructions to create an account in Contentstack. Post setting up their account, they will be able to access the Organization content. ### As a user, how do I sign in to an SSO-enabled organization in Contentstack? To sign in to an SSO-enabled organization in Contentstack, perform the following steps: 1. Open the [login page](https://www.contentstack.com/login) of Contentstack and click the **Log in via SSO** button. 2. Then, enter your organization **SSO Name**, and click on **Log in via SSO** button. This will open your corporate IdP login page. **Note**: You must have received the SSO name in your stack or organization invitation email. If you do not know your organization SSO Name, contact your organization [owner or admin](/docs/administration/about-administration-roles). 3. Finally, sign in to your Contentstack account by entering your IdP login details. ### As an owner/admin, how do I invite users that are not in my corporate IdP to my SSO-enabled organization? To invite users that are not in your IdP, perform the following steps: Log in to your [Contentstack account](https://www.contentstack.com/login/), go to the [Organization Settings](/docs/administration/organization-settings-overview) page and click on **Single Sign-On** tab, open the **User Management** tab, and disable the **Strict Mode**. 1. Then, go to the **Users** tab located at the header, and [invite users](/docs/administration/invite-users-to-organization). 2. While inviting, select the **Allow Access without SSO** checkbox. This will allow the invited user to access the SSO-enabled organization through Contentstack credentials. ### Will I need to resend an invite to my existing organization users if I enable SSO? No. You do not have to send an invitation again since the existing users continue to remain part of the organization, even after SSO is enabled.  Nothing changes for the existing users, except that they are required to sign in using SSO, instead of normal Contentstack username/password login. However, if any existing user is not part of your identity provider, you may have to disable [Strict Mode](/docs/administration/set-up-sso-in-contentstack#user-management-in-contentstack) and update the user in Contentstack by assigning permission to **Allow Access Without SSO.** ### Why do I need SAML encryption? Adding [encryption to SAML attributes](/docs/administration/enable-saml-encryption) adds another layer of security, ensuring that personal or corporate information is not compromised. ### Which attributes are encrypted? Your SAML attributes such as email, first name, and last name that are mapped with your IdP are encrypted. Learn more about [SAML encryption.](/docs/administration/enable-saml-encryption) ### How do I enable SAML encryption? You need to enable SAML encryption in Contentstack and your IdP settings. **To enable SAML encryption in Contentstack, follow the steps given below:** 1. Log in to your [Contentstack account](https://www.contentstack.com/login), go to the [Organization Settings](/docs/administration/organization-settings-overview) page, and click on the **Single Sign-On** tab. 2. Click on the **IdP Configuration** tab. 3. Check the **Enable SAML Encryption** toggle, and click on **Save**. **Provide the following details in your IdP to enable SAML encryption:** 1. In the **Single Sign-On Url** field, provide the ACS URL that was generated for your organization in Contentstack. 2. Use Contentstack’s Entity ID (generated in Step 1) in your IdP in **Audience URI**, **SP Entity ID**, **SAML Issuer ID**, or fields similar to these. 3. In the **NameID Format**, select or enter **Email Address**. This defines the parameter that your IdP should use to identify Contentstack users. 4. _\[Optional Step\]_ If you want to encrypt your SAML attributes, you need to enable SAML encryption in your IdP and upload the [Contentstack Public Certificate](/docs/administration/enable-saml-encryption#download-the-contentstack-public-certificate-for-saml-encryption). ## Role Mapping FAQs ### How do I invite new users when IdP Role Mapping is enabled for my SSO-enabled organization? To add new IdP users to your SSO enabled organization, just add them to any of your IdP group or role (in your IdP settings) that is mapped with Contentstack roles. They can then directly login to Contentstack (via SSO) with the corresponding permissions. If you want to provide a different set of permissions to some [users](/docs/administration/organization-users), create a new group/role in your IdP, and add users to this group. Subsequently, add the [mapping](/docs/administration/idp-role-mapping) for this group in Contentstack SSO user settings. To invite external users, disable **Strict Mode** and invite them as usual from Contentstack from **Organization Settings**. Remember to select the **Allow login without SSO** checkbox. ### If SSO is already enabled for my organization, does enabling IdP Role Mapping cause any change? Yes. Only the [roles](/docs/administration/about-administration-roles) received from your IdP for the users will be honored. This means that, on enabling IdP Role Mapping, the existing roles assigned to the users will be overridden by the roles assigned to IdP groups. This, however, is not applicable for external users (i.e., users who log in without [SSO](/docs/administration/about-single-sign-on-sso) to your SSO-enabled organization). Please note that there is no way to revert the changes that were overridden by your IdP roles. The roles that were assigned to users prior to enabling IdP Role Mapping are erased. ### What happens to user roles when I disable IdP Role Mapping for my SSO-enabled organization? If you disable IdP Role Mapping, Contentstack no longer honors roles (and permissions) returned by your IdP. There are, however, no changes to the existing permissions of the users in Contentstack. [Users](/docs/administration/about-administration-roles) continue to maintain the permissions that they had. However, subsequent to disabling [IdP Role Mapping](/docs/administration/idp-role-mapping), role management can be done only through Contentsatack’s Users and Roles settings. ## System for Cross-domain Identity Management (SCIM) FAQs ### How do I enable SCIM for an organization? Here’s a [step-by-step guide](/docs/administration/set-up-scim-provisioning-with-onelogin) that explains how to enable SCIM for your Contentstack organization and manage user provisioning through OneLogin as your identity provider (IdP). To enable SCIM, however, the following things need to be in place: * SCIM must be part of your Contentstack plan * You must either be an [owner or admin](/docs/administration/about-administration-roles) of the organization ### Which Identity Providers (IdPs) does Contentstack support? Currently, we support SCIM for [OneLogin](/docs/administration/set-up-scim-provisioning-with-onelogin), [Microsoft Azure AD](/docs/administration/set-up-scim-provisioning-with-microsoft-azure-ad), and [Okta Native](/docs/administration/set-up-scim-provisioning-with-okta-native-app) apps. We plan to add support for other IdPs soon. ### How to edit details of a user via SCIM? The endpoint to edit user details is not supported. Considering that users can be members of more than one organization in Contentstack, we do not support an organization to edit user details such as their name or email address. However, to change users’ organization role, you can use the Contentstack app and follow the steps mentioned in this [Change Organization Role of Existing Users](/docs/administration/change-organization-role-of-existing-users) guide. ### Which version of the SCIM protocol does Contentstack support Contentstack supports SCIM **2.0**. ### Do users get deleted from the Contentstack account after they are deprovisioned from an organization via IdP? If you deprovision users via IdP, they will no longer be a part of the respective Contentstack organization. However, those users will still have access to the Contentstack account. ### If a user is added to multiple groups via SCIM, then what would be the net permission to the user? If a user belongs to multiple groups, he/she will get the highest order of permission on the organization and stack(s). For example, user1 belongs to group1 and group2, and these groups have the following set of permissions: * Group1:[Organization Admin](/docs/administration/about-administration-roles)“[Developer](/headless-cms/types-of-roles#developer)” role in all stacks * Group2: [Organization Member](/docs/administration/about-administration-roles)“[Content manager](/headless-cms/types-of-roles#content-manager)” role in all stacks In this case, user1 will be the admin of the organization and have the “Developer” and "Content manager" roles in all the stacks. ## Security FAQs ### How secure is my content saved in Contentstack? Contentstack accounts are password protected. To make them more secure, we have [two-factor authentication](/docs/administration/multi-factor-authentication) that lets you add an extra layer of security. ### I forgot my account password. What should I do? In case you forget your password, you can reset it again by performing the steps given below: 1. Click the **Forgot Password?** link on the login page. 2. On the **Forgot your Password?** page, enter your email ID and click the **Send Instructions** button. You will receive an email containing the password reset page link. 3. On the **Reset Password** page, enter the new password and click the **Reset Password** button. Now you can log into your account using the new password. ### How does a password reset work? To reset your Contentstack user account password, log in to your [Contentstack account](https://www.contentstack.com/login), and perform the following steps 1. Click your profile located at the top-right corner of the page, and select **Security**. This opens the **Account Settings** page. 2. Under the **Change Password** section, enter your old password and new password, confirm it, and click **Update** to update your password Now you can log in to your account using new password. In case you forget your password, please contact our [Support](mailto:support@contentstack.com) team. ### I have enabled Two-factor Authentication (2FA) for my account. And I need to change my registered phone number associated with my account. How can I do this? To change the registered phone number associated with your Contentstack account, log in to your [Contentstack account](https://www.contentstack.com/login) using existing phone number, and perform the following steps: 1. Click your profile located at the top-right corner of the page, and select **Security**. This opens the **Account Settings** page. 2. Under the **Two-factor Authentication** section, click the **Reset your phone number** link. 3. Enter the new phone number and click **Reset**. 4. Select a method to verify your phone number either using the Authy app or via text message, and perform the verification process as performed while enabling two-factor authentication. ### I have enabled two-factor authentication (2FA) for my account, but my number has changed. Looks like I am locked out of my account. What should I do? If you do not have access to the phone number that was used for 2FA registration, you will need to contact our [Support](mailto:support@contentstack.com) team for further assistance. ### What are the measures taken for disaster recovery? For any enterprise, data is of utmost importance and it's crucial to protect it. So, it's very important to have a proper disaster recovery plan in place to cover all contingencies. To do so, it's imperative that we set in place a system that will considerably reduce the damages caused by a fire, theft, flooding, etc, by backing up our data at appropriate locations. Apart from natural disasters, backing up files can protect your content against accidental loss of user data, database corruption, and hardware failures. It’s our job as service providers to make sure that backups are performed and in a secure location. We have taken this into account and have come up with the required measures to create the right plan for you. Let’s see them in detail. * **Region and Availability Zones** * We leverage AWS to deploy Contentstack in multiple availability zones so that if one of the instances in an availability zone fails, the requests will be routed to one of the healthy instances. If an availability zone fails altogether, the requests will be routed to the working availability zones. Contentstack won't face any downtime. * **Highly Available Architecture** * Contentstack has a network architecture that is designed for maximum reliability and uptime, and offers up to 99.95% Service Level Agreement (SLA) for its services, just as promised. The infrastructure consisting of highly-available, redundant number of data centers ensures minimum service interruption due to natural disasters, hardware failures, or other incidents. * **CDN and Caching** * Our highly efficient [CDN](/docs/administration/cdn-and-caching/what-is-cdn-and-how-it-works) ensures faster delivery of content irrespective of the destination with the help of nodes that are spread all around the world. Also, it allows caching – keeping copies of content that were requested earlier thus making it available for future requests. * **Data is constantly backed up** * We use a Cloud-based backup solution to backup our database. For every request made, your data is constantly backed up. ## Platform Discovery FAQs ### Why is a feature marked as No Recent Activity? A feature is marked as **No Recent Activity** when no qualifying activity has been detected within the required evaluation period. In most cases, Platform Discovery evaluates activity within the last 90 days. ### Why is a feature marked as Requires Plan Upgrade? This status indicates that the feature is unavailable in your current Contentstack subscription plan. Contact your Customer Success Manager or Contentstack Support for upgrade information. ### Does Platform Discovery track usage across all stacks? Feature activity is evaluated using the criteria defined for each capability. Depending on the feature, usage may be evaluated across stacks, environments, deployments, workflows, or organization-level configurations. ### Why does Localization show No Recent Activity? Localization is considered active only when one or more locales are configured. If no locales exist in your organization, the feature displays a No Recent Activity status. ### Why do Branches show No Recent Activity? Branches are considered active only when at least one branch exists in addition to the main branch. ### How often does Platform Discovery update? Platform activity data may take time to refresh depending on the feature and telemetry source. If recent activity does not appear immediately, refresh the dashboard after some time. ### Can I filter features by business objective? Yes. Use the **Impact Areas** dropdown to filter features based on business outcomes such as efficiency, personalization, or scalability. ## AI Credits FAQs ### What is Global AI Settings? [Global AI Settings](/docs/administration/ai-settings) allow you to enable or disable AI features for individual products across your organization. ### Why can’t I see AI Settings? AI Settings are visible only if: * Your organization has **AI Credits** enabled * You have **Organization Owner** or **Admin** permissions ### How are Global AI Settings and AI Credits related? [Global AI Settings](/docs/administration/ai-settings) control which products can use AI, while [AI Credits](/docs/administration/ai-credits) track and manage usage. ### Does enabling AI start consuming credits immediately? No. Credits are consumed only when AI operations are executed, not when AI is enabled. ### What does the AI Credits dashboard show? The dashboard provides a monthly overview of credit usage and allocation, including usage percentage, executions, and trends. ### Why is my dashboard showing zero usage? This happens when no products are enabled in Global AI Settings or no AI operations are performed. ### When do AI Credits reset? AI Credits reset on the **1st of every month**. ### If we don't use all our base credits this month, do they roll over? No. Your balance refreshes to zero and your base allocation resets to 100% on the 1st of every month. ### What happens when I reach 100% of my AI credit limit? If **Block Excess Usage** is enabled, all AI operations stop once your monthly credit allocation is exhausted. If **Allow Excess Usage** is enabled, AI operations continue after your credit allocation is exhausted, up to the defined excess usage limit. **Note:** Credits used beyond your credit allocation are billed at a higher rate. ## Contentstack Regions FAQs ### How to choose a region? You can choose a [region](/docs/administration/about-regions) for your organization data while subscribing for a [Contentstack (organization) account](https://www.contentstack.com/login). Contact our [support](https://www.contentstack.com/customers/support) team for more details. ### Which regions are used to host the North America and Europe region for Contentstack? * For AWS North America, our main region is **Oregon, US (us-west-1)** and the backup region is **North Virginia, US (us-east-1)**. * For AWS Europe, our main region is **Ireland, Europe (eu-west-1)** and the backup is **Frankfurt, Europe (eu-central-1)**. * For Azure North America, our primary region is **West US 2** and our backups are configured in **US East** region(**MongoDB Database** backups) and **West US** region(**Assets backups**) * For Azure Europe, our primary region is **US-East-1 (N. Virginia)** and our backup region is **EU Central 1 (Frankfurt)** ### Which regions are used to host the GCP North America region for Contentstack? * For GCP North America, our primary region is **Oregon, US (us-west1)** and the backup region is **South Carolina, US (us-east1)** ### What are the primary and backup regions for GCP in Europe? For GCP Europe, our primary region is **europe-west1 (Belgium)** and our backup region is **europe-west3 (Frankfurt)**. ### What are the primary and backup regions for AWS in Australia? For AWS Australia, our primary region is **Sydney** and our backup region is **Singapore**. ### Can customers store some data in one data center and some in another? The European data center is completely separate from the North American data center. So, if you choose a region for your organization, the whole data of your organization will reside in the selected region. ### Is organization data shared between European and North American data centers? **No**. Data is NOT shared between the European and North American data centers. Both the data centers are 100% separate and isolated from each other. Every piece of your [organization](/docs/administration/about-organizations) data resides in your choice of [region](/docs/administration/about-regions/). This means that you cannot decide to store some parts of the organization data in one region and the rest in the other. Once an organization has been registered/ created, you cannot change the organization region. ### How should I use the APIs for my organization’s apps in the European region? The base API URLs to access the European, Azure North American, and Azure European region’s content are different from those of the North American region. Refer to the [API Endpoints](/docs/administration/api-endpoints) section above for more details. ### Will European and North American regions of Contentstack receive the same set of product and feature updates? **Yes**. New product features and updates will be available in both regions. When a new product feature is released, it's first made available to the North American region. Then, in the next 2 weeks, the same feature will be available for the European region. We will keep our customers informed about the release dates through the pre- and post-release emails. ### If the North American instance were to become unavailable, how quickly could customers be migrated to the European instance? Does that cause any data security risks? The North American and European data centers are completely separate from each other and **not meant to serve as a disaster recovery mechanism if either of them goes down**. Within each data center, we already have an efficient disaster recovery system in place that works to ensure continuous and high availability during an outage. ### Is the same set of product and feature updates delivered to Azure and AWS regions of Contentstack? Yes. New product features and updates will be available in both regions at the same time. We will keep our customers informed about the release dates through the pre-release and post-release emails. ### Is there a difference in performance and data security between Azure and AWS regions of Contentstack? No. Though both regions serve different customer bases, there is no difference in their performances. Contentstack app functions at the optimum level in the Azure as well as the AWS regions. Similarly, both regions have high levels of [data security and privacy](https://www.contentstack.com/trust). ### As a customer what changes for me if I migrate to Azure NA region or Azure EU Region? The Azure NA or Azure EU region is separate and independent from other regions and therefore has different login URLs, passwords, and API endpoints to access organization apps and content. ### I want to migrate from AWS to the Azure instance. Can region migration cause any data security risks? No. Both the regions have an efficient disaster recovery system that works to ensure continuous and high availability during an outage. ### How do I login to the Azure NA region? You can either use the [Azure NA region login endpoint](https://azure-na-app.contentstack.com/#!/login) or navigate to the [login page](https://contentstack.com/login) and select “Azure North America” as your region. ### How do I login to the Azure EU region? You can either use the [Azure EU region login endpoint](https://azure-eu-app.contentstack.com/#!/login) or navigate to the [login page](https://contentstack.com/login) and select Azure Europe as your region. ### How do I login to the GCP North America region? You can either use the [GCP NA region login endpoint](https://gcp-na-app.contentstack.com) or navigate to the [login page](https://contentstack.com/login) and select “GCP North America” as your region. ### How can I log in to the GCP Europe region? You can either use the [GCP EU region login endpoint](https://gcp-eu-app.contentstack.com/?_gl=1*1awypdu*_gcl_au*MTg0MzE4ODg4Ny4xNzQwNTU2MDYz) or navigate to the [login page](https://www.contentstack.com/login/?_gl=1*a5sag0*_gcl_au*MTg0MzE4ODg4Ny4xNzQwNTU2MDYz) and select “GCP Europe” as your region. ### How can I log in to the AWS Australia region? You can either use the [AWS AU region login endpoint](https://au-app.contentstack.com/#!/login) or navigate to the [login page](https://www.contentstack.com/login/?_gl=1*a5sag0*_gcl_au*MTg0MzE4ODg4Ny4xNzQwNTU2MDYz) and select “GCP Europe” as your region. ### Can I store my organization’s content in multiple regions? No. You cannot store parts of your organization's content in multiple regions. If you choose the Azure North America (NA) data center as your region, all of your organization's data will reside in the same region. ### How can I check the Health Status of any region? Navigate to the [status.contentstack.com](https://status.contentstack.com) page and scroll down to the section of your region to know the status.  Currently, we have support for Seven regions. * **Amazon Web Services US Region** * **Amazon Web Services EU Region**  * **Amazon Web Services AU Region**  * **Microsoft Azure US Region** * **Microsoft Azure EU Region** * **Google Cloud Platform US Region** * **Google Cloud Platform Europe Region** ### Are there any changes to the SLA for different Contentstack regions and datacenters ? No. All regions and data centers offer the same tiers of SLA as defined in the Contentstack-Customer agreement. --- ## URL: https://www.contentstack.com/docs/administration/feature-activity-definitions --- title: "Feature Activity Definitions" description: "Review the activity criteria used by Platform Discovery to determine feature usage statuses across Contentstack capabilities." url: "https://www.contentstack.com/docs/administration/feature-activity-definitions" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-15" filename: feature-activity-definitions.md --- # Feature Activity Definitions Platform Discovery uses feature-specific activity criteria to determine whether a feature is marked as **Active** or **No Recent Activity**. This page lists the exact criteria for each of the features that Platform Discovery evaluates. ## Activity Definitions The following table lists the activity criteria Platform Discovery applies to each feature. Feature Active when No Recent Activity when Automation, Deployment, and AI Automate At least one automation executed in the last 90 days. No automation executions in the last 90 days. Launch At least one build or deployment executed, or bandwidth consumed in the last 90 days. No build, deployment, or bandwidth activity detected in the last 90 days. Personalize Activity detected in the last 90 days, such as tracked events, recorded impressions, or created experiments. No personalization activity detected in the last 90 days. Brand Kit AI tokens were consumed for Brand Kit features in the last 90 days. No AI token usage detected for Brand Kit in the last 90 days. Content Structure and Configuration Localization One or more locales are configured. No locales are configured. JSON RTE JSON Rich Text Editor is used in one or more content types. JSON Rich Text Editor is not used in any content type. Workflows At least one workflow stage transition occurred in the last 90 days. No workflow stage transitions occurred in the last 90 days. Releases Release activity detected in the last 90 days, such as created or modified releases. No releases were created or modified in the last 90 days. Branches One or more branches exist apart from the main branch. No additional branches exist. Environments One or more environments exist. No environments are configured. Taxonomy One or more taxonomies exist. No taxonomies are created. Authoring and Preview Live Preview Live Preview was used in the last 90 days. No Live Preview usage detected in the last 90 days. Timeline Timeline was used in the last 90 days. No Timeline activity detected in the last 90 days. Visual Builder Visual Builder was used in the last 90 days. No Visual Builder usage detected in the last 90 days. Assets Assets At least one asset-related activity was detected in the last 90 days, such as asset, space, or workspace activity. No asset-related activity detected in the last 90 days. User-defined Fields in Assets User-defined asset fields were created or used in the last 90 days. No user-defined asset field activity detected in the last 90 days. AI Suggestions in Assets AI-powered asset capabilities were used in the last 90 days. No AI-powered asset activity detected in the last 90 days. Agent OS Polaris At least one prompt was sent to Polaris in the last 90 days. No prompts were sent to Polaris in the last 90 days. Custom Agents At least one deployed agent execution occurred in the last 90 days. No deployed agent executions occurred in the last 90 days. Digital Concierge At least one deployed agent execution occurred in the last 90 days. No deployed agent executions occurred in the last 90 days. **Note:** * Activity definitions may evolve as additional platform capabilities and telemetry become available. * **Requires Plan Upgrade** is determined by your organization's subscription plan, not by activity criteria. Thus, not included in the table. * Five features (Localization, JSON Rich Text Editor (JSON RTE), Branches, Environments, and Taxonomy) are evaluated based on configuration state, not on activity within the last 90 days. For these features, the status reflects whether the feature is configured, not how recently it was used. --- ## URL: https://www.contentstack.com/docs/administration/feature-usage-statuses --- title: "Understand Feature Usage Statuses" description: "Learn how Platform Discovery determines Active, No Recent Activity, and Requires Plan Upgrade statuses for Contentstack features." url: "https://www.contentstack.com/docs/administration/feature-usage-statuses" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-15" filename: feature-usage-statuses.md --- # Understand Feature Usage Statuses Platform Discovery assigns a status to each feature card to show how your organization is using that capability. The three possible statuses are **Active**, **No Recent Activity**, and **Requires Plan Upgrade**. ## Feature Usage Status Use the following statuses to understand adoption trends, identify underused capabilities, and evaluate options for platform expansion. Status Indicator color Meaning **Active** Green The feature has qualifying usage or configuration activity in your organization. **No Recent Activity** Red The feature is enabled but has not shown qualifying activity recently. **Requires Plan Upgrade** Yellow The feature is not available in your current subscription plan. * ## Active **Active** features display a green status indicator. This status means the feature has qualifying usage or configuration activity detected in your organization. Depending on the feature, qualifying activity may include: * User interactions * Workflow executions * API usage * Deployments * Content updates * Feature configuration **Note:** Most activity checks evaluate usage within the last **90 days**. * ## No Recent Activity **No Recent Activity** features display a red status indicator. This status means the feature is enabled in your organization but has not shown qualifying activity recently. This status can help you identify: * Features that may need additional onboarding. * Features that are configured but unused. * Opportunities to improve platform adoption. * ## Requires Plan Upgrade **Requires Plan Upgrade** features display a yellow status indicator. This status means the feature is not available in your current subscription plan. These features remain visible in Platform Discovery to help you: * Explore additional platform capabilities. * Understand advanced feature availability. * Evaluate future expansion opportunities. **Tip** Contact Contentstack [support](mailto:support@contentstack.com) to learn more about enabling upgraded features. ## Learn More About a Feature Each feature card includes a **Learn More** option. Use this option to: * Access product documentation. * Review implementation guidance. * Explore Academy videos. * Understand common use cases. --- ## URL: https://www.contentstack.com/docs/administration/filter-by-impact-area --- title: "Filter Features by Impact Area" description: "Use Impact Areas in Platform Discovery to identify Contentstack features aligned with efficiency, productivity, personalization, and scalability goals." url: "https://www.contentstack.com/docs/administration/filter-by-impact-area" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-15" filename: filter-by-impact-area.md --- # Filter Features by Impact Area Platform Discovery includes an **Impact Areas** filter that helps you identify features aligned with specific business objectives. Use this filter to focus on capabilities that support your organization's priorities. ### Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Platform Discovery enabled for the Organization * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ### What You Will Learn * What impact areas are and how Platform Discovery uses them. * Which impact areas are available and what business outcomes they represent. * How to apply the Impact Areas filter in Platform Discovery. ## Available Impact Areas Platform Discovery maps features to business outcomes. This approach helps teams connect technical capabilities with strategic initiatives. The following seven impact areas are available as filter values. Impact Area Description **Efficiency** Reduce manual work and improve operational workflows. Includes capabilities such as Automate, Workflows, Assets, Visual Builder, and Agent OS features. **Productivity** Improve collaboration and streamline content operations using tools such as Modular Blocks, Taxonomy, Visual Builder, and Polaris. **Time-to-Market** Accelerate launches and publishing workflows with capabilities such as Launch, Releases, Live Preview, and Visual Builder. **Personalization** Deliver audience-specific digital experiences using capabilities such as Personalize, Localization, and Brand Kit. **Content ROI** Improve content effectiveness and content reuse through capabilities such as Localization, Personalize, and Taxonomy. **Workflows & Collaboration** Support governance, approvals, releases, and collaborative editorial operations. **Performance & Scalability** Support enterprise-scale deployments, environments, and branching strategies. ## Filter Features To filter features by impact area: 1. Open **Platform Discovery**. 2. Click the **Impact Areas** dropdown in the top-right corner. 3. Select an impact area. The dashboard updates to display features associated with the selected business outcome. Impact area filters can help teams: * Prioritize feature adoption initiatives. * Align platform capabilities with strategic goals. * Identify tools that support operational improvements. * Discover underused features relevant to current projects. --- ## URL: https://www.contentstack.com/docs/administration/forgot-reset-password --- title: "Forgot (Reset) Password" description: "Easily reset your Contentstack password with our step-by-step guide, ensuring quick, secure access to your account. Reset via login page or API." url: "https://www.contentstack.com/docs/administration/forgot-reset-password" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: forgot-reset-password.md --- # Forgot (Reset) Password Forgetting your Contentstack password does not mean losing access. Use your registered email address to securely reset your password and restore access to your account. ## Prerequisites * Access to the email inbox registered with your Contentstack account ## What You Will Learn * How to reset a forgotten password using your registered email. * How long the password reset link stays valid. ## Reset your Password To reset your password, perform the following steps: 1. Click the **Forgot Password?** link located below the login fields on the Contentstack login page.![Forgot Password link on login page](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltde51cbabd1c518ec/6863d6c8f9ec8f74a7ecac19/Forgot_Password_1.png) 2. Enter the email address associated with your Contentstack account. Select **Send Instructions** to initiate the reset process.![Email entry for reset instructions](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt432fed8fd74e682c/6863d6c8f4c61913cbfcd84d/Forgot_Password_2.png) 3. Open the email from Contentstack and use the password reset link provided. The link directs you to the password reset form.![Password reset email](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta145fac50663bab5/6863d6c8ba854aba586c845b/Forgot_Password_3.png) **Note:** The password reset link expires after **60 minutes**. If it is no longer valid, repeat the steps above to generate a new link. 4. In the **Reset Password** form, enter your new password. Confirm it by re-entering the same password in the second field. Click **Reset Password** to complete the update.![Reset Password form](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte34a093577cfc24a/6863d6c8a9189f470959bd93/Forgot_Password_4.png) **Note:** Resetting your password signs you out of all active sessions across browsers, tabs, and devices. Your password has been successfully reset. Sign in using your new credentials. ## Related Resource * [Reset Password API request](/docs/developers/apis/administration-api/users#reset-password) --- ## URL: https://www.contentstack.com/docs/administration/hmac-signing --- title: "HMAC Signing" description: "Enable HMAC signing to sign your organization's webhook payloads with a secret key unique to your organization, with zero-downtime key rotation." url: "https://www.contentstack.com/docs/administration/hmac-signing" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: hmac-signing.md --- # HMAC Signing **Hash-based Message Authentication Code** (**HMAC**) signing lets you sign your organization's webhook payloads with a secret key that belongs only to your organization. When a webhook is triggered, Contentstack adds an HMAC signature to the request so the receiving application can confirm the payload came from Contentstack and was not altered in transit. By default, Contentstack signs webhook payloads with a single, platform-wide certificate, and consumers verify them using Contentstack's public key. HMAC signing replaces that shared model with a per-organization secret, giving you isolated trust boundaries and full control over your own signing key, including the ability to rotate it on your own schedule. **Note**: HMAC Signing might not be enabled by default on all organizations. To enable it for your organization, reach out to our [support](mailto:support@contentstack.com) team. ## When to Use HMAC Signing Enable HMAC signing when your organization needs tighter control over how webhook payloads are signed and verified. It is the right choice when: * You want a signing key that is unique to your organization rather than shared across the platform. * Your security or compliance policies require you to rotate signing keys periodically. * You need to revoke and replace a signing key quickly in response to a security event, without coordinating a platform-wide change. * You want to verify payload integrity using a shared secret your own team manages. If you do not have these requirements, the default certificate-based signing continues to work and needs no configuration. ## Key Benefits * **Isolated signing keys**: Each organization signs with its own secret key, so a key used by one organization never affects another. * **Self-managed key rotation**: You generate and regenerate your signing key from the UI, on your own schedule. * **Zero-downtime rotation**: When you regenerate a key, the previous key stays valid for a grace period you choose, so existing consumers keep working while you update them. * **Replay protection**: Each payload is signed using HMAC-SHA256 together with a timestamp, which helps your application reject stale or replayed requests. ## How It Works When HMAC signing is enabled, Contentstack signs each webhook payload with your organization's active secret key using the HMAC-SHA256 algorithm and adds the signature to the x-contentstack-hmac-signature header. The receiving application computes its own HMAC using the shared secret and compares it against the signature in the header. If they match, the request is authentic. During a key rotation grace period, the header contains more than one v1 signature, one for the new key and one for the deprecated key. The receiving application should treat the request as valid if any one of the signatures matches. **Note**: HMAC signing is configured at the organization level, but each webhook chooses its signing method individually. A webhook signs with HMAC only when its **Request Signing Method** is set to **HMAC Signing**. For details, refer to [Secure Your Webhooks](/docs/headless-cms/secure-your-webhooks). ## Prerequisites Users with the Owner, Admin, Security Manager, or a custom role with the required permissions within Administration can view and change the HMAC signing configuration. ## Enable HMAC Signing Enabling HMAC signing generates your organization's first signing key. No key exists until you turn the feature on. To enable HMAC signing, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the steps below: 1. Navigate to **Administration** through the App Switcher. 2. Click the **Security Configuration** tab and select **HMAC Signing**. 3. Toggle the **Enable HMAC Signing** switch on. Contentstack generates your first secret key and marks it as active. 4. Click **Show** to reveal the key, then **Copy** to copy it. 5. Store the secret key in your application so it can verify incoming webhook signatures. **Note**: The secret key is shown so you can copy it when you need it. Treat it like a password: store it securely and avoid revealing it on shared screens. After enabling it, set the **Request Signing Method** to **HMAC Signing** on each webhook that should use it. ## Regenerate the Secret Key Regenerate the secret key when you want to rotate it on schedule or replace it after a suspected exposure. Regenerating creates a new active key and starts a grace period during which the previous key remains valid, so existing consumers keep working while you update them. To regenerate the secret key, perform the steps below: 1. On the **HMAC Signing** screen, click **Regenerate**. 2. In the **Regenerate HMAC Secret** dialog, select a **Secret expiration time**. This is how long the current key stays valid before it expires. * Choose a grace period (for example, **24 hours**, the default) to give your consumers time to switch to the new key. * Choose **Immediately** to revoke the current key the moment you regenerate. 3. Review the warning, then click **Regenerate Secret**. 4. Copy the new key and update your applications before the old key expires. **Warning**: If you select **Immediately**, the current key stops working as soon as you regenerate it. Any consumer still using the old key fails verification until you update it with the new key. Use this option only when you need to revoke the old key right away. **Note**: During the grace period, Contentstack signs payloads with both the new and the deprecated key, and the x-contentstack-hmac-signature header includes both signatures. Your application should accept the request if any signature matches. After the grace period ends, only the new key is used for signing. ## Disable HMAC Signing Disable HMAC signing when your organization no longer wants to sign webhook payloads with its own secret key. When you disable it, webhooks that use HMAC signing fall back to the default certificate and keep working, but their payloads no longer carry an HMAC signature for consumers to verify. To disable HMAC signing, perform the steps below: 1. On the **HMAC Signing** screen, toggle the **Enable HMAC Signing** switch off. 2. In the **Disable HMAC Signing** dialog, review the impact. 3. Click **Disable** to confirm. **Warning**: Disabling HMAC signing affects every webhook in your organization that uses it. Those webhooks switch to default signing, and any consumer that verifies HMAC signatures stops receiving them. Update your consumers before you disable HMAC signing. ## Important Notes * **Roles**: Users with the Owner, Admin, Security Manager, or a custom role with the required permissions can enable, regenerate, or disable HMAC signing. * **Algorithm and encoding**: Contentstack signs payloads using HMAC-SHA256 and sends the signature as a hexadecimal value in the x-contentstack-hmac-signature header. * **Use the raw request body**: Verify signatures against the exact raw request body you receive. Do not parse and re-stringify the JSON, change whitespace, or reorder fields, as any change to the payload causes verification to fail. The signed payload format is ${timestamp}.${raw\_request\_body}. * **Replay protection**: Validate the timestamp (t) in the signature header and reject requests older than your chosen tolerance, such as five minutes. * **Rotation limits**: To prevent abuse, the number of regenerations within a period is limited. Avoid regenerating repeatedly in a short window. ## Verify an HMAC Signature The signature header has the following format, where t is the Unix timestamp used to generate the signature and each v1 is an HMAC-SHA256 signature: ``` x-contentstack-hmac-signature: t=1778729300,v1=,v1= ``` The example below verifies an incoming webhook signature in Node.js. Replace the secret with your organization's HMAC secret key. The function returns true if any signature in the header matches: ``` import crypto from "crypto"; function verifyWebhookSignature({ signatureHeader, rawBody, secret }) { if (!signatureHeader) return false; // Example header: t=1778729300,v1=abc,v1=def const parts = signatureHeader.split(","); let timestamp = ""; const signatures = []; for (const part of parts) { const [key, value] = part.trim().split("="); if (key === "t") timestamp = value; if (key === "v1") signatures.push(value); } if (!timestamp || signatures.length === 0) return false; // Use the raw request body exactly as received. const signedPayload = `${timestamp}.${rawBody}`; const expectedSignature = crypto .createHmac("sha256", secret) .update(signedPayload) .digest("hex"); // Match against any v1 signature. return signatures.some((signature) => crypto.timingSafeEqual( Buffer.from(signature, "hex"), Buffer.from(expectedSignature, "hex") ) ); } ``` **Additional Resource**: * To learn about the other ways to secure webhook payloads, refer to [Secure Your Webhooks](/docs/headless-cms/secure-your-webhooks). * To choose a signing method when you create or edit a webhook, refer to [Create a Webhook](/docs/headless-cms/create-a-webhook). --- ## URL: https://www.contentstack.com/docs/administration/how-sso-works-with-contentstack --- title: "How SSO works with Contentstack" description: "How SSO works with Contentstack" url: "https://www.contentstack.com/docs/administration/how-sso-works-with-contentstack" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: how-sso-works-with-contentstack.md --- # How SSO works with Contentstack If you have enabled **Single Sign-On (SSO)** for your [Organization](/docs/administration/about-organizations), your IdP will handle your authentication to your SSO-enabled organization. This means that if any of your users want to sign in to Contentstack via SSO, they will be redirected to your IdP. If users are not logged in to your IdP, they will be redirected to the IdP sign-in page, where they are required to authenticate themselves. However, if the users are already signed in to your IdP while signing into Contentstack via SSO, they will not be asked to log in again and will be redirected to the Contentstack dashboard or the requested page. ![how\_sso\_works\_with\_contentstack.jpeg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltba04e700e49b6bac/5d65138605de440b7b8429b8/how_sso_works_in_contenstack.jpeg) **Note:** If you've already logged into your SSO IdP, the trigger\_sso\_flow= query parameter automatically lets you log in to Contentstack via SSO, allowing you to skip the Contentstack login page. However, in order to access and manage content in Contentstack, users need to be assigned specific roles in their respective IdPs and these roles need to be mapped to Contentstack roles. The [IdP Role Mapping](/docs/administration/idp-role-mapping) section explains in detail how this works. --- ## URL: https://www.contentstack.com/docs/administration/idp-role-mapping --- title: "IdP Role Mapping" description: "IdP Role Mapping" url: "https://www.contentstack.com/docs/administration/idp-role-mapping" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: idp-role-mapping.md --- # IdP Role Mapping **IdP Role Mapping** allows you to assign [Contentstack roles](/docs/developers/invite-users-and-assign-roles/types-of-roles) to the users of a group/role in your IdP. Subsequently, users of such groups can directly log in to your SSO-enabled organization (without invitation) with the assigned permissions. This is an alternate way of managing users and permissions of your SSO-enabled organization (the other way being invitation-based users and roles management). To use this feature, you need to [map your IdP roles](/docs/developers/single-sign-on/set-up-sso-in-contentstack#advanced-settings) to Contentstack roles, while configuring SSO for your organization. **Note**: After enabling [IdP Role Mapping](/docs/faqs/#role-mapping) , in Contentstack, the role management for the users of your IdP is handled from your IdP instead of Contentstack. The following  points are important to note: Admins/Owners can remove the users from an organization with both SSO and IdP Role Mapping. This is done through IdP because if they are removed from the organization but not the IdP, they can still sign up. Two possible SSO scenarios: **If Organization has SSO enabled but IdP role mapping not enabled** \- Admin/Owner will be able to delete the user from the user list directly within Contentstack. **If Organization has both SSO and IdP role mapping enabled** \- The user cannot be removed from within Contentstack as the Role Management is done from the IdP. This is done to avoid any source of ambiguity and inconsistency in the user actions. Currently, IdP Role Mapping is supported only for [Okta](/docs/developers/single-sign-on/set-up-sso-with-okta), [OneLogin](/docs/developers/single-sign-on/set-up-sso-with-onelogin), and [Microsoft Azure AD](/docs/developers/single-sign-on/set-up-sso-with-microsoft-azure-ad). **Note**: Every newly created stack will have unassigned roles and requires a manual mapping in the SSO section. --- ## URL: https://www.contentstack.com/docs/administration/invite-users-to-organization --- title: "Invite Users to Organization" description: "Streamline collaboration in Contentstack by inviting users to your organization. Learn how to manage roles and access with our step-by-step guide." url: "https://www.contentstack.com/docs/administration/invite-users-to-organization" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: invite-users-to-organization.md --- # Invite Users to Organization Invite users to your Contentstack organization to enable seamless collaboration across your team. This page shows you how to invite users, assign their roles during the invitation, and handle invitations in SSO-enabled organizations. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to invite one or more users to your organization. * How to assign CMS and Administration roles during the invitation. * How invitations work in SSO-enabled organizations. ## Invite Users To invite users to an organization, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to your desired organization, click the “App Switcher” icon and select **Administration** from the list. 2. Navigate to **Users** and click **Invite User**.![Invite User button on the Users page](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amc1ac8505cb5f63e3/9b35abdd11858c77eb1638df/Invite_User_1.png?locale=en-us) 3. On the **Invite User** page, enter the email address of the users to invite. **Note**: The selected roles and permissions will apply to all the email IDs mentioned. To add users with different set of permissions, the ideal approach would be to add them separately. 4. In the **CMS** section, click **Manage Roles**. This opens a sidebar displaying existing stack-role assignments for the selected users. 1. Select the stacks to which you want to assign roles. 2. Choose one or more roles. 3. Click **Save** to confirm your selections. **Note:** If no CMS level roles are selected for the user(s), they will not be able to access any of the stacks. ![CMS Manage Roles sidebar with stack and role selections](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am0de390fd9d9b828c/9734554e27ae1c709acde3fe/Invite_User_2.png?locale=en-us) 5. In the **Administration** section, click **Manage Roles**. The sidebar displays available product roles. 1. Select the appropriate roles for the users. 2. Click **Save** to confirm. **Note:** To successfully send the invitation, you must assign at least one role from the Administration section. ![Administration section Manage Roles sidebar](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am8eca99b81985e75f/78abd1f064d2fd5f0798a51e/RBAC_Administration_Section.png?locale=en-us) 6. Once done, click **Invite** to send the invitation.![Invite button sending the invitation](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am1ab71403e15904cb/f1180568686f73458b4f4942/Invite_User_3.png?locale=en-us) The invited users will receive an email notification. After accepting the invitation, they will be added to the organization with the assigned roles and access. **Additional Resources:** Learn more about organization [roles](/docs/administration/about-administration-roles) in Contentstack. ## Invite Users to SSO-enabled Organizations For organizations with [Single Sign-On (SSO)](/docs/administration/about-single-sign-on-sso) enabled, the invitation process remains the same. However, if “[Strict Mode](/docs/administration/set-up-sso-in-contentstack)” is disabled, you see the **Allow Access without SSO** checkbox. Select this option to let the invited user access the SSO-enabled organization using their Contentstack credentials instead of IdP credentials. ## Related Resources * [Add users to Organization](/docs/developers/apis/administration-api/organizations#add-users-to-organization) * [Resend pending Organization invitation](/docs/developers/apis/administration-api/organizations#resend-pending-organization-invitation) * [Get all Organization invitations](/docs/developers/apis/administration-api/organizations#get-all-organization-invitations) --- ## URL: https://www.contentstack.com/docs/administration/limitations-for-teams --- title: "Limitations for Teams" description: "Discover the limitations of the teams feature and learn how to navigate these restrictions for optimal use." url: "https://www.contentstack.com/docs/administration/limitations-for-teams" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: limitations-for-teams.md --- # Limitations for Teams This page lists the limitations and constraints that apply to Teams in Contentstack. Review these before planning how to structure teams and assign roles across your organization. ## Capacity and Plan * Teams is a plan-based feature. Contact our [support](mailto:support@contentstack.com) team to activate it for your organization. * The maximum character length for a team name is **200**. * The maximum character length for a team description is **255**. * The maximum number of teams allowed per organization is **500**. ## Roles and Permissions * You must have the [Owner or Admin](/docs/administration/about-administration-roles) roles to create, edit, or delete a team. The Security Manager role can view teams but cannot manage them. * Each team must have at least one Administration role assigned. * Project-level custom roles, such as custom stack, space, or AgentOS project roles, must be created from the respective project or its per-product settings page before they can be assigned to a team. * A user who belongs to multiple teams inherits the combined roles of all those teams. Team membership can add access but cannot remove access granted elsewhere. * If a user is the owner of a stack, the owner permission takes precedence over any stack-level role assigned through a team. --- ## URL: https://www.contentstack.com/docs/administration/log-targets --- title: "Log Targets" description: "Export Contentstack system-generated audit, publish, and webhook logs to AWS S3, Azure Blob Storage, or Google Cloud Storage for monitoring and auditing." url: "https://www.contentstack.com/docs/administration/log-targets" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-15" filename: log-targets.md --- # Log Targets Log Targets in Contentstack let you export system-generated logs to your own cloud storage for monitoring, auditing, and analysis. This feature is designed for organizations that need better visibility, compliance tracking, or integration with external observability tools. With Log Targets, you can export the following log types: * **Audit logs**: Track administrative and user actions. * **Publish logs**: Monitor content publishing activities. * **Webhook logs**: Debug and analyze webhook executions. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions * A supported cloud storage account (AWS S3, Azure Blob Storage, or Google Cloud Storage) ## What You Will Learn * How to add a cloud storage destination. * How to create a schedule that exports a log type to a destination. * How to monitor export activity in the History tab. ## Overview The export process follows a simple two-step workflow: 1. Configure a destination (cloud storage). 2. Create a schedule (define what logs to export and where). **Note:** Once a schedule is created and enabled, it will run every hour from the time it was enabled. ## Destinations A destination is a cloud storage configuration where logs are exported. Contentstack currently supports: * **Amazon Web Services (AWS)** S3 * Microsoft Azure Blob Storage * Google Cloud Storage To add a destination, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to **Administration** through "App Switcher". 2. Click **Log Targets**. 3. In the **Destinations** tab, click **Add Cloud Destination**. 4. In the **Add Cloud Destination** sidebar, enter the following details: * **Configuration Name**: A unique name for the destination. * **Cloud Provider**: Select your provider (e.g., AWS S3). * **Region**: Specify the storage region. 5. Based on the cloud provider, enter the remaining configuration details. 6. Click **Test Connection** to validate the configuration. **Note:** If you skip this step, Contentstack automatically validates the connection when you click **Create Configuration**. The configuration is saved only if the test connection succeeds. ![Add Cloud Destination sidebar](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am8ca8123bdef871d2/bbf9154143d3a108d2d3ca77/Log_Target_1.png?locale=en-us) 7. Click **Create Configuration**. If you select **AWS S3**, provide the following details: 1. **Bucket Name**: Enter your S3 bucket name. 2. **Authentication Method**: Default available option, **Access Keys (Access Key ID + Secret)**. 3. **Access Key ID**: Enter your AWS access key. 4. **Secret Access Key**: Enter your AWS secret key. If you select **Azure Blob Storage**, provide the following details: 1. **Container Name**: Enter your Azure container name. 2. From the **Authentication Method** dropdown, select one of the following: * **Account Key**: Use this method when you want to authenticate using your storage account key. * **Storage Account**: Enter your Azure storage account name. * **Account Key**: Enter the storage account key. * **SAS Token (Shared Access Signature)**: Use this method to grant limited, time-bound access to your storage resources. * **Storage Account**: Enter your Azure storage account name. * **SAS Token**: Enter the generated SAS token. * **Entra ID (Client Credentials)**: Use this method for secure, role-based authentication via Microsoft Entra ID (formerly Azure Active Directory). * **Storage Account**: Enter your Azure storage account name. * **Tenant ID**: Enter your Azure tenant ID. * **Client ID**: Enter the application (client) ID. * **Client Secret**: Enter the client secret. If you select **Google Cloud Storage**, provide the following details: 1. **Bucket Name**: Enter your GCP bucket name. 2. **Authentication Method**: Default available option, **Service Account Key (JSON)**. 3. **Project ID**: Enter your GCP project ID. 4. **Service Account Key (JSON)**: Paste the service account key JSON. **Note:** To obtain credentials such as access keys or IAM role details, refer to your cloud provider's documentation. It is recommended to link to official provider guides (AWS, Azure, GCP) for the most up-to-date steps. ## Schedules A schedule defines what logs to export, where to export them, and how they are organized in your storage. You can create schedules for: * Audit logs * Publish logs * Webhook logs To create a schedule: 1. Go to **Log Targets** and open the **Schedules** tab. 2. Click **Create Schedule**. 3. In the **Create Schedule** modal, configure the following: * **Cloud Configuration**: Select a configured destination. * **Data Type**: Choose the log type (Audit, Published, or Webhook). * **Base Path**: Specify a folder path within the bucket. 4. Enable or disable **Activate Schedule**: * **Enabled**: Logs will be exported every hour. * **Disabled**: Schedule will be created but logs will not be exported unless schedule is enabled. ![Create Schedule modal](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am1c682c57c8c72d16/96f6c2ab1c7edf2ffb380872/Log_Target_2.png?locale=en-us) 5. Click **Create Schedule**. **Note:** The schedule starts running approximately one hour after creation and continues at regular intervals. Logs are exported within the configured bucket. Each schedule writes logs to a specific base path (folder). Different log types can use different paths within the same bucket. Example structure: ``` contentstack-logs/ ├── contentstack-audit-logs/ ├── contentstack-published-logs/ └── contentstack-webhook-logs/ ``` **Note:** The current implementation includes the following limitations: * You can create only **one schedule per export type** (Audit, Published, Webhook). * You cannot export the same log type to multiple destinations. * The maximum number of schedules is effectively limited to **three** (one per log type). * Exports run automatically at a fixed interval (currently hourly). ## History The **History** tab provides visibility into all log export activities. Use this tab to monitor execution status and troubleshoot issues. ![Log export History tab](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amb79c1b4247692ed9/1f6dbf9434eeeefaf5ec5185/Log_Target_3.png?locale=en-us) Each record in the **History** tab includes: * **Export Type**: Type of log exported. * **Status**: Success, failed, or in progress. * **Scheduled At**: When the export was triggered. * **Records**: Number of logs processed. * **Window Start / End**: Time range of logs exported. * **Started / Completed**: Execution timestamps. * **Duration**: Time taken for the export. * **Error**: Error details (if any). **Note:** * Ensure your cloud storage permissions allow write access from Contentstack. * Organize logs using meaningful base paths for easier retrieval. * Regularly monitor the **History** tab to ensure exports run successfully. This feature helps you extend Contentstack's logging capabilities beyond the platform by integrating with your existing cloud and observability ecosystem. --- ## URL: https://www.contentstack.com/docs/administration/login-endpoints --- title: "Login Endpoints" description: "This guide covers the login endpoints for different Contentstack regions." url: "https://www.contentstack.com/docs/administration/login-endpoints" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: login-endpoints.md --- # Login Endpoints Each Contentstack region has its own login URL. Use the login endpoint that matches your organization's region: * AWS North America: **https://app.contentstack.com/#!/login** * AWS Europe: **https://eu-app.contentstack.com/#!/login** * AWS Australia: **https://au-app.contentstack.com/#!/login** * Azure North America: **https://azure-na-app.contentstack.com/#!/login** * Azure Europe: **https://azure-eu-app.contentstack.com/#!/login** * GCP North America: **https://gcp-na-app.contentstack.com/#!/login** * GCP Europe: **https://gcp-eu-app.contentstack.com/#!/login** --- ## URL: https://www.contentstack.com/docs/administration/manage-preferences --- title: "Manage Preferences" description: "Configure your timezone and language preferences to control how timestamps and content appear across Contentstack." url: "https://www.contentstack.com/docs/administration/manage-preferences" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: manage-preferences.md --- # Manage Preferences **Note:** Managing timezone and language preferences is a plan-based feature and may not be available to all users. Contact the Contentstack [support](mailto:support@contentstack.com) team for more details. You can configure your timezone and default language from the **Preferences** section in your profile settings. These settings apply at the user level and affect only how content and timestamps are displayed for your account. They do not impact other users or stack-level configurations. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to set a default timezone for your account. * How to set a default content language. * How to override the default language for specific stacks. ## Set your Timezone and Language Preferences To set a default timezone or language preference, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the following steps: 1. Click your profile initials. 2. Select **Profile Settings**. 3. Click **Preferences**. 4. In the **Time Zone** section, select your preferred timezone from the dropdown, and click **Save**. **Note:** The selected timezone determines how timestamps are displayed across the platform. Click **Reset** to revert to the organization’s default timezone. 5. In the **Set Language** section, select a default content language, and click **Save**. **Note:** The selected language is used across stacks by default. You can override this setting for specific stacks using **Add Stack-specific Language**. Click **Reset** to revert to the default configuration. ![Setting timezone and language preferences](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt443c38377c3f21f5/69c6a1186e737f7f93cdfd8b/Managing_timezone_and_language_preferences.gif) After configuring your timezone and language preferences, your Contentstack experience reflects your regional and language settings across the platform. You can update these preferences at any time or customize them further for specific stacks as needed. --- ## URL: https://www.contentstack.com/docs/administration/mask-asset-domains --- title: "Mask Asset Domains" description: "Mask Asset Domains" url: "https://www.contentstack.com/docs/administration/mask-asset-domains" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: mask-asset-domains.md --- # Mask Asset Domains Images or assets served using Contentstack contain “contentstack.io” in the URL (i.e., https://images.contentstack.io/v3/assets/blt8b...). Many of our customers prefer using their own domain instead by masking the Contentstack’s URL. 'Masking' is the process in which the end-user gets an impression as if the content is being delivered directly from the client instead of Contentstack. For masking, you can set up a proxy. However, it is recommended not to set up a proxy, as it not only increases the overall infrastructure overheads but also slows down the performance of content delivery. Therefore, we strongly recommend using a [CDN](/docs/headless-cms/what-is-cdn-and-how-it-works) service such as Fastly or Cloudfare to deliver content to the end-user quickly and efficiently. **Note**: Images here refer to the usual images that we use in our content, or something that has as extension .png, .jpg, .jpeg, and so on. Assets refer to anything that is not images, for example, PDFs. ## What You Will Learn * How asset domain masking works with a CDN. * How to set up a proxy domain with Cloudflare. * How to set up a proxy domain with Fastly for both images and assets. * How to point a static subdomain to Fastly and update your asset URLs. ## How Does Masking Work When the client's end-user sends some requests to fetch assets or images, the request is not sent to Contentstack directly. Instead, the static domain that is set up on the client side, using Fastly or Cloudfare, routes the request to the Contentstack CDN endpoints (images.contentstack.io and assets.contentstack.io) to deliver the content. This routing happens at the backend (discussed below) and the end-user gets an impression as if the content is delivered through the client and not directly from Contentstack. ## Setting up the Proxy Domain for Cloudfare To mask asset domains via Cloudfare, refer to their official [documentation](https://developers.cloudflare.com/workers/runtime-apis/request) for more information. ## Setting up the Proxy Domain for Fastly To create a proxy (images.contentstack.io and assets.contentstack.io) with a custom domain using Fastly, follow the below steps: 1. If you already have a [Fastly](https://www.fastly.com/) account, log into it. Else, follow the steps given [here](https://www.fastly.com/signup/) to create one. 2. Once you log into your account, click the **Create service** drop-down and select **CDN** as shown below:![Fastly Create service drop-down with CDN option](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0ca3d47d1a1246e5/672c78b4e5efba33f7e062fd/image12.png) 3. On the **Create a CDN service** page, enter the details for your CDN service in the following fields: 1. **Service name**: Enter a suitable name for your service. You can add your domain name as your service name if you want to (recommended). 2. **Add your own domain**: Enter your domain name inside the **Domain** field, for example, static..com. 3. **Add an origin**: Add an origin inside the **Host** field. In our case, it will be _**images.contenstack.io**_. 4. **Recommended Settings**: Inside the **Recommended Settings** section, keep all the provided options enabled as shown below: ![Fastly Recommended Settings section enabled](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf5f61044fba52017/672c7882aecb492bc52a5936/image15.png) 4. Once you have entered the details, click **Activate**. 5. You'll be navigated to the Service configuration page (on the **Domains** section) as shown below: ![Fastly Service configuration Domains section](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfa61a98951855498/672c788253e3c46518b3a517/image14.png) 6. You can view the domain name that you have set up on this screen, and to view the hosts, click **Hosts**, inside **Origins**, on the left navigation panel. ![Hosts under Origins in Fastly navigation](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt26aaccd429718ed3/672c78a64f4fa358feb7987c/image3.png) 7. We will now add additional settings by editing the configuration. So, click the **Edit configuration** drop-down as shown below: ![Fastly Edit configuration drop-down](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf7673fc05c4c3731/672c7883188be3bfdcf06005/image16.gif) 8. On the screen that appears, click on **Hosts** inside **Origins** to edit it, and click the edit icon: ![Edit icon for a host under Origins](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd71f8ef5813bab8c/672c78a7188be35eddf06009/image9.png) 9. On the **Edit this host** page, enter _**images\_contentstack\_io**_ in the **Name** field. Ensure the **Address** field has _**images.contentstack.io**_ as the value. Scroll down to the **Override host** field, and ensure it says _**images.contentstack.io**_. Leave all other fields to their default value and click **Update**. ![Edit this host fields for images.contentstack.io](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt103750c506c86c96/672c7883adf8c5790cfbe0d7/image13.gif) 10. Now, we will attach a condition in the origin of images.contentstack.io by editing the host again. To do this, click the edit icon and then the **attach a condition** link as shown below: ![Attach a condition link on the images host](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfa91358e2656b35f/672c78a6170171f5bceffe7e/image5.png) 11. On the **Create a new request condition** modal, enter the name (for example, images) and the following condition in the respective fields. ``` req.url ~ "\. (exr|apng|bmp|cgm|drle|emf|fits|g3|gif|heic|he ics|heif|heifs|ief|jls|jp2|jpg2||jpeg|jpg|jpe| jpm|jpx|jpf|ktx|png|sgi|svg|svgz|t38|tif|tiff| tfx|webp|wmf|pti|psd|azv|uvi|uvvi|uvg|uvvg|djv u|djv|\*sub|dwg|dxf|fbs|fpx|fst|mmr|rlc|ico|mdi|wdp|npx|tap|vtf|wbmp|xif|pcx|3ds|ras|cmx|fh| fhc|fh4|fh5|fh7|\*ico|jng|sid|\*bmp|\*pcx|pic| pct|pnm|pbm|pgm|ppm|rgb|tga|xbm|xpm|xwd)$" ``` This basically implies that anything that has an extension like png, bmp, svg, and so on, consider it as an image and apply the condition accordingly. 12. Then, click the **Save and apply to images\_contenstack\_io** button as shown below: ![Save and apply the images request condition](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt76c1f1ad2a02518f/672c78b553e3c42343b3a51b/image10.gif) 13. Then, go to the bottom of the page and click **Update** for the settings to take effect. 14. We will now create another host for assets in our service. So, click the **\+ Create a host** button as shown below: ![Create a host button in Fastly](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc9d569be3ccbb582/672c78a64f4fa35155b79880/image6.png) 15. Then, enter _**assets.contentstack.io**_ and click **Add** as shown below: ![Add assets.contentstack.io host](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6cda896ae49ba0f9/672c78a6c09b5deaf0c4b38c/image7.png) 16. The new host gets added. We will now edit this host similar to what we did for the previous host (images.contentstack.io). So, click the edit icon of this newly created host: ![Edit icon for the new assets host](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt347c9814dd28610c/672c78a64b9fed2b482c14e6/image4.png) 17. On the **Edit this host** page, enter the name (**assets\_contentstack\_io**) in the **Name** field. Ensure the **Address** field has the value _**assets.contentstack.io**_. Scroll down to the **Override host** field at the bottom and enter **assets.contentstack.io**. Keep all other settings as is and click **Update**. ![Edit this host fields for assets.contentstack.io](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfcd1a1b338d91e19/672c78a6dec4ef3fd27cd430/image2.png) 18. Now, we will attach a condition in the origin of assets.contentstack.io by editing the host again. To do this, click the **Attach a condition** link on the host pages when it gets updated. ![Attach a condition link on the assets host](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt222c4da778eb4502/672c788288bc785e42597db7/image18.png) Alternatively, you can click the edit icon, and then click the **Attach a condition** link. 19. On the modal that opens, create a new condition by clicking the **Create a new request condition** button. ![Create a new request condition button](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta142a688a629825a/672c78824b9fed252f2c14e2/image17.png) 20. On the **Create a new request condition** modal, enter the name (for example, NOT images) and the following condition in the respective fields. ``` req.url !~ "\. (exr|apng|bmp|cgm|drle|emf|fits|g3|gif|heic|he ics|heif|heifs|ief|jls|jp2|jpg2||jpeg|jpg|jpe| jpm|jpx|jpf|ktx|png|sgi|svg|svgz|t38|tif|tiff| tfx|webp|wmf|pti|psd|azv|uvi|uvvi|uvg|uvvg|djv u|djv|\*sub|dwg|dxf|fbs|fpx|fst|mmr|rlc|ico|md i|wdp|npx|tap|vtf|wbmp|xif|pcx|3ds|ras|cmx|fh| fhc|fh4|fh5|fh7|\*ico|jng|sid|\*bmp|\*pcx|pic| pct|pnm|pbm|pgm|ppm|rgb|tga|xbm|xpm|xwd)$" ``` 21. Then, click the **Save and apply to assets\_contenstack\_io** button, as shown below, and then the **Update** button for changes to take effect: ![Save and apply the assets request condition](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt216faecae8391c60/672c78837ca8e82fda486f64/image1.png) 22. Then, at the top of the **Hosts** page, click **Activate**. ![Activate button on the Hosts page](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta014f2bc730f75f4/672c78b41d8baba9eae83d25/image11.png) You will get a message that the service has been activated and locked. ![Service activated and locked message](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2be194592d4bb513/672c78a7e5b8c53524a8208a/image8.png) 23. If you already have a static subdomain for your images and assets, then make a DNS entry, pointing it to k.sni.fastly.net. For example: ``` static..com → k.sni.fastly.net ``` Pointing your static subdomain to Fastly will help you mask images and assets from Contentstack to your domain based on the settings that we have done in Fastly. **Note**: If you do not have a subdomain, then there could be different ways of routing the traffic depending on the requirement. For this, contact our [support](mailto:support@contentstack.com) team. 24. Lastly, update your images/assets URL in your application with your own domain URL. For example: Update ``` https://images.contentstack.io/v3/assets/blt2xxxyyyzzze34/blt7xxxyyyzzb4b/65a71577/istockphoto-1295274245-612x612.jpg ``` to ``` https://static..com/v3/assets/blt2xxxyyyzzze34/blt7xxxyyyzzb4b/65a71577/istockphoto-1295274245-612x612.jpg ``` --- ## URL: https://www.contentstack.com/docs/administration/monitor-organization-activities-in-audit-log --- title: "Monitor Organization Activities in Audit Log" description: "Track and monitor organization-wide activities with Audit Log. Easily view event details and apply filters for comprehensive insight." url: "https://www.contentstack.com/docs/administration/monitor-organization-activities-in-audit-log" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-15" filename: monitor-organization-activities-in-audit-log.md --- # Monitor Organization Activities in Audit Log Audit Log tracks and displays activities (events) performed across the Contentstack platform within a specific organization. Use it to review who performed an action, when it happened, and from where, across all projects in your organization. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to view the Audit Log for an organization. * What details each audit log entry shows. * How to filter the Audit Log. * How to export the Audit Log. ## View Audit Log To view the Audit Log, log in to your [Contentstack account](https://www.contentstack.com/login), and perform the following steps: 1. Select the Organization from the dropdown on the header and click the “Org Admin” icon in the left navigation panel. Or, you can simply click the “Org Admin” cog beside the Organization that you intend to open. 2. Click the **Audit Log** tab on the left panel. When an event occurs, the Audit Log displays the following details: * **Date and Time**: Specifies the date and time when the event occurred * **User**: Specifies the name of the user who performed the event * **Event**: Specifies the type of action performed * **Application**: Specifies the application in which the event occurred * **Remote Address**: Specifies the IP address of the node from which an event has occurred ![Organization Audit Log screen](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt665b48eb08490eb4/66aa3796c56a1004333c202d/Org_Audit_Log.png) This view lets you monitor all activities occurring across all projects within your organization. **Note**: Click the “Refresh” icon to update the log. ## Filter Audit Log By default, the Audit Log displays information in reverse chronological order i.e., the latest event appears on the top. To refine your results and view specific information, you can apply filters. In columns where applicable, simply click the “Filter” icon next to the column title and apply the necessary filters. The date filter enables quick access to audit log information from the last 30 days, last 7 days, the previous day, or the current day. Additionally, the ”Custom Range” option permits setting a specific date range within the last 30 days. **Note**: You can retrieve audit log information only for 30 days prior to the current day (for an organization). The **All Apps** dropdown lets you filter logs by specific applications, such as Webhooks, Marketplace, Automate, Content Management, or Authentication. This helps you focus on relevant activity. ## Export Audit Log To export the audit log, click the “Export” icon at the top right corner of the Audit Log page. The logs will be downloaded in .csv format. **Note**: You can export up to **5000** logs at once. Apply filters to reduce the number of entries before exporting. ## Related Resource * [Content Management API: Audit Log](/docs/developers/apis/content-management-api/#audit-log) --- ## URL: https://www.contentstack.com/docs/administration/multi-factor-authentication --- title: "Multi-Factor Authentication" description: "Secure your Contentstack account with Multi-Factor Authentication. Enable MFA for enhanced protection and prevent unauthorized access." url: "https://www.contentstack.com/docs/administration/multi-factor-authentication" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: multi-factor-authentication.md --- # Multi-Factor Authentication **Multi-Factor Authentication** (**MFA**) is an essential security measure that adds an extra layer of protection to your Contentstack account. By requiring a second form of verification, typically a **Time-based One-Time Password** (**TOTP**) generated by an authenticator app, MFA reduces the risk of unauthorized access, even if your password is compromised. We strongly recommend enabling MFA to safeguard your Contentstack account and its associated resources. **Note:** Once MFA is enabled for a user, it cannot be disabled. Additionally, if your organization’s admin or owner enforces MFA, all users get prompted to set it up during their next login. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * An authenticator app (for example, Google Authenticator, Authy, 1Password, or Microsoft Authenticator) ## What You Will Learn * How to enable MFA on your account with an authenticator app. * How to generate and store backup codes. * How to reset MFA when you switch to a new device or app. ## Enable MFA To enable MFA, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the following steps: 1. Click the avatar icon in the top-right corner of the dashboard and select **Profile Settings** from the dropdown.![Profile Settings menu](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta33558f37ce9b604/6971dfc560a98a6fb22de5cb/EnableMFA_1.png) 2. Click the **Security** tab in the left navigation panel.![Security tab in profile settings](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltde540e5017de7611/6971df6509e62c51e878b046/EnableMFA_2.png) 3. Under **Multi-Factor Authentication**, click **Add**/**Enable**.![Enable MFA confirmation modal](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt43bd1483ff02d554/6971e070da4f60300f158e7f/EnableMFA_3.png) 4. A confirmation modal appears stating that enabling MFA signs you out of all other active sessions to help secure your account. You remain signed in to the current session. Click **Continue** to proceed.![Enable MFA confirmation modal](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6c854de6a875419a/6971df6409e62c51bd78b042/EnableMFA_4.png) 5. A modal window appears with a QR code. 1. Open an authenticator app (e.g., Google Authenticator, Authy, 1Password, Microsoft Authenticator, or any authenticator app). 2. Scan the QR code or manually enter the code displayed under it. 3. Click **Next**. ![QR code for authenticator app](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf3e5dae99e76d60f/6971df648a7b281802f0cfa4/EnableMFA_5.png) 6. Enter the 6-digit verification code generated on your authenticator app and click **Verify** to complete the setup.![Verification code entry](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8356a571cf13da43/6971df6510f0fc208c96c44d/EnableMFA_6.png) 7. After MFA is enabled, a prompt appears to generate backup codes. * Click **Generate Backup Codes** (recommended). * To postpone this action, click **Skip for Now** to do it later. ![Generate backup codes prompt](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt006e8745e6bf5c60/6971df642f944b1286acd73f/EnableMFA_7.png) 8. Choose one of the following options: * Click **Copy codes** to copy the codes. * Click **Download as .txt file** to save them locally. ![Backup codes copy or download options](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt47ebb29456d89b55/6971df6598c53e483373014b/EnableMFA_8.png) 9. Click **Done** after copying or downloading your backup codes. **Warning:** * Store your backup codes in a secure location. Without them, you may not be able to access your account if your authenticator app is unavailable. * Each backup code can be used only once. Once you have successfully entered a code to log in, it becomes immediately invalid. ## Reset MFA To reset your authentication method (e.g., switching to a new device or app): 1. Go to your **Profile Settings** | **Security** tab and click **Reset MFA** under **Multi-Factor Authentication**. 2. A confirmation modal appears stating that enabling MFA signs you out of all other active sessions to help secure your account. You remain signed in to the current session. Click **Continue** to proceed.![Reset MFA confirmation modal](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt67588d7a6221bbe2/6971df6b09e62cd7a278b04a/ResetMFA_1.png) 3. Enter your current password when prompted and click **Continue**.![Password prompt for MFA reset](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb883493af5f022f6/6971df6b50018b2de6634ebe/ResetMFA_2.png) 4. A new QR code gets generated. Scan it using your new authenticator app or manually enter the secret key, and click **Next**.![New QR code for MFA reset](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3c77f287cefd1a5f/6971df6b6b2a10e0147a523c/ResetMFA_3.png) 5. Enter the latest 6-digit code from your app and click **Verify** to finalize the update.![Verification code entry for MFA reset](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt87a0be70f87f214c/6971df6be0f8ef579c05e7f5/ResetMFA_4.png) 6. After MFA is enabled, a prompt appears to generate backup codes. * Click **Generate Backup Codes** (recommended). * To postpone this action, click **Skip for Now** to do it later. ![Generate backup codes prompt after reset](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0620f0973d37ed03/6971df6bc956ad6e565356b6/ResetMFA_5.png) 7. Choose one of the following options: * Click **Copy codes** to copy the codes. * Click **Download as .txt file** to save them locally. ![Backup codes copy or download options after reset](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt308339c7ed7aaab8/6971df6cbe59f0f3b7d6f14c/ResetMFA_6.png) 8. Click **Done** after copying or downloading your backup codes. **Note:** If you lose access to both your authenticator app and backup codes while logging in to Contentstack, reach out to our [support](mailto:support@contentstack.com) team. Once enabled, MFA adds an essential security layer to your account, ensuring that access requires both your password and a time-sensitive code from your authenticator app. --- ## URL: https://www.contentstack.com/docs/administration/organization-bulk-task-queue --- title: "Organization Bulk Task Queue" description: "Efficiently manage bulk operations in Contentstack with the Bulk Task Queue. Track, filter, and oversee tasks seamlessly for optimal content management." url: "https://www.contentstack.com/docs/administration/organization-bulk-task-queue" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-15" filename: organization-bulk-task-queue.md --- # Organization Bulk Task Queue The **Bulk Task Queue** section displays the queue of bulk operations that the users of your organization perform. Examples of such operations include: * Large [bulk operations](/docs/headless-cms/bulk-publish-entries) such as publish, unpublish, or delete on [entries](/docs/headless-cms/about-entries) or [assets](/docs/headless-cms/about-assets) * [Non-localizable](/docs/headless-cms/non-localizable-field) field updates in a [content type](/docs/headless-cms/about-content-types) with a large number of [localized](/docs/headless-cms/localize-an-entry) entries * [Release deployment](/docs/headless-cms/deploy-a-release) (publish or unpublish) with a large set of entries and assets This section acts as a queuing system for each organization, which processes complex bulk operations as and when resources permit. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to access the Bulk Task Queue for your organization. * What each task status means. * How to filter tasks in the queue. ## Access the Bulk Task Queue To access the bulk task queue for your organization, log in to your [Contentstack account](https://www.contentstack.com/login), and perform the following steps: 1. Select the Organization from the dropdown on the header, and click on the “Org Admin” icon on the left navigation panel. 2. Click on the **Bulk Task Queue** tab to access the section.![Bulk Task Queue tab in Org Admin settings](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9d6681c77abb3cd6/66aa2111c10344e38d068467/Organization_Bulk_Task_Queue_1.png) You will be able to see two tabs: **Ongoing** (for tasks in queue) and **Completed** (for completed tasks). Under the **Ongoing**/**Completed** tabs, you will find the following information related to the tasks in queue: * **Time**: The date and time on which the task was first performed * **Job ID**: The job ID of the action performed * **Task Details**: Type of action performed by the user * **Stack Name**: Name of the stack on which the bulk operation was performed * **By User**: Name of the user who initiated the bulk operation * **Task Status**: The current status of the task ## Task Status A bulk operation can be present in the following specific states when sent to the queuing system of any organization for processing. * **Waiting**: The **Waiting** state indicates that the bulk operation has just been sent to the queue and Contentstack has not yet started working on it * **In Queue**: The **In Queue** state indicates that the bulk operation has entered the job processing queue. Contentstack will take up such an operation as soon as other operations in the queue have been processed * **In Progress**: The **In Progress** state indicates that the bulk operation is being processed by Contentstack * **Partially Completed**: The **Partially Completed** state indicates that the bulk operation has been completed from the CDA side and some operations are still to be completed from the CMA side * **Failed**: The **Failed** state indicates that the bulk actions has failed * **Completed**: The **Completed** state indicates that the bulk action is completely processed Operations that have been completely processed are automatically moved to the **Completed** tab. ## Filter Bulk Task Queue You can apply filters to refine the tasks present in the queuing system and display only the required information. The **Filters** section, located on the left, displays the list of available filters, which includes the following: * **Actions**: The **Actions** filter allows you to filter the tasks present in the queue according to the type of bulk operation being performed. You can select one or more of the following available filters: * **Bulk Action Type**: This option allows you to view only the tasks related to large bulk operations performed on entries or assets. * **Content Type Update**: This option allows you to view only the tasks related to non-localizable field updates made in a content type. * **Releases**: This option allows you to view only the tasks related to complex release deployments. * **Branches**: It will show the create/delete actions performed on branches within a stack. * **Stacks**: This filter allows you to view only the tasks related to a specific stack in the organization. * **Users**: This filter allows you to view only the tasks performed by a specific user of the organization. Check the filter options that you want to apply. ![Filters panel for the Bulk Task Queue](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte32b742816df870f/66aa255ab3480ccea514bfdf/Organization_Bulk_Task_Queue_2.png) Click **Reset filters** to clear all the applied filters. --- ## URL: https://www.contentstack.com/docs/administration/organization-information --- title: "Organization Information (Security Dashboard)" description: "Explore Contentstack's Org Info & Security Dashboard for detailed organization insights, security posture, activity tracking, compliance metrics, and best practices." url: "https://www.contentstack.com/docs/administration/organization-information" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-14" filename: organization-information.md --- # Organization Information (Security Dashboard) The Org Info section provides a centralized view of your organization's details and security posture in Contentstack. Depending on your role, this page displays different levels of information: * Member roles see basic organization details such as name and ID. * Admin, Owner, Security Manager, and custom roles with relevant permissions can see the Security Dashboard, which includes advanced security insights, activity tracking, and recommendations ## Access Org Info To access the Org Info (Security Dashboard) page, log in to your [Contentstack account](https://www.contentstack.com/login), and perform the following steps: 1. Navigate to **Administration** through “App Switcher”. 2. By default, the **Org Info** tab is selected. ## Basic Organization Info If you have member-level permissions, the **Org Info** section displays: * Organization name * Organization ID * Option to leave organization ![Basic Organization Info view](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am44cd48032241f83a/9f55473e8ba285cb50e3f3f2/Security_Dashboard_1.png?locale=en-us) ## Security Dashboard If you have elevated permissions (**Admin**, **Owner**, **Security Manager**, or custom roles), the **Security Dashboard** replaces the basic **Organization Info** view. ![Security Dashboard overview](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am9e805d5397e011c3/3fe75f8a6893ba0329e163d4/Security_Dashboard.png?locale=en-us) This dashboard helps you monitor security risks, user activity, and compliance metrics in one place. ## Key Sections of the Security Dashboard The Security Dashboard presents a consolidated view of key security controls, risks, and organization activity to help you monitor and improve your security posture. The following sections help you monitor trends, identify risks, and take corrective actions. ### Current Trends The **Current Trends** section provides a high-level snapshot of key organization metrics. It helps you quickly assess changes in user activity and identify potential risks. ![Current Trends metrics](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/ambe2a758424686651/e582cfe604dfd5fd0a895693/Security_Dashboard_2.png?locale=en-us) This section includes: * Total Users * Pending Invitations * Users Without MFA (Multi-Factor Authentication) * Inactive Users (users who have not logged in for more than 90 days) * Locked/Suspended Users Use these metrics to identify gaps, such as users without MFA or an increasing number of inactive accounts. ### Security Scorecard The **Security Scorecard** summarizes your organization's overall security posture using a numerical score. ![Security Scorecard](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am44f285f2fa1117d3/3632b7d8c1860ab7b8f5f26b/Security_Dashboard_3.png?locale=en-us) It categorizes your security level as follows: * **0 to 40 (Critical)**: Immediate action required * **41 to 70 (At risk**): Improvements recommended * **71 to 100 (Secure)**: Strong security posture This score helps you understand where your organization stands and what actions you can take to improve security. #### How Security Scorecard Works The security score is calculated using a weighted scoring model. Each security control is assigned a weight based on its importance. * Each security control has a defined weight * Your score improves as controls are enabled or configured correctly. * Issues are prioritized by impact level (for example, Critical, High) to guide what to fix first. Different security controls are included in your Security Score based on your organization's authentication setup (Password-based authentication, SSO, or Strict SSO-only). This ensures your Security Score reflects only the controls relevant to your organization's security configuration. **Tip**: Focus on resolving Critical and High-impact recommendations first to quickly improve your security score. ### Organization Info The **Organization Info** section provides quick access to essential organization details alongside security insights. ![Organization Info section](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am9c5a1b611626d7e4/a5abd56b24a41ada76cbf95f/Security_Dashboard_4.png?locale=en-us) In this section, you can view: * Organization name * Organization UID * Leave organization or transfer ownership (visible only to the organization owner) **Note:** **Organization Name** and **Organization UID** are system-generated and cannot be modified. Contact [support](mailto:support@contentstack.com) if updates are required. This ensures that critical organization details remain accessible without leaving the dashboard. The **Transfer Ownership** option lets you assign ownership to another user: 1. Click **Transfer Ownership**. 2. Enter the email address of the target user. 3. Send the ownership invitation. Once the user accepts the request: * They become the Organization Owner. * Your role changes to Member. **Warning:** After ownership transfer, you lose elevated access and retain only member-level permissions. ### Role Distribution The **Role Distribution** section visualizes how roles are assigned across your organization ![Role Distribution chart](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amff5ec5fda63de92a/c151464e8598959ed9cab878/Security_Dashboard_6.png?locale=en-us) This helps you understand how access is distributed and whether privileged roles are over-assigned. Monitoring this section supports better role-based access control and reduces security risks. ### Password Compliance The **Password Compliance** section shows how recently users have updated their passwords. ![Password Compliance breakdown](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amab1596fe478373e5/df1cfe745d4ea38bea2ff40f/Security_Dashboard_5.png?locale=en-us) It groups users into categories such as: * Less than 30 days * 30 to 60 days * 60 to 90 days * 90 to 180 days * More than 180 days This helps you identify users with outdated passwords and enforce password policies effectively. ### User Session Insights The **User Session Insights** section tracks how long users remain logged in. ![User Session Insights](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am3a2d84bb61ad14fa/4e43608457b07a354170ab86/Security_Dashboard_8.png?locale=en-us) It includes: * Total Active Sessions * Active Sessions (60+ Days) Active sessions for more than 60+ days may pose security risks, especially if sessions are not actively monitored or revoked. ### Recent Activity The **Recent Activity** section displays the most recent security-related events within your organization. It provides visibility into important actions and changes, helping you audit activity and detect anomalies. ![Recent Activity events](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am1b9e96f8adb8b58e/92bd34d711b185e26201df20/Security_Dashboard_7.png?locale=en-us) Below are some of the key events displayed: **Event** **What it means** **Severity** Account Unlocked A locked account was restored Warning User Invited A new user was invited Info User Removed A user was removed Warning Role Updated User permissions changed Info Forced Password Reset Admin enforced password reset Warning MFA Reset MFA settings were reset Warning Team Created New team created Info Team Updated Team details modified Info Security Configuration Changed Security settings updated Critical This section helps you audit activity and detect potential security issues. ## Best Practices Security recommendations and best practices shown in the dashboard are designed to improve overall security hygiene by guiding administrators toward commonly accepted configurations and controls: * Enable MFA for all users. * Review inactive users regularly. * Monitor long-lived sessions. * Limit admin and owner roles. * Act on critical security alerts immediately. The Security Dashboard continuously updates based on organization activity and configuration changes, ensuring that security insights and metrics reflect the most recent state of your organization. --- ## URL: https://www.contentstack.com/docs/administration/organization-limitations --- title: "Organization Limitations" description: "Organization Limitations" url: "https://www.contentstack.com/docs/administration/organization-limitations" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-15" filename: organization-limitations.md --- # Organization Limitations This page lists the current limitations that apply to organizations in Contentstack. * Using GET API call, you can retrieve a maximum of **100** organizations. --- ## URL: https://www.contentstack.com/docs/administration/organization-settings-overview --- title: "Organization Settings Overview" description: "Explore the Organization Settings in Contentstack to manage users, analytics, and stacks efficiently. Perfect for Owners and Admins." url: "https://www.contentstack.com/docs/administration/organization-settings-overview" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-14" filename: organization-settings-overview.md --- # Organization Settings Overview The Organization Settings page provides the details and settings related to your [Organization](/docs/administration/about-organizations). From here, organization [Owner and Admin](/docs/administration/about-administration-roles) can manage organization information, analytics, users, and stacks. ## Access Organization Settings To access the organization Settings section, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Click the "Profile" icon in the top-right corner, then select your org from **Switch Organization**. 2. Navigate to **Administration** from the "App Switcher". 3. Select **Plan Settings** and manage the organization's settings. ## Sections available in Organization Settings In this section, Organization Owners and Admins can access the following: * [Organization Information](/docs/administration/organization-information) * [Product Analytics](/docs/analytics/about-analytics) * [Organization Users](/docs/administration/organization-users) * [Organization Stacks](/docs/administration/organization-stacks) --- ## URL: https://www.contentstack.com/docs/administration/organization-stacks --- title: "Organization Stacks" description: "Learn how to manage and delete stacks in Contentstack. Discover detailed steps for organization administrators and stack owners." url: "https://www.contentstack.com/docs/administration/organization-stacks" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-15" filename: organization-stacks.md --- # Organization Stacks The **Stacks** tab of the [Organization Settings](/docs/administration/organization-settings-overview) page lists every stack created under the organization. From this page, you can view stack details and delete a stack. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login) * [Organization Owner](/docs/administration/about-administration-roles) or [Stack Owner](/docs/headless-cms/types-of-roles) permissions ## What You Will Learn * How to view the list of stacks in an organization. * How to delete a stack as an Organization Owner. * How to delete a stack as a Stack creator/owner. ## View Stacks in Organization To access the Stacks settings page, Log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Select the Organization from the dropdown on the header, and click on the “Org Admin” icon on the left navigation panel. 2. Click on the **Stacks** tab. Here, you will find the following basic information related to the stacks: * **Name**: Name of the stack * **Owner**: Displays the name of the stack owner * **Email Address**: Email ID of the stack owner * **Users**: Number of users added in the stack * **Created At**: Date and time of stack creation * **Actions**: Allows you to delete a stack ![Organization Stacks settings list](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6e4367932fc3379a/66795eb93a5f4973fdaad232/Delete_Stack_via_Org_Admin_1.png) From this page, you can only **Delete** a stack. ## Delete a Stack **Note:** Only the [Organization Owner](/docs/administration/about-administration-roles) or [Stack owner](/docs/headless-cms/types-of-roles#owner) has the right to delete a stack. Let us look in detail the steps that need to be performed by the respective roles. ### Organization Owner To delete a stack through the **Settings** page, perform the following steps: 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. Select the Organization from the dropdown on the header, and click on the “Org Admin” icon on the left navigation panel. 3. Select the **Stacks** settings option, and click on the ellipses under the **Actions** column. **Note**: Only Organization Owner can delete a stack from the Org Admin settings. ![Delete a stack from the Actions column in Org Admin settings](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6babce2d4d98e620/66795d8a99587f682df4df97/Delete_Stack_via_Org_Admin_\(1\).png) 4. Confirm the **Delete** action. Your stack will now be permanently deleted. ### Stack Owner There's an alternative method of deleting stacks through the Stack Settings page. This method can be performed by the Stack Creator/Owner. To delete a stack, perform the following steps: 1. Log in to your [Contentstack account](https://www.contentstack.com/login) and go to the stack that you want to delete. 2. Click the “Settings” icon on the left navigation panel and select **Stack**. 3. On the **Stack Settings** page, click on **Delete Stack** button. ![Delete Stack button on the Stack Settings page](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7425ac3e2caa6010/66796204612ffe5a902893a2/Delete_Stack_via_Org_Admin_3.png) 4. Confirm the **Delete** action to delete your stack permanently. **Warning:** Deleting a stack permanently deletes all content stored within that stack. ## Related Resources * [Delete stack (Content Management API)](/docs/developers/apis/content-management-api/stacks#delete-stack) * [Get all stacks in an Organization (Administration API)](/docs/developers/apis/administration-api/organizations#get-all-stacks-in-an-organization) --- ## URL: https://www.contentstack.com/docs/administration/organization-users --- title: "Organization Users" description: "Manage organization users efficiently with our guide: invite, edit roles, remove users, reset MFA, export to CSV, and more. Explore now." url: "https://www.contentstack.com/docs/administration/organization-users" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-13" filename: organization-users.md --- # Organization Users The **Users** section displays all users in your [organization](/docs/administration/about-organizations). It lets you invite, manage, and take action on organization users. Navigate to **Administration** through “App Switcher”, then click the **Users** tab to view organization users. **Additional Resource**: Another way to manage users is through individual stacks. Refer to [Invite Users and Assign Roles](/docs/headless-cms/about-stack-users) for more information. You can perform the following actions on organization users: * Invite new user(s) to your organization * Change organization role of existing user * Remove user(s) from your organization * Force password reset * Reset **Multi-Factor Authentication** (**MFA**) * Unlock Users * Export the user list to CSV * View and sort by last login date ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to invite, edit, and remove organization users. * How to force password resets, unlock users, and reset Multi-Factor Authentication (MFA). * How to export the user list to CSV and view last login details. Let’s walk through each action. ## Invite New User(s) To invite user(s) to your organization, perform the following steps: 1. Click **Invite User**.![Invite User button on the Users tab](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/am8c34e529cf38e27f/4aa6173a6fe0f1b66d06e8d4/RBAC_Invite_User.png) 2. Enter the email address of the user. To add multiple users, enter email addresses separated by a comma. 3. In **Assign Product Access**, assign the roles each user needs: 1. One or more organization-level **Administration** roles. At least one Administration role is required, and the **Member** role is selected by default. 2. Product roles for each product, such as the CMS, Assets, and AgentOS. 3. Optionally, project-level roles for individual stacks, spaces, or AgentOS projects. 4. Click **Invite**. A user can hold more than one role at the same time. For example, a user can be both a Member and a Product Analytics Viewer. **Note:** Only the organization [Owner and Admin](/docs/administration/about-administration-roles) role can invite new users. **Additional Resource:** Refer to the [Invite Users to Organization](/docs/administration/invite-users-to-organization) documentation for more details, including steps for [Single Sign-On (SSO)](/docs/administration/about-single-sign-on-sso) enabled organizations. ## Edit a User To update permissions for a user, perform the following steps: 1. Click the user you want to edit or click the vertical ellipses in the **Actions** column and click **Edit**. This opens the **Edit User** page.![Edit option opening the Edit User page](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am6efdbeb486a9b14c/24a548bbc0f9c8f3c4e5c1e5/RBAC_Edit_User.png?locale=en-us) 2. On the **Edit User** page, update the following as required, then click **Update**: * The organization-level **Administration** roles. * The product roles for each product, such as the CMS, Assets, and AgentOS. * The assigned stacks, spaces, or AgentOS projects, and the project-level roles for each. ## Remove a User To remove a user from the organization, perform the following steps: 1. Navigate to the user you want to remove, click the vertical ellipses in the **Actions** column, and click **Remove**.![Remove option in the Actions column](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8f8d0ae7de732e95/6891b2400a46b0f55eef43c2/Organization_Users_4.png) 2. In the **Remove User** modal, click **Remove** to confirm the action. **Note:** Alternatively, you can also remove a user from the **Edit user** page. **Warning:** Removing a user revokes their access to all stacks in the organization. ## Force Password Reset To send a password reset email to a user: 1. Select the checkboxes next to the users you want to send a password reset email to, and select **Force Password Reset**.![Force Password Reset action for selected users](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcd884f8754a6bd05/6891aef574c4fdd1eb74a96a/Organization_Users_5.png) 2. In the **Force Password Reset** modal, click **Continue** to confirm the action. The user is forced to reset their password on their next login. ## Unlock Users Manually unlock users who have been locked out due to failed login attempts. To unlock users individually or in bulk: 1. Click the vertical ellipsis in the **Action** column next to the locked user.![Unlock option for a locked user](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0465f2f1b10ad97e/693aa8495bb1c13b1837e284/Unlock_Users_1.png) Or select up to **10 users** using the respective checkboxes. ![Bulk selection of locked users](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf879e21d28d5d776/693aa84afe65010a443ecf9e/Unlock_Users_2.png) 2. Click **Unlock User**. 3. Review the selected users in the confirmation modal and click **Continue** or **Proceed** to restore access. **Note:** * The **Unlock User** option is not available for: * Users who are part of multiple Contentstack organizations * Org owners In both cases, contact Contentstack [support](mailto:support@contentstack.com) to unlock the user. * The **Unlock User** button appears only if **all user selected in bulk** are unlockable. If one or more selected users are ineligible (e.g., multi-org users or organization owner or already unlocked user), the option will not be shown. ## Reset MFA Reset MFA when a user cannot access their account. Common scenarios include lost or stolen devices, switching to a new device, account security concerns, or issues with the authenticator app. To reset MFA for a user: 1. Click the vertical ellipses in the **Actions** column of a user and select **Reset MFA**.![Reset MFA option in the Actions column](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd3cf95dac6ccbb8c/6891aef6ef8ef11f13cbbf62/Organization_Users_6.png) 2. In the **Reset Multi-Factor Authentication** modal, click **Proceed** to confirm the action. The user receives an email with a link to reset their MFA configuration. ## Export Users List Export details of all organization users in a **Comma-Separated Values** (**CSV**) file. The users are sorted alphabetically by their email address in CSV. You can open this CSV file using any spreadsheet application. Click the “Export” icon to download the CSV file with all organization users. ![Export icon downloading the users CSV](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf27f4b3b0faa5fde/6891b31c3fd889343c634938/Organization_Users_7.png) ## View Last Logged-in Details of Users The **Users** list also displays the most recent login timestamp for each user in the **Last Login At** column. You can sort the list by this column to easily identify recently or infrequently active users. ![Last Login At column in the Users list](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcf4f8ad207dd5a91/6891aef54964b85990d6da39/Organization_Users_8.png) **Additional Resource:** To perform bulk actions on organization users, refer to our [Bulk Operations on Organization Users](/docs/administration/bulk-operations-on-organization-users) document for more details. ## Related Resources * [Add users to Organization](/docs/developers/apis/administration-api/organizations#add-users-to-organization) * [Resend pending Organization invitation](/docs/developers/apis/administration-api/organizations#resend-pending-organization-invitation) * [Get all Organization invitations](/docs/developers/apis/administration-api/organizations#get-all-organization-invitations) * [Get Organization users by email](/docs/developers/apis/administration-api/organizations#get-organization-users-by-email) --- ## URL: https://www.contentstack.com/docs/administration/password-requirements --- title: "Password Requirements" description: "Enhance your Contentstack security with strong passwords and MFA. Follow policy guidelines to prevent unauthorized access and protect your account." url: "https://www.contentstack.com/docs/administration/password-requirements" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: password-requirements.md --- # Password Requirements To ensure secure login and account protection, Contentstack enforces password requirements aligned with strong password security best practices. Organization [admin](/docs/administration/about-administration-roles) can define [password policies](/docs/administration/security-configuration#password-policies) that all users must follow within their workspace to help prevent unauthorized access. ## Password Policy Guidelines When setting or updating your password, make sure it adheres to the policy configured by your organization’s admin. This policy may include minimum requirements such as: * Minimum character length (default 8 characters) * At least one uppercase letter * At least one special character (e.g., !, @, #, $, %, ^, &, \*) * At least one numeric character (e.g., 0–9) If your password (e.g., abcd1234) does not comply, the system prompts you to make necessary adjustments before proceeding. ## Best Practices To further enhance your Contentstack password security, the following best practices are recommended: * Use a strong and unique password that is not used on other sites * Change your password regularly * Avoid predictable patterns or easily guessable words * Enable [Multi-Factor Authentication (MFA)](/docs/administration/multi-factor-authentication) using an authenticator app for enhanced security **Note:** An organization admin can [enforce MFA](/docs/administration/security-configuration#multi-factor-authentication) for all users in the organization. If enforced, users are prompted to set up MFA during their next login. Need help? Reach out to our [support](mailto:support@contentstack.com) team. --- ## URL: https://www.contentstack.com/docs/administration/real-world-use-cases --- title: "Teams Real World Use Cases" description: "Explore practical applications and real-world scenarios of the team's feature to streamline role management in your projects." url: "https://www.contentstack.com/docs/administration/real-world-use-cases" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: real-world-use-cases.md --- # Teams Real World Use Cases Teams groups users so you can assign organization, product, and project-level roles to many people at once. The following scenarios show when Teams is the right tool and how it applies in practice. For an overview of the feature, refer to the [About Teams](/docs/administration/about-teams) documentation. ## What You Will Learn * When to use a team for cross-functional project collaboration. * How to onboard a group of new users with the same access at once. * How to realign team roles after an organizational change. * How to grant and later remove temporary access for seasonal campaigns. ## Cross-Functional Project Collaboration A product team and a marketing team collaborate on a launch and need access to a specific set of stacks, without gaining access to unrelated ones. Create a **Product Launch** team and assign it the roles for the stacks, spaces, or projects relevant to the launch. Members get the access they need for that work, and unrelated content stays out of scope. When the launch is complete, you adjust or remove the team instead of reversing changes for each user. ## Onboarding a Group of New Users A company hires 30 users for its content and marketing functions, and they all need the same access. Create a **Content Creators** team, assign the organization, product, and project-level roles the group needs, and invite all 30 users to the team in one action. Each user inherits the team's roles on joining, so onboarding does not require configuring roles per person. ## Restructuring Roles After an Organizational Change After an internal restructuring, several teams hold overlapping or redundant roles, and access needs to be realigned. Edit each team to update its name, description, and assigned roles so that each team has a clear, distinct purpose. Where finer control is required, assign custom roles to target access at the level of entries, fields, or assets. Users who belong to multiple teams continue to inherit the combined roles of all their teams, so access remains intact through the change. To edit a team, navigate to **Administration** through the App Switcher, click **Teams**, then select **Edit** from the vertical ellipsis next to the team. ## Temporary Access for Seasonal Campaigns A company runs seasonal campaigns that bring in external consultants for short periods, and they need temporary access without changing the roles of regular users. Create a temporary team, such as **Winter Campaign** or **Summer Sale**, and assign it the roles required for the campaign. When the campaign ends, delete the team to remove access for all of its members at once, instead of revoking permissions individually. **Additional Resource**: For step-by-step instructions, refer to the [Create a Team](/docs/administration/create-a-team) documentation. --- ## URL: https://www.contentstack.com/docs/administration/removing-support-for-tls-1-0-1-1 --- title: "Removing Support for TLS 1.0 & 1.1" description: "Removing Support for TLS 1.0 & 1.1" url: "https://www.contentstack.com/docs/administration/removing-support-for-tls-1-0-1-1" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: removing-support-for-tls-1-0-1-1.md --- # Removing Support for TLS 1.0 & 1.1 Contentstack has upgraded its TLS to version 1.2, and therefore, TLS 1.0 and 1.1 have been deprecated. ## What You Need to Know Our CDN/API services now use the upgraded TLS version and no longer support TLS 1.0 or TLS 1.1 over HTTPS on the “api/cdn/images/assets.contentstack.io” domain. We will now only accept requests made by browsers or API clients with TLS version 1.2 or higher. Here's a [comprehensive support matrix](https://www.ssllabs.com/ssltest/clients.html) that you can access. ## Why Did We Make This Change The TLS 1.2 protocol was defined in RFC 5246 in August 2008. It is an improvement over TLS 1.1 standard and is more secure. Among other items, it protects against Cipher Block Chaining (CBC) attacks. One of the primary reasons for this revision from TLS 1.1 to TLS 1.2 is to remove the protocol's dependency on the MD5 and SHA-1 digest algorithms. TLS 1.2 supports the expansion of support for authenticated encryption ciphers with AES-GCM cipher suites that are not prone to these attacks. ## What You Should Do Now Most browsers have supported TLS 1.2 for at least the last few years. So, end-users are unlikely to be affected by this change. The impact is likely only going to be felt by API users with old libraries. ### API Library Support If you have code that connects with the [Contentstack APIs](/docs/developers/apis), it is vital to ensure that it will continue to work after **August 23, 2019**. While each language and library is different, we have identified some popular ones as a starting reference. Here's the list of languages that will need significant changes/upgrades to continue operating uninterrupted: * Java 6u45 / 7u45 * .NET before 4.5 (does not support TLS 1.2) * .NET 4.5 (setting must be changed to enable TLS 1.2 explicitly) * OpenSSL 0.9.8 Most dynamic languages such as [Ruby](/docs/developers/sdks/content-delivery-sdk/ruby/about-ruby-sdk), [PHP](/docs/developers/sdks/content-delivery-sdk/php/about-php-sdk), and [Python](/docs/developers/sdks/content-delivery-sdk/python/about-python-sdk) rely on the underlying operating system's OpenSSL version. You can check it by running the openssl version. Version 1.0.1 is the minimum requirement. ### Browser Support Most browsers support TLS 1.2 and have been supporting it for several years. The following are the browser versions (including lower versions) that DO NOT support TLS 1.2: * Google Chrome 29 * Mozilla Firefox 26 * Internet Explorer 10 * Safari 8 * iOS 4 * Android 4 --- ## URL: https://www.contentstack.com/docs/administration/rest-api-usage --- title: "REST API Usage" description: "Discover how SSO affects Contentstack's Content Management API for seamless integration with management tokens and user authtokens." url: "https://www.contentstack.com/docs/administration/rest-api-usage" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-23" filename: rest-api-usage.md --- # REST API Usage Enabling SSO for an organization may affect your REST API integrations, particularly the ones using [Content Management APIs](/docs/developers/apis/content-management-api). It is therefore recommended that you read this section carefully. ## Content Delivery API For an SSO-enabled organization, [Content Delivery APIs](/docs/developers/apis/content-delivery-api) work as expected. The Content Delivery API requests are GET calls and they use the stack’s [delivery tokens](/docs/headless-cms/about-delivery-tokens) to fetch content. No changes are required. ## Content Management API Any user who accesses the SSO-enabled organization through IdP login cannot make [Content Management API](/docs/developers/apis/content-management-api) requests since it requires a user authtoken. Below we will explain a couple of options on how to utilize the Content Management API for specific users when SSO is enabled. Since the [owner](/docs/headless-cms/types-of-roles#owner) of an organization can access an SSO-enabled organization through Contentstack credentials as well, he/she has a user authtoken. The owner can use this authtoken (received in the response of the “[Login](/docs/developers/apis/administration-api/user-session)” request) to make Content Management API requests. Similarly, if you have disabled **Strict Mode** for an SSO-enabled organization and granted a few users the permission to access the organization through Contentstack credentials (by enabling the **[Allow Access Without SSO](/docs/administration/invite-users-to-organization#invite-users-to-sso-enabled-organizations)** option in the **Organization** **Users** page), then these users can use the authtoken to make Content Management API requests. **Additional Resource**: For SSO-enabled organizations, instead of logging in with credentials and generating an authtoken, users can directly use the Content Management APIs to read, create, update, or delete content using the [management token](/docs/headless-cms/types-of-tokens#management-tokens). --- ## URL: https://www.contentstack.com/docs/administration/secure-public-urls-of-assets --- title: "Secure Public URLs of Assets" description: "Secure your Contentstack assets with URL protection, ensuring safe, authenticated access to prevent unauthorized content retrieval. Enable today for added security." url: "https://www.contentstack.com/docs/administration/secure-public-urls-of-assets" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: secure-public-urls-of-assets.md --- # Secure Public URLs of Assets Contentstack provides asset URL security, allowing teams to protect content by restricting public access to asset URLs. When enabled for a stack, assets cannot be accessed directly by their URLs without valid authentication parameters, helping prevent unauthorized retrieval of sensitive or private content. ## What You Will Learn * How to access secured published assets with a delivery token and environment. * How secure asset URLs affect rich text fields and the Image Delivery API. * How to access draft assets with an Authtoken or Management Token. * How to enable secure asset URLs for your stack. ## How To Access Secured Published Assets To access a secured asset, you must include both a [delivery token](/docs/headless-cms/about-delivery-tokens) and an [environment](/docs/headless-cms/about-environments) name as query parameters in the asset URL. Example URLs: * https://assets.contentstack.io/v3/assets/{stack\_uid}/{asset\_uid}/{asset\_version\_id}/asset\_file\_of\_pdf.pdf?access\_token={delivery\_token}&environment={environment\_name} * https://images.contentstack.io/v3/assets/{stack\_uid}/{asset\_uid}/{asset\_version\_id}/image\_file\_name.jpeg?access\_token={delivery\_token}&environment={environment\_name} **Note:** Delivery tokens are scoped to environments. Adding the environment parameter strengthens validation by ensuring the asset is authorized in the correct context. ## Behavior and Limitations When secure asset URLs are enabled, the following limitations apply: * **Rich Text Fields (RTE, JSON RTE, and Markdown):** Once asset privatization is enabled, these fields would no longer support asset or image insertion using the standard file picker. As a workaround, to include a secured asset, manually append the required authentication parameters to the URL. **Warning:** Manually appending the asset URL is not recommended for rich text fields due to maintainability and potential security exposure. * **Image Delivery API Limitations:** The [overlay](/docs/developers/apis/image-delivery-api#overlay) transformation parameter does not function with secured assets. ## How To Access Draft Assets To access draft (unpublished) assets, use either an [Authtoken](/docs/developers/apis/content-management-api#how-to-get-authtoken) or a [Management Token](/docs/developers/apis/content-management-api#how-to-get-management-tokens) with the [Content Management APIs](/docs/developers/apis/content-management-api#api-reference). **Note**: Delivery tokens work only for published assets and cannot be used to fetch draft versions. ## How To Enable Secure Asset URLs To enable asset URL security for your stack, contact our [support](mailto:support@contentstack.com) team. **Note:** Asset security is applied at the stack level. Authenticated users can still download and manage assets directly through the Contentstack web app. Securing asset URLs adds an additional layer of control and protection for your content. --- ## URL: https://www.contentstack.com/docs/administration/security-configuration --- title: "Security Configuration" description: "Boost organization security with Contentstack's Security Configuration feature. Set up multi-factor authentication and password policies to enforce strong user protection." url: "https://www.contentstack.com/docs/administration/security-configuration" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-14" filename: security-configuration.md --- # Security Configuration Strengthen your organization's security by configuring the level of protection you want to enforce. From Security Configuration, you can set up Multi-Factor Authentication (MFA), password policies, session timeouts, and allowed email domains. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to enable Multi-Factor Authentication for your organization. * How to configure password policies, including duration and minimum length. * How to set maximum session and inactivity timeouts. * How to restrict organization membership to allowed email domains. ## Multi-Factor Authentication **Multi-Factor Authentication** (**MFA**) adds an extra layer of protection to user logins. When enabled, all users in your organization must set up MFA the next time they log in. To enable MFA for your organization, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the following steps: 1. Navigate to **Administration** through “App Switcher”. 2. Click the **Security Configuration** tab. 3. Enable MFA using the toggle switch. Click **Save** to save your configuration.![Enable MFA toggle in Security Configuration](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt28253b38051e9877/6915b51655501d6a21da50b8/MFA.png) **Note:** Once enabled, MFA setup becomes mandatory for all users on their next login. **Additional Resources:** Refer to our document on setting up [multi-factor authentication](/docs/administration/multi-factor-authentication) for more information. ## Password Policies Password policies help you control how passwords are created and maintained in your organization. You can choose to configure any combination of the available settings, depending on the level of security you want to enforce. To enable and customize password policies for organization users, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the following steps: 1. Navigate to **Administration** through “App Switcher”. 2. Click the **Security Configuration** tab and select **Password Policies**. 3. In the **Password Duration** field, set the number of days (**0 to 365**) after which passwords must be updated. For example, setting the duration to 90 days forces users to reset their passwords every 90 days. **Note**: Set **Password Duration** to **0** for no password expiry. 4. In **Minimum Password Length**, enter a value (**minimum 8**). 5. Click **Save** to save your configuration.![Password Policies settings](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd354f70ad0cffe59/6915b516ac78ca3a8928a08b/Password_Policies.png) **Note:** If you belong to multiple organizations: * The organization with the highest minimum password length applies during password reset. * The shortest password expiration period applies. * Enforcing MFA or password reset in any of these organizations, applies immediately on the next login. ## Session Timeout Session timeout in Contentstack's **Security Configuration** settings allows organization owners and admins to automatically log users out after a defined period of inactivity or a maximum session duration. This enhances account security by minimizing risks related to unattended active sessions. Enabling session and idle timeouts helps ensure: * Improved control over user session duration. * Reduced risk of unauthorized access from idle sessions. * Customizable timeout periods that align with your organization’s security policies. You can also whitelist email addresses to exempt specific users from timeout enforcement, which is ideal for service accounts or trusted users. To configure session timeout, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to **Administration** through “App Switcher”. 2. Click the **Security Configuration** tab and then select **Session Timeout**. 3. Toggle the **Enable Session Timeout** switch to turn the feature on. 4. In the **Maximum Session Duration (hours)** field, enter the desired session duration in hours. Users are automatically logged out after the configured session timeout value. Default value: **12 hours**. 5. In the **Maximum Inactivity Timeout (hours)** field, enter the inactivity threshold in hours. Users are automatically logged out after the configured idle timeout value. Default value: **1 hour**. 6. In the **Allowlist User Email** field, enter comma-separated email addresses. These users are exempt from timeout rules.![Session Timeout settings](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt05cbe1e5591e748e/696f5b5b596f034f56c26cad/Session_Timeout.png) 7. Click **Save** to apply your settings, or **Cancel** to discard changes. **Note**: * Session timeout is the maximum duration a user can stay logged in, regardless of activity. * Idle timeout logs users out after a period of inactivity. * Idle timeout must be **shorter than** the session timeout. * You can add any number of email addresses to the allowlist. ## Allowed Email Domains The **Allowed Email Domains** feature lets you restrict user access to specific email domains within your organization. This enhances security by ensuring that only users with approved email domains can be added to your organization. **Note**: Enabling this setting does not affect existing users. To enable and add email domains, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to **Administration** through “App Switcher”. 2. Click the **Security Configuration** tab and select **Allowed Email Domains**. 3. Toggle the **Enable Allowed Email Domains** switch. 4. In the **Add Allowed Email Domain(s)** field, enter the domains you want to allow (e.g., yourcompany.com).![Allowed Email Domains settings](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5afd82eeddba9d80/6915b516a582d743e01ac668/Allowed_Email_Domains.png) **Note**: You can add up to **30 email domains**. 5. Click **Save** to apply the configuration. **Note:** When this setting is enabled, users with unapproved email domains cannot be invited or added to your organization. An error message appears if you attempt to add them. By implementing these security features, you can significantly enhance your organization’s security. --- ## URL: https://www.contentstack.com/docs/administration/selecting-region-in-contentstack-starter-apps --- title: "Selecting Region in Contentstack Starter Apps" description: "Selecting Region in Contentstack Starter Apps" url: "https://www.contentstack.com/docs/administration/selecting-region-in-contentstack-starter-apps" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: selecting-region-in-contentstack-starter-apps.md --- # Selecting Region in Contentstack Starter Apps In order to configure your starter app for a particular region, you need to make changes to the configuration file of your starter app. For each technology given below, set the following configuration according to your region. **Note**: By default, region=na. If you want to add or switch to eu, au, azure-na, azure-eu, gcp-na, or gcp-eu region, add this code to your configuration: ``` CONTENTSTACK_REGION = ``` ## Gatsby ### Gatsby App Configuration for Europe Region To set the Europe region, refer to the code below: ``` CONTENTSTACK_API_KEY = CONTENTSTACK_DELIVERY_TOKEN = CONTENTSTACK_ENVIRONMENT = CONTENTSTACK_API_HOST = eu-api.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = eu-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### Gatsby App Configuration for Australia Region To set the Australia region, refer to the code below: ``` CONTENTSTACK_API_KEY = CONTENTSTACK_DELIVERY_TOKEN = CONTENTSTACK_ENVIRONMENT = CONTENTSTACK_API_HOST = au-api.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = au-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = au-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### Gatsby App Configuration for Google Europe Region To set the Google Europe region, refer to the code below: ``` CONTENTSTACK_API_KEY = CONTENTSTACK_DELIVERY_TOKEN = CONTENTSTACK_ENVIRONMENT = CONTENTSTACK_API_HOST = gcp-eu-api.contentstack.com# By default branch=main, if a branch is not provided# CONTENTSTACK_BRANCH = ``` Mandatory configuration parameters to enable Live Preview: ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = gcp-eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = gcp-eu-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true # By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW=false"CONTENTSTACK_LIVE_EDIT_TAGS = false # By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS=true" ``` ### Gatsby App Configuration for Azure NA Region To set the Azure North America region, refer to the code below: ``` CONTENTSTACK_API_KEY = CONTENTSTACK_DELIVERY_TOKEN = CONTENTSTACK_ENVIRONMENT = CONTENTSTACK_API_HOST = azure-na-api.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = azure-na-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = azure-na-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### Gatsby App Configuration for Azure EU Region To set the Azure Europe region, refer to the code below: ``` CONTENTSTACK_API_KEY = CONTENTSTACK_DELIVERY_TOKEN = CONTENTSTACK_ENVIRONMENT = CONTENTSTACK_API_HOST = azure-eu-api.contentstack.com# By default branch=main, if a branch is not provided# CONTENTSTACK_BRANCH = ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = azure-eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = azure-eu-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS= true". ``` ### Gatsby App Configuration for Google NA Region To set the Google North America region, refer to the code below: ``` CONTENTSTACK_API_KEY = CONTENTSTACK_DELIVERY_TOKEN = CONTENTSTACK_ENVIRONMENT = CONTENTSTACK_API_HOST = gcp-na-api.contentstack.com# By default branch=main, if a branch is not provided# CONTENTSTACK_BRANCH = ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = gcp-na-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = gcp-na-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false"CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS= true" ``` ### Gatsby App Configuration for Google Europe Region To set the Google Europe region, refer to the code below: ``` CONTENTSTACK_API_KEY = CONTENTSTACK_DELIVERY_TOKEN = CONTENTSTACK_ENVIRONMENT = CONTENTSTACK_API_HOST = gcp-eu-api.contentstack.com# By default branch=main, if a branch is not provided# CONTENTSTACK_BRANCH = ``` Mandatory configuration parameters to enable Live Preview: ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = gcp-eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = gcp-eu-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true # By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW=false"CONTENTSTACK_LIVE_EDIT_TAGS = false # By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS=true" ``` ## Next.js ### Next.js App Configuration for Europe Region To set the Europe region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = eu-app.contentstack.comCONTENTSTACK_API_HOST = eu-api.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### Next.js App Configuration for Australia Region To set the Australia region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = au-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = au-app.contentstack.comCONTENTSTACK_API_HOST = au-api.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### Next.js App Configuration for Azure NA Region To set the Azure North America region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = azure-na-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = azure-na-app.contentstack.com CONTENTSTACK_API_HOST = azure-na-api.contentstack.com CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### Next.js App Configuration for Azure EU Region To set the Azure Europe region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = azure-eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = azure-eu-app.contentstack.com CONTENTSTACK_API_HOST = azure-eu-api.contentstack.com CONTENTSTACK_LIVE_PREVIEW = true # By default branch=main, if a branch is not provided# CONTENTSTACK_BRANCH = #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS= true". ``` ### Next.js App Configuration for Google NA Region To set the Google North America region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = gcp-na-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = gcp-na-app.contentstack.comCONTENTSTACK_API_HOST = gcp-na-api.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true# By default branch=main, if a branch is not provided# CONTENTSTACK_BRANCH = #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false"CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS= true" ``` ### Next.js App Configuration for Google EU Region Mandatory configuration parameters to enable Live Preview: ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = gcp-eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = gcp-eu-app.contentstack.comCONTENTSTACK_API_HOST = gcp-eu-api.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true# By default branch=main, if a branch is not provided# CONTENTSTACK_BRANCH = # By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW=false"CONTENTSTACK_LIVE_EDIT_TAGS = false # By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS=true" ``` ## Next.js with GraphQL ### Next.js with GraphQL App Configuration for Europe Region To set the Europe region, refer to the code below: ``` CONTENTSTACK_GRAPHQL_HOST_NAME = eu-graphql.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_MANAGEMENT_TOKEN = CONTENTSTACK_APP_HOST = eu-app.contentstack.com CONTENTSTACK_LIVE_PREVIEW_HOST_NAME = eu-graphql-preview.contentstack.com#By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW = false".CONTENTSTACK_LIVE_PREVIEW = true#By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS = true".CONTENTSTACK_LIVE_EDIT_TAGS = false ``` ### Next.js with GraphQL App Configuration for Australia Region To set the Australia region, refer to the code below: ``` CONTENTSTACK_GRAPHQL_HOST_NAME = au-graphql.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_MANAGEMENT_TOKEN = CONTENTSTACK_APP_HOST = au-app.contentstack.com CONTENTSTACK_LIVE_PREVIEW_HOST_NAME = au-graphql-preview.contentstack.com#By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW = false".CONTENTSTACK_LIVE_PREVIEW = true#By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS = true".CONTENTSTACK_LIVE_EDIT_TAGS = false ``` ### Next.js with GraphQL App Configuration for Azure NA Region To set the Azure NA region, refer to the code below: ``` CONTENTSTACK_GRAPHQL_HOST_NAME = azure-na-graphql.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_MANAGEMENT_TOKEN = CONTENTSTACK_APP_HOST = azure-na-app.contentstack.com CONTENTSTACK_LIVE_PREVIEW_HOST_NAME = azure-na-graphql-preview.contentstack.com#By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW = false".CONTENTSTACK_LIVE_PREVIEW = true#By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS = true".CONTENTSTACK_LIVE_EDIT_TAGS = false ``` ### Next.js with GraphQL App Configuration for Azure EU Region To set the Azure EU region, refer to the code below: ``` CONTENTSTACK_GRAPHQL_HOST_NAME = azure-eu-graphql.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_MANAGEMENT_TOKEN = CONTENTSTACK_APP_HOST = azure-eu-app.contentstack.com CONTENTSTACK_LIVE_PREVIEW_HOST_NAME = azure-eu-graphql-preview.contentstack.com#By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW = false".CONTENTSTACK_LIVE_PREVIEW = true#By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS = true".CONTENTSTACK_LIVE_EDIT_TAGS = false ``` ### Next.js with GraphQL App Configuration for Google NA Region To set the Google North America region, refer to the code below: ``` CONTENTSTACK_GRAPHQL_HOST_NAME = gcp-na-graphql.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_MANAGEMENT_TOKEN = CONTENTSTACK_APP_HOST = gcp-na-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW_HOST_NAME = gcp-na-graphql-preview.contentstack.com#By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW = false"CONTENTSTACK_LIVE_PREVIEW = true#By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS = true"CONTENTSTACK_LIVE_EDIT_TAGS = false ``` ### Next.js with GraphQL App Configuration for Google EU Region To set the Google Europe region, refer to the code below: ``` CONTENTSTACK_GRAPHQL_HOST_NAME = gcp-eu-graphql.contentstack.com ``` Mandatory configuration parameters to enable Live Preview: ``` CONTENTSTACK_MANAGEMENT_TOKEN = CONTENTSTACK_APP_HOST = gcp-eu-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW_HOST_NAME = gcp-eu-graphql-preview.contentstack.com# By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW=false"CONTENTSTACK_LIVE_PREVIEW = true# By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS=true"CONTENTSTACK_LIVE_EDIT_TAGS = false ``` ## React.js ### React.js App Configuration for Europe Region To set the Europe region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` REACT_APP_CONTENTSTACK_PREVIEW_TOKEN = REACT_APP_CONTENTSTACK_PREVIEW_HOST = eu-rest-preview.contentstack.comREACT_APP_CONTENTSTACK_APP_HOST = eu-app.contentstack.comREACT_APP_CONTENTSTACK_API_HOST = eu-api.contentstack.comREACT_APP_CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### React.js App Configuration for Australia Region To set the Australia region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` REACT_APP_CONTENTSTACK_PREVIEW_TOKEN = REACT_APP_CONTENTSTACK_PREVIEW_HOST = au-rest-preview.contentstack.comREACT_APP_CONTENTSTACK_APP_HOST = au-app.contentstack.comREACT_APP_CONTENTSTACK_API_HOST = au-api.contentstack.comREACT_APP_CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### React.js App Configuration for Azure NA Region To set the Azure North America region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` REACT_APP_CONTENTSTACK_PREVIEW_TOKEN = REACT_APP_CONTENTSTACK_PREVIEW_HOST = azure-na-rest-preview.contentstack.comREACT_APP_CONTENTSTACK_APP_HOST = azure-na-app.contentstack.com REACT_APP_CONTENTSTACK_API_HOST = azure-na-api.contentstack.comREACT_APP_CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### React.js App Configuration for Azure EU Region To set the Azure Europe region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` REACT_APP_CONTENTSTACK_PREVIEW_TOKEN = REACT_APP_CONTENTSTACK_PREVIEW_HOST = azure-eu-rest-preview.contentstack.comREACT_APP_CONTENTSTACK_APP_HOST = azure-eu-app.contentstack.com REACT_APP_CONTENTSTACK_API_HOST = azure-eu-api.contentstack.com# By default branch=main, if a branch is not provided# REACT_APP_CONTENTSTACK_BRANCH = REACT_APP_CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS= true". ``` ### React.js App Configuration for Google NA Region To set the Google North America region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` REACT_APP_CONTENTSTACK_PREVIEW_TOKEN = REACT_APP_CONTENTSTACK_PREVIEW_HOST = gcp-na-rest-preview.contentstack.comREACT_APP_CONTENTSTACK_APP_HOST = gcp-na-app.contentstack.comREACT_APP_CONTENTSTACK_API_HOST = gcp-na-api.contentstack.com# By default branch=main, if a branch is not provided# REACT_APP_CONTENTSTACK_BRANCH = REACT_APP_CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false"REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = false#By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS= true" ``` ### React.js App Configuration for Google EU Region To set the Google Europe region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview: ``` REACT_APP_CONTENTSTACK_PREVIEW_TOKEN = REACT_APP_CONTENTSTACK_PREVIEW_HOST = gcp-eu-rest-preview.contentstack.comREACT_APP_CONTENTSTACK_APP_HOST = gcp-eu-app.contentstack.comREACT_APP_CONTENTSTACK_API_HOST = gcp-eu-api.contentstack.com# By default branch=main, if a branch is not provided# REACT_APP_CONTENTSTACK_BRANCH = REACT_APP_CONTENTSTACK_LIVE_PREVIEW = true # By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW=false"REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = false# By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS=true" ``` ## React.js with GraphQL ### React.js with GraphQL App Configuration for Europe Region To set the Europe region, refer to the code below: ``` REACT_APP_CONTENTSTACK_GRAPHQL_HOST_NAME = eu-graphql.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` REACT_APP_CONTENTSTACK_MANAGEMENT_TOKEN = REACT_APP_CONTENTSTACK_APP_HOST = eu-app.contentstack.com REACT_APP_CONTENTSTACK_LIVE_PREVIEW_HOST_NAME = eu-graphql-preview.contentstack.com#By default, the live preview feature is enabled for this project. To disable it, set "REACT_APP_CONTENTSTACK_LIVE_PREVIEW = false".REACT_APP_CONTENTSTACK_LIVE_PREVIEW = true#By default, live editing tags are disabled for this project. To enable it, set "REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = true".REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = false ``` ### React.js with GraphQL App Configuration for Australia Region To set the Australia region, refer to the code below: ``` REACT_APP_CONTENTSTACK_GRAPHQL_HOST_NAME = au-graphql.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` REACT_APP_CONTENTSTACK_MANAGEMENT_TOKEN = REACT_APP_CONTENTSTACK_APP_HOST = au-app.contentstack.com REACT_APP_CONTENTSTACK_LIVE_PREVIEW_HOST_NAME = au-graphql-preview.contentstack.com#By default, the live preview feature is enabled for this project. To disable it, set "REACT_APP_CONTENTSTACK_LIVE_PREVIEW = false".REACT_APP_CONTENTSTACK_LIVE_PREVIEW = true#By default, live editing tags are disabled for this project. To enable it, set "REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = true".REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = false ``` ### React.js with GraphQL App Configuration for Azure NA Region To set the Azure NA region, refer to the code below: ``` REACT_APP_CONTENTSTACK_GRAPHQL_HOST_NAME = azure-na-graphql.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` REACT_APP_CONTENTSTACK_MANAGEMENT_TOKEN = REACT_APP_CONTENTSTACK_APP_HOST = azure-na-app.contentstack.com REACT_APP_CONTENTSTACK_LIVE_PREVIEW_HOST_NAME = azure-na-graphql-preview.contentstack.com#By default, the live preview feature is enabled for this project. To disable it, set "REACT_APP_CONTENTSTACK_LIVE_PREVIEW = false".REACT_APP_CONTENTSTACK_LIVE_PREVIEW = true#By default, live editing tags are disabled for this project. To enable it, set "REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = true".REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = false ``` ### React.js with GraphQL App Configuration for Azure EU Region To set the Azure EU region, refer to the code below: ``` REACT_APP_CONTENTSTACK_GRAPHQL_HOST_NAME = azure-eu-graphql.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` REACT_APP_CONTENTSTACK_MANAGEMENT_TOKEN = REACT_APP_CONTENTSTACK_APP_HOST = azure-eu-app.contentstack.com REACT_APP_CONTENTSTACK_LIVE_PREVIEW_HOST_NAME = azure-eu-graphql-preview.contentstack.com#By default, the live preview feature is enabled for this project. To disable it, set "REACT_APP_CONTENTSTACK_LIVE_PREVIEW = false".REACT_APP_CONTENTSTACK_LIVE_PREVIEW = true#By default, live editing tags are disabled for this project. To enable it, set "REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = true".REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = false ``` ### React.js with GraphQL App Configuration for Google NA Region To set the Google North America region, refer to the code below: ``` REACT_APP_CONTENTSTACK_GRAPHQL_HOST_NAME = gcp-na-graphql.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` REACT_APP_CONTENTSTACK_MANAGEMENT_TOKEN = REACT_APP_CONTENTSTACK_APP_HOST = gcp-na-app.contentstack.comREACT_APP_CONTENTSTACK_LIVE_PREVIEW_HOST_NAME = gcp-na-graphql-preview.contentstack.com#By default, the live preview feature is enabled for this project. To disable it, set "REACT_APP_CONTENTSTACK_LIVE_PREVIEW = false"REACT_APP_CONTENTSTACK_LIVE_PREVIEW = true#By default, live editing tags are disabled for this project. To enable it, set "REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = true"REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = false ``` ### React.js with GraphQL App Configuration for Google EU Region To set the Google Europe region, refer to the code below: ``` REACT_APP_CONTENTSTACK_GRAPHQL_HOST_NAME = gcp-eu-graphql.contentstack.com ``` **Mandatory configuration parameters to enable Live Preview:** ``` REACT_APP_CONTENTSTACK_MANAGEMENT_TOKEN = REACT_APP_CONTENTSTACK_APP_HOST = gcp-eu-app.contentstack.comREACT_APP_CONTENTSTACK_LIVE_PREVIEW_HOST_NAME = gcp-eu-graphql-preview.contentstack.com# By default, the live preview feature is enabled for this project. To disable it, set "REACT_APP_CONTENTSTACK_LIVE_PREVIEW=false"REACT_APP_CONTENTSTACK_LIVE_PREVIEW = true# By default, live editing tags are disabled for this project. To enable it, set "REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS=true"REACT_APP_CONTENTSTACK_LIVE_EDIT_TAGS = false ``` ## Angular ### Angular App Configuration for Europe Region To set the Europe region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = eu-app.contentstack.com CONTENTSTACK_API_HOST = eu-api.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false". ``` ### Angular App Configuration for Australia Region To set the Australia region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = au-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = au-app.contentstack.com CONTENTSTACK_API_HOST = au-api.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false". ``` ### Angular App Configuration for Azure NA Region To set the Azure North America region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = azure-na-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = azure-na-app.contentstack.com CONTENTSTACK_API_HOST = azure-na-api.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false". ``` ### Angular App Configuration for Azure EU Region To set the Azure Europe region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = azure-eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = azure-eu-app.contentstack.com CONTENTSTACK_API_HOST = azure-eu-api.contentstack.com# By default branch=main, if a branch is not provided# CONTENTSTACK_BRANCH = CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false". ``` ### Angular App Configuration for Google NA Region To set the Google North America region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = gcp-na-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = gcp-na-app.contentstack.comCONTENTSTACK_API_HOST = gcp-na-api.contentstack.com# By default branch=main, if a branch is not provided# CONTENTSTACK_BRANCH = CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false" ``` ### Angular App Configuration for Google EU Region To set the Google Europe region, refer to the code below: **Mandatory configuration parameters to enable Live Preview:** ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = gcp-eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = gcp-eu-app.contentstack.comCONTENTSTACK_API_HOST = gcp-eu-api.contentstack.com# By default branch=main, if a branch is not provided# CONTENTSTACK_BRANCH = CONTENTSTACK_LIVE_PREVIEW = true # By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW=false" ``` ## Vue.js ### Vue.js App Configuration for Europe Region To set the Europe region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` VUE_APP_CONTENTSTACK_PREVIEW_TOKEN = VUE_APP_CONTENTSTACK_PREVIEW_HOST = eu-rest-preview.contentstack.comVUE_APP_CONTENTSTACK_APP_HOST = eu-app.contentstack.comVUE_APP_CONTENTSTACK_API_HOST = eu-api.contentstack.comVUE_APP_CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false". ``` ### Vue.js App Configuration for Australia Region To set the Australia region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` VUE_APP_CONTENTSTACK_PREVIEW_TOKEN = VUE_APP_CONTENTSTACK_PREVIEW_HOST = au-rest-preview.contentstack.comVUE_APP_CONTENTSTACK_APP_HOST = au-app.contentstack.comVUE_APP_CONTENTSTACK_API_HOST = au-api.contentstack.comVUE_APP_CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false". ``` ### Vue.js App Configuration for Azure NA Region To set the Azure North America region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` VUE_APP_CONTENTSTACK_PREVIEW_TOKEN = VUE_APP_CONTENTSTACK_PREVIEW_HOST = azure-na-rest-preview.contentstack.comVUE_APP_CONTENTSTACK_APP_HOST = azure-na-app.contentstack.com VUE_APP_CONTENTSTACK_API_HOST = azure-na-api.contentstack.comVUE_APP_CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false". ``` ### Vue.js App Configuration for Azure EU Region To set the Azure Europe region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` VUE_APP_CONTENTSTACK_PREVIEW_TOKEN = VUE_APP_CONTENTSTACK_PREVIEW_HOST = azure-eu-rest-preview.contentstack.comVUE_APP_CONTENTSTACK_APP_HOST = azure-eu-app.contentstack.com VUE_APP_CONTENTSTACK_API_HOST = azure-eu-api.contentstack.com# By default branch=main, if a branch is not provided# VUE_APP_CONTENTSTACK_BRANCH = VUE_APP_CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false". ``` ### Vue.js App Configuration for Google NA Region To set the Google North America region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` VUE_APP_CONTENTSTACK_PREVIEW_TOKEN = VUE_APP_CONTENTSTACK_PREVIEW_HOST = gcp-na-rest-preview.contentstack.comVUE_APP_CONTENTSTACK_APP_HOST = gcp-na-app.contentstack.comVUE_APP_CONTENTSTACK_API_HOST = gcp-na-api.contentstack.com# By default branch=main, if a branch is not provided# VUE_APP_CONTENTSTACK_BRANCH = VUE_APP_CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false" ``` ### Vue.js App Configuration for Google EU Region To set the Google Europe region, refer to the code below: **Mandatory configuration parameters to enable Live Preview:** ``` VUE_APP_CONTENTSTACK_PREVIEW_TOKEN = VUE_APP_CONTENTSTACK_PREVIEW_HOST = gcp-eu-rest-preview.contentstack.comVUE_APP_CONTENTSTACK_APP_HOST = gcp-eu-app.contentstack.comVUE_APP_CONTENTSTACK_API_HOST = gcp-eu-api.contentstack.com# By default branch=main, if a branch is not provided# VUE_APP_CONTENTSTACK_BRANCH = VUE_APP_CONTENTSTACK_LIVE_PREVIEW = true # By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW=false" ``` ## Nuxt.js ### Nuxt.js App Configuration for Europe Region To set the Europe region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_MANAGEMENT_TOKEN = CONTENTSTACK_APP_HOST = eu-app.contentstack.comCONTENTSTACK_API_HOST = eu-api.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false". ``` ### Nuxt.js App Configuration for Australia Region To set the Australia region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_MANAGEMENT_TOKEN = CONTENTSTACK_APP_HOST = au-app.contentstack.comCONTENTSTACK_API_HOST = au-api.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false". ``` ### Nuxt.js App Configuration for Azure NA Region To set the Azure North America region, refer to the code below: Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_MANAGEMENT_TOKEN = CONTENTSTACK_APP_HOST = azure-na-app.contentstack.com CONTENTSTACK_API_HOST = azure-na-api.contentstack.com CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false". ``` ### Nuxt.js App Configuration for Azure EU Region To set the Azure Europe region, refer to the code below: Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_MANAGEMENT_TOKEN = CONTENTSTACK_APP_HOST = azure-eu-app.contentstack.com CONTENTSTACK_API_HOST = azure-eu-api.contentstack.com # By default branch=main, if a branch is not provided# CONTENTSTACK_BRANCH = CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false". ``` ### Nuxt.js App Configuration for Google NA Region To set the Google North America region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_MANAGEMENT_TOKEN = CONTENTSTACK_APP_HOST = gcp-na-app.contentstack.comCONTENTSTACK_API_HOST = gcp-na-api.contentstack.com# By default branch=main, if a branch is not provided# CONTENTSTACK_BRANCH = CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false" ``` ### Nuxt.js App Configuration for Google EU Region To set the Google Europe region, refer to the code below: **Mandatory configuration parameters to enable Live Preview:** ``` CONTENTSTACK_MANAGEMENT_TOKEN = CONTENTSTACK_APP_HOST = gcp-eu-app.contentstack.comCONTENTSTACK_API_HOST = gcp-eu-api.contentstack.com# By default branch=main, if a branch is not provided# CONTENTSTACK_BRANCH = CONTENTSTACK_LIVE_PREVIEW = true # By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW=false" ``` ## Nuxt3 ### Nuxt3 App Configuration for Europe Region To set the Europe region, refer to the code below: ``` CONTENTSTACK_API_HOST = eu-api.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = eu-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false". ``` ### Nuxt3 App Configuration for Australia Region To set the Australia region, refer to the code below: ``` CONTENTSTACK_API_HOST = au-api.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = au-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = au-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false". ``` ### Nuxt3 App Configuration for Azure NA Region To set the Azure North America region, refer to the code below: ``` CONTENTSTACK_API_HOST = azure-na-api.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = azure-na-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = azure-na-app.contentstack.com CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false". ``` ### Nuxt3 App Configuration for Azure EU Region To set the Azure Europe region, refer to the code below: ``` CONTENTSTACK_API_HOST = azure-eu-api.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = azure-eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = azure-eu-app.contentstack.com CONTENTSTACK_BRANCH = CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false". ``` ### Nuxt3 App Configuration for Google NA Region To set the Google North America region, refer to the code below: ``` CONTENTSTACK_API_HOST = gcp-na-api.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = gcp-na-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = gcp-na-app.contentstack.comCONTENTSTACK_BRANCH = CONTENTSTACK_LIVE_PREVIEW = true#By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false" ``` ### Nuxt3 App Configuration for Google Europe Region To set the Google Europe region, refer to the code below: ``` CONTENTSTACK_API_HOST = gcp-eu-api.contentstack.com ``` **Mandatory configuration parameters to enable Live Preview:** ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = gcp-eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = gcp-eu-app.contentstack.comCONTENTSTACK_BRANCH = CONTENTSTACK_LIVE_PREVIEW = true# By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW=false" ``` ## StencilJS ### StencilJS App Configuration for Europe Region To set the Europe region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = eu-app.contentstack.comCONTENTSTACK_API_HOST = eu-api.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### StencilJS App Configuration for Australia Region To set the Australia region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = au-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = au-app.contentstack.comCONTENTSTACK_API_HOST = au-api.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### StencilJS App Configuration for Azure NA Region To set the Azure North America region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = azure-na-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = azure-na-app.contentstack.com CONTENTSTACK_API_HOST = azure-na-api.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### StencilJS App Configuration for Azure EU Region To set the Azure Europe region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = azure-eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = azure-eu-app.contentstack.com CONTENTSTACK_API_HOST = azure-eu-api.contentstack.comCONTENTSTACK_BRANCH = CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS= true". ``` ### StencilJS App Configuration for Google NA Region To set the Google North America region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = gcp-na-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = gcp-na-app.contentstack.comCONTENTSTACK_API_HOST = gcp-na-api.contentstack.comCONTENTSTACK_BRANCH = CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false"CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS= true" ``` ### StencilJS App Configuration for Google Europe Region To set the Google Europe region, refer to the code below: **Mandatory configuration parameters to enable Live Preview:** ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = gcp-eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = gcp-eu-app.contentstack.comCONTENTSTACK_API_HOST = gcp-eu-api.contentstack.comCONTENTSTACK_BRANCH = CONTENTSTACK_LIVE_PREVIEW = true # By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW=false"CONTENTSTACK_LIVE_EDIT_TAGS = false # By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS=true" ``` ## Next.js Static Site Generator ### Next.js SSG App Configuration for Europe Region To set the Europe region, refer to the code below: Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = eu-app.contentstack.comCONTENTSTACK_API_HOST = eu-api.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### Next.js SSG App Configuration for Australia Region To set the Australia region, refer to the code below: Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = au-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = au-app.contentstack.comCONTENTSTACK_API_HOST = au-api.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### Next.js SSG App Configuration for Azure NA Region To set the Azure North America region, refer to the code below: Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = azure-na-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = azure-na-app.contentstack.com CONTENTSTACK_API_HOST = azure-na-api.contentstack.com CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### Next.js SSG App Configuration for Azure EU Region To set the Azure Europe region, refer to the code below: Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = azure-eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = azure-eu-app.contentstack.com CONTENTSTACK_API_HOST = azure-eu-api.contentstack.com # By default branch=main, if a branch is not provided# CONTENTSTACK_BRANCH = CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS= true". ``` ### Next.js SSG App Configuration for Google NA Region To set the Google North America region, refer to the code below: #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = gcp-na-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = gcp-na-app.contentstack.com CONTENTSTACK_API_HOST = gcp-na-api.contentstack.com # By default branch=main, if a branch is not provided# CONTENTSTACK_BRANCH = CONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false"CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS= true" ``` ### Next.js SSG App Configuration for Google Europe Region To set the Google Europe region, refer to the code below: **Mandatory configuration parameters to enable Live Preview:** ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = gcp-eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = gcp-eu-app.contentstack.com CONTENTSTACK_API_HOST = gcp-eu-api.contentstack.com # By default branch=main, if a branch is not provided# CONTENTSTACK_BRANCH = CONTENTSTACK_LIVE_PREVIEW = true # By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW=false"CONTENTSTACK_LIVE_EDIT_TAGS = false # By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS=true" ``` ## ASP.NET Blazor ### ASP.NET Blazor App Configuration for Europe Region To set the Europe region, refer to the code below: ``` { "ContentstackOptions": { "Host": "eu-cdn.contentstack.com", "ApiKey": "", "DeliveryToken": "", "Environment": "" }} ``` ### ASP.NET Blazor App Configuration for Azure NA Region To set the Azure North America region, refer to the code below: ``` { "ContentstackOptions": { "Host": "azure-na-cdn.contentstack.com", "ApiKey": "", "DeliveryToken": "", "Environment": "" }} ``` ### ASP.NET Blazor App Configuration for Australia Region To set the Australia region, refer to the code below: ``` { "ContentstackOptions": { "Host": "au-cdn.contentstack.com", "ApiKey": "", "DeliveryToken": "", "Environment": "" }} ``` ### ASP.NET Blazor App Configuration for Azure EU Region To set the Azure Europe region, refer to the code below: ``` { "ContentstackOptions": { "Host": "azure-eu-cdn.contentstack.com", "ApiKey": "", "DeliveryToken": "", "Environment": "", "Branch": "", }} ``` ### ASP.NET Blazor App Configuration for Google NA Region To set the Google North America region, refer to the code below: ``` { "ContentstackOptions": { "Host": "gcp-na-cdn.contentstack.com", "ApiKey": "", "DeliveryToken": "", "Environment": "", "Branch": "", }} ``` ### ASP.NET Blazor App Configuration for Google Europe Region To set the Google Europe region, refer to the code below: ``` { "ContentstackOptions": { "Host": "gcp-eu-cdn.contentstack.com", "ApiKey": "", "DeliveryToken": "", "Environment": "", "Branch": "" }} ``` ## Sveltekit ### Sveltekit App Configuration for Europe Region To set the Europe region, refer to the code below: ``` CONTENTSTACK_API_KEY = CONTENTSTACK_DELIVERY_TOKEN = CONTENTSTACK_ENVIRONMENT = CONTENTSTACK_API_HOST = eu-api.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = eu-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### Sveltekit App Configuration for Australia Region To set the Australia region, refer to the code below: ``` CONTENTSTACK_API_KEY = CONTENTSTACK_DELIVERY_TOKEN = CONTENTSTACK_ENVIRONMENT = CONTENTSTACK_API_HOST = au-api.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = au-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = au-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### Sveltekit App Configuration for Azure NA Region To set the Azure North America region, refer to the code below: ``` CONTENTSTACK_API_KEY = CONTENTSTACK_DELIVERY_TOKEN = CONTENTSTACK_ENVIRONMENT = CONTENTSTACK_API_HOST = azure-na-api.contentstack.com ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = azure-na-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = azure-na-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set “CONTENTSTACK_LIVE_EDIT_TAGS= true”. ``` ### Sveltekit App Configuration for Azure EU Region To set the Azure Europe region, refer to the code below: ``` CONTENTSTACK_API_KEY = CONTENTSTACK_DELIVERY_TOKEN = CONTENTSTACK_ENVIRONMENT = CONTENTSTACK_API_HOST = azure-eu-api.contentstack.com# By default branch=main, if a branch is not providedCONTENTSTACK_BRANCH = ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = azure-eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = azure-eu-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false".CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS= true". ``` ### Sveltekit App Configuration for Google NA Region To set the Google North America region, refer to the code below: ``` CONTENTSTACK_API_KEY = CONTENTSTACK_DELIVERY_TOKEN = CONTENTSTACK_ENVIRONMENT = CONTENTSTACK_API_HOST = gcp-na-api.contentstack.com# By default branch=main, if a branch is not providedCONTENTSTACK_BRANCH = ``` #### Mandatory configuration parameters to enable Live Preview ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = gcp-na-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = gcp-na-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true #By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW= false"CONTENTSTACK_LIVE_EDIT_TAGS = false #By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS= true" ``` ### Sveltekit App Configuration for Google Europe Region To set the Google Europe region, refer to the code below: ``` CONTENTSTACK_API_KEY = CONTENTSTACK_DELIVERY_TOKEN = CONTENTSTACK_ENVIRONMENT = CONTENTSTACK_API_HOST = gcp-eu-api.contentstack.com# By default branch=main, if a branch is not providedCONTENTSTACK_BRANCH = ``` **Mandatory configuration parameters to enable Live Preview:** ``` CONTENTSTACK_PREVIEW_TOKEN = CONTENTSTACK_PREVIEW_HOST = gcp-eu-rest-preview.contentstack.comCONTENTSTACK_APP_HOST = gcp-eu-app.contentstack.comCONTENTSTACK_LIVE_PREVIEW = true # By default, the live preview feature is enabled for this project. To disable it, set "CONTENTSTACK_LIVE_PREVIEW=false"CONTENTSTACK_LIVE_EDIT_TAGS = false # By default, live editing tags are disabled for this project. To enable it, set "CONTENTSTACK_LIVE_EDIT_TAGS=true" ``` --- ## URL: https://www.contentstack.com/docs/administration/selecting-region-in-sdks --- title: "Selecting Region in SDKs" description: "Selecting Region in SDKs" url: "https://www.contentstack.com/docs/administration/selecting-region-in-sdks" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: selecting-region-in-sdks.md --- # Selecting Region in SDKs In order to use the SDK for a particular region, you need to make certain changes to the SDK configurations for different technologies. For each technology given below, set the following region configuration according to your region. ## Prerequisites * A Contentstack SDK integrated for your technology * Stack API key * Delivery token * Environment name ## What You Will Learn * How to set a non-default region in each supported Contentstack SDK. * The region code or host value that maps to each Contentstack region. * How to set a branch together with a region where the SDK supports it. ## iOS ### For Swift By default, the SDK uses the North American region. Configuration changes are not required for North American region users. To set the Europe, AWS Australia, Azure North America, Azure Europe, or GCP region, refer to the code below: ``` var config: Config = Config(); config.region = ContentstackRegion.>; let stack:Stack = Contentstack.stackWithAPIKey("API_key", accessToken:"delivery_token", environmentName:"environment_id", config:config) ``` **Note:** * For AWS Europe, set the region as **eu.** * For AWS Australia (AWS AU), set the region as **au.** * For Azure North America, set the region as **azure\_na.** * For Azure Europe, set the region as **azure\_eu.** * For GCP NA, set region as **gcp\_na.** * For GCP EU, set region as **gcp\_eu.** ### For Objective-C By default, the SDK uses the North American region. Configuration changes are not required for North American region users. To set the Europe, AWS Australia, Azure North America, Azure Europe, or GCP region, refer to the code below: ``` Config *config = [[Config alloc] init]; config.region = >; Stack *stack = [Contentstack stackWithAPIKey:@"API_key" accessToken:@"delivery_token" environmentName:@"environment_id" config:config]; ``` **Note:** * For Europe, set the region as **EU**. * For AWS Australia (AWS AU), set the region as **AU**. * For Azure North America, set the region as **AZURE\_NA**. * For Azure Europe, set the region as **AZURE\_EU**. * For GCP NA, set region as **GCP\_NA**. * For GCP EU, set region as **GCP\_EU**. ## .NET Management SDK (CMA) For the .NET Management SDK, region selection is done through the CMA Host value in ContentstackClientOptions (not through Delivery SDK region enums). By default, the SDK uses AWS North America (api.contentstack.io). Set Host when your stack is in a different region. ``` using Contentstack.Management.Core; var options = new ContentstackClientOptions { Host = "au-api.contentstack.com", // AWS Australia (AWS AU) Authtoken = "AUTHTOKEN" }; var client = new ContentstackClient(options); ``` **For setting a branch with a region** If you want to initialize the SDK for a particular branch in a specific region, use the following code: ``` using Contentstack.Management.Core; using Contentstack.Management.Core.Models; var options = new ContentstackClientOptions { Host = "au-api.contentstack.com", // AWS Australia (AWS AU) Authtoken = "AUTHTOKEN" }; var client = new ContentstackClient(options); Stack stack = client.Stack("API_KEY", "MANAGEMENT_TOKEN", "BRANCH"); ``` **Region host values for .NET Management SDK** * AWS North America (AWS NA): api.contentstack.io * AWS Europe (AWS EU): eu-api.contentstack.com * AWS Australia (AWS AU): au-api.contentstack.com * Azure North America (Azure NA): azure-na-api.contentstack.com * Azure Europe (Azure EU): azure-eu-api.contentstack.com * GCP North America (GCP NA): gcp-na-api.contentstack.com * GCP Europe (GCP EU): gcp-eu-api.contentstack.com For complete setup steps and authentication flow, see .NET Management - Get Started. ## Android By default, the SDK uses the North American region. Configuration changes are not required for North American region users. To set the Europe, AWS Australia, Azure North America, Azure Europe, or GCP region, refer to the code below: ``` Config config = Config(); Config.region = ContentstackRegion.>; Stack stack = Contentstack.stack(context, "stack_api_key", "delivery_token", "environment_name", config); ``` **For Setting the Branch for a Region.** If you want to initialize SDK in a particular branch use the code given below: ``` Config config = Config(); config.setRegion(ContentstackRegion.>); config.setBranch("branch"); Stack stack = Contentstack.stack("api_key", "delivery_token", "environment_name", config); ``` **Note:** * For Europe, set the region as **EU**. * For AWS Australia (AWS AU), set the region as **AU**. * For Azure North America, set the region as **AZURE\_NA**. * For Azure Europe, set the region as **AZURE\_EU**. * For GCP NA, set region as **GCP\_NA**. * For GCP EU, set region as **GCP\_EU**. ## Java By default, the SDK uses the North American region. Configuration changes are not required for North American region users. To set the Europe, AWS Australia, Azure North America, Azure Europe, or GCP region, refer to the code below: ``` Config config = Config(); Config.region = ContentstackRegion.>; Stack stack = Contentstack.stack("stack_api_key", "delivery_token", "environment_name", config); ``` **For Setting the Branch for a Region.** If you want to initialize SDK in a particular branch use the code given below: ``` Config config = Config(); config.setRegion(ContentstackRegion.>); config.setBranch("branch"); Stack stack = Contentstack.stack("api_key", "delivery_token", "environment_name", config); ``` **Note:** * For Europe, set the region as **EU**. * For AWS Australia (AWS AU), set the region as **AU**. * For Azure North America, set the region as **AZURE\_NA**. * For Azure Europe, set the region as **AZURE\_EU**. * For GCP NA, set region as **GCP\_NA**. * For GCP EU, set region as **GCP\_EU**. ## Ruby By default, the SDK uses the North American region. Configuration changes are not required for North American region users. To set the Europe, AWS Australia, Azure North America, Azure Europe, or GCP region, refer to the code below: ``` @stack = Contentstack::Client.new("API_key", "delivery_token", "environment_id",{"region": Contentstack::Region::>}) ``` **For Setting the Branch for a Region.** If you want to initialize SDK in a particular branch use the code given below: ``` @stack = Contentstack::Client.new("api_key", "delivery_token", "environment",{"region": Contentstack::Region::>, "branch": "branch"}) ``` **Note:** * For Europe, set the region as **EU**. * For AWS Australia (AWS AU), set the region as **AU**. * For Azure North America, set the region as **AZURE\_NA**. * For Azure Europe, set the region as **AZURE\_EU**. * For GCP NA, set region as **GCP\_NA**. * For GCP EU, set region as **GCP\_EU**. ## JS/ React Native/ Node.js By default, the SDK uses the North American region. Configuration changes are not required for North American region users. To set the Europe, AWS Australia, Azure North America, Azure Europe, or GCP region, refer to the code below: ``` const Stack = new Contentstack({ 'api_key': "stack_api_key", 'delivery_token': "environment-specific_delivery_token", 'environment': "environment_name", "region": Contentstack.Region.>}) ``` **For Setting the Branch for a Region.** If you want to initialize SDK in a particular branch use the code given below: ``` const Stack = Contentstack.Stack({ api_key: 'api_key', delivery_token: 'delivery_token', environment: 'environment', region: Contentstack.Region.>, host: '>', branch: 'branch') ``` **Note:** * For Europe, set region as **EU** and host as eu-cdn.contentstack.com. * For Azure North America, set region as **AZURE\_NA** and host as azure-na-cdn.contentstack.com. * For Azure Europe, set the region as **AZURE\_EU** and host as azure-eu-cdn.contentstack.com. * For GCP North America, set the region as **GCP\_NA** and host as gcp-na-cdn.contentstack.com. * For GCP Europe, set the region as **GCP\_EU** and host as gcp-eu-cdn.contentstack.com. * For AWS Australia (AWS AU), set the region as **AU** and host as au-cdn.contentstack.com. ## TypeScript By default, the SDK uses the North American region. Configuration changes are not required for North American region users. ``` const stack = contentstack.stack({ apiKey: "apiKey", deliveryToken: "deliveryToken", environment: "environment_name", region: Region.> }) ``` **For setting the Branch for a region** If you want to initialize SDK in a particular branch use the code given below: ``` const stack = contentstack.stack({ apiKey: "api_key", deliveryToken: "delivery_token", environment: "environment", region: Region.>; host: ">", branch: "branch" }) ``` **Note:** * For **Europe**, set the region as **EU**. * For **Azure North America**, set the region as **AZURE\_NA**. * For **Azure Europe**, set the region as **AZURE\_EU**. * For **GCP NA**, set region as **GCP\_NA**. * For **GCP EU**, set region as **GCP\_EU**. * For **AWS Australia (AWS AU)**, set region as **AU**. ## JS Marketplace By default, the SDK uses the North American region, so configuration changes are not required for North American region users. To set the Europe, AWS Australia, Azure North America, Azure Europe, or GCP region, refer to the code below: ``` const contentstackClient = contentstack.client({ region: contentstack.Region.> }) ``` **Note:** * For Europe, set the region as **EU**. * For AWS Australia (AWS AU), set the region as **AU**. * For Azure North America, set the region as **AZURE\_NA**. * For Azure Europe, set the region as **AZURE\_EU**. * For GCP NA, set region as **GCP\_NA**. * For GCP EU, set region as **GCP\_EU**. ## Python By default, the SDK uses the North American region. Configuration changes are not required for North American region users. To set the Europe, AWS Australia, Azure North America, Azure Europe, or GCP region, refer to the code below: ``` import contentstack config = Config() config.region = ContentstackRegion.>; stack = contentstack.Stack(api_key="API_key", access_token="delivery_token",environment= "environment_id", config) ``` **For Setting the Branch for a Region:** If you want to initialize SDK in a particular branch use the code given below: ``` import contentstack stack = contentstack.Stack(api_key='api_key', access_token='delivery_token',environment= 'environment_name', region=>;,branch='branch') ``` **Note:** * For Europe, set the region as **EU**. * For AWS Australia (AWS AU), set the region as **AU**. * For Azure North America, set the region as **AZURE\_NA**. * For Azure Europe, set the region as **AZURE\_EU**. * For GCP NA, set region as **GCP\_NA**. * For GCP EU, set region as **GCP\_EU**. ## PHP By default, the SDK uses the North American region. Configuration changes are not required for North American region users. To set the Europe, AWS Australia, Azure North America, Azure Europe, or GCP region, refer to the code below: ``` $stack = Contentstack::Stack('api_key', 'delivery_token', 'environment_name', array('region' => ContentstackRegion.>)); ``` **For Setting the Branch for a Region.** If you want to initialize SDK in a particular branch use the code given below: ``` static Stack = Contentstack::Stack('api_key', 'delivery_token', 'environment_name', array('region' =>> Contentstack::Region::>, "branch"=>> "branch")) ``` **Note:** * For Europe, set the region as **EU**. * For AWS Australia (AWS AU), set the region as **AU**. * For Azure North America, set the region as **AZURE\_NA**. * For Azure Europe, set the region as **AZURE\_EU**. * For GCP NA, set region as **GCP\_NA**. * For GCP EU, set region as **GCP\_EU**. ## Dart By default, the SDK uses the North American region. Configuration changes are not required for North American region users. To set the Europe, AWS Australia, Azure North America, Azure Europe, or GCP region, refer to the code below: ``` import 'package:contentstack/contentstack.dart' as contentstack; final stack = contentstack.Stack(apiKey, deliveryToken, environment, region: contentstack.Region.>); ``` **For Setting the Branch for a Region.** If you want to initialize SDK in a particular branch use the code given below: ``` import 'package:contentstack/contentstack.dart' as contentstack; final stack = contentstack.Stack('apiKey', 'deliveryToken', 'environment', region: contentstack.Region.>, branch: 'branch'); ``` **Note:** * For Europe, set the region as **eu**. * For AWS Australia (AWS AU), set the region as **au**. * For Azure North America, set the region as **azure\_na**. * For Azure Europe, set the region as **azure\_eu**. * For GCP NA, set region as **gcp\_na**. * For GCP EU, set region as **gcp\_eu**. --- ## URL: https://www.contentstack.com/docs/administration/session-management --- title: "Session Management" description: "Easily manage and secure your Contentstack sessions. Learn how to terminate unwanted sessions to protect your account on shared devices." url: "https://www.contentstack.com/docs/administration/session-management" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: session-management.md --- # Session Management Session Management in Contentstack allows you to monitor and manage all active sessions associated with your account. This protects your account by letting you end unused sessions, especially on shared or public devices. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) ## What You Will Learn * How to find Session Management under the Security tab in Profile Settings. * How to terminate active sessions on other devices and browsers. ## Terminate Other Sessions To terminate all active sessions, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Click the profile icon in the top-right corner of the dashboard and select **Profile Settings**.![Session\_Management\_1.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2f536a51404abc75/6971bc2c595a271967af6ed7/Session_Management_1.png) 2. In the **Profile** section, click the **Security** tab in the left navigation panel.![Session\_Management\_2.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte7b875aa57113453/6971bc2c31839f1a9cf3500b/Session_Management_2.png) 3. Under **Session Management**, if there are active sessions on other devices or browsers, you see the following message:![Session\_Management\_3.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0880dd124f7a3cec/6971bc2c875e4806f9c882e1/Session_Management_3.png) 4. Click **Terminate Other Sessions** to immediately sign out from all other devices. Only your current session remains active. **Note**: The **Terminate Other Sessions** button appears disabled when there are no additional active sessions. --- ## URL: https://www.contentstack.com/docs/administration/set-up-scim-provisioning-with-microsoft-azure-ad --- title: "Set Up SCIM Provisioning with Microsoft Entra ID/Azure AD" description: "Set Up SCIM Provisioning with Microsoft Azure AD that allows you to use Microsoft Azure AD to provision or deprovision users automatically with Contentstack." url: "https://www.contentstack.com/docs/administration/set-up-scim-provisioning-with-microsoft-azure-ad" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: set-up-scim-provisioning-with-microsoft-azure-ad.md --- # Set Up SCIM Provisioning with Microsoft Entra ID/Azure AD You can configure Contentstack as a provisioning app in Microsoft Entra ID previously known as the Azure Active Directory (Azure AD). This allows you to use Microsoft Entra ID/Azure AD to provision or deprovision users automatically with Contentstack. **Note**: Before proceeding with this guide, ensure that SCIM enabled for your Contentstack organization. If you do not see SCIM settings within **Administration**, reach out to our [support](mailto:support@contentstack.com) team to get it enabled for your organization. ## Prerequisite * [Microsoft Azure AD tenant](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-create-new-tenant) that has [permission](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference) to configure provisioning * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner, Admin, or Security Manager](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to enable SCIM in Contentstack. * How to install the Azure Generic SCIM app from the Contentstack Marketplace. * How to add Contentstack to Microsoft Azure AD. * How to configure automatic provisioning and attribute mappings in Azure AD. * How to assign users and groups, and map groups to roles in Contentstack. ## Steps for Execution Here’s a step-by-step guide that explains how you can do this. 1. [Enable SCIM in Contentstack](#enable-scim-in-contentstack) 2. [Install Azure Generic SCIM App from Contentstack Marketplace](#install-azure-generic-scim-app-from-contentstack-marketplace) 3. [Add Contentstack to Microsoft Azure AD](#add-contentstack-to-microsoft-azure-ad) 4. [Configure Provisioning in Microsoft Azure AD](#configure-provisioning-in-microsoft-azure-ad) 5. [Add Users and Groups to your Application](#add-users-and-groups-to-your-application) 6. [Create Group Mapping in Contentstack](#create-group-mapping-in-contentstack) 1. ## Enable SCIM in Contentstack To allow provisioning of users in Contentstack’s organization through Microsoft Azure AD, you need to enable SCIM in Contentstack by performing the following steps: 1. Log in to your [Contentstack account](https://www.contentstack.com/login/), then navigate to **Administration** through the App Switcher. 2. Open the **SCIM** settings and select the **Enable SCIM** option. 3. On the resulting **Enable SCIM** modal, click **Enable**.![Enable\_SCIM\_1.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am7e386a8976a8ac99/9ac05fc9f7dd0f7679eb9c10/Enable_SCIM_1.png?locale=en-us) After enabling SCIM, you’ll see the **Group Mapping** section. This section will enable you to set permissions for a group of users provisioned via Microsoft Azure AD app. 2. ## Install Azure Generic SCIM App from Contentstack Marketplace 1. Navigate to the “App Switcher” icon in the top-right corner and click **Marketplace**.![Contentstack-App-Switcher-Marketplace](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt47c618781b542b64/68ee96ad6bfd93c9913fee8a/Contentstack-App-Switcher-Marketplace.png) 2. Within the Marketplace, you can see the available apps. Hover over the **Azure Generic SCIM** app click **Install**. ![Azure\_Geniric\_app\_Install.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am4e451c27578f68c6/f80de8bb9c3afbf3a826c818/Azure_Geniric_app_Install.png?locale=en-us) 3. In the resulting authorization window, click the **Authorize & Install** button. ![Azure-Generic-SCIM-Install-App](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5413d780dff41f9c/64b91c49bbc0385fa5776cd1/Azure-Generic-SCIM-Install-App.png) 4. A tenant URL and a secret token are generated on the successful installation of the app. Copy the tenant URL and the secret token for future reference. ![tenant\_url\_and\_token.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt9f6a045cd71459c8/635b83455f4635106961656c/tenant_url_and_token.png) 3. ## Add Contentstack to Microsoft Azure AD **Note**: In order to add Contentstack to the Azure AD application gallery, you must be a Microsoft Azure AD administrator. If you've already created an app for Contentstack to use SSO, you can skip this step. 1. Log in to the Microsoft Azure portal and click **Azure Active Directory**. ![Click-AAD.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt4f1e1b4c998f0e8b/635b8321f5b370107c3347e8/Click-AAD.png) 2. Click **Enterprise applications** from the left navigation panel. ![Click\_enterprise\_applications.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt40d176d0ec654ee6/635b82d8a86a565857b1da73/Click_enterprise_applications.png) 3. Click **\+ New application.**![Click\_new\_application.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltac733787705ce8f6/635b82d89a123e5dbdbc9c4e/Click_new_application.png) 4. Within the Azure AD Gallery, click **Create your own application**. ![Create\_your\_own\_app.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blta4fbe209151db344/635b8321882b96108ae78d74/Create_your_own_app.png) 5. In the resulting **Create your own application** panel, enter the application name, select the **Non-Gallery** option, and click **Create** to create the Contentstack app. ![Create\_CS\_app.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt9db07812922c3791/635b8321ae3c755821909705/Create_CS_app.png) 6. Now, your Contentstack app is added to the Microsoft Azure Active Directory. ![CS\_in\_AAD.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt9680f3125bcab3c3/635b8322ff7b405f6b3f4329/CS_in_AAD.png) 4. ## Configure Provisioning in Microsoft Azure AD 1. Within your Contentstack app in Microsoft Azure AD, click **Provisioning** from the left navigation panel. ![Click\_provisioning.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltfe391cc4a98b8bfc/635b8321ff305610f618b664/Click_provisioning.png) 2. Click **Get started**. It opens up in the **Provisioning** window. Change the **Provisioning Mode** to **Automatic** and provide the **Admin** credentials, such as **Tenant URL** and **Secret Token** of the installed **Azure Generic SCIM** app. * **Tenant URL**: Contentstack’s SCIM URL is used as **Tenant URL**. Enter the tenant URL generated in [step 2.4](#install-azure-generic-scim-app-from-contentstack-marketplace) while installing the Azure Generic SCIM app. * For the **Secret Token** field, add the token generated in [step 2.4](#install-azure-generic-scim-app-from-contentstack-marketplace) while installing the Azure Generic SCIM app. ![Admin\_credentials.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltab479e7a14ff39a1/635b82d7ff7b405f6b3f431d/Admin_credentials.png) 3. Click **Test Connection** to ensure connection between the Azure AD and the Contentstack app. Click **Save** to save the app provisioning configurations. 4. Under the **Mappings** section, select **Provision Azure Active Directory Users**. ![AAD\_users\_mapping.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltf3361af7395b8ecd/635b82d7a739cc5f6cbd5bd7/AAD_users_mapping.png) 5. In the **Attribute-Mapping** section, map user attributes, such as userName, givenName, surname, and IsSoftDeleted. ![User\_attributes\_mapping.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltab0e530b59e9da8f/635b8345eb4a5478dab72beb/User_attributes_mapping.png) 6. Click **Save** to save the changes. 7. Navigate back to the **Mappings** section and select **Provision Azure Active Directory Groups**. ![AAD\_groups\_mapping.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt7539afd438777673/635b82d7882b96108ae78d70/AAD_groups_mapping.png) 8. In the **Attribute-Mapping** section, map group attributes such as displayName and members. ![group\_mapping.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt25ae3f3b835eab78/635b82f91012fd77000850f1/group_mapping.png) 9. Click **Save** to save the changes. 10. Under the **Settings** section, for the **Notification Email** field, enter the email address of the person or group who should receive the provisioning error notifications. Check the “Send an email notification when a failure occurs” check box. ![email\_notification.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltaacd040fa0a8acf9/635b8321127d2c10959f6cb4/email_notification.png) 11. For **Scope**, select a suitable option. ![scope\_setting.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltef4ab0b416d5baab/635bc9e62746fd107d68b88a/scope_setting.png) 12. Set the **Provisioning Status** to **On** for enabling Azure AD provisioning. ![provision\_status\_on.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltcce1ddc3cb4f2396/635bcaa8da572d57ecd26308/provision_status_on.png) 13. Click **Save** to save the provisioning. 5. ## Add Users and Groups to your Application After configuring the provisioning settings, you need to add users to your newly added application. **Note**: Skip this step if you have selected "Sync All Users and Groups" in [step 4.11](#configure-provisioning-in-microsoft-azure-ad). To add Users and Groups to your Application, perform the following steps: 1. Navigate to **Azure Active Directory**, select **Enterprise applications**, select **All applications**, and then select your application. ![select\_appln.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt787473d977b51fb7/635bcd95127d2c10959f6dbf/select_appln.png) 2. Within the **Getting Started** section, click the **Assign users and groups** tab. ![assign\_users\_and\_groups.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt7d6d3f66d6617cb0/635bce6f7a7bad106b9add70/assign_users_and_groups.png) 3. Click the **\+ Add user/group** button. ![add\_user\_and\_group.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt61aa33fee4d3ef4a/635b82d82746fd107d68b2b8/add_user_and_group.png) 4. In the resulting window, click **None selected** under **Users and groups**. ![click\_none\_users\_and\_groups.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt3172777830bc5aa3/6368cd47960cb16cff698b14/click_none_users_and_groups.png) 5. A list of users appears in the resulting **Users and groups** modal. From the given list, click **Select** to select the users and groups and click **Assign** to assign them the app roles. ![assign\_user\_to\_app\_role.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt74bc606e81a0d3c1/6368ca4ad085883b63454347/assign_user_to_app_role.png) 6. ## Create Group Mapping in Contentstack Group mapping assigns roles to SCIM groups across your organization and its products in Contentstack. The roles you set for a group apply to all the users added to that group. To perform group mapping, perform the following steps: 1. Navigate to **Administration** through the App Switcher, then open the **SCIM** settings. 2. From the **SCIM Group** dropdown, select the group for which you want to set permissions. 3. Assign one or more organization-level **Administration** roles and product roles for the group. 4. Assign project-level roles for the group across stacks, spaces, or AgentOS projects. For example, if you set the “Developer” role for the “Developer stack” stack, users within the selected group will have a “Developer” role on that stack. 5. Finally, click **Update** to update the changes in the group mappings. This process sets up the SCIM Provisioning for your Contenstack account with the Microsoft Azure Active Directory. ## Related Resource * [SCIM API](/docs/developers/apis/scim-api) --- ## URL: https://www.contentstack.com/docs/administration/set-up-scim-provisioning-with-okta --- title: "Set Up SCIM Provisioning with Okta" description: "Set Up SCIM Provisioning with Okta that allows you to use Okta to provision or deprovision users automatically with Contentstack." url: "https://www.contentstack.com/docs/administration/set-up-scim-provisioning-with-okta" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-28" filename: set-up-scim-provisioning-with-okta.md --- # Set Up SCIM Provisioning with Okta **Warning**: This set up guide is deprecated. Please visit our documentation on [Set Up SCIM Provisioning with Okta Native App](/docs/administration/set-up-scim-provisioning-with-okta-native-app). You can configure Contentstack as a provisioning app in Okta. This allows you to use Okta to provision or deprovision users automatically with Contentstack. **Note**: Before proceeding with this guide, ensure that SCIM enabled for your Contentstack organization. If you do not see SCIM settings within **Administration**, reach out to our [support](mailto:support@contentstack.com) team to get it enabled for your organization. ## Prerequisites * [Okta tenant](https://developer.okta.com/docs/concepts/multi-tenancy/#what-is-a-tenant) that has [permission](https://help.okta.com/en-us/Content/Topics/Security/administrators-admin-comparison.htm#Applicat) to configure provisioning * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner, Admin, or Security Manager](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to enable SCIM in Contentstack. * How to install the Okta Generic SCIM app from the Contentstack Marketplace. * How to add the Contentstack app to Okta. * How to configure provisioning and attribute mappings in Okta. * How to assign users and groups, and map groups to roles in Contentstack. ## Steps for Execution Here’s a step-by-step guide that explains how you can do this. 1. [Enable SCIM in Contentstack](#enable-scim-in-contentstack) 2. [Install the Okta Generic SCIM App from Contentstack Marketplace](#install-the-okta-generic-scim-app-from-contentstack-marketplace) 3. [Add the Contentstack App to Okta](#add-the-contentstack-app-to-okta) 4. [Configure Provisioning in Okta](#configure-provisioning-in-okta) 5. [Assign Users and Groups to Your Application](#assign-users-and-groups-to-your-application) 6. [Create Group Mapping in Contentstack](#create-group-mapping-in-contentstack) 1. ## Enable SCIM in Contentstack To allow provisioning of users in Contentstack’s organization through Okta, you need to enable SCIM in Contentstack by performing the following steps: 1. Log in to your Contentstack account, then navigate to **Administration** through the App Switcher. 2. Open the **SCIM** settings and select the **Enable SCIM** option. 3. On the resulting **Enable SCIM** modal, click **Enable**.![Enable\_SCIM\_1.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am7e386a8976a8ac99/9ac05fc9f7dd0f7679eb9c10/Enable_SCIM_1.png?locale=en-us) 2. ## Install the Okta Generic SCIM App from Contentstack Marketplace 1. On the left navigation panel, click the "Marketplace" icon and then **Apps**. Type out “Okta” in the search bar as follows:![select\_okta\_frop\_MP\_apps.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2b169880342f59f4/6437fa538485c010da11b019/select_okta_frop_MP_apps.png) 2. Click the **Okta Generic SCIM** card and click **Install App**.![Install\_app.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3bd4e165913ea38f/6437fa2dcbf47d113c0b28d7/Install_app.png) 3. In the resulting authorization window, click the **Authorize & Install** button.![Okta-Install-App](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt17030df479922e5e/64b91d74ff3e9b816b4d7761/Okta-Install-App.png) 4. A **SCIM URL** and a **Secret Token** are generated on the successful installation of the app. Copy them both for future reference.![scim\_url\_and\_token.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt203fd251c7c8a5fa/6437fa5335650a11076449dc/scim_url_and_token.png) 3. ## Add the Contentstack App to Okta **Note**: In order to add Contentstack to the Okta application integration, you must be an administrator. To set up an app for Contentstack to use single sign-on (SSO), refer to our [Configure Contentstack App in Okta](/docs/administration/set-up-sso-with-okta/#configure-contentstack-app-in-okta). If you've already created an app for Contentstack, you can skip this step. 4. ## Configure Provisioning in Okta To enable your app to use the provisioning feature, before adding or removing a user from the Contentstack organization, you need to perform the following steps: 1. Navigate to the **General** tab and click **Edit**.![general-edit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte16588e90db5c912/6437fa2de663291176df340d/general-edit.png) 2. Within your Contentstack app in Okta, check the **Enable SCIM provisioning** checkbox and click **Save**.![enable\_provisioning\_and\_save.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt02b5506db3f2aaaa/6437f9d9b2ef0d11ecea05b2/enable_provisioning_and_save.png) 3. Go to the **Provisioning** tab, and click **Edit**. Provide the following credentials in the **SCIM Connection window**: * **SCIM connector base URL**: Contentstack’s SCIM URL is used as **SCIM connector base URL**. Enter the **SCIM URL** generated in [**step 2.4**](#install-the-okta-generic-scim-app-from-contentstack-marketplace) while installing the **Okta Generic SCIM** app. * **Unique identifier field for users**: Enter a unique username. * **Supported provisioning actions**: Under this section, enable **Push New Users**, **Push Profile Updates**, and **Push Groups**. * **Authentication mode**: Select **HTTP Header** from the drop down. * **HTTP Header**: Add the **Secret Token** generated in [**step 2.4**](#install-the-okta-generic-scim-app-from-contentstack-marketplace) as the **Bearer** token for the **Authorization** field.![scim\_connection\_modal\_credentials.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9fe9151574b79712/6437fa5270368e118fdf14d1/scim_connection_modal_credentials.png) 4. Click **Test Connector Configuration** (see above screenshot) to ensure the connection between the Okta and the Contentstack app is successful. Click **Save** to save the app provisioning configurations. 5. Navigate to the **Settings > To App > Contentstack Attribute Mappings** section to map user attributes such as userName, givenName, and familyName.![attribute\_mapping.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd67982076e1a8676/6437f9d937ecbf10cadcf4b3/attribute_mapping.png) 6. Navigate back to the **Settings > To App** section and click **Edit**. 7. Enable **Create Users** for provisioning, and **Deactivate Users** for deprovisioning.![enable\_provisioning\_and\_deprovisioning.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt64b2279d3a409bf7/6437f9d9eb41fa1100c8412f/enable_provisioning_and_deprovisioning.png) 8. Click **Save** to save the provisioning settings. 5. ## Assign Users and Groups to Your Application After configuring the provisioning settings, you need to assign either users or groups (of users) to your app. Let’s see how to do them both. * ### Assign People to Your Application To assign people to your application, perform the following steps: 1. Navigate to the **Assignments** tab. Click the **Assign** dropdown and select the **Assign to People** option.![people\_assignments.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte8dc6653f55f4046/6437fa2d7f99b91181b33747/people_assignments.png) 2. You need to provide the individual's email address and click **Assign**.![people\_assignment\_modal.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1ec1f310b96bb17c/6437fa2d243bd1112e62f93b/people_assignment_modal.png) 3. In the resulting people assignment modal, click **Save** **and** **Go Back**. 4. Click **Done** to save the assignment. The people assignments are listed as shown below:![view\_people\_assignment.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7d6dc8a6abf630bd/6437fa537ae71310d19e3179/view_people_assignment.png) * ### Assign Groups to Your Application To assign groups to your application, perform the following steps: 1. Navigate to the **Assignments** tab. Click the **Assign** dropdown and select the **Assign to Groups** option.![assign\_groups.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3c2d2ecbdd9a3b5a/6437f9d9baf8ae10e2170897/assign_groups.png) 2. Click **Assign** against the group for assigning the group to your app.![assign\_group\_and\_save.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte4874d15079d11b8/6437f9d8cbf631109cafb22d/assign_group_and_save.png) 3. In the resulting **Assign Contentstack to Groups** modal, provide the required information and click **Save** **and** **Go Back**. Then, click **Done**. * Another way to assign groups to your application is via the **Push Groups** method where you add rules and all groups that meet the rules will be added to the Contentstack app. Here’s how to do it: 1. Navigate to the **Push Groups** tab. Click the **Push Groups** dropdown and select **Find groups by rule**.![push\_groups.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte0bfade1d90afd42/6437fa2e8f121010dc4ca835/push_groups.png) 2. In the resulting window, add some rules for the group and click **Create Rule**.![create\_rule.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6ef07b29a0c3d60a/6437f9d9ba137c11cf05a5ec/create_rule.png) * Create a rule that matches with the groups to be pushed to Contentstack. For example, the rule created in the above screenshot will push all groups with a name that starts with “Contentstack” to your app (Contentstack). 6. ## Create Group Mapping in Contentstack Group mapping assigns roles to SCIM groups across your organization and its products in Contentstack. The roles you set for a group apply to all the users added to that group. To perform group mapping, perform the following steps: 1. Navigate to **Administration** through the App Switcher, then open the **SCIM** settings. 2. From the **SCIM Group** dropdown, select the group for which you want to set permissions. 3. Assign one or more organization-level **Administration** roles and product roles for the group. 4. Assign project-level roles for the group across stacks, spaces, or AgentOS projects. For example, if you set the “Developer” role for the “Developer stack” stack, users within the selected group will have a “Developer” role on that stack. 5. Finally, click **Update** to update the changes in the group mappings. This process sets up the SCIM Provisioning for your Contenstack account with the Okta. ## Related Resource * [SCIM API](/docs/developers/apis/scim-api) --- ## URL: https://www.contentstack.com/docs/administration/set-up-scim-provisioning-with-okta-native-app --- title: "Set Up SCIM Provisioning with Okta Native App" description: "Set up SCIM provisioning seamlessly with Okta Native App. Enable automatic user provisioning in Contentstack via Okta. Follow our guide now!" url: "https://www.contentstack.com/docs/administration/set-up-scim-provisioning-with-okta-native-app" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: set-up-scim-provisioning-with-okta-native-app.md --- # Set Up SCIM Provisioning with Okta Native App You can configure Contentstack as a provisioning app in Okta. This allows you to use Okta to provision or deprovision users automatically with Contentstack. **Note**: Before proceeding with this guide, ensure that SCIM enabled for your Contentstack organization. If you do not see SCIM settings within **Administration**, reach out to our [support](mailto:support@contentstack.com) team to get it enabled for your organization. ## Prerequisite * [Okta tenant](https://developer.okta.com/docs/concepts/multi-tenancy/#what-is-a-tenant) that has [permission](https://help.okta.com/en-us/Content/Topics/Security/administrators-admin-comparison.htm#Applicat) to configure provisioning * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner, Admin, or Security Manager](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to enable SCIM in Contentstack. * How to add the Contentstack app to Okta from the App Catalog. * How to configure API-integration provisioning in Okta with a region-specific base URL. * How to assign users and groups to your application. * How to map groups to roles in Contentstack. ## Steps for Execution Here’s a step-by-step guide that explains how you can do this. 1. [Enable SCIM in Contentstack](#enable-scim-in-contentstack) 2. [Add the Contentstack App to Okta](#add-the-contentstack-app-to-okta) 3. [Configure Provisioning in Okta](#configure-provisioning-in-okta) 4. [Assign Users and Groups to your Application](#assign-users-and-groups-to-your-application) 5. [Create Group Mapping in Contentstack](#create-group-mapping-in-contentstack) 1. ## Enable SCIM in Contentstack To allow provisioning of users in Contentstack’s organization through Okta Native App, you need to enable SCIM in Contentstack by performing the following steps: 1. Log in to your Contentstack account. 2. Navigate to **Administration** through the App Switcher. 3. Open the **SCIM** settings and enable the **Enable SCIM** toggle switch.![Enable\_SCIM\_1.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am7e386a8976a8ac99/9ac05fc9f7dd0f7679eb9c10/Enable_SCIM_1.png?locale=en-us) 4. On the resulting **Enable SCIM** modal, click **Enable**. 2. ## Add the Contentstack App to Okta **Note**: In order to add Contentstack to the Okta application integration, you must be an administrator. If you've already created an app for Contentstack, you can skip this step. 1. Log in to your Okta Admin account.![3\_Okta\_Admin\_Login.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt43079ae4b214afe0/661e53a3f5bcd1821a0c94b6/3_Okta_Admin_Login.png) 2. After logging in, you will see the Okta dashboard. Click on the **Application** tab and select **Applications.** 3. In the **Applications** page, you will see your already created applications, if any.![4\_Applications\_Page.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9af22fa5313fe044/661e53a4f19ed857fe2556be/4_Applications_Page.png) 4. Click the **Browse App Catalog** to set up an application for Contentstack.![5\_Browse\_App\_Catalog.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0f9ac1d16cf98b93/661e53a4645d1a3961cf0dea/5_Browse_App_Catalog.png) 5. Search for “Contentstack” within the **Browse App Integration Catalog** section and select the **Contentstack** app.![6\_Browse\_App\_Integration\_Catalog.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt864fc9ba207d542b/661e53a59db0245064a536f3/6_Browse_App_Integration_Catalog.png) 6. You will be redirected to the **Contentstack** application. Click on the **Add Integration** button.![7\_Add\_Integration\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1c77dc970816f150/661e53a5f19ed83ea12556c2/7_Add_Integration_Button.png) 7. You can edit the **Application label** as per your preference and click on **Done**.![8\_Application\_label.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb38a4b952b44bb4e/6666f340c97e387144f16389/Step_2.7_Application_Label.png) 8. Click **Save**. 3. ## Configure Provisioning in Okta To enable your app to use the provisioning feature, you need to perform the following steps: 1. Locate the **Sign On** tab and click the **Edit** button on Okta Configured App.![9\_Edit\_in\_SSO\_Tab.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd2c490d906fcf6ad/661e53a5f19ed807942556c6/9_Edit_in_SSO_Tab.png) 2. Enter the region-specific Application URL of the Contentstack app, as follows, to authorize Okta with SCIM in Contentstack. 1. For **North American** region, use https://app.contentstack.com 2. For **Europe** region, use https://eu-app.contentstack.com 3. For **Azure NA** region, use https://azure-na-app.contentstack.com 4. For **Azure EU** region, use https://azure-eu-app.contentstack.com 5. For **GCP NA** region, use https://gcp-na-app.contentstack.com 3. For **Application username format**, select **Email** from the dropdown.![13\_Application\_username\_format.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt94e7bdd076912fb6/661e53af45b6a8e45a390313/13_Application_username_format.png) 4. Click **Save**. 5. Click on **Provisioning** and then on **Configure API Integration**.![14\_Configure\_API\_Integration\_in\_Provisioning.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf9c4f44a34738428/661e53afd89750101a17ba90/14_Configure_API_Integration_in_Provisioning.png) 6. Select **Enable API integration**. ![15\_Enable\_API\_integration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt16833000a5dc264f/6666f2fe3c0f7e3771a43fe9/Step_3.6_Enable_API_Integration.png) 7. Navigate back to Contentstack, then navigate to **Administration** through the App Switcher and copy the Organization ID from the **Organization Info** page. 8. Next, you need to create the Base URL for the Contentstack Auth API. To do so, select the region-specific URL mentioned below, and replace ORG\_ID with the **Organization ID** value you copied in the above step **Region**  **Base URL**  North American  https://auth-api.contentstack.com/scim/v2.0/organizations/ORG\_ID  Europe  https://eu-auth-api.contentstack.com/scim/v2.0/organizations/ORG\_ID  Azure NA  https://azure-na-auth-api.contentstack.com/scim/v2.0/organizations/ORG\_ID  Azure EU  https://azure-eu-auth-api.contentstack.com/scim/v2.0/organizations/ORG\_ID 9. Now enter this URL beside the **Base URL** field as shown below:![16\_Base\_URL.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd31d61d923e0f3b7/6666f285a8434eed4826972b/Step_3.9_Base_URL.png) 10. Click on **Authenticate with Contentstack** and you will be redirected to the Contentstack Okta app to authorize. 11. Click on **Authorize & Install.** ![17\_Authorize\_&\_Install.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt138ed4168c119a2d/661e53af45b6a8dd5939030f/17_Authorize_&_Install.png) 12. Go to **To App** on the left under the Settings menu. Make sure you check all the values (as shown in screenshot below).![18\_To\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt25f9ff58f88bc042/661e53af0d562600e19cc901/18_To_App.png) 13. Click **Save**. 4. ## Assign Users and Groups to your Application After configuring the provisioning settings, you need to assign either users or groups (of users) to your app. Let’s see how to do them both. ### Assign People to your Application To assign people to your application, perform the following steps: 1. Navigate to the **Assignments** tab. Click the **Assign** dropdown and select the **Assign to People** option. ![19\_Assign\_to\_People\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5df0c5b494fb9f6f/662795e845f9893ed3cf4a3b/19_Assign_to_People_Button.png) 2. You need to provide the individual's email address and click the **Assign** button. ![20\_Assign\_CS\_to\_People.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9c1b4b04c4023757/661e53afa3e62295b04bdce5/20_Assign_CS_to_People.png) 3. In the resulting people assignment modal, click **Save and Go Back.** 4. Click **Done** to save the assignment. The people assignments are listed as shown below: ![21\_People\_assignments.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt06b60a9398b4b38b/662795e885518c1969556f17/21_People_assignments.png) ### Assign Groups to your Application To assign groups to your application, perform the following steps: 1. Navigate to the **Assignments** tab. Click the **Assign** dropdown and select the **Assign to Groups** option. ![22\_Assign\_to\_Groups\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdc024aa1ee4dde7c/662795e8b0544178b999ef88/22_Assign_to_Groups_Button.png) 2. Click **Assign** against the group for assigning the group to your app.![23\_Assign\_CS\_to\_Groups.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt55e00b351be99deb/6666f2351946582be64c806e/Step_4B.2_Assign_to_group.png) 3. Click **Done**. Another way to assign groups to your application is via the Push Groups method where you add rules and all groups that meet the rules will be added to the Contentstack app. Here’s how to do it: 1. Navigate to the **Push Groups** tab. Click the **Push Groups** dropdown and select **Find groups by rule**. ![24\_Find\_groups\_by\_rule.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt90a8716edd39644a/662795e8c9de468583d4829f/24_Find_groups_by_rule.png) 2. In the resulting window, add some rules for the group and click **Create Rule**. ![25\_Create\_Rule.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt162b0e307c85464f/662795e8cac8482f4928cd26/25_Create_Rule.png) Create a rule that matches with the groups to be pushed to Contentstack. For example, if you have a rule created that will push all groups with a name that starts with “Contentstack” to your app (Contentstack). 5. ## Create Group Mapping in Contentstack Group mapping assigns roles to SCIM groups across your organization and its products in Contentstack. The roles you set for a group apply to all the users added to that group. To perform group mapping, perform the following steps: 1. Navigate to **Administration** through the App Switcher, then open the **SCIM** settings. 2. From the **SCIM Group** dropdown, select the group for which you want to set permissions. 3. Assign one or more organization-level **Administration** roles and product roles for the group. 4. Assign project-level roles for the group across stacks, spaces, or AgentOS projects. For example, if you set the “Developer” role for the “Developer stack” stack, users within the selected group will have a “Developer” role on that stack. 5. Finally, click **Update** to update the changes in the group mappings. This process sets up the SCIM Provisioning for your Contenstack account with the Okta native app. ## Related Resource * [SCIM API](/docs/developers/apis/scim-api) --- ## URL: https://www.contentstack.com/docs/administration/set-up-scim-provisioning-with-onelogin --- title: "Set Up SCIM Provisioning With OneLogin" description: "Set Up SCIM Provisioning With OneLogin" url: "https://www.contentstack.com/docs/administration/set-up-scim-provisioning-with-onelogin" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: set-up-scim-provisioning-with-onelogin.md --- # Set Up SCIM Provisioning With OneLogin You can configure Contentstack as a provisioning app in OneLogin. This will allow you to use OneLogin to provision or deprovision users automatically with Contentstack.  **Note**: Before proceeding with this guide, ensure that SCIM enabled for your Contentstack organization. If you do not see SCIM settings within **Administration**, reach out to our [support](mailto:support@contentstack.com) team to get it enabled for your organization. ## Prerequisite * OneLogin [Developer account](https://www.onelogin.com/developer-signup) * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner, Admin, or Security Manager](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to enable SCIM in Contentstack. * How to create and authorize the Contentstack app in OneLogin. * How to enable provisioning for users and groups in OneLogin. * How to provision and deprovision users, and set up groups, via OneLogin. * How to map OneLogin groups to roles in Contentstack. ## Steps for Execution Here’s a step-by-step guide that explains how you can do this. 1. [Enable SCIM in Contentstack](#enable-scim-in-contentstack) 2. [Create and authorize Contentstack app in OneLogin](#create-and-authorize-contentstack-app-in-onelogin) 3. [Enable Provisioning in Your OneLogin App](#enable-provisioning-in-your-onelogin-app) 4. [Enable Provisioning for Groups in OneLogin](#enable-provisioning-for-groups-in-onelogin) 5. [Provision and Deprovision Users via OneLogin](#provision-and-deprovision-users-via-onelogin) 6. [Set up groups in OneLogin](#set-up-groups-in-onelogin) 7. [Create group mapping in Contentstack](#create-group-mapping-in-contentstack) Let's check the process of setting up SCIM in Contentstack. 1. ## Enable SCIM in Contentstack To allow provisioning and deprovisioning of users in Contentstack’s organization through OneLogin, you need to enable SCIM in Contentstack by performing the following steps: 1. Log in to your Contentstack account, then navigate to **Administration** through the App Switcher. 2. Open the **SCIM** settings and select the **Enable SCIM** option. 3. On the **Enable SCIM** modal, click **Enable**.![Enable\_SCIM\_1.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am7e386a8976a8ac99/9ac05fc9f7dd0f7679eb9c10/Enable_SCIM_1.png?locale=en-us) After enabling SCIM, you’ll see the **Group Mapping** section. This section will enable you to set permissions for a group of users provisioned via the OneLogin app. We’ll cover the steps to create groups and set up group mappings later in this guide. 2. ## Create and Authorize Contentstack App in OneLogin **Note**: You will need administrator rights in OneLogin to complete the steps given below. 1. Log in to your OneLogin account, click **Administration** on the header, and then click the **Applications** link on the header. 2. Next, on the **Applications** screen, click the **Add App** button. 3. Search for “Contentstack” in the search menu, as shown below, and click the **Contentstack** application.![contentstack-app.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt50156fb27aaf7a83/60488debacf0d53d70c5d52f/contentstack-app.png) 4. You will see the app’s **Info** screen with default content. Click on **Save**.![contentstack-app-info.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt97fa024454d52a6a/60488dec08636f3d7749ca7f/contentstack-app-info.png) The Contentstack app is now added to your OneLogin account. 5. On the left navigation panel, go to **Configuration**. 6. Then, in the **Application details** section, provide the following details: * **Site**: Provide the base URL of Contentstack Auth API. * For North American region, use **https://auth-api.contentstack.com** * For Europe region, use **https://eu-auth-api.contentstack.com** * For Azure NA region, use **https://azure-na-auth-api.contentstack.com** * For Azure EU region, use **https://azure-eu-auth-api.contentstack.com** * For GCP North America region, use **https://gcp-na-auth-api.contentstack.com** * For GCP Europe region, use **https://gcp-eu-auth-api.contentstack.com** * **Authorization URL**: Enter the base URL of the Contentstack app to authorize OneLogin with SCIM in Contentstack. * For North American region, use **https://app.contentstack.com** * For Europe region, use **https://eu-app.contentstack.com** * For Azure NA region, use **https://azure-na-app.contentstack.com** * For Azure EU region, **use https://azure-eu-app.contentstack.com** * For GCP North America region, use **https://gcp-na-app.contentstack.com** * For GCP Europe region, use **https://gcp-eu-app.contentstack.com** * **Organization UID**: Enter the UID of your Contentstack organization. To get the UID, log in to your Contentstack account, navigate to **Administration** through the App Switcher, and open the **Org Info** page, where you’ll see the **Organization UID** as shown below:![SCIM\_Organization\_UID.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am64f8e4a6fc239951/e10067226a142e07a4bcc2ff/SCIM_Organization_UID.png?locale=en-us) Finally, your **Application details** section will look similar to the image below:![Application\_details.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt8084cf1a67f7fac2/63962d4abd8730261b83e8e9/Application_details.jpg) 7. Click on **Save** on the top-right corner. 8. Go back to the **Configuration** section, navigate to the **API Connection** section, at the end of the **Configuration** page, and click on **Authenticate**. ![Authenticate.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltac4b521854d14a01/624ac5253e5d2501c89413a2/Authenticate.png) 9. On the **Complete Authentication Process** modal, click on the **Contentstack** link.![Complete\_Authentication.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt3f92daaa974a5f88/63962d950af06c10a8d703a0/Complete_Authentication.jpg)This will redirect you to the Contentstack app where you need to authorize OneLogin. **Note:** If you haven’t logged in to your Contentstack account, it will ask you to first log in to your Contentstack account, and then allow access. 10. Then, on the “Authorization” modal that appears, select the checkbox to accept terms and conditions and then click on the **Authorize & Install** button to allow OneLogin to access your Contentstack account. **Note**: Ensure OneLogin has access to the provided organization. ![Tick checkbox to accept terms and conditions, and click on Authorize & Install](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt1cb1a0c9b09132a6/63962e68299486317b51a6b8/OneLogin1.jpg) Finally, you will get the “OAuth authorization performed successfully” message denoting that the authorization steps are successfully completed. 3. ## Enable Provisioning in Your OneLogin App To enable your app to use the provisioning feature, before adding or removing a user from the Contentstack organization, you need to perform the following steps: 1. Staying inside the **Contentstack** app in OneLogin, click on **Provisioning** on the left navigation panel. 2. Under the **Workflow** section, check the **Enable provisioning** option, select **Delete** (to enable deprovisioning) from the first dropdown, and **Save** it.![enable-provisioning-option.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltfbd97cdba448d457/63962c79bed42e2d4903d608/enable-provisioning-option.jpg) This will enable user provisioning as well as deprovisioning in your OneLogin app. **Note**: By default, admin approval for the create, delete, and update user options is enabled. You can uncheck any of these if required. For this tutorial, we have kept the default configuration unchanged. Now let’s proceed to enable the provision of groups in OneLogin. 4. ## Enable Provisioning for Groups in OneLogin To use groups in the OneLogin’s **Contentstack** app, you should enable it by performing the following steps: 1. Go to the **Parameters** tab on the left navigation menu, and click **Groups** from the **Optional Parameters** section.![click-groups.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltb31cbe5cf46c96c3/60488dca3c41f30bce4842be/click-groups.png) 2. Then, in the **Edit Field Groups** modal, select **Include in User Provisioning** option, and click **Save**.![edit-field-groups.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blta15e030c77ac214f/60488dece122b53af551221e/edit-field-groups.png) 5. ## Provision and Deprovision Users via OneLogin Using SCIM, you can provision and deprovision users in your Contentstack organization via OneLogin. ### Provision Users via OneLogin To do so, perform the following steps: 1. In the OneLogin’s **Contentstack** app, after configuring the application, go to the **Users** tab on the header, and then select **Users**.![click-users.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt62554eeeee8a6c0f/60488dec5aedc043351b7347/click-users.png) 2. To add a user, click on the **New User** button. 3. On the **New User** page that appears, provide the following details about the user: 1. First and last name 2. Email address 3. Username **Note**: The email address and username should not be different. ![add\_new\_user\_screen](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt5c52218bf273edd2/604a099cf9638443346d6eae/add-new-user-screen.png) 4. Click on the **Save User** button. With this step, you’ve added a user to your OneLogin app. Now let’s provision this user to your organization in Contentstack. 5. Once the user is added, you’ll see an **Applications** tab on the left navigation panel. Go to the **Applications** tab and click the ‘**+**’ button.![click\_plus\_icon](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltf7a28507d402b15a/604a0a09c7198e3af48f92ad/click-plus-icon.png) 6. On the “Assign new login to {name of user}” modal that appears, select the application to which you want to provision the user from the **Select application** dropdown menu, and click **Continue**.![select-application.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt97c7bb86591b15ed/60488e11982f2a0bdaf5d1bb/select-application.png) 7. On the next screen, review or edit the user’s details and click on **Save** to confirm.![click-delete-user.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blte8dab83efebf3b82/60488dca08636f3d7749ca7b/click-delete-user.png) 8. As the provisioning option is enabled, initially the status of the request will be in the “Pending” state denoting that admin's approval is required to provision this user. Click on **Pending**.![click-pending.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt03e49e623d1d5059/60488debfef76d094c703386/click-pending.png) 9. Then click on **Approve** to approve the request.![click-approve.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt6eb6f4b00fc15531/60488dc808636f3d7749ca77/click-approve.png) 10. Once the request is approved, the status changes to **Provisioned** as shown in the screenshot below.![provisioned-status.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt84cfbe57b08c8eaf/60488e111a42e25ce54e8f35/provisioned-status.png) The added user will get an invitation (via email) to collaborate on the Contentstack organization. To verify if the user has been provisioned, navigate to **Administration** through the App Switcher in Contentstack, then click the [**Users**](/docs/administration/organization-users) tab to check if the user’s name appears in the list. Once the user is added to your Contentstack organization, you can proceed with **Step 6** to create groups in the Onelogin app. ### Deprovision Users via OneLogin To deprovision/remove a user from your Contentstack organization using OneLogin, perform the following steps: 1. Go to the **Contentstack** app in OneLogin created in **Step 2** and click **Users** on the left navigation panel. 2. You’ll see a list of users added to the application. Click the user you want to deprovision.![select-user-to-delete.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt926f149d6bf4f27e/60488e11fa12da5a61658b4d/select-user-to-delete.png) 3. On the prompt that appears, click **Delete**.![click-delete-user.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blte8dab83efebf3b82/60488dca08636f3d7749ca7b/click-delete-user.png) 4. To approve this delete request, click on the **Pending** link.![click-on-pending.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt65d8ef99d8d20446/60488de71322a9094ddef9eb/click-on-pending.png) 5. **Approve** the request for deprovisioning.![approve-delete-request.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt14f22ec36087d0cd/60488dc8f9638443346d6696/approve-delete-request.png) The user is now removed from the assigned organization in Contentstack. Note that the user will still have a Contentstack account, but with no access to your organization. 6. ## Set up Groups in OneLogin A group refers to a collection of users who are designated to share common permissions. Through the OneLogin account, you can create a group using several ways such as through roles or departments. After creating a group, you can use the “group mapping” functionality in your Contentstack organization for setting permissions. To set up groups in OneLogin according to the role, perform the following steps: 1. Click on the **Users** tab and select **Roles**.![select-roles-option.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltdf59fee6278e9def/63962cefb17ff611a337f50b/select-roles-option.jpg) 2. On the **Roles** page, you will see a default role. Click on the **New Role** button.![new-role-btn.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt49811740b6a43aa8/60488e107b7aea45bd9f6ff5/new-role-btn.png) 3. On the next screen, provide a role name, for example, “Developer Role,” then select the applications to which this role is applicable, and **Save** it.![name-the-role.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltbcaebe30a54c48a1/60488debfa12da5a61658b49/name-the-role.png) 4. A new role will be created and you will be redirected to the **Roles** page. Click on the newly created role. 5. Then, go to the **Users** section from the left navigation panel, then under the **Check existing or add new users to this role** section, enter the name of the user, and click **Check**.![add-user-to-role.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltf37c5434bc116a0f/60488dbd3c41f30bce4842ba/add-user-to-role.png) 6. Add this user to the role by clicking on the **Add To Role** option and then the **Save** button.![add-user-to-role-confirm.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltdbb613db6b9b70df/60488dc7c7198e3af48f89fc/add-user-to-role-confirm.png) 7. Confirm to add a user to the role by clicking **Save**. 8. Next, click on the **Applications** tab at the top.![go-to-applications.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt4237accca3310582/60488debf9638443346d669e/go-to-applications.png) 9. From the **Applications** page, go to the **Contentstack** application we created in **Step 2.** 10. Go to the **Rules** tab and click the **Add Rule** button.![click-add-rule.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt606aecb1f8dbe308/60488dc6e122b53af551221a/click-add-rule.png) 11. In the **New mapping** modal that appears, provide the following: 1. **Name** of the rule, for example, “Developer Role rule”. 2. **Conditions**: Skip it for now. 3. **Actions**: Select **Set Groups in Contentstack** from the dropdown menu. From the **For each** dropdown, select **role**, and in the **with value that matches** field, provide the name of the role that you created, for example, “**Developer Role.**” ![new-mapping-window.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltfc8e28737c401735/60488e102d310e5a62e19487/new-mapping-window.png) **Note**: Ensure that the **Map from OneLogin** option is selected as shown above. 12. Click on **Save**. 13. Now navigate to the **Users** tab from the left navigation panel. You'll see the **Provisioning State** of the user you have associated with a role, as **Pending**.![pending-state-of-user-group-provisioning.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltb4d6d1b5e7b30050/60488e11f9638443346d66a2/pending-state-of-user-group-provisioning.png) 14. Click on **Pending** and then **Approve**. You have now successfully added the group. To verify if a group has been added, navigate to **Administration** through the App Switcher, open the **SCIM** settings, and search for the group (you just created) in the dropdown list under the **Group Mapping** section. Now let’s proceed to map groups to permissions in the Contentstack organization. 7. ## Create Group Mapping in Contentstack Group mapping assigns roles to SCIM groups across your organization and its products in Contentstack. The roles you set for a group apply to all the users added to that group. To perform group mapping, perform the following steps: 1. Navigate to **Administration** through the App Switcher, then open the **SCIM** settings. 2. From the **SCIM Group** dropdown, select the group for which you want to set permissions. 3. Assign one or more organization-level **Administration** roles and product roles for the group. 4. Assign project-level roles for the group across stacks, spaces, or AgentOS projects. For example, if you set the “Developer” role for the “Developer stack” stack, users within the selected group will have a “Developer” role on that stack. 5. Finally, **Save** the group mappings. ## Related Resource * [SCIM API](/docs/developers/apis/scim-api) --- ## URL: https://www.contentstack.com/docs/administration/set-up-sso-in-contentstack --- title: "Set Up SSO in Contentstack" description: "Set up SSO in Contentstack" url: "https://www.contentstack.com/docs/administration/set-up-sso-in-contentstack" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-23" filename: set-up-sso-in-contentstack.md --- # Set Up SSO in Contentstack **Note**: Only the owner of the organization has the right to set up SSO. This is a general step-by-step guide explaining the process of setting up single sign-on in Contentstack with your SAML 2.0 Identity Provider. ## Prerequisites * Access to your identity provider's configuration settings * [Owner](/docs/headless-cms/types-of-roles#owner) role in your Contentstack [organization](/docs/administration/about-organizations) ## What You Will Learn * How to create an SSO name and Assertion Consumer Service (ACS) URL in Contentstack. * How to configure the Contentstack application in your IdP. * How to enter your IdP details in Contentstack. * How to manage user access with Strict Mode, email whitelists, and session timeout. * How to test and enable SSO. ## Steps to Enable SSO in Contentstack In order to set up SSO for your Contentstack organization with any IdP, you need to proceed according to steps given below. 1. [Create SSO Name and ACS URL in Contentstack](#create-sso-name-and-acs-url-in-contentstack) 2. [Setup Contentstack app in your IdP](#setup-contentstack-app-in-your-idp) 3. [Configure IdP details in Contentstack](#configure-idp-details-in-contentstack) 4. [User Management in Contentstack](#user-management-in-contentstack) 5. [Test and Enable SSO](#test-and-enable-sso) Let’s go through each of these steps in detail. 1. ### Create SSO Name and ACS URL in Contentstack 1. Log in to your [Contentstack account](https://app.contentstack.com/#!/login), click the “Org Admin” icon on the left navigation panel and select **Single Sign-On**. ![Set\_Up\_SSO.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd63658aa6b7e086c/6710d95bbcf8a669de1a9e9f/Set_Up_SSO.png) 2. Enter an SSO name of your choice, and click **Create**. For example, if your company name is “Acme, Inc.,” enter “acme” here. This name will be used as one of the login credentials by the organization users while signing in. **Note:** The SSO Name can contain only alphabets (in lowercase), numbers (0-9), and/or hyphens (-). ![Set\_Up\_SSO\_2.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt557eb5531db0d6d1/6710d95b489d5671358555f7/Set_Up_SSO_2.png) Let's use “test-sso” as the SSO Name. 3. This will generate the **Assertion Consumer Service (ACS)** URL and other details such as **Entity ID**, **Attributes**, and **NameID Format**. You will need these details in Step 2 for configuring the Contentstack app in your Identity Provider. ![Set\_Up\_SSO\_3.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte21a34e19a317c55/6710d95b88de8877de3e3cb5/Set_Up_SSO_3.png) Keep this window open, as you may need these details for setting up the Contentstack app in your IdP in the next step. 2. ### Setup Contentstack app in your IdP 1. Login to your IdP admin account. 2. Create a new application (also known as app or connector in some IdPs) with application name preferably as "Contentstack." 3. In SAML settings, you need to provide the "SSO Configuration" details that you received from Contentstack in **Step 1**. In your IdP, provide the following details: 1. In the **Single Sign-on URL** field, provide the ACS URL that was generated for your organization in Contentstack. 2. Use Contentstack’s Entity ID (generated in Step 1) in your IdP in **Audience URI**, **SP Entity ID**, **SAML Issuer ID**, or fields similar to these. 3. In the **NameID Format**, select or enter **EmailAddress**. This defines the parameter that your IdP should use to identify Contentstack users. 4. _**\[Optional Step\]**_ If you want to encrypt your SAML attributes, you need to enable SAML encryption in your IdP and upload the [Contentstack Public Certificate](/docs/administration/enable-saml-encryption/#download-the-contentstack-public-certificate-for-saml-encryption). 4. Under **Attribute Mapping** or **Attribute Statements**, add three attributes, i.e., **email**, **first\_name**, and **last\_name**, and map corresponding IdP values, such as email, first name, and last name. The Name format of the attributes(email, first\_name, last\_name) must be "Basic". If the Name format is selected as **Unspecified** or in any other format, then it doesn’t work. 5. **\[**_**Optional Step**_**\]** If you want to map IdP groups/roles to Contentstack roles, you need to add a new attribute called “roles” under **Attribute Mapping**, and return your IdP users’ roles or groups. **Note:** Perform this step only if **IdP Role Mapping** is part of your Contentstack plan. 6. Once you enter all the details and save your settings in IdP, you should receive **IdP Single Sign-On URL** and **X.509 certificate**. Use these details in **Step 3**. 3. ### Configure IdP Details in Contentstack 1. Go to **2\. IdP Configuration** in Contentstack. 2. In the **Single Sign-On URL** field, paste the **IdP Single Sign-On URL** that you received from IdP in Step 2. 3. In the **Certificate** field in Contentstack, upload the **X.509** or **Public Key Certificate** that you received from your IdP. 4. Select the relevant algorithm from the options given under the **Signature Algorithm** field. 5. _**\[Optional Step\]**_ Enable the [SAML encryption](/docs/administration/enable-saml-encryption) in Contentstack if you want to encrypt your SAML attributes via your IdP. 6. Click **Save** to save IdP configuration.![Set\_Up\_SSO\_4.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd2c406e4cff9d2b9/6710d95bfe2f9d3cb3e2c9d9/Set_Up_SSO_4.png) **Tip:** In some IdPs, you may have to assign the newly-created Contentstack application to the existing users of your IdP. You can find these settings under the **Users** section in IdP. With this step, you have completed SSO settings in your IdP. However, you need to configure two more steps in Contentstack. **Note**: If the organization owner logs out after updating the certificate and SSO login fails, they can still log back in using their credentials and restore the previous configuration. The organization owner can always log in using their Contentstack credentials, regardless of SSO status (enabled, disabled, misconfigured, or strict mode). 4. ### User Management in Contentstack In Contentstack, go to **3\. User Management**. Here, you need to define important settings related to your users in your SSO-enabled organization. These settings include **Strict Mode**, **User Email Whitelists**, **Session Time-Out**, and **Advanced Settings**. ![Set\_Up\_SSO\_5.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2580e6af8d4e0bd8/67122016702a14919bf7039f/Set_Up_SSO_5.png) #### **Strict Mode** Strict Mode lets you decide if you want to allow any non-IdP users (i.e., users that are not available in your IdP) to access the SSO-enabled organization in Contentstack. 1. **Enable “Strict Mode”** If you enable **Strict Mode**, users that are not added to your IdP will not be able to access the Contentstack organization. This means that users can access the organization only through SSO, without any exceptions. 2. **Disable “Strict Mode”** If you disable **Strict Mode**, users with special permission (i.e., users marked as **Allow access without SSO** in Organization User settings) can access this organization using Contentstack credentials, instead of through SSO (IdP credentials). It is similar to creating an exception list of users. **Invite users to access organization without SSO** To allow users to access your SSO-enabled organization without SSO login (using Contentstack credentials), perform the following steps: 1. Disable **Strict Mode** in the **User Management** step in SSO settings. 2. Go to **Users** in Organization settings. 3. Click on **Invite User**. On the modal that appears, check **Allow Access Without SSO**, and enter user details. 4. Click **Invite**. #### **User Email Whitelists** The **User Email Whitelists** allows specified users to access APIs even when strict mode is enabled, bypassing any restrictions imposed by it. To whitelist users, simply enter their email addresses, separating multiple addresses with commas (e.g., user1@example.com, user2@example.com). This option becomes visible only when strict mode is active. **Note**: This is a plan-based feature and may not be available to all users. For further assistance or more information, contact our [support](mailto:support@contentstack.com) team. #### **Session Time-Out** You can define the session duration of user signed in through SSO. By default, this is set to 12 hours. However, you can set anywhere between 1 hour and 24 hours. The session begins when the user logs in to Contentstack via SSO and will timeout after 12 hours (or the time period that you specify here). #### **Advanced Settings** Under **Advanced settings**, you will find more advanced settings related to user management, which includes _**IdP Role Mapping**_. **Note**: The IdP Role Mapping feature is available only if it is part of your Contentstack plan. Consequently, only then will you find the **Role Mapping** section under **Advanced settings**. If you want to include this feature in your plan, contact our [Support](mailto:support@contentstack.com) team. ##### **Configuring IdP Role Mapping** [IdP Role Mapping](/docs/administration/idp-role-mapping) allows you to assign Contentstack roles to the users of a group/role in your IdP. Before you add new role mappings, you must add the “roles” attributes in the “Attribute Mappings” section in your IdP. The steps are covered in Step 2 above. To add new IdP role mapping, click on the **\+ ADD ROLE MAPPING** link. Enter the following details: * **IdP Role Identifier**: Role identifier is the name or UID (by which it is uniquely identified in IdP) of the IdP group that you want to map. For example, “Contentstack Developers” or “Contentstack Project Managers.” * **Organization Role**: Assign an organization-level Contentstack role (i.e., either “Admin” or “Member”) to the IdP group/role that you are mapping. * **Stack Roles**: Assign [stacks](/docs/headless-cms/about-stack) as well as corresponding stack-level roles to this IdP role. On the [IdP side](#setup-contentstack-app-in-your-idp), you need to add “Group Mapping” or “Group Attributes” to map the roles. Likewise, you can add more role mappings for your Contentstack organization. In the **Role Delimiter** section, mention the character that serves as the delimiter for the roles. Depending on the IdP selected, the delimiter can be a space, comma (','), semicolon (;), or something else. Finally, select the **Enable IdP Role Mapping** checkbox to enable this feature. **Note:** After enabling **IdP Role Mapping**, the role management (in Contentstack) for the users of your IdP will be handled from your IdP, instead of from Contentstack. 5. ### Test and Enable SSO #### **Test SSO** Before enabling SSO, it is recommended that you test it. To test it, perform the following steps: 1. Click on the **Test SSO** button. This opens the Contentstack’s **Login via SSO** page. 2. Specify your organization SSO name, and click on **Continue** to go to your IdP sign in page. 3. Sign in to your account. If you are able to sign in to your IdP, your test is successful. ![Set\_Up\_SSO\_6.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteec943deab92fc9b/6710d95bef9edcfde917ec09/Set_Up_SSO_6.png) On successful connection, you will see a success message. If you have enabled IdP Role Mapping, you’ll find the following details in a new page: 1. **SSO connection established successfully** - A success message is displayed. 2. **IdP Roles received** - The list of all the roles assigned to you in your IdP. 3. **Contentstack-IdP role mapping details** - The details of all the Contentstack Organization-specific and Stack-specific roles mapped to your IdP roles. 4. Click on the **Close** button. Now, you can safely enable SSO for your organization. **Note:** While testing SSO settings with IdP Role Mapping enabled, the test will be performed only for the IdP roles of the currently logged-in user (i.e., the user performing the test). #### **Enable SSO** Click on **Enable SSO** to enable SSO for your Contentstack organization. Once this is enabled, users of this organization can access the organization through SSO login. You can disable SSO from the same page when required. ![Set\_Up\_SSO\_7.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltefb9c3f4c8701321/6710d95bb7da8002c3eb7328/Set_Up_SSO_7.png) **Note:** If you've already logged into your SSO IdP, the trigger\_sso\_flow= query parameter automatically lets you log in to Contentstack via SSO, allowing you to skip the Contentstack login page. After enabling SSO, you will see **SSO One-click URL** at the top of the SSO page. You can use this URL to directly go to Contentstack’s SSO login page. Bookmark this URL to skip multiple steps while logging in. ![Set\_Up\_SSO\_8.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbd87cff359ee97f0/6710d95b9c37a306d0bb04e7/Set_Up_SSO_8.png) **Note:** Only the users invited to the SSO-enabled organization can access the organization if IdP Role Mapping is disabled. Your IdP users cannot directly access the organization if they have not been invited to this organization. #### **Disable SSO** After enabling SSO, you will notice that **4\. Test & Enable SSO** changes to **4\. Disable SSO** in your SSO settings page. You can disable SSO for your organization anytime by clicking the **Disable** button. ![Set\_Up\_SSO\_9.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt586c437ed1da28d6/6710d95bdc82aacaee6fe248/Set_Up_SSO_9.png) Once disabled, the existing users of your organization will have to use Contentstack credentials to sign in. In case the existing user does not have Contentstack credentials, the user will have to use the **Forgot password** link on the login page in Contentstack to create a new password for login. --- ## URL: https://www.contentstack.com/docs/administration/set-up-sso-with-adfs --- title: "Set up SSO with Active Directory Federation Services (AD FS)" description: "This step-by-step guide explains how to setup Single Sign-On in Contentstack with AD FS as your SAML 2.0 Identity Provider (IdP):" url: "https://www.contentstack.com/docs/administration/set-up-sso-with-adfs" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-28" filename: set-up-sso-with-adfs.md --- # Set up SSO with Active Directory Federation Services (AD FS) This step-by-step guide explains how to set up [Single Sign-On](/docs/administration) in Contentstack with AD FS as your SAML 2.0 Identity Provider (IdP). You create an SSO name and Assertion Consumer Service (ACS) URL in Contentstack, configure a Relying Party Trust on Windows Server, define claim rules, export the token-signing certificate, and then configure and enable SSO in Contentstack. **Note:** This guide covers SAML 2.0 SSO setup using Windows Server 2012 R2 Standard (Windows Server 2008R2 is supported too, but requires additional setup), and AD FS 2.0 serves as the Identity Provider. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login) * AD FS administrator access to a Windows Server * An AD FS token-signing certificate ## What You Will Learn * How to create an SSO name and ACS URL in Contentstack. * How to configure a Relying Party Trust for Contentstack on Windows Server. * How to define claim rules and export the token-signing certificate. * How to configure AD FS details in Contentstack and enable SSO. ## Steps to Set up SSO with AD FS 1. [Create SSO Name and ACS URL in Contentstack](#create-sso-name-and-acs-url-in-contentstack) 2. [Configure Windows Server](#configure-windows-server) 3. [Edit Claim Rules for your AD FS App](#edit-claim-rules-for-your-ad-fs-app) 4. [Configure AD FS details in Contentstack](#configure-ad-fs-details-in-contentstack) Let’s go into each of the processes in detail. 1. ## Create SSO Name and ACS URL in Contentstack 1. Log in to your [Contentstack account](https://app.contentstack.com/#!/login), go to the **Organization Settings** page and click on the **SINGLE SIGN-ON** tab.![Set\_up\_SSo\_1\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltb9ada275bd3bc7c9/60e3274ce743d53d6a654425/Set_up_SSo_1_highlighted.png) 2. Enter an **SSO Name** of your choice, and click **Create**. For example, if your company name is “Acme, Inc.” enter “acme” here. This name will be used as one of the login credentials by the organization users while signing in. **Note:** The SSO Name can contain only alphabets (in lowercase), numbers (0-9), and/or hyphens (-). ![Set\_up\_SSo\_2\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltf5d1bb6d8af865aa/60e327633b10992ed7acc254/Set_up_SSo_2_highlighted.png) Let's use “sso-test” as the **SSO Name**. 3. This will generate **Assertion Consumer Service (ACS)** URL and other details such as **Entity ID**, **Attributes,** and **NameID Format**. These details will be used in **Step 2** for configuring Contentstack app in AD FS.![ACS\_URL.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltbbd19c8098a9cc1f/63762ef176567a10a7cb82c1/ACS_URL.png) Keep this window open, as you may need these details for setting up the Contentstack app in AD FS. 2. ## Configure Windows Server 1. Open the AD FS Management Console, you will see the dashboard as follows: ![adfs-mangement-console.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt0f409c370390012c/5d6513c8cc605f23dfb5542f/adfs-mangement-console.png) 2. We will define a Relying Party Trust (RPT) which will serve as a connection between AD FS and Contentstack. Click on **Add Relying Party Trust** from the **Actions** sidebar on the right as shown in the above screenshot. This will open the **Add Relying Party Trust Wizard** where you need to perform certain steps to create your own RPT. Click on **Start**: ![step-1-add-relying-party.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt7f7552b498b4d160/5d6513c04532dc2764646d48/step-1-add-relying-party.png) 3. Select a data source for your Windows Server. Choose **Enter data about the relying party manually**. This option will allow you to manually enter the details of the relying party organization. ![step-2-select-data-source.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltd38038f6888fa8a6/5d6513bd0d77ee2fe445eff4/step-2-select-data-source.png)Click on **Next** to proceed ahead. 4. Enter a name for your relying party, for example, “ms-adfs-test.” ![step-3-Display-name.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltd5c676de7f39e175/5d6513bd79adf9235f38e9ff/step-3-Display-name.png) 5. To choose a profile, click on **AD FS profile**. This profile supports relying parties that are interoperable with SAML 2.0 protocol. Then, click on **Next**. ![step-4-choose-profile.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt3119fb4b52c6b446/5d6513bbcc605f23dfb5541b/step-4-choose-profile.png) 6. You can skip the **Configure Certificate** step, as it is not required. Click on **Next**. ![step-5-certificate.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltdb6095b71b8c3d4c/5d6513bbde50ec209c8f4528/step-5-certificate.png) 7. In **Configure URL**, select **Enable support for the SAML 2.0 WebSSO protocol**, and enter the Assertion Consumer Service URL that we created in Contentstack in Step 1.c. Finally, click on **Next**. ![step-6-configuration-url.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltfdf04e1b51393358/5d6513b910bdff289acf52e9/step-6-configuration-url.png) **Warning:** Do not add a slash “/” at the end of identifier, otherwise, this integration will not work. 8. In the **Configure Identifiers** section, enter the Entity Identifier URL (without a slash “/” at the end) that was generated in Contentstack, and click on **Add**. ![step-7-configue-identifiers.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt91bd782b5938e3b5/5d6513b91aa7592787971620/step-7-configue-identifiers.png) After adding the Entity Identifier URL, click on **Next**. 9. Click on the **I do not want to configure multi-factor authentication settings for this relying party trust at this time** radio button in the **Configure Multi-factor Authentication Now?** section, and click on **Next**.![step-8-configure-multi-auth.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltce1ef60d80a98a4d/5d6513b75ab0281fbe5e174a/step-8-configure-multi-auth.png) 10. In the **Choose Issuance Authorization Rules** section, select **Permit all users to access this relying party** to allow all Active Directory users to log into Contentstack, and click on **Next**. ![step-9-permit-users.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltee93b1aee5b3c7de/5d6513b7db2a5d2441d96884/step-9-permit-users.png) 11. The **Ready to Add Trust** section will display the configuration that you set. Don’t change any setting and click on **Next**. ![step-10-ready-to-add-trust.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt9def19361144885e/5d6513b445154b20a690289d/step-10-ready-to-add-trust.png) 12. Finally, you have successfully configured the Relying Party Trust. Leave the **Open the Edit Claim Rules dialog for this relying party trust when the wizard closes** option checked to set up the Claim Rules. 13. Click on **Close** to close the wizard. ![step-11-final.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt679b6644c0b5c975/5d6513b4d84c39242e05d414/step-11-final.png) As soon as you have configured Windows Server, the **Edit Claim Rules for** _**app\_name**_ window opens up. Let us see how to set up claim rules in the next step. 3. ## Edit Claim Rules for your AD FS App 1. In the **Edit Claim Rules for ms-adfs-test** window, click on the **Add Rule** button under the **Issuance Transform Rules** tab. ![step-12-edit-claim-rules.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt9f41aa89f5316d3c/5d6513b279adf9235f38e9f7/step-12-edit-claim-rules.png) 2. The **Add Transform Claim Rule Wizard** window opens where you need to select **Send LDAP Attributes as Claims** as the **Claim rule template**, and click **Next**. ![step-13-choose-rule-type.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt1db19518d29a71f0/5d6513b05ab0281fbe5e1742/step-13-choose-rule-type.png) 3. Enter a name for your Claim Rule, for example, “email,” then set **Attribute store** to **Active Directory**.  4. Now we need to enter LDAP attributes. We will enter the LDAP attribute **E-Mail-Addresses** twice and set their outgoing types to **E-Mail Address** and **email**. Similarly, we will enter the LDAP attribute **Given-Name** twice and set their outgoing types to **Given-Name** and **first\_name**, and enter the LDAP attribute **Surname** twice and set their outgoing types to **Surname** and **last\_name**. ![step-13-a.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltc9e089c066c7cfbb/5d6513b25760052efac57a10/step-13-a.png) **Note:** Every attribute has been entered twice in order to provide a user-specific claim type (i.e., **email**, **first\_name**, and **last\_name**). 5. Click **OK** when you are done adding the required LDAP attributes. ![step-13-b.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt0a78a19b076814b2/5d6513b024521b0c64edc995/step-13-b.png) **Warning:** Make sure you select accurate options because the integration may not work if the variant you selected does not match. 6. You need to add another Claim Rule. So, click on **Add Rule** on the **Issuance Transform Rules** tab, select **Transform an Incoming Claim**, and click on **Next**. ![step-14-incoming-claim.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt1af73b940d6801d7/5d6513ae45154b20a6902893/step-14-incoming-claim.png) 7. Enter a Claim rule name, for example, **Incoming-claim**, set **Incoming claim type** to **E-Mail Address**, set **Outgoing claim type** to **Name ID**, and set **Outgoing name ID format** to **Email**.  8. Select **Pass through all claim values** and click **Finish.**![step-14-a-incoming-claim.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt18dd15bb4c764885/5d6513ae4532dc2764646d3e/step-14-a-incoming-claim.png) 9. In the **Edit Claim Rules** window, click **OK**. 10. Now, click on **Service** > **Certificates**; select your Token-signing certificate and click **View Certificate…** in the **Actions** pane.![step-15-download-cert.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltd7341206d7c0166a/5d6513ab5f97a827821d8285/step-15-download-cert.png) 11. Click the **Details** tab and click **Copy to File…** option. ![step-16-a-download-cert.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt541848bebafc7347/5d6513abde50ec209c8f451e/step-16-a-download-cert.png) This will open the **Certificate Export Wizard** window. Click **Next**. ![step-16-download-cert.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt2c961cb80b9e780e/5f46b0e6c0e5e047f9386fbb/step-16-download-cert.png) 12. Select **Base-64 encoded X.509 (.CER)** as the format of your certificate, and click **Next**. ![step-16-b-download-cert.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blta39a74f50cfa3e64/5d6513a87afbb0203184b5a2/step-16-b-download-cert.png) 13. Next, click on **Browse** and choose a location in your filesystem to save the certificate file. Click **Next**, and click **Finish** and **OK** if the certificate file was successfully exported. ![step-16-c-download-cert.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt064cdd18b13f290e/5d6513a5aa1103252e0b8b26/step-16-c-download-cert.png) 14. On your AD FS Server, click on **Service** > **Endpoints,** and locate the endpoint URL path for the SAML 2.0 specification. ![step-17-adfs-url.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt9a9863479a8fc5e5/5d6513f34d3ad511ffc4a52d/step-17-adfs-url.png) Check the URL path of SAML 2.0/WS-Federation Endpoint. We will be using this when configuring AD FS details in Contentstack. 4. ## Configure AD FS details in Contentstack 1. Enter the Single Sign-On Login URL of your AD FS service into the **Single Sign-on URL** field in Contentstack SSO settings. This is generally the URL of your AD FS service followed by the suffix “/adfs/ls/”.![Set\_up\_SSo\_4\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltaede158f66c4ba63/60e327a2979c171ed133e01a/Set_up_SSo_4_highlighted.png) 2. Upload the certificate that you downloaded into the **Certificate** field in Contentstack. ## Further Steps ### User Management In Contentstack, save your settings and go to **3\. User Management**.  Enable [**Strict Mode**](/docs/administration/set-up-sso-in-contentstack#strict-mode) if you do not want any users to access the organization without SSO login. ![image.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt76d8a1401bbd3062/60e324887df6873288cd7e3b/image.png) [**Session Timeout**](/docs/administration/set-up-sso-in-contentstack#session-timeout) lets you define the session duration for a user signed in through SSO. While the default is set to 12 hours, you can modify it as per your requirement. **Note:** We are yet to introduce IdP Role Mapping for AD FS. If you want to know how it works, check out our [IdP Role Mapping](/docs/administration/idp-role-mapping) document. ### Test & Enable Go to **4\. Test & Enable** in Contentstack.Click the [**Test SSO**](/docs/administration/set-up-sso-in-contentstack#test-sso) button to check if your SSO settings have been configured properly. It is highly recommended that you test your settings before enabling SSO. ![image.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt372469429b141fd4/60e3249b92aa422edd5e387f/image.png) To enable SSO for your Contentstack organization, click on [**Enable SSO**](/docs/administration/set-up-sso-in-contentstack#enable-sso). Once this is enabled, users of the organization can access the organization through SSO.  ![image.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blte01758f9cbbb449c/60e324c03b10992ed7acc23a/image.png) You can disable SSO anytime from the same page. ![Disable\_SSO.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltd804680545216a38/63762ef15834861044c1f25b/Disable_SSO.png) --- ## URL: https://www.contentstack.com/docs/administration/set-up-sso-with-google-g-suite --- title: "Set up SSO with Google G-Suite" description: "This step-by-step guide explains how to set up Single Sign-On (SSO) in Contentstack with Google G Suite. Configure the integration by following these steps." url: "https://www.contentstack.com/docs/administration/set-up-sso-with-google-g-suite" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-28" filename: set-up-sso-with-google-g-suite.md --- # Set up SSO with Google G-Suite This step-by-step guide explains how to set up [Single Sign-On (SSO)](/docs/administration) in Contentstack with Google G Suite as your SAML 2.0 identity Provider (IdP). You create an SSO name and Assertion Consumer Service (ACS) URL in Contentstack, set up a custom SAML app in the Google Admin console, map attributes, turn the app on for your users, and then test and enable SSO in Contentstack. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login) * Google Admin account ## What You Will Learn * How to create an SSO name and ACS URL in Contentstack. * How to set up a custom SAML app for Contentstack in the Google Admin console. * How to map attributes and turn the app on for your users. * How to test and enable SSO for your organization. ## Steps to Set up SSO with Google G Suite The integration with Google G Suite can be done in two easy steps: 1. [Create SSO Name and ACS URL in Contentstack](#create-sso-name-and-acs-url-in-contentstack) 2. [Configure Google G Suite for Contentstack](#configure-google-g-suite-for-contentstack) Let’s see each of the steps in detail. 1. ## Create SSO Name and ACS URL in Contentstack 1. Log in to your [Contentstack account](https://app.contentstack.com/#!/login), go to the [**Organization Settings**](/docs/administration/organization-settings-overview)page, and click on the **Single Sign-On** tab.![Set\_up\_SSo\_1\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt3aca92bcd655acd7/60e3242161faef2008de28f9/Set_up_SSo_1_highlighted.png) 2. Enter an **SSO Name** of your choice, and click **Create**. For example, if your company name is “Acme, Inc.” enter “acme” here. This name will be used as one of the login credentials by the organization users while signing in. **Note:** The SSO Name can contain only alphabets (in lowercase), numbers (0-9), and/or hyphens (-). ![Set\_up\_SSo\_2\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltd8f47f763dd90201/60e3242b61faef2008de28fd/Set_up_SSo_2_highlighted.png) Let's use “sso-test” as the **SSO Name**. 3. This will generate **Assertion Consumer Service (ACS)** URL and other details such as **Entity ID**, **Attributes** and **NameID Format**. These details will be used in Step 2 for configuring the Contentstack app in Google G Suite.![ACS\_URL.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltbbd19c8098a9cc1f/63762ef176567a10a7cb82c1/ACS_URL.png) Keep this window open, as you may need these details for setting up the Contentstack app in Google G Suite. 2. ## Configure Google G Suite for Contentstack 1. Log in to your Google Admin account, click on to **Apps,** and select **SAML apps**. ![1.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltb7a911dd47fa510a/6387667e4005df1070b03d5b/1.jpg) 2. Click on **Add a service/App to your domain**, or you can click on the yellow plus (**+**) icon in the right bottom corner.![2.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt48f770fed1c50e2a/5d65144965cd852769378a75/2.png) 3. This will open the **Enable SSO for SAML Application** window. Click on **SETUP MY OWN CUSTOM APP.**![3.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt212e63b7ec42bf67/6387670b76567a10a7cbe7ae/3.jpg) 4. Copy the link in the **SSO URL** field and paste it into the corresponding **Sign-On URL** field in Contentstack's Single Sign-On settings.  5. Click on the **Download** button to download the Certificate and upload the downloaded certificate file in Contentstack’s SSO setting. ![4.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt828aff1c2bf237f4/6387673d1da254109279d823/4.jpg) 6. Next, you will see the **Basic information for your Custom App** window where you can provide an application name and upload a logo. Then, click **Next** to proceed further to SAML settings. ![5.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt154358226b0fed05/63876753f33b43105dcdaab0/5.jpg) 7. Now you will come to the **Service Provider Details** window where you need to provide the **ACS URL** and the **Entity ID** of your Contentstack application.![6.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltf2676e91e660b57b/5d6513e35ab0281fbe5e1764/6.png) 8. In the **Name ID** field, select **Basic information** and **Primary Email**. For the **Name ID Format** field, select **EMAIL**. Click on **Next.**![7.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt3e97433c9bc1a861/6387678ef9bf30104c6e3959/7.jpg) 9. In the **Attribute Mapping** window, click on **ADD NEW MAPPING**. ![8.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blta65ef543f9a14a18/638767a87140e510ae4aba25/8.jpg) 10. Enter “email,” and select **Basic information** and **Primary Email**; enter “first\_name,” and select **Basic information** and **First Name**; and enter “last\_name,” and select **Basic information** and **Last Name**. ![9.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt735162fa4de82569/638767c1303d7a10a114a61d/9.jpg) 11. On the following prompt, click on **OK**. ![10.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt0a6ba6362400d2c5/638767d307d496104f3925e0/10.jpg) 12. Now, you will see your SAML app. ![11.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt3e6b37e5834cb010/638767ee12a129103e952504/11.jpg) 13. Click the three dots at the top of the gray box. You will see three options: **On for everyone**, **OFF**, and **On for some organizations**. ![12.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltc38e3476ae5aa85e/638768059743b810a4de87ab/12.jpg) 14. Select **On for some organizations** and click on **TURN ON FOR EVERYONE** to confirm. ![13.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt10ba7faa020e7601/6387681b6237d71069351c37/13.jpg) 15. Now you will see that your app has been turned on for everyone. ![Screenshot 2017-11-17 16.29.18.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1174f382c2493cad/63ea4ac5723591743bc4d2c9/Screenshot_2017-11-17_16.29.18.png) With this, you are done with setting up the Contentstack app in Google G Suite. You can now proceed to configuring the remaining steps in Contentstack.  ## Further steps ### User Management In Contentstack, save your settings and go to **3\. User Management**. Enable [**Strict Mode**](/docs/administration/set-up-sso-in-contentstack#strict-mode)if you do not want any users to access the organization without SSO login. ![image.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt76d8a1401bbd3062/60e324887df6873288cd7e3b/image.png) [**Session Timeout**](/docs/administration/set-up-sso-in-contentstack#session-timeout)lets you define the session duration for a user signed in through SSO. While the default is set to 12 hours, you can modify it as per your requirement. ### Test & Enable Go to **4\. Test & Enable** in Contentstack. Click the [**Test SSO**](/docs/administration/set-up-sso-in-contentstack#test-sso)button to check if your SSO settings have been configured properly. It is highly recommended that you test your settings before enabling SSO. ![image.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt372469429b141fd4/60e3249b92aa422edd5e387f/image.png) To enable SSO for your Contentstack organization, click on [**Enable SSO**](/docs/administration/set-up-sso-in-contentstack#enable-sso). Once this is enabled, users of this organization can access the organization through SSO.  ![image.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blte01758f9cbbb449c/60e324c03b10992ed7acc23a/image.png) You can then disable SSO from the same page when required. ![Disable\_SSO.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltd804680545216a38/63762ef15834861044c1f25b/Disable_SSO.png) --- ## URL: https://www.contentstack.com/docs/administration/set-up-sso-with-microsoft-azure-ad --- title: "Set up SSO with Microsoft Azure AD" description: "This step-by-step guide explains how to set up Single Sign-On in Contentstack with Azure Active Directory (AD) as your SAML 2.0 Identity Provider (IdP)." url: "https://www.contentstack.com/docs/administration/set-up-sso-with-microsoft-azure-ad" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-23" filename: set-up-sso-with-microsoft-azure-ad.md --- # Set up SSO with Microsoft Azure AD This step-by-step guide explains how to set up [Single Sign-On](/docs/administration) in Contentstack with Microsoft Azure Active Directory (AD) as your SAML 2.0 Identity Provider (IdP). You create an SSO name in Contentstack, register and configure the Contentstack app in Azure AD, exchange the IdP details, add users and app roles, optionally map roles, and then test and enable SSO. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login) * Organization [Owner](/docs/administration/about-administration-roles) permissions * Microsoft Azure AD administrator account ## What You Will Learn * How to create an SSO name and ACS URL in Contentstack. * How to register and configure the Contentstack app in Microsoft Azure AD as a SAML 2.0 IdP. * How to add users and app roles in Azure AD and map them to Contentstack roles (optional). * How to test and enable SSO for your organization. ## Steps to Set up SSO with Microsoft Azure AD In a nutshell, this integration requires following steps: 1. [Create SSO Name and ACS URL in Contentstack](#create-sso-name-and-acs-url-in-contentstack) 2. [Configure Microsoft Azure AD details in Contentstack](#configure-microsoft-azure-ad-details-in-contentstack) 3. [Add Users to Your Microsoft Azure AD Application](#add-users-to-your-microsoft-azure-ad-application) 4. [Add Users Roles in Your Application](#add-users-roles-in-your-application) 5. [Assign Roles to Application Users for IdP Role Mapping](#assign-roles-to-application-users-for-idp-role-mapping) 6. [Create Role Mappings in Contentstack](#create-role-mappings-in-contentstack) 7. [Test and Enable SSO](#test-and-enable-sso) Let us see each of the processes in detail. 1. ## Create SSO Name and ACS URL in Contentstack **Note:** Only the Organization [Owner](/docs/headless-cms/types-of-roles#owner) will be able to perform the steps discussed below. Start by creating an SSO Name and generate the ACS URL in Contentstack 1. Log in to your [Contentstack account](https://app.contentstack.com/#!/login), go to the **Organization Settings** page, and click on **SINGLE SIGN-ON** tab.![Set\_up\_SSo\_1\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltb9e244f2d1f270c5/60df389a7c871833cab137c1/Set_up_SSo_1_highlighted.png) 2. Enter an **SSO Name** of your choice, and click **Create**. For example, if your company name is “Acme, Inc.” enter “acme” here. This name will be used as one of the login credentials by the organization users while signing in. **Note:** The SSO Name can contain only alphabets (in lowercase), numbers (0-9), and/or hyphens (-). ![Set\_up\_SSo\_2\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blte328006d160f9504/60df38a67df6873288cd7708/Set_up_SSo_2_highlighted.png)Let's use “sso-test” as the SSO Name. 3. When you click **Create**, this will generate the **Assertion Consumer Service (ACS)** URL and other details such as **Entity ID**, **Attributes**, and **NameID Format**. These details will be used in **Step 2** for configuring the Contentstack app in Microsoft Azure AD.![Set\_up\_SSo\_3\_highlighted.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltcfa122bf4ae86eb0/638768410fd02e10825078a8/Set_up_SSo_3_highlighted.jpg)Keep this window open, as you may need these details for setting up the Contentstack app in Azure AD. 2. ## Configure Contentstack App in Microsoft Azure AD **Note:** You need to be a Microsoft Azure AD administrator to complete the steps below. 1. To configure the integration of Contentstack into Microsoft Azure AD, you need to add the Contentstack app. For this, go to the Microsoft Azure portal, and click on the **Azure Active Directory** tab.![Click\_on\_Azure\_Active\_Directory.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltb06ad172bd331035/5f461e99fb60b1668c21d6ad/Click_on_Azure_Active_Directory.png) 2. Click on **Enterprise Applications** on the left panel, and click on **\+ New application** on the top.![Click\_on\_Newapplication.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt1a8138f1176f5152/5f46221d70ca0f65ba10949a/Click_on_Newapplication.png) 3. Click on **Non-gallery application** to create a new application that is not already present in the gallery.![Click\_on\_Non\_gallery\_application.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltd3e2e3168d687482/5f46221dba13f249213fb7d7/Click_on_Non_gallery_application.png) 4. Provide a name to your app, for example, “test-sso,” and click on **Add**.![Name\_for\_your\_Azure\_app.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltb55a68f63ff089fc/5f46221e2ecc864927d8c4c7/Name_for_your_Azure_app.png) 5. This will lead you to the **Overview** page where you will see the overview details of your application. Under the **Getting Started** section, click on the **2\. Set up single sign on** tab.![Click\_on\_the\_2\_Set\_up\_single\_sign\_on\_tab.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt51233ef8c91efb45/5f46221eb008d84afeba69be/Click_on_the_2_Set_up_single_sign_on_tab.png) 6. On the **Select a single sign-on method** page, select the **SAML** mode to enable single sign-on.![Select\_SAML\_as\_the\_Single\_sign\_on\_method.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt756f6943548f8196/5f46224470ca0f65ba10949e/Select_SAML_as_the_Single_sign_on_method.png) 7. You will be led to the **Set up Single Sign-On with SAML** page where you can perform the further steps after creating your app.![Set\_up\_Single\_Sign-On\_with\_SAML.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blte3167e522b32f690/5f462244a9d4814afda14279/Set_up_Single_Sign-On_with_SAML.png) 8. Click on the “Edit” (pencil) icon beside the **Basic SAML Configuration** section, add the following details: * **Identifier (Entity ID)**: Enter the “Entity ID” of Contentstack, i.e., https://app.contentstack.com. * **Reply URL (Assertion Consumer Service URL)**: Enter the ACS URL that we generated in **Step 1.c.**![Basic\_SAML\_Configuration.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt2bc9970d19ce8eed/5f461e99b008d84afeba69ba/Basic_SAML_Configuration.png) 9. Next, edit the **User Attributes & Claims** section. Under **Claim Name**, you will see the primary claim, **Unique User Identifier (Name ID)**, with the claim **Value** set to **user.userprincipalname \[nameid-format:emailAddress\]**. On clicking this claim, you will find the following details on the **Manage claim** page:![Manage\_claim\_Unique\_User\_Identifier.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt2cecc279d92f2de5/5f46221e185efb660c1ca38b/Manage_claim_Unique_User_Identifier.png)Close this page. Now, delete the default attributes that you see under the **Additional claims** section. We will be adding our own set of attributes.![New\_Attributes\_in\_User\_Attributes\_&\_Claims.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt69f4806a1cf28e52/5f46221e79723565b971b21a/New_Attributes_in_User_Attributes_&_Claims.png) 10. Now, to add your attributes, click on **\+ Add new claim**. 11. In the **Manage claim** page, enter first\_name under **Name**, select **user.givenname** under the **Source** attribute, and click **Save**.![Add\_first\_name\_attribute.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltdd111dd740800e64/5f461e92fb60b1668c21d6a9/Add_first_name_attribute.png)Similarly, add the following attributes: Name Value last\_name **user.surname** email **user.userprincipalname** roles **user.assignedroles** If you want to enable Role Mapping in Contentstack, then it is highly important to add the roles attribute as we need this for IdP Role Mapping which we will cover in the next set of steps.![Add\_roles\_attribute\_for\_idp\_role\_mapping.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltce12e7b1f456093c/5f461e94a11538653ea57e88/Add_roles_attribute_for_idp_role_mapping.png)You will see the added attributes in the **User Attributes & Claims** section.![New\_Attributes\_in\_User\_Attributes\_&\_Claims.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt69f4806a1cf28e52/5f46221e79723565b971b21a/New_Attributes_in_User_Attributes_&_Claims.png) 12. In the **SAML Signing Certificate** section, click the **Download** link beside **Certificate (Base64)**. This will download and save the Base64 version of the certificate for your Contentstack app. If needed, edit the **Notification Email Addresses** section, change the notification email, and click on **Save**. ![Change\_notification\_email.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blta2005ad9e8a8ab1a/5f461e98c0e5e047f9386c88/Change_notification_email.png) 13. Under the **Set up <**_**app\_name**_**\>** section, you will find important data, such as **Login URL**, **Azure AD Identifier**, and **Logout URL** of your Microsoft Azure AD app. This data is required when configuring the Microsoft Azure AD details in Contentstack. 3. ## Configure Microsoft Azure AD details in Contentstack 1. From the previous section, copy the URL provided in the **Login URL** section of your Contentstack application in Microsoft Azure AD and paste it into **Single Sign-On URL** field in Contentstack’s **2 IdP configuration** section.![Set\_up\_SSo\_4\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt21a8c8a269c3122a/60df38c9ccb5203c30a28e9f/Set_up_SSo_4_highlighted.png) 2. Upload the X.509 certificate that you downloaded from Microsoft Azure AD in Step 2.i. into the **Certificate** field in Contentstack SSO Settings. Next, you need to define roles in Microsoft Azure AD that would be used to create role mapping in Contentstack. 4. ## Add Users to Your Microsoft Azure AD Application After setting the necessary configurations in Contentstack, you need to add users to your newly added application. To do so, you need to perform the following steps: 1. Navigate to **Azure Active Directory**, select **Enterprise Applications**, select **All applications**, then select your application. 2. Under the **Getting Started** section, click on the **1\. Assign users and groups** tab.![Click\_on\_the\_1\_Assign\_users\_and\_groups\_tab.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltee694dc56a6898c6/5f46221ec0e5e047f9386cb8/Click_on_the_1_Assign_users_and_groups_tab.png) 3. Click on the **\+ Add user** button.![Click\_on\_Add\_User.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blteb21dd3d2f83d543/5f461e9979723565b971b1f0/Click_on_Add_User.png) 4. Click on **Users and groups**. You will find a list of users whom you can add into your application.![Select\_users\_under\_Users\_and\_groups.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt55e246fb68499795/5f4622442a722a66860bd804/Select_users_under_Users_and_groups.png) You can either select from the given list of users or you can invite and add new users by inviting them. 5. ## Add Users Roles in Your Application **Note:** This is an optional step, but it”s mandatory if IdP Role Mapping is part of your Contentstack plan and you want to implement it. Application Roles are defined under the application's registration manifest in the Microsoft Azure portal. To add user roles, perform the following steps: 1. In the left navigation, click on **App Registrations**, and click on **All applications**. Locate your newly created application and click on it.![Click\_on\_App\_registrations.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt2a13bd5be65ef3d9/5f461e9970ca0f65ba109486/Click_on_App_registrations.png) 2. In your application blade, click on **Manifest**. You will see the JSON representation of your application.![Add\_roles\_under\_Manifest.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltcbefb37792c607cb/5f461e9679723565b971b1ec/Add_roles_under_Manifest.png) Add the following code snippet of a new role under appRoles: ``` { "allowedMemberTypes": [ "User" ], "description": "Developer Role", "displayName": "Developer", "id": "18d14569-c3bd-439b-9a66-3a2aee02f15f", "isEnabled": true, "value": "developer" } ``` The above code snippet is for adding a single role where the value provided to the value parameter is what you need to add in the IdP Role Mapping section of Contentstack. All the values provided in this snippet is user-defined. For adding multiple roles, create similar snippets with the required role details. You can add multiple such IdP roles and add their mappings in Contentstack. 3. Save the manifest. You will be able to see all the roles that you created when you assign them to your application users. 6. ## Assign Roles to Application Users for IdP Role Mapping **Note:** This is an optional step, but it is mandatory if [IdP Role Mapping](/docs/administration/idp-role-mapping) is part of your Contentstack plan and you want to implement it. This is an alternate way of managing users and permissions of your SSO-enabled organization. Performing this step lets you map your IdP roles to Contentstack roles while configuring SSO for your Contentstack organization. To assign roles to application users, perform the following steps: 1. Navigate to **Azure Active Directory**, select **Enterprise Applications**, select **All applications**, then select your application. 2. Under the **Getting Started** section, click on the **1\. Assign users and groups** tab. 3. To add a new user with a role, click on the **\+ Add User** button. 4. Click on **Users and groups**. You will find a list of users whom you can add into your application. 5. Next, click on **Select Role** in the **Add Assignment** page of your application. In the **Select Role** panel on the right, you will see the role you created (in our case, developer). 6. Assign the selected role to the application user. You can now proceed to create role mappings in Contentstack for the IdP roles you created. Go to the **User Management** section of your Contentstack SSO settings. 7. ## Create Role Mappings in Contentstack **Note:** You will only be able to view and perform this step if IdP Role Mapping is part of your Contentstack plan. In the **User Management** section of Contentstack's SSO Setup page, you will see [Strict Mode](/docs/administration/set-up-sso-in-contentstack#strict-mode) (authorize access to organization users only via SSO login) and [Session Timeout](/docs/administration/set-up-sso-in-contentstack#session-timeout) (define session duration for a user signed in through SSO). Below these options, you will see the **Advanced Settings** option. ![Set\_up\_SSo\_5\_no\_highlight.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt6e8d8789579e7bb8/60df38e1e7a80f3c2a868e6e/Set_up_SSo_5_no_highlight.png) Click on it to expand the **IdP Role Mapping** section to map IdP roles to Contentstack. 1. In the **Add Role Mapping** section, click on the **\+ ADD ROLE MAPPING** link to add the mapping details of an IdP role. The details include the following: 1. **IdP Role Identifier**: Enter the IdP group/role identifier, for example, “developers.” You can use the value from your manifest. 2. **Organization Role**: Assign either the **ADMIN** or **MEMBER**role to the mapped group/role. 3. **Stack Roles** _(optional)_: Assign [stacks](/docs/headless-cms/about-stack) as well as the corresponding stack-level roles to this role. ![SSO\_IdP\_Role\_Mapping.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt5c9e222bf01648a0/62b4643061e0990f949238d9/SSO_IdP_Role_Mapping.png) Likewise, you can add more role mappings for your Contentstack organization. To add a new Role mapping, click on **\+ ADD ROLE MAPPING** and enter the details. 2. Keep **Role Delimiter** blank as Microsoft Azure AD usually returns roles in an array. 3. Finally, check the **Enable IdP Role Mapping** checkbox to enable the feature. 4. Click on **Next** to continue further. While some details about these steps are given below, you can refer to our [general SSO guide](/docs/administration) for more information. 8. ## Test and Enable SSO Next, you can try out the “Test SSO” and “Enable SSO” steps in Contentstack ### Test SSO Before enabling SSO, it is recommended that you test the SSO settings configured so far. To do so, perform the following steps: 1. Click on the **Test SSO** button and it will take you to Contentstack’s **Login Via SSO** page where you need to specify your organization SSO name. 2. Then, click on **Continue** to go to your IdP sign in page. 3. Sign in to your account. If you are able to sign in to your IdP, your test is successful. On successful connection, you will see a success message as follows: ![Set\_up\_SSo\_10\_no\_highlight.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt3e74ddb73e4ec11d/60df39002eb77d200fac890c/Set_up_SSo_10_no_highlight.png) If you have enabled IdP Role Mapping, you’ll find the following details in a new page: * **SSO connection established successfully** - A success message is displayed. * **IdP roles received** - The list of all the roles assigned to you in your IdP. * **Contentstack-IdP role mapping details** - The details of all the Contentstack Organization-specific and Stack-specific roles mapped to your IdP roles. Click on the **Close** button. Now, you can safely enable SSO for your organization. **Note**: While testing SSO settings with IdP Role Mapping enabled, the test will be performed only for the IdP roles of the currently logged-in user (i.e., the Owner performing the test). ### Enable SSO Once you have tested your SSO settings, click **Enable SSO** to enable SSO for your Contentstack organization. ![Set\_up\_SSo\_9\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltdd84e1d16cbe048d/60e3358692aa422edd5e38d3/Set_up_SSo_9_highlighted.png) Confirm your action by clicking on **Yes**. Once this is enabled, users of this organization can access the organization through SSO. If needed, you can always disable SSO from this page as well. ![Disable\_SSO.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltd804680545216a38/63762ef15834861044c1f25b/Disable_SSO.png) --- ## URL: https://www.contentstack.com/docs/administration/set-up-sso-with-microsoft-azure-ad-b2c --- title: "Set up SSO with Microsoft Azure AD B2C" description: "Learn how to effortlessly set up Single Sign-On (SSO) with Microsoft Azure AD B2C on Contentstack." url: "https://www.contentstack.com/docs/administration/set-up-sso-with-microsoft-azure-ad-b2c" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: set-up-sso-with-microsoft-azure-ad-b2c.md --- # Set up SSO with Microsoft Azure AD B2C This step-by-step guide explains how to set up [Single Sign-On](/docs/administration/about-single-sign-on-sso) in Contentstack with Microsoft Azure Active Directory (AD) B2C as your SAML 2.0 Identity Provider (IdP). In a nutshell, this integration requires following steps: 1. [Create SSO Name and ACS URL in Contentstack](#create-sso-name-and-acs-url-in-contentstack) 2. [Configure Contentstack App in Microsoft Azure AD B2C](#configure-contentstack-app-in-microsoft-azure-ad-b2c) 3. [Configure Microsoft Azure AD B2C Details in Contentstack](#configure-microsoft-azure-ad-b2c-details-in-contentstack) 4. [Add Users to Your Microsoft Azure AD B2C Application](#add-users-to-your-microsoft-azure-ad-b2c-application) 5. [Test and Enable SSO](#test-and-enable-sso) ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner](/docs/administration/about-administration-roles) permissions * Active Microsoft Azure AD B2C subscription ## What You Will Learn * How to create an SSO name and generate the ACS URL in Contentstack. * How to register and configure the Contentstack app in Azure AD B2C. * How to configure the Azure AD B2C IdP details in Contentstack. * How to add users and test, then enable, SSO. ## Create SSO Name and ACS URL in Contentstack Start by creating an SSO Name and generate the ACS URL in Contentstack 1. Log in to your [Contentstack account](https://www.contentstack.com/login/), go to the **Organization Settings** page, and click the **Single Sign-On** tab.![SSO\_AD\_B2C\_-\_Single\_Sign\_on.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5727bef6997ce85b/6501997e7db54e50cec1ab57/SSO_AD_B2C_-_Single_Sign_on.png) 2. Enter an **SSO Name** of your choice, and click **Create**. For example, if your company name is “Acme, Inc.” enter “acme” here. This name will be used as one of the login credentials by the organization users while signing in. **Note:** The SSO Name can contain only alphabets (in lowercase), numbers (0-9), and/or hyphens (-). ![SSO\_AD\_B2C\_-\_SSO\_Name.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt630dbc32e94a82c8/6501997e1c72d81dfe8b0d09/SSO_AD_B2C_-_SSO_Name.png) Let's use “sso-test” as the SSO Name. 3. When you click **Create**, this will generate the **Assertion Consumer Service URL** and other details such as **Entity ID**, **Attributes**, **NameID Format**, and **SAML Version**. These details will be used in [Step 2](#configure-contentstack-app-in-microsoft-azure-ad-b2c) for configuring the Contentstack app in Microsoft Azure AD B2C.![Azure\_AD\_B2C\_-\_SSO\_Configuration\_-\_Step\_3.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteecae654830e6ebf/6501997e68d8e15c4f6042f7/Azure_AD_B2C_-_SSO_Configuration_-_Step_3.png) * Keep this window open, as you may need these details for setting up the Contentstack app in Microsoft Azure AD B2C. * ## Configure Contentstack App in Microsoft Azure AD B2C * To configure the integration of Contentstack into Microsoft Azure AD B2C, you need to add the Contentstack app in Microsoft Azure AD B2C Portal. 1. Go to the [Microsoft Azure Portal](https://portal.azure.com/), and click on **Azure AD B2C**:![Azure-AD-B2C-portal](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt68f157f35f1d58ad/64f6cbd555996b51f906bcc3/Azure_AD_B2C_-_portal.png) **Note:** Please make sure you have an active subscription of Azure AD B2C before we proceed to the next step. 2. Within the **Azure AD B2C** portal, in the left navigation panel, scroll and click **Identity Experience Framework**. ![Azure-AD-B2C-IEE](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5333f6ebbc7b146f/64f6cbc89bcd1bf0cd1cd2e6/Azure_AD_B2C_-_Identity_Experience_Framework.png) 3. Next, generate the required security certificate that you will be needing in the next step. **Additional Resource:** For detailed instructions on generating the certificate, refer to the [Obtain a Certificate](https://learn.microsoft.com/en-us/azure/active-directory-b2c/saml-service-provider?tabs=macos&pivots=b2c-custom-policy#obtain-a-certificate) documentation. 4. Next, you need to create and upload the Policy keys for your application. To do so, follow the steps given below: 1. Navigate to the **Policy keys** section in your Azure AD B2C portal and click the **\+ Add** button. ![Azure-AD-B2C-add-policy-keys](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt83c5c7923a131e25/64f6cbc7b8c6d65f8c0e33c1/Azure_AD_B2C_-_Add_Policy.png) 2. Within the **Create a key** panel that appears, select **Upload** from the dropdown menu for the **Options** field. 3. Enter the **Name** for the policy key. 4. In the **File upload** field, browse through your local machine and select the security certificate created in the previous step. 5. Enter a **Password** and click the **Create** button. ![Azure-AD-B2C-create-policy keys](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt18674482658678a8/64f6cbc78606a861d4c84542/Azure_AD_B2C_-_Create_Policy.png) 5. Register the **IdentityExperienceFramework** and **ProxyIdentityExperienceFramework** applications in your portal. **Additional Resource:** Refer to the Microsoft documentation on Register the [IdentityExperienceFramework application](https://learn.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-user-flows?pivots=b2c-custom-policy#register-the-identityexperienceframework-application) and Register the [ProxyIdentityExperienceFramework application](https://learn.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-user-flows?pivots=b2c-custom-policy#register-the-proxyidentityexperienceframework-application) documents for more information. 6. Register the Contentstack Application in the Azure AD B2C Portal as follows: 1. Navigate to **App registrations** and click the **\+ New registration** button. ![Azure-AD-B2C-app-registration](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb79a55e995dc93a3/64f6cbc79bcd1bd53a1cd2e2/Azure_AD_B2C_-_App_registration.png) 2. Enter the **Name** for your application. 3. Select any one of the **Supported account types** from the given options. 4. Within the **Redirect URI** section. Select **Web** as the platform from dropdown and add the URL that you obtained while setting up your stack in [step 1.3](#create-sso-name-and-acs-url-in-contentstack). 5. Select the **Checkbox** under **Permissions** and click the **Register** button. ![Azure-AD-B2C-registeration-an-app](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt68ff0a77217ea69e/64f6cbd529dd3665a93b4299/Azure_AD_B2C_-_Register_app.png) **Note:** Copy the Application ID for later use in the custom policies. 7. To configure your application, go to the **Manifest** tab in the left navigation panel. In the **IdentifierUris** field, enter the **EntityId** that you received in [step 1.3](#create-sso-name-and-acs-url-in-contentstack). ![Azure-AD-B2C-manifest](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfdb391afc292c9e8/64f6cbc7da83c9064bf97cbf/Azure_AD_B2C_-_Manifest.png) Click **Save** to secure your changes. 8. Within the **Identity Experience Framework**, navigate to the **Custom policies** tab and click the **Upload custom policy** button. ![Azure-AD-B2C-custom-policy](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd4e11afffc3ff1ec/64f6cbc7da83c9b9edf97cbb/Azure_AD_B2C_-_Custom_policy.png) 1. If you already have custom policies defined for your B2C application, you can use the same ensure SAML2 Assertion is configured. If not you can use the [custom policy starter pack](https://learn.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-user-flows?pivots=b2c-custom-policy#get-the-starter-pack) and follow [SAML assertion configurations](https://learn.microsoft.com/en-us/azure/active-directory-b2c/saml-service-provider?tabs=macos&pivots=b2c-custom-policy#enable-your-policy-to-connect-with-a-saml-application). 2. In the custom policy document, ensure the following output claims are added to the **Technical profile** section. ``` ``` 3. Browse through your local machine and select the file that includes the updated custom policy as per your configuration and click **Upload.** ![Azure-AD-B2C-upload-policy](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2bd2f2b85c551504/64f6cbd555996bbcd106bcc7/Azure_AD_B2C_-_Upload_policy.png) 9. Once the setup is done, navigate to the below URL https://.b2clogin.com/.onmicrosoft.com//Samlp/metadata where is your Azure B2C tenant name. This should give you a valid SAML response. 10. Search for **SingleSignOnService** in the page and note the **URL** mentioned under the **Location** parameter. * Configure Microsoft Azure AD B2C Details in Contentstack * To configure the Microsoft Azure AD B2C details in your stack, follow the steps below: 1. Paste the URL from step 2.10 within the **Single Sign-On Url** field in your stack’s **Single Sign-On** settings.![SSO\_AD\_B2C\_-\_Configure\_AD\_B2C\_in\_contentstack.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt217fe28860bafb05/6501997ec12d771768d067eb/SSO_AD_B2C_-_Configure_AD_B2C_in_contentstack.png) 2. In the **Certificate** field, upload the certificate generated in [step 2](#configure-contentstack-app-in-microsoft-azure-ad-b2c). * Add Users to Your Microsoft Azure AD B2C Application * After setting the necessary configurations in Contentstack, you can add users to your newly added application. You can add users in two ways, * Through SignUp page if configured * Through Users list on the application * Here, we are using the second method to add users. 1. Within the **Microsoft Azure AD B2C** portal, click Users in the left navigation panel. 2. Click the **+New Users** button. ![Azure-AD-B2C--new-user](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4affc8a2a439cfb4/64f8206f9bf26197fb6ba3cd/Azure_AD_B2C_-_Select_New_User.png) 3. In the **Select template**, choose any one from the options provided. You can either **Invite user**, **Create user**, or **Create Azure AD B2C** user. 4. In the **Identity** field, provide the required data and select the **Create** button. ![Azure-AD-B2C-create-user](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8b0768588c95a1ab/64f6cbd59da0150c141ea1f7/Azure_AD_B2C_-_New_User.png) * Test and Enable SSO * Next, you can try out the “Test SSO” and “Enable SSO” steps in Contentstack * ### Test SSO * Before enabling SSO, it is recommended that you test the SSO settings configured so far. * To do so, perform the following steps: 1. Click on the **Test SSO** button and it will take you to Contentstack’s **Login Via SSO** page where you need to specify your organization's SSO name. 2. Then, click **Continue** to go to your IdP sign in page. 3. Sign in to your account. If you are able to sign in to your IdP, your test is successful. On successful connection, you will see a success message as follows: ![Azure-AD-B2C-test-sso](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt43e8a5bdf43e10e6/64f6cbfd8606a8b742c84546/SSO_AD_B2C_-_Test_SSO.png) * ### Enable SSO * Once you have tested your SSO settings, click **Enable SSO** to enable SSO for your Contentstack organization. ![SSO\_AD\_B2C\_-\_Enable\_SSO.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5438eefb58cae9d5/6501997e9bcd1b45cd1cfd02/SSO_AD_B2C_-_Enable_SSO.png) * Confirm your action by clicking **Yes**. * Once this is enabled, users of this organization can access the organization through SSO. If needed, you can always disable SSO from this page as well. --- ## URL: https://www.contentstack.com/docs/administration/set-up-sso-with-microsoft-entra-ID-native-app --- title: "Set up SSO with Microsoft Entra ID Native App" description: "Learn to set up Single Sign-On in Contentstack with Microsoft Entra ID Native App. Follow our step-by-step guide for seamless integration." url: "https://www.contentstack.com/docs/administration/set-up-sso-with-microsoft-entra-ID-native-app" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-28" filename: set-up-sso-with-microsoft-entra-ID-native-app.md --- # Set up SSO with Microsoft Entra ID Native App **Warning**: This set up guide is deprecated. Please visit our documentation on [Set up SSO with Microsoft Azure AD](/docs/administration/set-up-sso-with-microsoft-azure-ad). This step-by-step guide explains how to set up [Single Sign-On](https://www.contentstack.com/docs/administration) in Contentstack with Microsoft Entra ID as your SAML 2.0 Identity Provider (IdP). You create an SSO name and Assertion Consumer Service (ACS) URL in Contentstack, configure the Contentstack app in Microsoft Entra ID, exchange the IdP details, add users and application roles, map those roles to Contentstack, and then test and enable SSO. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner](/docs/administration/about-administration-roles) role * Microsoft Entra ID administrator access with an active Microsoft Entra ID subscription ## What You Will Learn * How to create an SSO name and ACS URL in Contentstack. * How to configure the Contentstack app in Microsoft Entra ID as a SAML 2.0 IdP. * How to add application roles and assign them to users for IdP role mapping. * How to test and enable SSO for your organization. ## Steps to set up SSO with Microsoft Entra ID The integration with Microsoft Entra ID Native App can be done in the following easy steps: 1. [Create SSO Name and ACS URL in Contentstack](#create-sso-name-and-acs-url-in-contentstack) 2. [Configure Contentstack App in Microsoft Entra ID](#configure-contentstack-app-in-microsoft-entra-id) 3. [Configure Microsoft Entra ID details in Contentstack](#configure-microsoft-entra-id-details-in-contentstack) 4. [Add Users to Your Microsoft Entra ID Application](#add-users-to-your-microsoft-entra-id-application) 5. [Add Users Roles in Your Application](#add-users-roles-in-your-application) 6. [Assign Roles to Application Users for IdP Role Mapping](#assign-roles-to-application-users-for-idp-role-mapping) 7. [Create Role Mappings in Contentstack](#create-role-mappings-in-contentstack) 8. [Test and Enable SSO](#test-and-enable-sso) Let us see each of the processes in detail. 1. ## Create SSO Name and ACS URL in Contentstack **Note**: Only the Organization [Owner](https://www.contentstack.com/docs/headless-cms/types-of-roles#owner) will be able to perform the steps discussed below. Start by creating an SSO Name and generate the ACS URL in Contentstack 1. Log in to your [Contentstack account](https://www.contentstack.com/login/), go to the **Organization Settings** page, and click the **Single Sign-On** tab.![1\_SS0\_Entra\_Settings\_SingleSignOn.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt86ca49ac4c744b18/662a1690107b2814026c70f8/1_SS0_Entra_Settings_SingleSignOn.png) 2. Enter an **SSO Name** of your choice, and click **Create**. This name will be used as one of the login credentials by the organization users while signing in. **Note**: The SSO Name can contain only alphabets (in lowercase), numbers (0-9), and/or hyphens (-). ![2\_SS0\_Entra\_Settings\_SSOName.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltee949b4de91f1fed/662a1690ac4b0061c3c43842/2_SS0_Entra_Settings_SSOName.png) 3. When you click **Create**, this will generate the **Assertion Consumer Service (ACS)** URL and other details such as **Entity ID**, **SAML Version**, **Attributes**, and **NameID Format**. These details will be used in the upcoming **Step 2** for configuring the Contentstack app in **Microsoft Entra ID.** ![3\_SS0\_Entra\_Settings\_SingleSignOnPage.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte12584e767b96a12/662a1690ac4b004e5bc43846/3_SS0_Entra_Settings_SingleSignOnPage.png) Keep this window open, as you may need these details for setting up the Contentstack app in **Entra ID**. 2. ## Configure Contentstack App in Microsoft Entra ID **Note**: You need to be a **Microsoft Entra ID** administrator to complete the steps below. To configure the integration of Contentstack into **Microsoft Entra ID**, you need to add the Contentstack app in the **Microsoft Entra ID** portal. 1. Go to the [Microsoft Azure portal](https://portal.azure.com/), and click **Microsoft Entra ID**. ![4\_SS0\_Entra\_MS\_EntraID.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1486a8f22524038a/662a169045f9896f2ecf7182/4_SS0_Entra_MS_EntraID.png) **Note**: Please make sure you have an active subscription of Microsoft Entra ID before we proceed to the next step. 2. Click **Enterprise applications** from the left panel. ![5\_SS0\_Entra\_Overview\_EnterpriseAppl.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb2e2d82a0b46f61d/662a1690bb637281d41e07ad/5_SS0_Entra_Overview_EnterpriseAppl.png) 3. Click **\+ New application** from the top to create a new application. ![6\_SS0\_Entra\_EnterpriseAppl\_NewApp.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6965cc1ccf059acc/662a1690ca887457f7ed4906/6_SS0_Entra_EnterpriseAppl_NewApp.png) 4. Go to the search box and search for the Contentstack application, and then click the Contentstack app icon that appears. ![7\_SS0\_Entra\_MSEntraGallery.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0e84a037afc06cf3/662a1691a9b0ab3821b92d81/7_SS0_Entra_MSEntraGallery.png) 5. You may provide a name to your application, for example, “Contentstack SSO” and click **Create**. ![8\_SS0\_Entra\_Contentstack\_SSO.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbfaf5b4af9ab6e5f/662a169bb0544162bd9a09d7/8_SS0_Entra_Contentstack_SSO.png) 6. This will lead you to the **Overview** page where you will see the overview details of your application. Under the **Getting Started** section, click the **2\. Set up single sign on** card. ![9\_SS0\_Entra\_Contentstack\_SSO\_Setup\_SSO.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1bc5b1ef4a98cb24/662a169c107b28ef1a6c70fc/9_SS0_Entra_Contentstack_SSO_Setup_SSO.png) 7. On the Single sign-on page, under **Select a single sign-on method**, select the **SAML** mode to enable single sign-on. ![10\_SS0\_Entra\_Contentstack\_SSO\_SAML.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb3fa0419a0c73462/662a169cc9de461c66d49b39/10_SS0_Entra_Contentstack_SSO_SAML.png) 8. You will be led to the **Set up Single Sign-On with SAML** page where you can perform further steps after creating your app. ![11\_SS0\_Entra\_Contentstack\_SSO\_SAML\_NextSteps.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt140de857be3014fd/662a169c51b16fd618c4edd4/11_SS0_Entra_Contentstack_SSO_SAML_NextSteps.png) 9. Click the “Edit” (pencil) icon beside the **Basic SAML Configuration** section, and add the following details: 1. **Identifier (Entity ID):** Enter the “Entity ID” of Contentstack, i.e., [https://app.contentstack.com](https://app.contentstack.com). 2. **Reply URL (Assertion Consumer Service URL)**: Enter the ACS URL that we generated in Step 1.c. ![12\_SS0\_Entra\_Contentstack\_SSO\_SAML\_Basic\_Config.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb774a038202fcb1e/662a169ce7ce958be0deaeaf/12_SS0_Entra_Contentstack_SSO_SAML_Basic_Config.png) 10. Click **Save**. Now in the **Attributes & Claims** section, you can view default or pre-set claims and their corresponding values. ![13\_SS0\_Entra\_Attributes\_Claims.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3d7ac94920211a31/662a169b51b16fe1cbc4edd0/13_SS0_Entra_Attributes_Claims.png) Amongst the listed attributes above, the attributes email, first\_name, last\_name, and roles are mandatory, while all other attributes are optional. **Name** **Value** first\_name user.givenname last\_name user.surname email user.userprincipalname roles user.assignedroles **Note**: If you want to enable Role Mapping in Contentstack, then it is highly important to add the already set roles attributes as we need these for IdP Role Mapping, which we will cover in the next set of steps. 11. In the **SAML Certificates** section, click the **Download** link beside **Certificate (Base64)**. This will download and save the Base64 version of the certificate for your Contentstack app. ![14\_SS0\_Entra\_Notifiction\_Email.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7496e134e5d8f48d/662a169b45f9898115cf7186/14_SS0_Entra_Notifiction_Email.png) 12. If needed, edit the **Notification Email Addresses** section, change the notification email, and click **Save**. ![15\_SS0\_Entra\_Notifiction\_Email\_Address.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdc059bbc3229adbc/662a16b4776d0cef2724ea5f/15_SS0_Entra_Notifiction_Email_Address.png) 13. Under the Set up <_app\_name_\> section, you will find important data, such as Login URL, Entra ID Identifier, and Logout URL of your Microsoft Entra ID app. This data is required when configuring the Microsoft Entra ID details in Contentstack. ![16\_SS0\_Entra\_Setup\_SSO.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte6b3d5fb49372739/662a16b4776d0cebf324ea63/16_SS0_Entra_Setup_SSO.png) 3. ## Configure Microsoft Entra ID details in Contentstack 1. From the previous section, copy the URL provided in the **Login URL** section of your Contentstack application in Microsoft Entra ID and paste it into the **Single Sign-On** **URL** field in Contentstack’s **2 IdP configuration** section.![17\_SS0\_Entra\_IdP\_Config.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8ad9fb0652f5dae5/662a16b451b16f3323c4edd8/17_SS0_Entra_IdP_Config.png) 2. Upload the X.509 certificate that you downloaded from Microsoft Entra ID in Step 2.i. into the **Certificate** field in Contentstack SSO Settings. Next, you need to define roles in Microsoft Entra ID that would be used to create role mapping in Contentstack. 4. ## Add Users to Your Microsoft Entra ID Application After setting the necessary configurations in Contentstack, you need to add users to your newly added application. To do so, you need to perform the following steps: 1. Navigate to **Microsoft Azure Portal** > **Entra ID application**, select **Enterprise Applications**, select **All applications**, then select your application. 2. Under the **Getting Started** section, click the **1\. Assign users and groups** tab. ![18\_SS0\_Entra\_Assign\_Users\_Groups.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt20e2d8c49bcfdceb/662a16b4107b284e616c7100/18_SS0_Entra_Assign_Users_Groups.png) 3. Click the **\+ Add user/group** button. ![19\_SS0\_Entra\_Users\_and\_Groups.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc73e8dcb7bdf0634/662a16b4528fc1824c55c0ae/19_SS0_Entra_Users_and_Groups.png) 4. Click **Users and groups**. You will find a list of users whom you can add into your application. ![20\_SS0\_Entra\_Users\_and\_Groups\_Modal.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9fbf4e73ee65368d/662a16b4b054416d1f9a09db/20_SS0_Entra_Users_and_Groups_Modal.png) You can either select from the given list of users or you can invite and add new users by inviting them. 5. ## Add Users Roles in Your Application **Note**: This is an optional step, but it”s mandatory if IdP Role Mapping is part of your Contentstack plan and you want to implement it. Application Roles are defined under the application's registration manifest in the Microsoft Azure portal. To add user roles, perform the following steps: 1. In the left navigation, click **App Registrations**, and then click **All applications**. Locate your newly created application and click it. ![21\_SS0\_Entra\_App\_Registrations.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9042e09cc7414285/662a16b5a02ad7b2fdeea711/21_SS0_Entra_App_Registrations.png) 2. In your application blade, click **Manifest**. You will see the JSON representation of your application. ![22\_SS0\_Entra\_Manifest.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1867a1a5a54bcb0e/662a16c8c9de4649e4d49b3f/22_SS0_Entra_Manifest.png) Add the following code snippet of a new role under appRoles: ``` { "allowedMemberTypes": [ "User" ], "description": "Developer Role", "displayName": "Developer", "id": "18d14569-c3bd-439b-9a66-3a2aee02f15f", "isEnabled": true, "value": "developer" } ``` The above code snippet is for adding a single role where the value provided to the value parameter is what you need to add in the IdP Role Mapping section of Contentstack. All the values provided in this snippet is user-defined. For adding multiple roles, create similar snippets with the required role details. You can add multiple such IdP roles and add their mappings in Contentstack. 3. Save the manifest. You will be able to see all the roles that you created when you assign them to your application users. 6. ## Assign Roles to Application Users for IdP Role Mapping **Note**: This is an optional step, but it is mandatory if [IdP Role Mapping](https://www.contentstack.com/docs/administration/idp-role-mapping) is part of your Contentstack plan and you want to implement it. This is an alternate way of managing users and permissions of your SSO-enabled organization. Performing this step lets you map your IdP roles to Contentstack roles while configuring SSO for your Contentstack organization. To assign roles to application users, perform the following steps: 1. Navigate to **Azure Entra ID application**, select **Enterprise Applications**, select **All applications**, then select your application. 2. Under the **Getting Started** section, click the **1\. Assign users and groups** tab. 3. To add a new user with a role, click the **\+ Add User** button. 4. Click **Users and groups**. You will find a list of users whom you can add into your application. 5. Next, click **Select Role** in the **Add Assignment** page of your application. In the **Select Role** panel on the right, you will see the role you created (in our case, developer). 6. Assign the selected role to the application user. You can now proceed to create role mappings in Contentstack for the IdP roles you created. Go to the User Management section of your Contentstack SSO settings. 7. ## Create Role Mappings in Contentstack **Note**: You will only be able to view and perform this step if IdP Role Mapping is part of your Contentstack plan. In the **User Management** section of Contentstack's SSO Setup page, you will see [Strict Mode](https://www.contentstack.com/docs/administration/set-up-sso-in-contentstack#strict-mode) (authorize access to organization users only via SSO login) and [Session Timeout](https://www.contentstack.com/docs/administration/set-up-sso-in-contentstack#session-timeout) (define session duration for a user signed in through SSO). Below these options, you will see the **Advanced Settings** option. ![23\_SS0\_Entra\_Adv\_Settings.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf8f5b6ff4b738304/662a16c851b16f7066c4eddc/23_SS0_Entra_Adv_Settings.png) Click it to expand the IdP Role Mapping section to map IdP roles to Contentstack. 1. In the Add Role Mapping section, click the **\+ ADD ROLE MAPPING** link to add the mapping details of an IdP role. The details include the following: 1. **IdP Role Identifier**: Enter the IdP group/role identifier, for example, “developers.” You can use the value from your manifest. 2. **Organization Role**: Assign either the **ADMIN** or **MEMBER** role to the mapped group/role. 3. **Stack Roles** _(optional)_: Assign [stacks](https://www.contentstack.com/docs/headless-cms/about-stack) as well as the corresponding stack-level roles to this role. ![24\_SS0\_Entra\_Mapped\_Roles.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt525d54f8fe611e47/662a16c8700d6c731ba68ed0/24_SS0_Entra_Mapped_Roles.png) Likewise, you can add more role mappings for your Contentstack organization. To add a new Role mapping, click **\+ ADD ROLE MAPPING** and enter the details. 2. Keep **Role Delimiter** blank as Microsoft Azure AD usually returns roles in an array. 3. Finally, check the **Enable IdP Role Mapping** checkbox to enable the feature. 4. Click **Next** to continue further. While some details about these steps are given below, you can refer to our [general SSO guide](https://www.contentstack.com/docs/administration) for more information. 8. ## Test and Enable SSO Next, you can try out the “Test SSO” and “Enable SSO” steps in Contentstack. ### Test SSO Before enabling SSO, it is recommended that you test the SSO settings configured so far. To do so, perform the following steps: 1. Click the **Test SSO** button and it will take you to Contentstack’s **Login Via** SSO page where you need to specify your organization SSO name. 2. Then, click **Continue** to go to your IdP sign in page. 3. Sign in to your account. If you are able to sign in to your IdP, your test is successful. On successful connection, you will see a success message as follows: ![25\_SS0\_Entra\_Test\_Successful.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaad310b6955a84a3/662a16c8107b2875236c7106/25_SS0_Entra_Test_Successful.png) If you have enabled IdP Role Mapping, you’ll find the following details in a new page: * **SSO connection established successfully** - A success message is displayed. * **IdP roles received** - The list of all the roles assigned to you in your IdP. * **Contentstack-IdP role mapping details** - The details of all the Contentstack Organization-specific and Stack-specific roles mapped to your IdP roles. 4. Click the **Close** button. Now, you can safely enable SSO for your organization. **Note**: While testing SSO settings with IdP Role Mapping enabled, the test will be performed only for the IdP roles of the currently logged-in user (i.e., the Owner performing the test). ### Enable SSO 1. Once you have tested your SSO settings, click **Enable SSO** to enable SSO for your Contentstack organization.![26\_SS0\_Entra\_Enable\_SSO.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1ed99e24925f513b/662a16c8107b28227b6c710a/26_SS0_Entra_Enable_SSO.png) 2. Confirm your action by clicking **Yes**. Once this is enabled, users of this organization can access the organization through SSO. If needed, you can always disable SSO from this page as well.![27\_SS0\_Entra\_Disable\_SSO.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5a5cb4184b0470e6/662a16c8776d0cc53524ea68/27_SS0_Entra_Disable_SSO.png) --- ## URL: https://www.contentstack.com/docs/administration/set-up-sso-with-okta --- title: "Set up SSO with Okta" description: "This setup guide explains how to set up Single Sign-On in Contentstack with Okta as your SAML 2.0 identity Provider (IdP). See the process in detail here." url: "https://www.contentstack.com/docs/administration/set-up-sso-with-okta" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-28" filename: set-up-sso-with-okta.md --- # Set up SSO with Okta **Warning:** This set up guide is deprecated. Please visit our documentation on [Set up SSO with Okta Native App](/docs/administration/set-up-sso-with-okta-native-app). This step-by-step guide explains how to set up [Single Sign-On](/docs/administration) in Contentstack with Okta as your SAML 2.0 identity Provider (IdP). ## Prerequisites * [Contentstack account](https://www.contentstack.com/login) * Okta administrator account ## What You Will Learn * How to create an SSO name and ACS URL in Contentstack. * How to configure the Contentstack app in Okta as a SAML 2.0 IdP. * How to map Okta roles to Contentstack roles (optional). * How to test and enable SSO for your organization. ## Steps to Set up SSO with Okta The integration with Okta can be done in following easy steps: 1. [Create SSO Name and ACS URL in Contentstack](#create-sso-name-and-acs-url-in-contentstack) 2. [Configure Contentstack App in Okta](#configure-contentstack-app-in-okta) 3. [Configure Okta details in Contentstack](#configuring-okta-details-in-contentstack) 4. [Manage users access control in Okta](#manage-users-access-control-in-okta) 1. [Add application to users](#a-add-application-to-users) 2. [Add application to user groups for IdP Role Mapping](#b-add-application-to-user-groups-for-idp-role-mapping) 5. [Create Role Mappings in Contentstack](#create-role-mappings-in-contentstack) 6. [Test and Enable SSO](#test-and-enable-sso) Let’s see each of the processes in detail. 1. ## Create SSO Name and ACS URL in Contentstack 1. Log in to your [Contentstack account](https://app.contentstack.com/#!/login), go to the **Organization Settings** page and click on the **SINGLE SIGN-ON** tab. ![Set\_up\_SSo\_1\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt502bf146eb3bd724/60df37a5c8e01a3013e5f574/Set_up_SSo_1_highlighted.png) 2. Enter an **SSO name** of your choice, and click **Create**. For example, if your company name is “Acme, Inc.” enter “acme” here. This name will be used as one of the login credentials by the organization users while signing in. **Note:** The SSO Name can contain only alphabets (in lowercase), numbers (0-9), and/or hyphens (-). ![Set\_up\_SSo\_2\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blte16094560a57968e/60df37b0ccb5203c30a28e8f/Set_up_SSo_2_highlighted.png) Let's use “sso-test” as the **SSO Name**. 3. This will generate **Assertion Consumer Service (ACS)** URL and other details such as **Entity ID**, **Attributes** and **NameID** Format. These details will be used in **Step 2** for configuring the Contentstack app in Okta. ![Set\_up\_SSo\_3\_highlighted.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltcfa122bf4ae86eb0/638768410fd02e10825078a8/Set_up_SSo_3_highlighted.jpg) Keep this window open, as you may need these details for setting up Contentstack app in Okta. 2. ## Configure Contentstack App in Okta 1. Log in to your Okta Admin account. ![1\. okta-login.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltb71fe255a74ee5b8/5d65142c0f951227ac8327b1/1._okta-login.png) 2. After logging in, you will see the Okta dashboard. Click on the **Application** tab and select **Applications**. ![okta-dashboard.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt3b2e5ebb97404ae0/5f3cfc2f62013530f82eb6bf/okta-dashboard.png) 3. In the **Applications** page, you will see your already created applications, if any. ![okta-application.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt654ee8da7220d176/5d651425de50ec209c8f4564/okta-application.png) 4. Click on the **Add Application** button and click on **Create New App** to create a new application for Contentstack.![okta-add-application.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt5b0841dea1730824/5f3cfc2f5f7d2953ae821a3c/okta-add-application.png) 5. Set the **Platform** as **Web,** the **Sign on method** as **SAML 2.0**, and **Create** your application: ![okta-create-application.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blta4a4b7754d4c9a6a/5f3cfc2fd5b383280ff0f0b3/okta-create-application.png) 6. You will be redirected to the **General Settings** page of your application. Provide a name for your application, e.g., **Contentstack**, a logo for your application, and click on **Next** to proceed to configure SAML settings.![General\_Settings\_page.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blte27e2c96750a4825/5f3cfc2f29a49b740ae68764/General_Settings_page.png) 7. In the **Configure SAML** tab, under **SAML Settings**, provide the following details: 1. **Single Sign on URL**: Paste the **Assertion Consumer Service URL** that we create in Contentstack in Step 1.c 2. **Audience URI (SP Entity ID):** Enter Contentstack’s **Entity ID** that you received in **step 1**. In most cases, this value would be https://app.contentstack.com. 3. **Default RelayState:** Keep it blank. 4. **Name ID format**: Select **EmailAddress** option 5. **Application username**: Select **Email** option ![okta-saml-congfiguration-step-2-1.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltcb5017d70c4028b4/5f3cfc496bbc0527106435df/okta-saml-congfiguration-step-2-1.png) 8. Click on the **Show Advanced Settings** link and in the **SAML Issuer ID**, enter Contentstack's **Entity ID**, for e.g., https://app.contentstack.com. 9. In **ATTRIBUTE STATEMENTS (OPTIONAL)**, under attribute mapping details, add the attributes. ![Okta\_Attribute\_Statements.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt8b103b487f663667/5f3cfc2f80360a1fd38bc791/Okta_Attribute_Statements.png) Add three attributes: **email**, **first\_name**, and **last\_name** under **Name**, and select **user.email**, **user.firstName**, and **user.lastName**, respectively, under **Value**. 10. \[_**Optional Step**_\] If you want to create role mapping, then, in the **GROUP ATTRIBUTE STATEMENTS (OPTIONAL)** section, under **Name**, enter “roles”; under **Filter**, select **matches regex,** add the key name as **roles**; and finally, enter your regex term, e.g., ^contentstack.(\[^\\s\]+)\* (if all your Contentstack specific users are assigned roles that start with “contentstack”) in the textbox beside **Filter**. This will retrieve all the groups that start with “Contentstack.” The following image depicts the IdP role mapping for Okta:![Okta\_sso\_role\_mapping.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd3fec9c6bc19f1f8/6405dbc4ce1f78108607f9cd/Okta_sso_role_mapping.png) **Note:** Perform this step only if you want to enable [IdP Role Mapping](/docs/administration/idp-role-mapping). 11. Click **Next** and then **Finish** on the next screen. 3. ## Configuring Okta details in Contentstack 1. In Okta, click on the **Sign On** tab of the application that you created in Step 2. ![okta-setup-instruction-button.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt815d34e04b2c9849/5f3cfc49327a6201d7ebcc3b/okta-setup-instruction-button.png) 2. Click on **View Setup Instructions** additional settings fields for your Contentstack application. ![okta-setup-instructions.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt4dc54577680a020f/638768d5303d7a10a114a623/okta-setup-instructions.jpg) Click on the **Download Certificate** button. 3. Copy **Identity Provider Single Sign-On URL**. Then, in the Contentstack SSO settings page, go to the **IdP Configuration**, and paste the URL in the **Single Sign-on URL** field.![Set\_up\_SSo\_4\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltaa89578e21b0bf39/60df37e30f2b3833d0f68f30/Set_up_SSo_4_highlighted.png) 4. Upload the X.509 certificate that you downloaded from Okta, into the **Certificate** field in the **2 IdP Configuration** section in Contentstack. That’s it! Now, let’s see how to assign your Contentstack application to your users in Okta. 4. ## Manage users access control in Okta After setting the necessary configurations in Contentstack, you need to now assign the newly added application to your users. ### A – Add application to users 1. Go to the **Assignments** tab of your application,click on the **Assign** dropdown, and select **Assign to People**. ![Assign\_to\_People.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt08f2199ecc2cc228/5f3cfc2e327a6201d7ebcc37/Assign_to_People.png) 2. You will get a list of registered users to whom you need to assign your application. Click on the **Assign** button beside the user to whom you want to assign the application, and click on **Done**.![okta-user-step-2.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt834ee995e90d47c0/5d6514195760052efac57a32/okta-user-step-2.png) 3. Also, you may use multiple applications assignments available in **Applications** > **Assign applications** menu. With this, you are done with setting up the Contentstack app in Okta. Proceed to configuring the remaining steps in Contentstack SSO in [Step 6](#test-and-enable-sso). But, if you want to perform IdP Role Mapping and allow user groups to directly log in to your SSO-enabled organization (without invitation) with the assigned permissions through role mapping, perform **Step 4.B**. ### B - Add application to user groups for IdP Role Mapping _**Perform this step only if IdP Role Mapping is part of your Contentstack plan.**_ [IdP Role Mapping](/docs/administration/idp-role-mapping) is an alternate way of managing users and permissions of your SSO-enabled organization. This feature allows you to map your IdP roles to Contentstack roles while configuring SSO for your organization. 1. Go to the **Assignments** tab of your application, click on the **Assign** dropdown in the application details section, and select **Assign to Groups**. ![Click\_on\_Assign\_to\_Groups\_.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blteba196ebe8174373/5f3cfc2e5f7d2953ae821a38/Click_on_Assign_to_Groups_.png) 2. You will see a list of registered groups. Click on the **Assign** button beside the group(s) to which you need to assign your application. Click on **Done**. ![Select\_the\_groups.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltda7ebec47661506c/5f3cfc49abb6922b67514e0b/Select_the_groups.png) You can now proceed to create role mappings in Contentstack for the IdP roles you created. Go to the **3\. User Management** section of your Contentstack SSO settings and perform **Step 5**. 5. ## Create Role Mappings in Contentstack In the **User Management** section, you will see the following steps: 1. **Strict Mode**: Enable [**Strict Mode**](/docs/administration/set-up-sso-in-contentstack#strict-mode)if you do not want any users to access the organization without SSO login. 2. **Session Timeout**: The [**Session Timeout**](/docs/administration/set-up-sso-in-contentstack#session-timeout) option lets you define the session duration for a user signed in through SSO. While the default is set to 12 hours, you can modify it as needed. 3. **Advanced Settings**: Click on the [advanced settings](/docs/administration/set-up-sso-in-contentstack#advanced-settings) to expand the IdP Role Mapping section to map IdP roles to Contentstack.[ ](/docs/administration/set-up-sso-in-contentstack#advanced-settings) 1. In the **Add Role Mapping** section, click on the **\+ ADD ROLE MAPPING** link to add new IdP role mapping and enter the following details: 1. **IdP Role Identifier**: Enter the IdP group/role identifier, for example, “Contentstack Developers.” 2. **Organization Role**: Assign either the **Admin or Member** role to the mapped group/role. 3. **Stack Roles** _(optional)_: Assign [stacks](/docs/headless-cms/about-stack) as well as the corresponding stack-level roles to this role. ![Set\_up\_SSo\_7\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt0096c1ab74eacf29/60df37f52490ed30145e4c30/Set_up_SSo_7_highlighted.png) Likewise, you can add more role mappings for your Contentstack organization. To add a new Role mapping, click on **\+ ADD ROLE MAPPING** and enter the details. 2. Keep **Role Delimiter** blank as Okta usually returns roles in an array. 3. Finally, check the **Enable IdP Role Mapping** checkbox to enable the feature. 4. Click on **Next** to continue further. While some details about these steps are given below, you can refer to our [general SSO guide](/docs/administration) for more information. 6. ## Test and Enable SSO Next, you can try out the “Test SSO” and “Enable SSO” steps in Contentstack ### Test SSO Before enabling SSO, it is recommended that you test the SSO settings configured so far. To do so, perform the following steps: 1. Click on the **Test SSO** button and it will take you to Contentstack’s **Login Via SSO** page, where you need to specify your organization SSO name. 2. Then, click on **Continue** to go to your IdP sign in page. 3. Sign in to your account. If you are able to sign in to your IdP, your test is successful.On successful connection, you will see a success message as follows ![Set\_up\_SSo\_10\_no\_highlight.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltcda07901cf6eb3e6/60df38173b10992ed7acbb72/Set_up_SSo_10_no_highlight.png) 4. But, if you have enabled IdP Role Mapping, you’ll find the following details in a new page: * **SSO connection established successfully** - A success message is displayed. * **IdP Roles received** - The list of all the roles assigned to you in your IdP. * **Contentstack-IdP role mapping details** - The details of all the Contentstack Organization-specific and Stack-specific roles mapped to your IdP roles. 5. Click on the **Close** button. Now, you can safely enable SSO for your organization. **Note**: While testing SSO settings with IdP Role Mapping enabled, the test will be performed only for the IdP roles of the currently logged-in user (i.e., the Owner performing the test). ### Enable SSO Once you have tested your SSO settings, click **Enable SSO** to enable SSO for your Contentstack organization. ![Set\_up\_SSo\_9\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt75b4943b1d78d28c/60e32dc13b10992ed7acc264/Set_up_SSo_9_highlighted.png) Confirm your action by clicking on **Yes**. Once this is enabled, users of this organization can access the organization through SSO. If needed, you can always disable SSO from this page as well. ![Disable\_SSO.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltd804680545216a38/63762ef15834861044c1f25b/Disable_SSO.png) --- ## URL: https://www.contentstack.com/docs/administration/set-up-sso-with-okta-native-app --- title: "Set up SSO with Okta Native App" description: "This setup guide explains how to set up Single Sign-On in Contentstack with Okta Native as your SAML 2.0 identity Provider (IdP). See the process in detail here." url: "https://www.contentstack.com/docs/administration/set-up-sso-with-okta-native-app" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-28" filename: set-up-sso-with-okta-native-app.md --- # Set up SSO with Okta Native App This guide explains how to set up [Single Sign-On](/docs/administration) in Contentstack with Okta as your SAML 2.0 identity Provider (IdP), using the native Contentstack app from the Okta App Catalog. You configure an SSO name in Contentstack, add and configure the Contentstack app in Okta, exchange the IdP details, optionally map roles, and then test and enable SSO. **Supported features include:** * SP-initiated (Service-Provider-initiated) SSO * IdP-initiated (Identity-Provider-initiated) SSO * Just-In-Time provisioning ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Okta administrator account ## What You Will Learn * How to create an SSO name and ACS URL in Contentstack. * How to add and configure the Contentstack app in Okta as a SAML 2.0 IdP. * How to map Okta roles to Contentstack roles (optional). * How to test and enable SSO, and log in via SSO. ## Steps to Set up SSO with Okta Native App The integration with Okta can be done in following easy steps: 1. [Create SSO Name and ACS URL in Contentstack](#create-sso-name-and-acs-url-in-contentstack) 2. [Configure Contentstack App in Okta](#configure-contentstack-app-in-okta) 3. [Configure Okta details in Contentstack](#configure-okta-details-in-contentstack) 4. [Manage users access control in Okta](#manage-users-access-control-in-okta) 1. [Add application to users](#add-application-to-users) 2. [Add application to user groups for IdP Role Mapping](#add-application-to-user-groups-for-role-mapping) 5. [Create Role Mappings in Contentstack](#create-role-mappings-in-contentstack) 6. [Test and Enable SSO](#test-and-enable-sso) Let’s see each of the processes in detail. 1. ## Create SSO Name and ACS URL in Contentstack 1. Log in to your [Contentstack account](https://www.contentstack.com/login/), go to the **Organization Settings** page and click on the **SINGLE SIGN-ON** tab. ![SSO\_Okta\_-\_SSO\_in\_Contentstack\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3f5bcc6c065a73c6/6561aea239941742e4b48abc/SSO_Okta_-_SSO_in_Contentstack_App.png) 2. Enter an **SSO name** of your choice, and click **Create**. For example, if your company name is “Acme, Inc.” enter “acme” here. This name will be used as one of the login credentials by the organization users while signing in and cannot be editable later on. **Note:** The SSO Name can contain only alphabets (in lowercase), numbers (0-9), and/or hyphens (-). ![SSO\_Okta\_-\_SSO\_Name.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcd9c2661eb71ad99/6561aea236b54556b6cd6953/SSO_Okta_-_SSO_Name.png) Let's use “sso-test” as the **SSO Name**. 3. This will generate **Assertion Consumer Service (ACS) URL** and other details such as **Entity ID**, **Attributes** and **NameID** Format. These details will be used in [Step 2](#configure-contentstack-app-in-okta) for configuring the Contentstack app in Okta. ![SSO\_Okta\_-\_Assertion\_URL.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltef8d7fc1c3eef788/6561aa52dd3986449a143c2d/SSO_Okta_-_Assertion_URL.png) Keep this window open, as you may need these details for setting up the Contentstack app in Okta. 2. ## Configure Contentstack App in Okta 1. Log in to your Okta Admin account. ![SSO\_Okta\_-\_Okta\_Login\_page.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4fc8cf555fcf67fd/6561aea2d5954944e1b656ec/SSO_Okta_-_Okta_Login_page.png) 2. After logging in, you will see the Okta dashboard. Click on the **Application** tab and select **Applications**. ![SSO\_Okta\_-\_Okta\_Application.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd1b9f58b570137cb/6561aea3ec79944e1a968203/SSO_Okta_-_Okta_Application.png) 3. In the **Applications** page, you will see your already created applications, if any. ![SSO\_Okta\_-\_created\_applications.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb0249809a1d5090e/6561aa516a1419639b41556b/SSO_Okta_-_created_applications.png) 4. Click the **Browse App Catalog** to set up an application for Contentstack. ![SSO\_Okta\_-\_browse\_app\_catalog.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7ddfa6074090a76a/6561aa51efd9ef732bb815e1/SSO_Okta_-_browse_app_catalog.png) 5. Search for “Contentstack” within the **Browse App Integration Catalog** section and select the **Contentstack** app. ![SSO\_Okta\_-\_App\_Integration\_catalog.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1393142028eba70e/6561ae932d2f23c97ef3c44c/SSO_Okta_-_App_Integration_catalog.png) 6. You will be redirected to the **Contentstack** application. Click on the **Add Integration** button. ![SSO\_Okta\_-\_Add\_Integration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdfbd5853738316f5/6561ae9336b5457125cd694f/SSO_Okta_-_Add_Integration.png) 7. You can edit the **Application label** as per your preference and click on **Done**. ![SSO\_Okta\_-\_Add\_app\_in\_Okta.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt271c7bc80290af42/6561ae9352b29bd0fc5bff39/SSO_Okta_-_Add_app_in_Okta.png) 8. You will be redirected to the application’s configuration page. Locate the **Sign On** tab and click the **Edit** button. ![SSO\_Okta\_-\_Sign\_On\_in\_Okta.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt57cb1956541d0781/6561aea3df4282512a2eedd8/SSO_Okta_-_Sign_On_in_Okta.png) 9. In the **Settings** section expand **Attributes** to add any additional attributes (Optional). ![SSO\_Okta\_-\_Attributes.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt83dfe2710537790a/6561aea20a03adb4c239a09d/SSO_Okta_-_Attributes.png) 10. Optionally, you can create role mapping. To do this, in the **Group Attribute Statements (Optional)** section, enter the following: * For Name, enter “roles” Name. * Under **Name format (optional)**, select **Unspecified**. * For the **Filter**, select **Matches regex** and enter your regex term in the textbox beside it. For example, if all your **Contentstack** specific users are assigned roles that start with contentstack, enter the regex term ^contentstack.(\[^\\s\]+)\*. * This will retrieve all the groups that start with "contentstack". ![SSO\_Okta\_-\_Group\_Attributes.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc86308ea60aa3df2/6561aea2ec7994b4039681ff/SSO_Okta_-_Group_Attributes.png) **Note:** Perform this step only if you want to enable [IdP Role Mapping](/docs/administration/idp-role-mapping). 11. In the **Advance Sign-On** Settings, enter the following details: * **Assertion Consumer Service URL**: Enter the Assertion Consumer Service (ACS) URL that you created in Contentstack in [Step 1](#create-sso-name-and-acs-url-in-contentstack). * **Entity ID**: Enter the Entity ID of Contentstack, from [step 1](#create-sso-name-and-acs-url-in-contentstack), typically represented as https://app.contentstack.com. * **Application username format**: Select the Email option * **Update application username on**: Select Create and update ![SSO\_Okta\_-\_Update\_app\_username.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdd16a76b439992ea/6561aa5cf415048279125477/SSO_Okta_-_Update_app_username.png) 12. Click **Save**. 3. ## Configuring Okta details in Contentstack 1. In Okta, click the **Sign On** tab of the application that you created in [Step 2](#configure-contentstack-app-in-okta) and then click **More details**. ![SSO\_Okta\_-\_More\_details.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1588ae11bbcbd0ec/6561aa5204116d6d7329e9e9/SSO_Okta_-_More_details.png) 2. Copy the **Sign-On URL** and Download the Certificate. ![SSO\_Okta\_-\_Sign-On-URL.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8614ef2e0d340267/6561aa5181b93e6837a19fcb/SSO_Okta_-_Sign-On-URL.png) 3. Go to the **Contentstack Single Sign-On** settings page, and locate the **IdP Configuration** tab. Enter the Sign-On URL that you copied in the previous step in the **Single Sign-on URL** field. ![SSO\_Okta\_-\_SSO\_URL\_in\_contentstack.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5be9008db078a675/6561aeadec79943902968207/SSO_Okta_-_SSO_URL_in_contentstack.png) 4. Upload the X.509 certificate that you downloaded from Okta, into the **Certificate** field in the **2 IdP Configuration** section in Contentstack. That’s it! Now, let’s see how to assign your Contentstack application to your users in Okta. 4. ## Manage users access control in Okta After setting the necessary configurations in Contentstack, you need to now assign the newly added application to your users. 1. ### Add application to users 1. Go to the **Assignments** tab of your application,click the **Assign** dropdown, and select **Assign to People**. ![SSO\_Okta\_-\_Assign\_to\_people.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt883f28322a9ee62d/6561aa517c56dd1561a5f876/SSO_Okta_-_Assign_to_people.png) 2. You will get a list of registered users to whom you need to assign your application. Click the **Assign** button beside the user to whom you want to assign the application, and click **Done**. 3. Also, you may use multiple applications assignments available under **Applications > Assign applications** menu. With this, you are done with setting up the Contentstack app in Okta. Proceed to configuring the remaining steps in Contentstack SSO in [Step 6](#test-and-enable-sso). But, if you want to perform IdP Role Mapping and allow user groups to directly log in to your SSO-enabled organization (without invitation) with the assigned permissions through role mapping, perform [Step 4.2](#add-application-to-user-groups-for-idp-role-mapping). 2. ### Add application to user groups for IdP Role Mapping _**Perform this step only if IdP Role Mapping is part of your Contentstack plan.**_ [IdP Role Mapping](/docs/administration/idp-role-mapping) is an alternate way of managing users and permissions of your SSO-enabled organization. This feature allows you to map your IdP roles to Contentstack roles while configuring SSO for your organization. 1. Go to the **Assignments** tab of your application, click the **Assign** dropdown in the application details section, and select **Assign to Groups**. ![SSO\_Okta\_-\_Assign\_to\_group.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt77f3539a3122545a/6561aa516f7bf45ce582e3ed/SSO_Okta_-_Assign_to_group.png) 2. You will see a list of registered groups. Click the **Assign** button beside the group(s) to which you need to assign your application. Click **Done**. You can now proceed to create role mappings in Contentstack for the IdP roles you created. Go to the **3\. User Management** section of your Contentstack SSO settings and perform [Step 5](#create-role-mappings-in-contentstack). 5. ## Create Role Mappings in Contentstack In the **User Management** section, you will see the following steps: 1. **Strict Mode**: Enable [Strict Mode](/docs/administration/set-up-sso-in-contentstack#strict-mode) if you do not want any users to access the organization without SSO login. 2. **Session Timeout**: The [Session Timeout](/docs/administration/set-up-sso-in-contentstack#session-timeout) option lets you define the session duration for a user signed in through SSO. While the default is set to 12 hours, you can modify it as needed. 3. **Advanced Settings**: Click on the [advanced settings](/docs/administration/set-up-sso-in-contentstack#advanced-settings) to expand the IdP Role Mapping section to map IdP roles to Contentstack. 1. In the **Add Role Mapping** section, click on the **\+ ADD ROLE MAPPING** link to add new IdP role mapping and enter the following details: 2. **IdP Role Identifier**: Enter the IdP group/role identifier, for example, “Contentstack Developers”. This should be the same as the name of the group assigned to the application on Okta. 3. **Organization Role**: Assign either the Admin or Member role to the mapped group/role. **Stack Roles (optional)**: Assign [stacks](/docs/headless-cms/about-stack) as well as the corresponding stack-level roles to this role. ![IdP\_Role\_Mapping\_-\_Stack\_Roles.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdf06b6a0376dd4a1/6561ae9204116dd95129e9ee/IdP_Role_Mapping_-_Stack_Roles.png) 4. Likewise, you can add more role mappings for your Contentstack organization. To add a new Role mapping, click on **\+ ADD ROLE MAPPING** and enter the details. 5. Keep **Role Delimiter** blank as Okta usually returns roles in an array. 6. Finally, check the **Enable IdP Role Mapping** checkbox to enable the feature. 7. Click **Next** to continue further. While some details about these steps are given below, you can refer to our [general SSO guide](/docs/administration) for more information. 6. ## Test and Enable SSO Next, you can try out the “Test SSO” and “Enable SSO” steps in Contentstack 1. ### Test SSO Before enabling SSO, it is recommended that you test the SSO settings configured so far. To do so, perform the following steps: 1. Click the **Test SSO** button and it will take you to Contentstack’s **Login Via SSO** page, where you need to specify your organization’s SSO name. 2. Then, click **Continue** to go to your IdP sign in page. 3. Sign in to your account. If you are able to sign in to your IdP, your test is successful. On successful connection, you will see a success message as follows: ![SSO\_Okta\_-\_SSO\_test\_successful.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb3dd7ab0ba265069/6561aead94e6c934b021521e/SSO_Okta_-_SSO_test_successful.png) 4. But, if you have enabled IdP Role Mapping, you’ll find the following details in a new page: * **SSO connection established successfully** - A success message is displayed. * **IdP Roles received** - The list of all the roles assigned to you in your IdP. * **Contentstack-IdP role mapping details** - The details of all the Contentstack Organization-specific and Stack-specific roles mapped to your IdP roles. 5. Click on the **Close** button. Now, you can safely enable SSO for your organization. **Note:** While testing SSO settings with IdP Role Mapping enabled, the test will be performed only for the IdP roles of the currently logged-in user (i.e., the Owner performing the test). 2. ### Enable SSO 1. Once you have tested your SSO settings, click **Enable SSO** to enable SSO for your Contentstack organization. ![SSO\_Okta\_-\_Enable\_SSO.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8316d576464f993b/6561aea294e6c94ce521521a/SSO_Okta_-_Enable_SSO.png) 2. Confirm your action by clicking on **Yes**. 3. Once this is enabled, users of this organization can access the organization through SSO. If needed, you can always disable SSO from this page as well. ![SSO\_Okta\_-\_Disable\_SSO.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbd5003282e05d67b/6561aa5c41d574aab2c7ed2b/SSO_Okta_-_Disable_SSO.png) ## Log In via SSO To log in to Contentstack via sso, perform the steps given below: 1. Go to the [Contentstack App](https://app.contentstack.com/#!/login) and click the **Via SSO** button. ![SSO\_Okta\_-\_Login\_via\_SSO.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4e4ba02739cb0ca2/6561aa52dd3986d50a143c29/SSO_Okta_-_Login_via_SSO.png) 2. Enter your **SSO Name** (created in step 1.2). 3. Click on **Log In**. ![SSO\_Okta\_-\_App\_login\_page.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9966a190d76e8a45/6561aa5041d5746e56c7ed27/SSO_Okta_-_App_login_page.png) --- ## URL: https://www.contentstack.com/docs/administration/set-up-sso-with-onelogin --- title: "Set up SSO with OneLogin" description: "This step-by-step guide explains how to set up Single Sign-On in Contentstack with OneLogin as your SAML 2.0 Identity Provider (IdP)." url: "https://www.contentstack.com/docs/administration/set-up-sso-with-onelogin" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-28" filename: set-up-sso-with-onelogin.md --- # Set up SSO with OneLogin This step-by-step guide explains how to set up [Single Sign-On](/docs/administration) in Contentstack with OneLogin as your SAML 2.0 Identity Provider (IdP). You configure an SSO name in Contentstack, set up the Contentstack app in OneLogin, exchange the IdP details, add users and roles, optionally map roles, and then test and enable SSO. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login) * OneLogin administrator account ## What You Will Learn * How to create an SSO name and ACS URL in Contentstack. * How to configure the Contentstack app in OneLogin as a SAML 2.0 IdP. * How to map OneLogin roles to Contentstack roles (optional). * How to test and enable SSO for your organization. ## Steps to Set up SSO with OneLogin To do so, this integration requires following steps: 1. [Create SSO Name and ACS URL in Contentstack](#create-sso-name-and-acs-url-in-contentstack) 2. [Configure Contentstack App in OneLogin](#configure-contentstack-app-in-onelogin) 3. [Configure OneLogin details in Contentstack](#configure-onelogin-details-in-contentstack) 4. [Manage users access control in OneLogin](#manage-users-access-control-in-onelogin) 1. [Add application to users](#a-add-application-to-users) 2. [Add application to user groups for IdP Role Mapping](#b-add-application-to-user-groups-for-idp-role-mapping) 5. [Create Role Mappings in Contentstack](#create-role-mappings-in-contentstack) 6. [Test and Enable SSO](#test-and-enable-sso) Let us see each of the processes in detail. 1. ## Create SSO Name and ACS URL in Contentstack 1. Log in to your [Contentstack account](https://app.contentstack.com/#!/login), go to the **Organization Settings** page, and click on the **Single Sign-On** tab.![Set\_up\_SSo\_1\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt7d698fba6693e892/60df360592aa422edd5e31cd/Set_up_SSo_1_highlighted.png) 2. Enter an **SSO name** of your choice, and click **Create**. For example, if your company name is “Acme, Inc.” enter “acme” here. This name will be used as one of the login credentials by the organization users while signing in. **Note:** The SSO Name can contain only alphabets (in lowercase), numbers (0-9), and/or hyphens (-).  ![Set\_up\_SSo\_2\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltaef848f532cb89b5/60df36337c871833cab137b5/Set_up_SSo_2_highlighted.png)Let's use “sso-test” as the **SSO Name**. 3. This will generate **Assertion Consumer Service (ACS)** URL and other details such as **Entity ID**, **Attributes** and **NameID** Format. These details will be used in **Step 2** for configuring the Contentstack app in OneLogin. ![Set\_up\_SSo\_3\_highlighted.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltcfa122bf4ae86eb0/638768410fd02e10825078a8/Set_up_SSo_3_highlighted.jpg) Keep this window open, as you may need these details for setting up the Contentstack app in OneLogin. 2. ## Configure Contentstack App in OneLogin **Note:** You will need to be a OneLogin administrator to complete the below steps. 1. Log into your OneLogin Admin account, click on the **APPS** tab and click on the **ADD APP** button on the top right corner.  2. From the applications displayed on the page, use the **SAML Test Connector (IdP)** application.![onelogin-add-app.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt7a27f745cf5afb2b/5f467abfc0e5e047f9386ea8/onelogin-add-app.png) 3. Set the **Display Name** for your Contentstack application, for example “Contentstack” and click **Save.**![onelogin-configuration-step-1.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt9bc14deff336d42c/5f467abf2a722a66860bd9df/onelogin-configuration-step-1.png) 4. Log into your Contentstack account as the Owner and get your “Single sign on URL” for OneLogin. In Contentstack, it’s called **Assertion Consumer URL** and you can find it in **Organization Settings** > **SINGLE SIGN-ON**. ![ACS\_URL.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltbbd19c8098a9cc1f/63762ef176567a10a7cb82c1/ACS_URL.png) 5. Now, click on the **Configuration** tab, opy the “ACS URL” from the above step and paste it into the **ACS (Consumer) URL Validator** field in OneLogin. Paste the same value into the **ACS (Consumer) URL** field as well.![onelogin-configuration-step-2-a.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltce0a3228389e0a86/5f467abfa5031b4a3bba8c94/onelogin-configuration-step-2-a.png) 6. Go to the **Parameters** tab and add parameters. By default, the first parameter is **NameID**. We will set its value to **Email** by clicking on the parameter and selecting it from the dropdown.![onelogin-configuration-step-2-b.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt7f98768306f8cba3/5f467abf3c3c0b6617212bcb/onelogin-configuration-step-2-b.png) 7. Click on the **Add parameter** link, add a parameter named **first\_name**, select the **Include in SAML assertion** checkbox, and click on **Save**.![onelogin-configuration-step-3.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blta025f3e144f1b114/5f467abf0341654a3a76ea8c/onelogin-configuration-step-3.png) 8. Next, we will assign a value for the created field. Click on the **Value** dropdown, select **First Name**, and click on **Save**.![onelogin-configuration-step-3-a-1.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt29a3d53c2a215324/5f467aeba5031b4a3bba8c9c/onelogin-configuration-step-3-a-1.png) Similarly, we will add two more attributes. Add **last\_name** and select **Last Name** as the value, and add **email** and select **Email** as the value. Finally, your attribute list will look as follows: ![onelogin-configuration-step-3-b.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt28d684a86f17b70f/5d650d2dd84c39242e05d24e/Parameters.png) 9. \[_**Optional Step**_\] If you want to map IdP roles to Contentstack roles, you need to add a new attribute called roles. Check the **Include in SAML assertion** and click on **Save**. 10. Select **Users Roles** as the **Value** and click on **Save**. **Note:** Perform steps 8 and 9 only if [IdP Role Mapping](/docs/administration/idp-role-mapping) is part of your Contentstack plan. 3. ## Configure OneLogin details in Contentstack 1. Click on the **SSO** tab of your Contentstack application in OneLogin, you will see the **SAML 2.0 Endpoint (HTTP)** URL field.![onelogin-configuration-step-4.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltd497ac0e9582ee2b/5f467aeb70ca0f65ba109692/onelogin-configuration-step-4.png) 2. Click on the “Copy to Clipboard” icon beside the **SAML 2.0 Endpoint (HTTP)** field or you can just manually copy the URL. 3. Then, in the Contentstack **Single Sign-On** page, go to **2 IdP Configuration**, and paste the copied URL into the **Single Sign-on URL** field.![Set\_up\_SSo\_4\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt18f2f24a0807ee73/60df36992eb77d200fac88ec/Set_up_SSo_4_highlighted.png) 4. Now, in the **SSO** tab, click on **View Details** under the **X.509 Certificate** parameter.![onelogin-configuration-step-4-a.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt5b625cec4322e1b5/5f467aeb2a722a66860bd9e3/onelogin-configuration-step-4-a.png) 5. The **Standard Strength Certificate (2048-bit)** window displays the details of the certificate. Click on the **DOWNLOAD** button to download the certificate.![onelogin-configuration-step-4-1-1.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt728e1023fc5f2d2f/5f467aebfb60b1668c21d8db/onelogin-configuration-step-4-1-1.png) 6. Upload the X.509 certificate that you downloaded into the **Certificate** field in Contentstack. 4. ## Manage users access control in OneLogin After setting the necessary configurations in Contentstack, you need to now assign the newly added application to your users. ### A - Add application to users 1. You can assign a single user under **Users** > **All Users**. OneLogin will automatically retrieve the list of potential users that are currently logged in to OneLogin based on the user’s email address.![onelogin-user-step-1.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltd58882a98939cf66/5f467aeba21dbd47faf25eeb/onelogin-user-step-1.png) 2. Click on the **NEW USER** button at the top right corner to add new users to Contentstack. Add the user’s **Email** address, **First Name**, and **Last Name**.![onelogin-configuration-step-5.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt0393f094f79ef0f4/5f467aebb008d84afeba6bcf/onelogin-configuration-step-5.png) 3. Now, on the **Applications** tab, click on the **+** icon beside the **Applications** bar, and select your app in the **Select Application** dropdown. Then, click on **CONTINUE**![onelogin-configuration-step-5-a.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt2c605b280c5416bf/5f467aebc0e5e047f9386eac/onelogin-configuration-step-5-a.png)You will be led to the **Edit Contentstack Login For Demo User** window where you can verify the details. Click on **Save**. With this, you are done with setting up the Contentstack app in OneLogin. Proceed to configuring the remaining steps in Contentstack SSO in [Step 6](#test-and-enable-sso). But, if you want to perform IdP Role Mapping and allow user groups to directly log in to your SSO-enabled organization (without invitation) with the assigned permissions through role mapping, perform **Step 4.B**. ### B - Add application to user groups for IdP Role Mapping _**Perform this step only if IdP Role Mapping is part of your Contentstack plan.**_ This is an alternate way of managing users and permissions of your SSO-enabled organization. [IdP Role Mapping](/docs/administration/idp-role-mapping) allows you to map your IdP roles to Contentstack roles while configuring SSO for your organization. 1. You can assign a role under **Users** > **Roles**. OneLogin will automatically retrieve the list of potential user roles that are currently in your OneLogin account. 2. To add a new role, click on the **NEW ROLE** button located at the top right corner to add a new user role. ![Click on ](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltc939934ac2ffe713/5d650d210d77ee2fe445edec/Role_list.png) 3. You will be allowed to assign a role name. Provide a role name and click on the check (**✓**) icon. 4. Select the apps that you want to assign the role under the **Select Apps to Add** section. ![New\_Role\_and\_Assign\_Apps.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt93df320e4628b934/5f467abe185efb660c1ca5f9/New_Role_and_Assign_Apps.png) 5. Click on **Save**. You can now proceed to create role mappings in Contentstack for the IdP roles you created. Go to the **3\. User Management** section of your Contentstack SSO settings and perform Step 5. 5. ## Create Role Mappings in Contentstack In the **User Management** section, you will see the following steps: 1. **Strict Mode**: Enable [**Strict Mode**](/docs/administration/set-up-sso-in-contentstack#strict-mode)if you do not want any users to access the organization without SSO login. 2. **Session Timeout**: The [**Session Timeout**](/docs/administration/set-up-sso-in-contentstack#session-timeout)lets you define the session duration for a user signed in through SSO. While the default is set to 12 hours, you can modify it as needed. 3. **Advanced Settings**: Click on [**Advanced Settings**](/docs/administration/set-up-sso-in-contentstack#advanced-settings) to expand the IdP Role Mapping section to map IdP roles to Contentstack.[ ](/docs/administration/set-up-sso-in-contentstack#advanced-settings) 1. In the Add Role Mapping section, click on the **\+ ADD ROLE MAPPING** link to add new IdP role mapping and enter the following details: 1. **IdP Role Identifier**: Enter the IdP group/role identifier, for example, “Contentstack Developers.” 2. **Organization Role**: Assign either the **ADMIN** or **MEMBER** role to the mapped group/role. 3. **Stack Roles** _(optional)_: Assign [stacks](/docs/headless-cms/about-stack) as well as the corresponding stack-level roles to this role. ![Set\_up\_SSo\_7\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltbcf531ce26d6093e/60df36c30f2b3833d0f68f26/Set_up_SSo_7_highlighted.png) Likewise, you can add more role mappings for your Contentstack organization. To add a new Role mapping, click on **\+ ADD ROLE MAPPING** and enter the details. 2. Enter **;** (semicolon) in the **Role Delimiter** textbox. 3. Finally, check the **Enable IdP Role Mapping** checkbox to enable the feature. 4. Click on **Next** to continue further. While some details about these steps are given below, you can refer to our [general SSO guide](/docs/administration/about-single-sign-on-sso) for more information. 6. ## Test and Enable SSO Next, you can try out the “Test SSO” and “Enable SSO” steps in Contentstack. ### Test SSO Before enabling SSO, it is recommended that you test the SSO settings configured so far. To do so, perform the following steps 1. Click on the **Test SSO** button and it will take you to Contentstack’s **Login Via SSO** page, where you need to specify your organization SSO name. 2. Then, click on **Continue** to go to your IdP sign-in page. 3. Sign in to your account. If you are able to sign in to your IdP, your test is successful. On successful connection, you will see a success message as follows: ![Set\_up\_SSo\_10\_no\_highlight.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt0f47d82021908c2c/60df36d17c871833cab137b9/Set_up_SSo_10_no_highlight.png) 4. If you have enabled IdP Role Mapping, you’ll find the following details in a new page: * **SSO connection established successfully** - A success message is displayed. * **IdP Roles received** - The list of all the roles assigned to you in your IdP. * **Contentstack-IdP role mapping details** - The details of all the Contentstack Organization-specific and Stack-specific roles mapped to your IdP roles. 5. Click on the **Close** button. Now, you can safely enable SSO for your organization. **Note**: While testing SSO settings with IdP Role Mapping enabled, the test will be performed only for the IdP roles of the currently logged-in user (i.e., the Owner performing the test). ### Enable SSO Once you have tested your SSO settings, click **Enable SSO** to enable SSO for your Contentstack organization. ![Set\_up\_SSo\_9\_highlighted.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltac9e068d24baccc9/60e335dd92aa422edd5e38d7/Set_up_SSo_9_highlighted.png) Confirm your action by clicking on **Yes**. Once this is enabled, users of this organization can access the organization through SSO. If needed, you can always disable SSO from this page as well. ![Disable\_SSO.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltd804680545216a38/63762ef15834861044c1f25b/Disable_SSO.png) --- ## URL: https://www.contentstack.com/docs/administration/supported-identity-providers --- title: "Supported Identity Providers" description: "Supported Identity Providers" url: "https://www.contentstack.com/docs/administration/supported-identity-providers" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-24" filename: supported-identity-providers.md --- # Supported Identity Providers You can integrate [Contentstack SSO](/docs/administration/about-single-sign-on-sso) with all the identity providers (IdP) that support SAML 2.0 protocol. This includes all major IdPs such as **Okta**, **OneLogin**, **Azure AD**, **AD FS**, **Google G-Suite**, **Ping Identity**, **Ping Federate**, **Auth0**, **LastPass**, **Clear Login**, **Centrify**, and more. We have step-by-step SSO setup guides for some of the popular IdPs. You can check out the details in the corresponding articles given in the list below. Or you can refer to our general guide on setting up SSO with any IdP. ## Guides for setting up SSO with specific IdPs * [Set up SSO with Okta](/docs/administration/set-up-sso-with-okta) (_supports IdP Role Mapping_) * [Set up SSO with OneLogin](/docs/administration/set-up-sso-with-onelogin) (_supports IdP Role Mapping_) * [Set up SSO with Microsoft Azure AD](/docs/administration/set-up-sso-with-microsoft-azure-ad) (_supports IdP Role Mapping_) * [Set up SSO with AD FS](/docs/administration/set-up-sso-with-adfs) (_no support for IdP Role Mapping yet_) * [Set up SSO with Google G-Suite](/docs/administration/set-up-sso-with-google-g-suite) (_no support for IdP Role Mapping yet_) ## Guide for setting up SSO with other SAML 2.0 IdPs * [Set up SSO with other SAML 2.0 IdP](/docs/administration/set-up-sso-in-contentstack) --- ## URL: https://www.contentstack.com/docs/administration/switch-between-organizations --- title: "Switch Between Organizations" description: "Switch organizations in Contentstack to access and manage stacks across multiple organizations, ensuring smooth workflow and navigation." url: "https://www.contentstack.com/docs/administration/switch-between-organizations" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: switch-between-organizations.md --- # Switch Between Organizations Contentstack allows you to switch between [organizations](/docs/administration/about-organizations) to access and manage [stacks](/docs/headless-cms/about-stack) across multiple organizations. This feature allows you to move seamlessly between different organizations where you are a member. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login) * Administration-enabled Organizations with [Member](/docs/administration/about-administration-roles) permissions **Note:** You can only view organizations in which you are a **Member**. ## What You Will Learn * How to switch the active organization. * Where to find the organization switcher in the interface. ## Switch the Active Organization To switch between organizations, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the following steps: 1. Click the “Profile” icon. 2. Select your organization from the **Switch organization** dropdown. ![Switch organization dropdown in the profile menu](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte4b5bc13d1770c90/68a2e8f3f271e949456f7370/1._Switch_Organization.png) After switching, you can view the stacks for the selected organization. **Note:** If you are using the old navigation, click the “Organization” tab in the header and select the organization you want to access. --- ## URL: https://www.contentstack.com/docs/administration/throttling-policy --- title: "Throttling Policy" description: "Throttling Policy" url: "https://www.contentstack.com/docs/administration/throttling-policy" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: throttling-policy.md --- # Throttling Policy This policy describes the actions Contentstack may take, under its Master Service Agreement, to protect the security and stability of the Contentstack services. In accordance with our Master Service Agreement, in the unlikely event of any threat to the security or stability of the Contentstack services caused by a customer or otherwise, Contentstack reserves the right to take the following actions in response: * Throttle the number of [users](/docs/headless-cms/about-stack-users), amount of data, access, or throughput. * Reduce the number of users, amount of data, access, or throughput. * Limit the amount of data, access, throughput, or access by Users. * Freeze or suspend a user account or access. Contentstack will take reasonable steps to promptly notify our Customer, so that Contentstack and the Customer may work together to address the issue and endeavor to reduce the impact of such an action on the availability and use of the service wherever possible to do so. For any help, contact our [Customer Support](mailto:support@contentstack.com) team. --- ## URL: https://www.contentstack.com/docs/administration/validations --- title: "Validations" description: "Content errors can be minimized considerably by setting validations. Let’s go through the types of content validations available in Contentstack!" url: "https://www.contentstack.com/docs/administration/validations" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-13" filename: validations.md --- # Validations No matter how robust a CMS platform is, it cannot eliminate the human errors made while entering content in it. But these errors can be minimized by setting content validations. Validations are set of rules or conditions that check for the correctness or accuracy of the data being entered. In Contentstack, validations can be set on the fields of a [content type](/docs/headless-cms/about-content-types). So, when [content managers](/docs/headless-cms/types-of-roles#content-manager) input data, these [validations](/docs/headless-cms/validation-regex) check if the content being entered meets the specified conditions. Contentstack provides many built-in validation rules that you can apply to your fields depending on the type of input data for the field. Apart from these built-in content validations, you can set your custom validation rules too. ## Built-in Content Validations Let’s go through the types of validation checks available in Contentstack. These validations can be set on specific [fields](/docs/headless-cms/about-fields) of your content type. ### Mandatory You can mark a field as [Mandatory](/docs/headless-cms/mandatory), which means that a particular field cannot be left blank. Fields marked as mandatory will be represented by an asterisk (\*) sign beside the field name. Content managers will not be able to save entries if "Mandatory" fields are left blank. You can set this validation rule to the “Single Line Textbox,” “Multi Line Textbox,” “Rich Text Editor,” “Markdown,” “Number,” “Date,” “File,” “Link,” and “Reference” fields. **Additional Resource:** You can look at our list of guides under [Create Content Types](/docs/headless-cms/create-a-content-type) section that covers how to create a content type, what fields you can add, what field properties you can apply to them, field visibility rules, content type labels, and other actions. ### Unique Marking a field as [Unique](/docs/headless-cms/unique) prevents the duplication of entered content across entries in a content type. Every time a [user](/docs/headless-cms/about-stack-users) enters an already entered value into a unique field, the validator will prompt the user to change the duplicate value. You can set this validation rule to the “Single Line Textbox,” “Multi Line Textbox,” “Rich Text Editor,” “Markdown,” “Number,” “Date,” “File,” “Link,” and “Reference” fields. ### Number of Characters Setting a character limit will ensure that users enter content within the maximum or the minimum number of characters set to a field. For example, you want to create a "Password" field on your website, and you want to set a minimum and maximum limit to the cell. In this case, the [Number of Characters](/docs/headless-cms/number-of-characters) validation rule comes in handy. You can set this validation rule to the “Single Line Textbox” and “Multi Line Textbox” fields. ### Allow Images Only You can set [this validation rule](/docs/headless-cms/allow-images-only) to the [File](/docs/headless-cms/file) field only. Setting this rule will allow you to upload only image file type instead of any file type. ### Allowed File Type(S) You can set the [Allowed file type(s)](/docs/headless-cms/allowed-file-types) validation rule to specify the file types that users can upload. Setting this option will validate every file that the user will upload. Once you set the permitted file types for a field, users will not upload any other file types apart from the ones mentioned in this validation rule. Let’s say if you set the values as “pdf, png, md”, the user will only be able to upload files PDF documents, PNG graphic images, and Markdown files. You can set this validation rule to the File field. ### File Size Limit You can set a validation rule to restrict the size limit of files that are being uploaded. Once you set limits for file size, users will not upload files that have sizes that do not fall within the mentioned range. You can set this validation rule to the File field. ### Set Date Range This validation allows you to enter a range of dates that the user will be allowed to select from. Setting this validation rule enables the user to choose a time that will fall only within a specified date range. You can set this validation rule to the [Date](/docs/headless-cms/date) field. ## Custom Validation (Regex) You define [custom validation rules](/docs/headless-cms/validation-regex) that will perform validation checks (format, length, etc.) on the user's value entered in the given field. If the user enters a value that does not pass these checks, an error will be thrown. **Note:** Lengthy input strings or complex regex validation logic may result in “catastrophic backtracking,” which may not allow you to save the content type. Read more on [how to prevent catastrophic backtracking](/docs/headless-cms/validation-regex#prevent-catastrophic-backtracking). Validation rules can be defined by specifying custom validation regular expressions. Let’s see a few examples: 1. Email: To check whether the email address entered in the email field is valid or not, you can specify the following regex code as the validation rule for the field: ``` [a-z0-9!#$%&'*+=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])? ``` 2. URL: To check whether a URL entered by a user is valid, you can use the following regex code for validating the field: ``` ^(http(?:s)?\:\/\/[a-zA-Z0-9]+(?:(?:\.|\-)[a-zA-Z0-9]+)+(?:\:\d+)?(?:\/[\w\-]+)*(?:\/?|\/\w+\.[a-zA-Z]{2,4}(?:\?[\w]+\=[\w\-]+)?)?(?:\&[\w]+\=[\w\-]+)*)$ ``` 3. Date: You can define rules to check whether the date entered by a user is in the valid format by using the following regex code. ``` ^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$ ``` **Note:** The above code will check if the entered value is in one of the “dd/mm/yyyy”, “dd-mm-yyyy”, or “dd.mm.yyyy” formats. It will also validate leap years. Learn more about [regular expressions](https://www.regular-expressions.info/). ## Custom Error Message For custom validation rules, you can set [custom error messages](/docs/headless-cms/validation-error-message) displayed to the user if the validation checks specified in the field do not pass. For example, when you enter an email address of invalid format, you will get the notification - “Please enter a valid email address” or “Entered email address is invalid”. ## Setting Validations to Fields You can set up validations for fields while setting their properties. When you select a field in your content type, check the validations that you wish to apply to it. These validators become effective and start validating your input only when you start creating entries. When the validators encounter invalid content in the form of content of invalid format, incompatible date ranges, etc., it alerts users with their default error messages. --- ## URL: https://www.contentstack.com/docs/administration/webhook-configuration --- title: "Webhook Configuration" description: "Configure webhook connection limits to manage real-time data flow." url: "https://www.contentstack.com/docs/administration/webhook-configuration" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-14" filename: webhook-configuration.md --- # Webhook Configuration Webhook Configuration lets you set the maximum connections per second for all webhooks in your organization. This limit determines the maximum connections permitted to webhook URLs at any given time. Once the limit is reached, connections are efficiently throttled to avoid surpassing it. By configuring [webhooks](/docs/headless-cms/about-webhooks), you can designate a specific URL for Contentstack to send data to whenever a relevant event occurs in your stack. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to set the connection rate limit for your organization's webhooks. * How throttling applies once the connection limit is reached. ## Set Connection limit To set the connection limit for the webhooks in your organization, log in to your [Contentstack account](https://www.contentstack.com/login) and follow the steps below: 1. Click the "Profile" icon in the top-right corner, then select your org from **Switch Organization**. 2. Navigate to **Administration** from "App Switcher". 3. Click the **Webhook Configuration** tab from the header. 4. Enter the limit (between 2 and 100) in the **Connection Rate Limit** field. 5. Click **Save** to save your configuration![Connection Rate Limit field in Webhook Configuration](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc643f9c3f9b1b466/6628b0eb528fc1a2c755b3d3/Webhook_Configuration_in_Org_Admin.png) **Note**: Due to the distributed nature of systems, the actual message rate may occasionally exceed the enforced rate limit. For instance, if a rate limit of 50 per second is set, an endpoint might receive messages at a rate of 53 or higher. --- ## URL: https://www.contentstack.com/docs/agent-os --- title: "Agent OS" description: "Empower your digital operations with Contentstack Agent OS. Leverage agents to build intelligent, brand-aligned workflows and scale your enterprise intelligence." url: "https://www.contentstack.com/docs/agent-os" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-04" filename: agent-os.md --- # Agent OS Build intelligent agents, automate repetitive work, and interact with your Contentstack ecosystem through natural language. Agent OS combines Agents, Automations, and Polaris into a unified platform for AI-powered content operations and business workflows. ## What Can You Do with Agent OS? ### Build Intelligent Agents Create AI-powered agents that understand context, make decisions, and perform actions using instructions, tools, and enterprise knowledge. [Learn more](https://www.contentstack.com/agent-os/what-is-an-agent) ### Automate Business Processes Connect systems and automate repetitive tasks using event-driven workflows and integrations. [Learn more](https://www.contentstack.com/agent-os/what-is-an-automation) ### Work with Polaris Use natural language to find information, execute tasks, and interact with agents and automations directly within Contentstack. [Learn more](https://www.contentstack.com/agent-os/what-is-polaris) ## Explore Agent OS ## Real-World Workflows ### Translate Content with Smartling Automatically send content for translation when entries are published, sync translated content back into Contentstack, and keep localized content up to date across channels. [Learn more](https://www.contentstack.com/agent-os/translate-data-using-smartling) ### Update Search Results with Algolia Automatically index content changes in Algolia whenever entries are created, updated, or published to ensure users always see the latest content in search results. [Learn more](https://www.contentstack.com/agent-os/add-new-entries-to-algolia-s-search-index) ### Review Content with ChatGPT Use AI-powered workflows to review content, generate summaries, improve copy, and automate repetitive content tasks directly within your content operations. [Learn more](https://www.contentstack.com/docs/agent-os/chatgpt-use-cases) ## Popular Connectors ### Slack Send notifications, approvals, and workflow updates directly to Slack channels to keep teams informed and aligned. [Learn more](https://www.contentstack.com/agent-os/slack) ### Jira Create, update, and track work items automatically as part of content and business workflows. [Learn more](https://www.contentstack.com/agent-os/jira) ### AWS Lambda Invoke serverless functions from your workflows to execute custom business logic and integrate with external systems. [Learn more](https://www.contentstack.com/agent-os/aws-lambda) ### Salesforce Commerce Cloud Synchronize product and commerce data between Contentstack and Salesforce Commerce Cloud to support consistent content-driven shopping experiences across channels. [Learn more](https://www.contentstack.com/agent-os/salesforce-commerce-cloud) ### Microsoft Teams Share workflow notifications, approvals, and updates directly with teams and stakeholders where they collaborate. [Learn more](https://www.contentstack.com/agent-os/microsoft-teams) --- ## URL: https://www.contentstack.com/docs/agent-os-troubleshooting/faqs --- title: "Agent OS Troubleshooting Guides" description: "Discover answers to common troubleshooting questions about Agent OS." url: "https://www.contentstack.com/docs/agent-os-troubleshooting/faqs" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-05" filename: faqs.md --- # Agent OS Troubleshooting Guides ## Workspaces, Access & Administration ### Agent OS Projects Not Visible Due to Organization Role Constraints A user may have stack access but cannot see or access Automation Hub projects, preventing them from viewing or managing automations. **Root Cause** Automation Hub access is governed at the organization level; Member roles may not have required privileges. **Resolution** 1. Navigate to the automation project's **Settings tab**. 2. Under the Members or Invitations section, **invite the individual user** to the project. 3. Log out and log back in to refresh their session if the project does not appear immediately. Users can view Automation Hub projects and open/create automations. ### Recovery Options for Deleted Automations / Backup Expectations Customers may ask how to recover deleted automations and whether configuration backups exist. **Root Cause** Deleted automation configurations are not recoverable from within the UI; restoration is not supported unless disaster recovery is involved. **Resolution** 1. Confirm automation deletion scope (which project, when deleted). 2. Recommend rebuilding from documentation/export (if export exists). 3. If business-critical, initiate DR requests through the internal database team (process-dependent). 4. Recommend governance controls: * Export automations periodically * Maintain versioned configuration repo Automation is recreated successfully (or restored via approved DR process). ### JSON Import Fails Because Connectors/Tokens Do Not Exist in Target Org When importing automation JSON into another organization, the import may fail or result in incomplete configuration because referenced connectors/tokens are missing. **Root Cause** JSON imports do not resolve dependencies (connectors, auth tokens) across orgs. **Resolution** 1. Confirm which connectors and tokens are referenced in the JSON. 2. Recreate required connectors in target org (if permitted). 3. Prefer recipe-link import for cross-org migration when available. 4. After import, rebind connections and validate action authentication. Automation imports with all steps configured and actions authenticate successfully in the target org. ### “Provided Access Token Has Insufficient Scopes” During Automation Setup During automation setup (especially stack selection), UI may display a token scope error preventing configuration. **Root Cause** Session/cache behavior leading to stale authorization context. **Resolution** 1. Clear browser cache and cookies for the domain. 2. Log out and log back in. 3. Retry the stack selection step. 4. If it persists, test in incognito or alternate browser. Stack selection succeeds and the automation can be saved and executed. ### Automation Limit Inquiry With Insufficient Details The customer asks about automation limits but does not provide enough technical or subscription context to assess the constraint. **Root Cause** Missing required details (subscription, observed error, affected automation counts, runtime metrics). **Resolution** Request: * Plan/subscription context * Automation project and workflow name * Error message(s) * Run History timestamps * Any limit UI message or API response Sufficient information is collected to provide a limited explanation or remediation path. ### Transfer Ownership of an Automation Project Customer requests to transfer Automation project ownership to another user for governance or access continuity. **Root Cause** Direct ownership transfer is not supported. **Resolution** 1. Export automations from the existing project (requires org admin). 2. Create a new Automation project under the target owner account. 3. Import the exported automation(s) into the new project. 4. Validate connections and credentials. Automation runs under the new project and is administered by the intended owner. ### OAuth Configuration, Authorization Warnings, and Impact of User Deactivation Customers may see OAuth authorization warnings, have uncertainty about org selection during OAuth, or observe automation failures when the creating user is deactivated. **Root Cause** * OAuth authorization is org-specific and depends on selection during consent. * Revoking an authorization invalidates tokens used by dependent automations. * Automations can fail if created under a user who is later deactivated (token/user-context dependency). **Resolution** 1. Re-authorize OAuth ensuring the correct org is selected. 2. Avoid revoking active OAuth authorizations used by production automations. 3. Migrate critical automations to approved service accounts before deactivating users. Automations continue running successfully after OAuth validation and user lifecycle changes. ### Contentstack MCP Tool Fails to Validate Parameters in VS Code When using the Contentstack MCP tool in VS Code, tool calls fail with a parameter validation error, and the tool cannot fetch entries or content models as expected. **Root Cause** The error stems from how environment variables are handled when the MCP tool is configured through the VS Code extension, rather than through a dedicated per-stack configuration file. **Resolution** 1. Create a custom mcp.json configuration file inside your project’s .vscode folder to define stack-specific environment variables explicitly, instead of relying on global environment variable handling. 2. Uninstall the MCP extension through the VS Code UI. 3. Reinstall the MCP extension through the VS Code UI. 4. Reload the VS Code window. 5. Retry the operation that previously failed (for example, fetching entries or content models) to confirm the parameter validation error is gone. The MCP tool fetches entries and content models as expected, with no parameter validation errors. ### Agent OS Page Is Blank, Missing from the App Menu, or Not Showing Execution Log The Agent OS section is unreliable in the browser: the Automations page fails to load, Agent OS does not appear in the app menu at all, or the execution log list appears empty even though automations are running. **Root Cause** These symptoms most often trace back to one of two causes: browser-side caching, cookies, or extension interference in your normal browser profile; or, for the app-menu case specifically, an account role below Org Admin, Agent OS typically requires Organization-level Admin access, and a Member-level role may not see it at all. **Resolution** 1. Open Agent OS in an incognito/private browser window to rule out cache, cookies, or extension interference from your normal profile. 2. If Agent OS loads correctly in incognito but not in your normal profile, clear your browser cache and cookies, or try a different browser. 3. If the page still does not load, update your browser to the latest version and perform a hard refresh. 4. If Agent OS is missing from the app menu specifically (not just failing to load), confirm your role at the organization level. Member-level access may not be sufficient, and Organization Admin (or equivalent) access is generally required. 5. If the execution log appears empty, clear your browser cache first, since this alone has resolved missing-log cases previously. 6. If clearing cache, using incognito, and trying different browsers do not resolve missing execution logs, and you see a 403 Forbidden error in your browser’s network tab, this points to a different, unresolved issue rather than a simple caching problem, contact Contentstack Support directly with a HAR file rather than continuing to try browser-level fixes. Agent OS loads normally in your regular browser profile, appears in the app menu for users with the required Org Admin access, and execution logs display as expected. If the 403/network-level pattern applies instead, escalate to Support rather than expecting cache-clearing to resolve it. ## Triggers, Filters & Workflow Logic ### Automation Entry Trigger Returns Unexpected Entry Payload During Test Runs When validating an Entry-based trigger in Automation Hub using “Test trigger” or a controlled entry update, the trigger payload may intermittently differ from the expected entry response (for example, returning an older snapshot of the entry or a mismatched entry object). This can impact downstream mapping and create uncertainty during workflow validation. **Root Cause** Creating a new trigger and retesting produced correct and consistent payloads, indicating the behavior was likely transient or tied to trigger state/config caching at the time of testing. **Resolution** 1. In Automation Hub, open the affected automation and document the trigger configuration (content type, environment, branch, and filters). 2. Create a **new entry trigger** with the same intended configuration. 3. Reconnect downstream actions (or clone the automation and swap the trigger). 4. Run controlled tests: * Update a single known entry (e.g., change a text field). * Confirm the trigger payload reflects the updated entry values. 5. If the problem recurs, collect: * Trigger configuration screenshot * Entry UID and content type UID * Time of test run * Run History payload snapshot In Run History, the trigger payload consistently matches the updated entry and the expected content type/UID across repeated tests. ### Automation Not Executing Because Trigger Filter Logic Does Not Match Event An automation may not execute even though the entry event occurs (create/update/publish), causing expected actions (webhooks, updates, notifications) to never run. **Root Cause** A trigger filter condition was configured such that the event did not satisfy the filter expression (for example, mismatch in field value check, incorrect operator, or missing field path). **Resolution** 1. Open the automation → Trigger configuration. 2. Review all filter conditions: * Confirm field path is correct * Confirm operator is correct (equals, contains, exists, etc.) * Confirm expected value casing and format 3. Temporarily simplify the filter to a minimal condition to validate execution. 4. Reintroduce conditions incrementally to isolate the blocking condition. 5. Retest by generating the same event using a controlled entry update/publish. Automation is triggered consistently for matching entry events and does not trigger for non-matching events. ### Trigger AND/OR Conditions Do Not Behave as Expected Teams may observe unexpected trigger firing patterns when using compound AND/OR conditions, causing workflows to execute too broadly or not at all. **Root Cause** Logical grouping/precedence misunderstanding (configuration design) rather than platform malfunction. **Resolution** 1. Document expected logic in plain language. 2. Rebuild conditions using explicit grouping and reduced complexity. 3. Test with known cases: * Case that should trigger * Case that should not trigger 4. Introduce conditions incrementally to isolate behavior. Trigger firing aligns with expected truth-table logic across test cases. ### Automation Not Triggering After Switching a Trigger to a Cron Schedule After changing an automation’s trigger to a Cron schedule and setting a timezone, the automation stops firing on its expected schedule and no execution log are generated, even though the automation remains enabled. **Root Cause** Contentstack’s “Etc” timezone identifiers use reversed sign conventions compared to standard UTC notation. For example, Etc/GMT-5 actually represents UTC+5, not UTC-5 as the name might suggest. Configuring the Cron trigger with the wrong sign in mind causes the automation to run at an unexpected time relative to what you intended. **Resolution** 1. Open the Cron trigger configuration for the affected automation and check which “Etc” timezone identifier is set. 2. Remember that “Etc” timezone names use reversed signs relative to UTC - Etc/GMT-5 means UTC+5, and Etc/GMT+5 means UTC-5. 3. Recalculate the Cron expression and timezone combination based on the correct UTC offset for your intended trigger time. 4. Update the timezone configuration accordingly and save the trigger. 5. Monitor the Execution Log to confirm the automation now fires at the expected schedule. The automation runs on the intended schedule, and execution log are generated for each scheduled run. ### Entries Show Different Publish Status Depending on Which Environment or View You Check An automation that ingests data from Contentstack appears to be pulling entries that show as “not published” on the entry page, while the entries list view shows some of those same entries as “Published” with a “Schedule Publish Failed” flag, creating confusion about the entries’ real status. **Root Cause** This is a UI/environment misunderstanding rather than a system or data issue. Entries can have different statuses across different environments, and viewing the entries list/search view rather than the individual entry page for the correct environment can show a status that does not match what an automation is actually consuming from the production environment. **Resolution** 1. Confirm which environment your automation is actually reading from (for example, the production/PRD environment specifically). 2. Check entry status from the individual entry page for that specific environment, rather than relying on the entries list/search view, which can display status information that spans or defaults to a different environment. 3. If a “Schedule Publish Failed” flag appears, verify whether it applies to the environment your automation depends on, or to a different (e.g., non-production) environment. 4. Confirm with your automation logs (e.g., what was actually pulled into your downstream system) whether unpublished entries were genuinely ingested, or whether the automation was in fact only pulling correctly published entries all along. Entry status is confirmed per-environment from the individual entry page, clarifying that the automation was processing correctly published entries and the discrepancy was a display/environment mix-up. ### Automation Cannot Be Activated: More Than 10 If-Else Blocks Cause the Automations Page to Crash An automation with a large number of If-Else conditional blocks cannot be activated. After opening the Automation page, the UI goes blank after a few seconds, and the browser console shows repeated 429 (Too Many Requests) errors from the Automations API followed by an “Invalid array length” JavaScript error. **Root Cause** Agent OS currently supports up to 10 If-Else blocks in a single automation. Configuring more than that (for example, 18 blocks) triggers the UI crash described above when the page attempts to render the automation. Support confirmed the 429 errors in the console were not the actual issue in this case, the block count was the limiting factor, though the source ticket does not establish why the 429 errors appear alongside the crash. **Resolution** 1. Count the number of If-Else blocks in the automation that will not activate. 2. If the count exceeds 10, reduce the number of If-Else blocks, for example, by consolidating conditions or restructuring logic into fewer branches. 3. If the workflow genuinely requires more than 10 conditional branches, split the logic across multiple automations (using sub-automations or separate triggers) rather than building all branches into a single automation. 4. Reopen the Automation page after reducing the block count to confirm it loads and the automation can be activated. With the If-Else block count at or below 10, the Automation page loads normally and the automation activates without the UI crashing. ## Execution, Code Blocks & Timeouts ### Code Block or Payload Step Appears Skipped During Execution Automations containing Code Block steps may appear to skip execution or fail to process logic during a run. This often results in downstream actions failing due to missing data from the skipped step. **Root Cause** CodeBlock executions are tracked as a diff count per organization. Once the org's allotted limit is reached, code blocks may be bypassed during workflow execution, resulting in missing fields or incomplete transformations for downstream steps. **Resolution** 1. Confirm whether the org has hit its CodeBlock execution (diff count) limit by checking usage in **SuperAdmin**. 2. If the limit has been reached, it can be **increased or decreased per org** via SuperAdmin settings. 3. Adjust the limit to an appropriate value based on the org's workflow requirements. 4. Ask the user to retest the affected workflow after the limit has been updated. Run History shows the code block executing successfully and producing structured output used by downstream steps, with no further skipped steps. ### Duplicated Automation Returns “Rejected” Without Running After copying an automation, executions may return “rejected” and fail to run even when trigger tests succeed. **Root Cause** Issue self-resolved and could not be inspected due to missing access/log context. Likely transient system or authorization state. **Resolution** 1. Re-run the automation after a short interval. 2. If recurrence: * Export the automation configuration * Provide Run History timestamps and rejection status * Share project access with Support for inspection Automation runs normally with no “rejected” status. ### Repeat Path Updates Only One Entry (Should Update Many) Automation iterating over entries updates only the first item, leaving remaining entries unchanged. **Root Cause** Incorrect repeat-path variable reference; the update action was not using the current iteration UID. **Resolution** 1. Ensure repeat path is correctly configured to iterate over entry list. 2. Reference the current iteration UID using {{current.value.uid}}. 3. Add a condition to prevent unnecessary updates (e.g., only update if meta\_description is blank). 4. Retest. Each entry in the repeat iteration is updated as expected. ### Automation Failures Across Locales Due to Variable-Decoding Edge Case Automations may fail repeatedly across multiple locales while showing limited troubleshooting detail in the UI, impacting downstream systems (e.g., search indexing). **Root Cause** Backend edge case related to decoding variables when incorrect variable references are used in action configurations. **Resolution** 1. Escalate with run IDs and failure timestamps. 2. Engineering applies platform fix for decoding edge cases. 3. Retest the same automation run. Runs complete successfully and no longer fail due to variable decoding. ### Lookup Data Error in Automation Action (Non-Reproducible) Customer reports lookup step error but it cannot be reproduced during validation. **Root Cause** Transient error state; no active failure present during review. **Resolution** 1. If error recurs, collect: * Lookup step configuration * Run ID * Error screenshot and timestamp 2. Validate whether lookup source credentials or query parameters changed. The lookup step completes successfully without runtime errors. ### Automation Failure Due to 300-Second Code Block Execution Timeout Automations may fail at certain time windows when processing large datasets due to code block runtime constraints. **Root Cause** Automation Hub enforces a **300-second execution timeout**, and the workload exceeded what could be completed in that window. **Resolution** 1. Reduce items processed per run (batching). 2. Split into multiple executions: * Use pagination/skip/limit * Store cursor state externally 3. Optimize code block performance: * Minimize sequential HTTP calls * Prefer bulk endpoints where possible Run History shows successful completion within the timeout, with full workload processed across batches. ### Updating Multiline Text Field With Stringified JSON Causes Payload Type Error When an automation attempts to store JSON inside a multiline text field by injecting a stringified JSON variable, the update action may fail because the platform interprets the injected content as an object instead of a string. **Root Cause** Variable injection and JSON rendering in automation payloads can cause a “stringified JSON” to be treated as a JSON object unless explicitly escaped. **Resolution** 1. In the script/code step, apply **double serialization**: * JSON.stringify(JSON.stringify(obj)) 2. Confirm the resulting payload includes proper quoting when embedded in outer JSON. 3. Retest the Update Entry action. Entry updates successfully, and the multiline text field contains the intended JSON string (not a parsed object). ### Agent OS Monthly Execution Limit Reached: Automations Temporarily Disabled Automations stop running and Contentstack sends a notification that the organization has reached its monthly Agent OS execution limit. New executions fail or are queued until the limit resets. **Root Cause** Every organization has a monthly automation execution allowance, made up of a soft limit and a hard limit (for example, automation\_exec\_soft\_limit and automation\_exec\_hard\_limit set to 2,000 on a given plan). Trial organizations default to a much lower allowance, around 200 executions, while environments such as Azure can carry a higher hard limit (up to 125,000). Activities such as bulk migrations, testing scripts that trigger many entry updates, or an unexpected spike in publish/update events can consume the allowance faster than expected, and once the hard limit is hit, Agent OS is disabled for the organization until the monthly reset. **Resolution** 1. Open the Execution Log for your Agent OS organization to confirm which automations are consuming executions and when the spike occurred. 2. If the consumption is expected (for example, a planned migration or a temporary testing spike), contact Contentstack Support with your Organization ID and request a temporary increase to the soft or hard execution limit. 3. If you are in a trial organization and need a substantially higher ceiling, ask Support whether moving to a production environment (such as Azure) is applicable, since some environments carry a higher default hard limit. 4. For one-off spikes caused by internal testing rather than normal usage, ask your Customer Success Manager whether the affected executions can be excluded from the usage count as a one-time courtesy. 5. Once the limit increase is confirmed, resume the operation that required the higher allowance. If the increase was temporary, confirm with Support or your CSM when it reverts to the standard limit. After the limit is increased or the monthly reset occurs, previously blocked automations resume executing and no further execution-limit notifications are received for the affected activity. ### Execution Count in Product Analytics Doesn’t Match the Execution Log The number of automation executions shown on the Product Analytics dashboard is noticeably lower than the count reflected elsewhere (for example, in a limit-reached notification), leading to confusion about actual usage. **Root Cause** The Product Analytics dashboard does not update in real time, it typically reflects execution data with a delay of around 24 hours, and the backend records execution timestamps in UTC while the dashboard displays only the date, not the time. Both factors mean the dashboard total can trail behind, or appear to fall on a different day than, the true count. **Resolution** 1. Do not rely on the Product Analytics dashboard alone to confirm current-month usage against your execution limit. 2. Open Agent OS Execution Log, which reflect executions as they happen and are the source of truth for accurate, granular execution data. 3. When comparing totals across a day boundary, account for the fact that the backend logs execution times in UTC, which can shift a batch of executions into a different calendar day than what the dashboard shows. 4. If the discrepancy persists after allowing for the ~24-hour dashboard delay, contact Contentstack Support with the specific date range in question. Execution Logs and the limit-reached notifications now agree, and any apparent discrepancy is explained by the dashboard’s reporting delay and UTC timestamping. ### Automation Works When Testing Manually, but Fails or Behaves Inconsistently Once Enabled An automation runs correctly every time it is triggered manually through Test, but once enabled for live use, executions are inconsistent: some expected branches never run, entries appear to be skipped, or bulk operations that use the automation start failing. **Root Cause** Live triggers (such as publish) can fire far more frequently and in bigger bursts than manual test runs, especially during bulk operations. This drives requests past the CMA write-request limit (20 requests per second), producing 429 “Rate limit exceeded” errors, and a single publish or entry change can fan out into multiple triggers running in parallel, which increases the chance of hitting that ceiling and causing inconsistent branch execution under load. **Resolution** 1. For bulk operations (e.g., publishing many entries at once), trigger the automation off a job rather than off each individual entry or reference, so it does not execute once per entry. 2. Add **Wait** steps between API-heavy steps in the automation to spread out requests instead of firing them in a tight burst. 3. Enable **Throttle Execution** in the Agent OS settings for the automation; this paces requests automatically through an internal queue rather than requiring a manual per-second value. 4. Review the Execution Logs for the automation and filter for 429 errors to confirm rate limiting is the cause of the inconsistent behavior. 5. Narrow the publish queue or trigger filters so the automation only fires on the specific entry types or events it needs to handle, reducing unnecessary trigger volume. 6. After making these changes, re-run the live workflow and review one full execution log to confirm the branches you expect to run are all completed. With a job-based trigger, throttling, and **Wait** steps in place, the automation completes its expected branches consistently under live load, and the Execution Logs no longer show 429 errors for the affected automation. ### Automation Step Fails with “Cannot Find Module” Error Saving a trigger or running an automation step fails with an error similar to: Cannot find module /opt/automations-workflow-engine/connectors//.js, pointing into the automations workflow engine’s internal file structure. **Root Cause** The step or trigger references a connector module path that is not present, or not generated, on the workflow engine, a stale or broken connector registration for that specific step. **Resolution** 1. Delete the failing step (or trigger) from the automation. 2. Re-create the step using the same step type and configuration it had before. 3. Re-run or re-save the automation to confirm the error no longer appears. 4. If deleting and re-creating the step does not resolve the error, contact Contentstack Support with the automation ID, step ID, connector/account in use, and the timestamp of the failure so it can be investigated on the engine side. The step saves and runs successfully after being deleted and re-created, with no “Cannot find module” error. ## Actions, Publishing & Endpoints ### Validating Automation Design for External Backend Integration Automating a workflow that triggers based on content updates and sends data to an external backend service may fail if the design does not account for platform limitations. Improperly configured triggers and actions can result in execution errors or unintended loops. **Root cause** The issue stems from a design validation requirement where the automation logic must be verified for feasibility within Agent OS, rather than a specific product defect. **Resolution** 1. Confirm the intended use case is supported by existing triggers and connectors. 2. Align the automation workflow with best practice patterns for external API integrations. ⚠️ **Important:** Ensure the source content type is different from the target content type. Using the same content type for both will cause an infinite loop. After configuring the workflow pattern, run a test execution by updating a sample entry. If the payload is received correctly by the backend and no loops occur, the issue is resolved. Escalate with workflow configuration screenshots and execution logs if the issue persists. ### Schedule Publishing Based on a Countdown/End-Date Field (and Maintain Schedule on Updates) Customers often need content to auto-publish at a defined “end date/time” stored in an entry field, and to automatically update/cancel scheduled jobs if that field changes. **Root Cause** This requires two controlled automation paths: one for new entries and another for updates, including schedule cancellation logic using publish details/job IDs. **Resolution** **A) For New Entries** 1. Trigger: Entry Create (relevant content type). 2. Step: Read end-date field from payload. 3. Step: Schedule publish action for the same entry at the end-date timestamp. **B) For Updated Entries** 1. Trigger: Entry Update (same content type). 2. Fetch previous entry version (CMA) including publish\_details. 3. Compare previous end-date vs current end-date (code step). 4. If changed: * Identify scheduled job in publish\_details matching old scheduled\_at. * Cancel scheduled job using job\_id via CMA cancel schedule endpoint. * Schedule publish with new date. **Verify** * New entries are scheduled correctly at the field timestamp. * Updated entries replace the prior scheduled job with the updated timestamp. * No duplicate schedules remain active. ### Requirement to Capture Publisher Email on Publish Event Customers want automation to obtain the publishing user’s email when an entry is published and use it for notifications or audits. **Root Cause** The requested attribute may not be available directly in the expected form in the automation payload or may require an alternate extraction approach. **Resolution** 1. Confirm what the trigger payload contains (user UID vs email). 2. If only UID is present, resolve user details via a management API call in a code/HTTP step (subject to permissions). 3. Use Email action connector to send notifications using resolved email. Automation reliably retrieves publisher identity (email or resolved identifier) and uses it in notifications. ### Automation Actions Display as Performed by a User, Not the Management Token Automation actions (e.g., publish) may show attribution to a named user even when using a management token, which can create audit concerns. **Root Cause** Attribution is tied to the account selected during automation configuration, not to the token identity. **Resolution** 1. Identify which user account is selected in automation configuration. 2. If audit alignment is required, use an approved service account for automation ownership. 3. Log enhancement request if token-based attribution is required. Action attribution aligns with the configured automation owner account. ### AWS S3 Agent OS Connector Throws “Invalid Credentials” Even Though the Credentials Are Correct The AWS S3 connector in Agent OS returns an “Invalid Credentials” error even though the same credentials work correctly in an unrestricted environment. This typically appears once an S3 bucket has strict security policies applied, such as an IP allowlist. **Root Cause** The Agent OS S3 connector uses the official AWS SDK, which surfaces a generic “Invalid Credentials” message for a range of IAM restrictions, not just bad keys, including missing permissions and IP-based restrictions. Because Contentstack’s infrastructure connects to S3 through a VPC endpoint, traffic often travels over the AWS internal network rather than the public internet. Whitelisting Contentstack’s public IP addresses does not cover this internal path, so a bucket policy that only allows specific public IPs still blocks the connection. **Resolution** 1. Confirm that the credentials themselves are valid and have the required S3 permissions (including any needed for DeleteObject if your workflow uses it). 2. If your bucket policy uses an IP allowlist, do not rely solely on whitelisting Contentstack’s static public IP addresses, since traffic may route over AWS’s internal network via a VPC endpoint instead of the public internet. 3. Request Contentstack’s VPC endpoint ID from Support and add it to your bucket or IAM policy so the internal network path is authorized. 4. Retest the S3 connector after updating the policy to confirm the “Invalid Credentials” error no longer appears. The S3 connector authenticates successfully and the connection remains stable, because the bucket policy now authorizes Contentstack’s VPC endpoint rather than only its public IP addresses. ### AWS Bedrock Prompt Connector Doesn’t Show a Model That Is Enabled in Your AWS Console A model (for example, an Anthropic Claude model in AWS Bedrock) is enabled in your AWS console, but it does not appear in the Foundation Model drop-down of the AWS Bedrock Prompt connector step in Agent OS. **Root Cause** The AWS Bedrock Prompt connector originally populated its model dropdown using the ListFoundationModels API. AWS has since moved some newer Anthropic models to the ListInferenceProfiles API instead, which means those models are invisible to versions of the connector that only call ListFoundationModels. **Resolution** 1. Confirm in your AWS console that the model is enabled and that you can see it under Bedrock’s inference profiles (not just foundation models). 2. Delete the existing AWS Bedrock Prompt step in your automation and re-add it; this refreshes the step to the current connector version, which supports the ListInferenceProfiles API. 3. If, after re-adding the step, you get an error that “on-demand throughput isn’t supported” for the model, this means the model requires a global inference profile rather than on-demand throughput, select or configure the appropriate inference profile for that model. 4. Re-test the prompt step to confirm the model can now be fetched and used to generate output. The model appears in the **Foundation Model** dropdown, and the AWS Bedrock Prompt step successfully generates output using it. ### Vertex AI Connector: Project Selection Fails After Successful Service Account Authorization In an Automation step using the Vertex AI connector, the service account is added and successfully validated through the “Authorize” button, but an error occurs when trying to select a Google Cloud project, blocking further configuration of the step. **Root Cause** The service account does not have all of the Google Cloud APIs required for project listing and Vertex AI usage enabled, and/or its IAM role does not include the permission needed to list projects. **Resolution** 1. In your Google Cloud project, enable the Cloud Resource Manager API (cloudresourcemanager.googleapis.com), this is required for listing and fetching your Google Cloud projects in the connector UI. 2. Enable the Vertex AI API (aiplatform.googleapis.com), this is required for sending prompts and using Gemini or function calling on Vertex AI. 3. If your workflow uses catalog or product operations, also enable the Retail API (retail.googleapis.com); skip this if you are not using commerce features. 4. Verify that the service account (or connected Google account) has an IAM role of at least Viewer, Browser, or Editor/Owner, or a custom role that includes the resourcemanager.projects.list permission. 5. Allow time for the API and IAM changes to propagate, then return to the Vertex AI connector step and retry project selection. After the required APIs and IAM permissions are in place, the connector can list and let you select your Google Cloud project without error. ### Agent OS Elasticsearch Connector Authentication Fails with Username/Password Setting up an Agent OS job to connect to an Elasticsearch connector fails because the Username and Password fields do not accept the credentials being entered, and it is unclear whether API-key-based authentication is supported instead. **Root Cause** The connector requires the **Node URL**, **Username**, and **Password** from the specific Elasticsearch deployment’s connection details, credentials that are automatically generated at the time the deployment was created, rather than a separately created API key. **Resolution** 1. Go to your Elasticsearch deployment page and locate the **Node URL** for the deployment. 2. Retrieve the **Username** and **Password** that were automatically generated when the deployment was created (these are deployment-specific, not a separate API key). 3. Enter the **Node URL**, **Username**, and **Password** exactly as shown on the deployment page into the Agent OS Elasticsearch connector fields. 4. Refer to the Elasticsearch connector documentation specifically the credentials step, if you are unsure which deployment page fields to use. 5. Retest the connection after entering the deployment-specific credentials. The Elasticsearch connector authenticates successfully using the deployment’s **Node URL**, **Username**, and **Password**. ### Fetching Entries Published Within a Specific Time Period Using Agent OS There is no direct, built-in way to fetch only the entries that were published within a specific recent time window (for example, the last N days) from within an Automation. **Root Cause** The **Get Publish Queue** action only returns a limited number of recent publish events by default (10), which is not enough to reliably capture and filter entries published over a longer or configurable period. **Resolution** 1. Add a **Get Publish Queue** action to your automation and increase its result limit beyond the default of 10 to capture a wider window of publish events. 2. Add a **JavaScript Code** step (V9) after the **Get Publish Queue** action. 3. In the **JavaScript Code** step, filter the returned entries dynamically based on their published\_at date, using a configurable number of days as the cutoff. 4. Test the automation to confirm it returns only entries published within your intended time period. The automation returns exactly the entries published within the configured time window, based on the published\_at field. ### Sending Agent OS Email Notifications After Content Deployment There is a need to notify a distribution list automatically after content is deployed to production, and it is unclear which Contentstack features support this. **Root Cause** Contentstack does not send post-deployment email notifications automatically out of the box; this needs to be configured using either Agent OS or an external notification service triggered via a webhook. **Resolution** 1. Option 1: Agent OS, create an automation with a publish trigger on the relevant content type/environment, and add an email action to that automation to notify your distribution list when the trigger fires. 2. Option 2: Webhooks, configure a Contentstack webhook on the relevant publish event, and integrate it with an external service such as Amazon SNS or SendGrid to handle sending the notification email. 3. Choose whichever option better fits your existing tooling, Agent OS’s email action for a self-contained setup, or Webhooks plus an external service if you already use SNS/SendGrid for notifications elsewhere. 4. Test the trigger by publishing a sample entry to confirm the notification email is sent as expected. The distribution list receives an email notification automatically whenever content is deployed to production through the configured trigger. ### Automating User Access Provisioning and De-Provisioning There is a need for Agent OS granting and removing user access to stacks and roles in Contentstack based on an internal request workflow (for example, requests submitted through ServiceNow), and it is unclear whether Contentstack supports this natively. **Root Cause** Contentstack does not provide a native, built-in ServiceNow integration for Agent OS user provisioning or de-provisioning. **Resolution** 1. Use the Contentstack Management API to build the integration instead of looking for a native ServiceNow connector. 2. Use the Management API’s user-invite endpoints to add or invite users programmatically when your internal workflow approves a request. 3. Use the Management API to assign or update roles for a user based on the access level requested in your internal workflow. 4. Use the Management API to remove a user’s access when your internal workflow triggers a de-provisioning request. 5. Connect these Management API calls to your internal workflow (for example, via a script or middleware that ServiceNow can call) so provisioning and de-provisioning happen automatically end-to-end. Access requests submitted through your internal workflow result in the corresponding user being added, role-assigned, or removed in Contentstack automatically, via the Management API. ### Identifying Which Automation or Webhook Made an Unexpected Content Update Entries appear to be updated (new versions created) without any user actively saving or publishing them, and it is unclear which automation or webhook is responsible. **Root Cause** Updates performed by an automation or an external script using the Management API are recorded under the relevant automation’s identity (for example, “Syndication Automation”), not under a human user’s name, which can make the change look like it happened at random if you are only checking for manual user activity. **Resolution** 1. Go to Agent OS Execution Log in your stack to see which automations ran and at what time. 2. Cross-reference the timestamps of the unexpected updates with the Execution Log to identify the specific automation responsible. 3. Check Agent OS Activities in the Audit Log for a detailed view of the actions each automation performed, including which entries were affected. The Execution Log and Audit Log identify the specific automation (or external script) responsible for the update, resolving the “random” update behavior. ### Copying Entries Between Locales Using Agent OS Instead of Manual Export/Import Content created in the wrong locale (for example, entries mistakenly created in Italian instead of English) needs to be copied to the correct locale, and it is unclear whether this can be Agent OS or must be handled through a manual export/import. **Root Cause** This is not a defect, Agent OS supports building a workflow for this use case, so a manual export/import is not required. **Resolution** 1. Create an Agent OS workflow that uses a **Get an Entry** action to retrieve the entry from the source locale (for example, Italian). 2. Add an **Update an Entry** action targeting the target locale (for example, English), and map the fields from the source entry to the corresponding fields on the target locale entry. 3. Optionally, add conditions to control which entries are processed, and a publish step if the copied entries should be published automatically. 4. Note that references and assets do not need special handling in this mapping, since they are UID-based and remain intact across the copy. 5. Run the workflow and confirm the target-locale entries now contain the expected field values. Entries created in the wrong locale are copied into the correct locale with their field values, references, and assets intact, without a manual export/import. ## Architecture, Recipes & Supported Workflows ### Recipe Import Fails With “Recipe Was Not Found” When importing an Automation Hub recipe (for example “Translate and Localize an Entry”), the import link may return a “recipe was not found” error and the recipe does not get added to the project. **Root Cause** The recipe import link was broken/invalid at the time of import. **Resolution** 1. Retry the import using the same recipe link after confirmation that the link has been restored. 2. Validate the import from a supported browser session (try incognito to rule out cached stale redirects). 3. If it still fails, provide Support with: * Recipe name * Import URL used * Timestamp and screenshot of the error The recipe imports successfully and appears under the target project with all steps available. ### Automation Review Call Request Customer requests a follow-up call for additional automation configuration questions, typically after resolving a prior issue. **Root Cause** General advisory request; no defect. **Resolution** 1. Request agenda and automation links (project + automation name). 2. Validate the configuration and explain best practices for triggers/actions. 3. Confirm closure once questions are answered. The customer confirms the configuration is correct and proceeds without further blockers. ### Using Automation Hub to Sync Content Across Different Stacks Customer attempts to use Automation Hub to synchronize entries between two different stacks and observes that content does not copy or update as expected. **Root Cause** Automation Hub supports workflows within the same stack context (including branches), but cross-stack content sync is not supported. **Resolution** 1. Confirm whether source and target are different stacks. 2. For cross-stack sync: * Use Contentstack CLI export/import * Consider stack cloning where applicable 3. If partial automation is desired, use external middleware to orchestrate cross-stack CMA calls. Content sync is achieved using CLI-based export/import or approved migration approach. ### Contentstack MCP Server Supports Only One Stack per Agent Configuration When configuring an agent to use the Contentstack MCP server, only a single CONTENTSTACK\_API\_KEY can be provided, and there is no way to manage entries or assets across multiple stacks from that one agent configuration. **Root Cause** The current MCP configuration accepts one CONTENTSTACK\_API\_KEY per agent, and that key is tied to a single stack. Multi-stack management within a single MCP configuration is not supported natively. **Resolution** 1. If you need an agent to work across multiple stacks, configure a separate MCP instance for each stack, each with its own CONTENTSTACK\_API\_KEY. 2. Alternatively, build an external orchestration layer or application that routes requests to the correct stack-specific MCP agent based on which stack a given request needs. 3. Design your agent workflows around whichever of the above matches your architecture, since a single MCP agent instance operates only within the one stack its API key belongs to. Each MCP agent instance operates correctly within its assigned stack, and cross-stack operations are handled by routing between multiple stack-specific instances rather than expecting one instance to span stacks. ### Planning a Large Bulk Migration Through Agent OS Without Hitting Rate Limits Ahead of a large migration (for example, importing more than 10,000 entries) driven by an Automation, initial testing shows each execution taking several seconds, raising concern that the volume and pace could trigger rate limits or a failure loop during the live migration. Enabling “Throttle Execution” in the settings does not show any per-second or per-minute field, which adds to the uncertainty. **Root Cause** Throttle Execution does not expose a manual per-second or per-minute input because it works differently: once enabled, it uses an intelligent internal queue that paces requests automatically based on system capacity, rather than requiring you to configure a fixed rate yourself. **Resolution** 1. Enable **Throttle Execution** in the automation’s settings before running the migration. 2. Do not look for or expect a manual per-second/per-minute rate field, the internal queue handles pacing automatically once the setting is on. 3. Before running the full migration, run a smaller test batch (for example, around 500 entries) through the same automation. 4. Monitor the Execution Log during the test batch to confirm executions complete without rate-limit failures, even if individual executions are slow. 5. Once the test batch completes cleanly, proceed with the full migration using the same throttled configuration. The full migration completes without triggering rate-limit failures, because **Throttle Execution** paces requests automatically rather than sending them all at the execution’s native (slower) pace in an uncontrolled burst. ### Automation Step Limit Reached When Building Large Workflows A workflow that needs many steps, for example, 28–50 steps to handle onboarding across multiple entry types, hits Agent OS’s step limit before the full workflow can be built, or the customer needs guidance on splitting the work. **Root Cause** Agent OS enforces a step limit per automation. Support can raise this limit up to 15 steps without engineering approval; anything beyond 15 steps requires engineering sign-off. **Resolution** 1. If your automation needs more than the default number of steps, contact Contentstack Support with your use case and request a step limit increase. 2. Support can approve an increase up to 15 steps directly. If you need more than 15, be prepared for the request to be routed to engineering for approval. 3. Before requesting a large increase, review whether the workflow can be restructured using sub automations, which let you split a large process into smaller automations that call each other rather than building one very long automation. 4. One customer raised whether consolidating into a single **Repeat Path** per entry type could reduce total step count (e.g., from 42 to 28) for an equivalent outcome, this was not independently confirmed by Contentstack, so treat it as untested and validate the step count change on a copy of the automation before relying on it. The automation either fits within the approved step limit or has been split into sub-automations that together cover the same workflow without exceeding platform limits. --- ## URL: https://www.contentstack.com/docs/agent-os/about-contentstack-management-actions --- title: "About Contentstack Management Actions" description: "Use the Contentstack Management connector to automate content types, entries, assets, releases, and publish queue related actions in Contentstack." url: "https://www.contentstack.com/docs/agent-os/about-contentstack-management-actions" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: about-contentstack-management-actions.md --- # About Contentstack Management Actions [ ](#connect-your-contentstack-account)The Contentstack Management connector lets you perform specific actions within your stack. With this connector, you can perform CRUD operations on entries, releases, content types, assets, branches, taxonomy, global fields, languages, branch alias, variants, and user-specific information such as first name, last name, etc. * **Assets:** Within Contentstack, all uploaded files such as images, videos, PDFs, audio files, and more are stored in your repository for later access. This repository, where uploaded files reside, is referred to as [Assets](/docs/headless-cms/about-assets). You can perform asset based operations using the [Contentstack Management Assets Actions](/docs/agent-os/contentstack-management-assets-actions). * **Branches:** [Branches](/docs/headless-cms/about-branches/) offer isolated workspaces for safe, independent development of new features or updates. With branches you can create multiple copies of your stack content. You can perform branch-based operations using the following [Contentstack Management Branches Actions](/docs/agent-os/contentstack-management-branches-actions). * **Branch Alias:** An Alias acts as a pointer to a specific branch. The Branch Alias actions allow you to retrieve details of a single or all branch aliases, assign or reassign aliases to a specific branch, and delete them. These actions offer streamlined management of your branches, ensuring a well-organized and efficient development workflow using the [Contentstack Management Branch Alias Actions](/docs/agent-os/contentstack-management-branch-alias-actions). * **Content Types:** A [Content Type](/docs/headless-cms/about-content-types) serves as the framework or blueprint for a page or section within your web or mobile platform. It allows you to establish the fundamental structure of this blueprint by incorporating fields and configuring their attributes. By using the [Contentstack Management Content Types Actions](/docs/agent-os/contentstack-management-content-types-actions), you can fetch all content types from a selected stack. * **Entries:** An [Entry](/docs/headless-cms/about-entries) is a specific piece of content that you intend to publish. This could be a blog post, article, product description, or any other type of content that you want to make available to your audience. You can perform entry based operations using the [Contentstack Management Entries Actions](/docs/agent-os/contentstack-management-entries-actions). * **Global Fields:** A [Global Field](/docs/headless-cms/about-global-field/) is a reusable field (or group of fields) that you can define once and reuse in any content type within your stack. You can perform global field based operations using the following [Contentstack Management Global Fields Actions](/docs/agent-os/contentstack-management-global-fields-actions). * **Languages:** Contentstack offers advanced [multilingual content](/docs/headless-cms/about-languages) capabilities with over 200 pre-configured locales for creating and publishing entries in multiple languages. You can fetch the details of all the locales in a stack using the [Contentstack Management Language Actions](/docs/agent-os/contentstack-management-languages-actions). * **Releases:** A [Release](/docs/headless-cms/about-releases) comprises entries and assets that need to be deployed at the same time, either in a published or unpublished state, to a designated environment. You can perform release based operations using the [Contentstack Management Releases Actions](/docs/agent-os/contentstack-management-releases-actions). * **Taxonomy:** [Taxonomy](/docs/headless-cms/about-taxonomy) assists in organizing the content within stack into categories, making it easier to navigate, search, and retrieve information. You can perform taxonomy based operations using the following [Contentstack Management Taxonomy Actions](/docs/agent-os/contentstack-management-taxonomy-actions). * **Users:** Contentstack, being an Enterprise Content Management (ECM) system, accommodates numerous [users](/docs/headless-cms/about-stack-users) with different permissions collaborating together. In Contentstack, all the member accounts of a stack are referred to as users. By using the [Contentstack Management Users Actions](/docs/agent-os/contentstack-management-users-actions), you can fetch user related details, such as name, email, and so on. * **Variants:** Variants are the different variations of an entry displayed to different audiences created within a Personalize project. You can perform variant-related operations using the [Contentstack Management Variants Actions](/docs/agent-os/contentstack-management-variants-actions). Details of each action are covered in their respective documentation. ## Prerequisites To use the Contentstack Management connector, you first need to add your [Contentstack account](https://www.contentstack.com/login). To do so, follow the steps given below: ### Connect your Contentstack Account 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Contentstack** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta4039a5663896ca2/682b25fe24eaf7fd0d8182e1/Select_Connector.png) 4. Select the **Contentstack Management** connector to perform CMS tasks. ![Select\_CS\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt672cc3a63b5ae303/682b25feef59b13d396b53cd/Select_CS_Action.png) 5. Under **Choose an Action** tab, select any one action from the list. Here, we are selecting the **Get All Content Types** action. ![Get\_All\_Content\_Types.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt84756b6905091ca9/6601a8776f2eedfabdc2edc3/Get_All_Content_Types.png) 6. On the **Configure Action** page, click the **\+ Add New Account** to add your Contentstack account. ![Add\_Account\_Screen.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt299240b9e64d9d35/682b25fe7252414e898cef0a/Add_Account_Screen.png) 7. Select a way to add a new account. You can authenticate your account in two ways: **Contentstack** or **Management Token**. ![Authorize\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6b3e4620943849cf/660a41ca1b5a584959adc9e8/Authorize_Account.png) 1. If you select **Contentstack OAuth** and click **Proceed**, the Manage Permissions modal will open, as shown below. Provide the OAuth permissions for all the values by checking the boxes and click **Authorize**. ![Authorize\_Contentstack.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt93bf26ee2cd1bfb1/6601a877bdfec33b8d582a67/Authorize_Contentstack.png) **Note:** Contentstack offers support for [Branches](/docs/headless-cms/about-branches/). You must authenticate and re-authorize your existing account by checking all the permissions to add your Contentstack account. 2. In the pop-up, select your organization to complete the authorization. ![Select\_Organization.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt96ced61a3a48f48b/656daf7dae62f7796af682fd/Select_Organization.png) 3. In the pop-up that appears, view the module-specific access rights provided to the app. Click **Authorize** to complete authorization. ![Authorize\_Organization.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt58cd95e87f126f3f/6602bc9bdb68ba97b139e838/Authorize_Organization.png) 4. Provide an Account Name and then click **Save**. ![Save\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaa0dd4d11504d599/6601a877c19510f2b7decebe/Save_Account.png) 5. If you select **Management Token** and click **Proceed**, the **Authorize** modal will open, as shown below. Enter a **Title** and the **Management Token** of your stack and click **Authorize**. ![Authorize\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted5a118fd9dc145a/660423f81741ea31ee651dc6/Authorize_Button.png) This sets up your Contentstack account for the Contentstack Management action connector. ## Set up the Contentstack Management Connector Perform the following steps to set up the Contentstack Management connector: 1. From the left navigation panel, click **Configure Action Step**. 2. Then, click **Action Step** to configure third-party services. 3. Within the **Configure Action** Step, click the **Contentstack** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta4039a5663896ca2/682b25fe24eaf7fd0d8182e1/Select_Connector.png) **Note:** You can sort and search the connector(s) based on the filter. 4. Select the **Contentstack Management** connector to perform CMS tasks. ![Select\_CS\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt672cc3a63b5ae303/682b25feef59b13d396b53cd/Select_CS_Action.png) 5. Under **Choose an Action**, you will see nine categories of actions: **Asset**, **Branch**, **Branch Alias**, **Content Type**, **Entry**, **Global Fields**, **Locales**, **Release**, **Taxonomy**, **User**, and **Variant**. ![List\_of\_Actions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta1fd78cb5475d5cc/66332ef68a4a137d8cfe486b/List_of_Actions.png) Once done, you can go ahead and set up your Contentstack Management action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/add-new-entries-to-algolia-s-search-index --- title: "Add New Entries to Algolia’s Search Index" description: "Learn how to automatically add entries to Algolia’s Search Index using Contentstack Agent OS with trigger-based indexing workflows." url: "https://www.contentstack.com/docs/agent-os/add-new-entries-to-algolia-s-search-index" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: add-new-entries-to-algolia-s-search-index.md --- # Add New Entries to Algolia’s Search Index In this use case, we will cover a scenario where, if a user creates a new entry in Contentstack, automations should be able to add it immediately to Algolia's search index. Let's break this scenario to see what must be the trigger event and the consequent action required to execute the automation: * **Set up the Contentstack  "New Entry" Trigger Event:** This trigger event is activated whenever a user creates a new entry for a particular stack, and in turn, it executes the automation. * **Set up the Algolia "Index Entries" Action:** Once the above event triggers the automation, it will add your entry to Algolia s Search index. The steps to set up the automation are as follows: 1. [Create an Automation](#create-an-automation) 2. [Set up the Contentstack Trigger Event](#set-up-the-contentstack-trigger-event) 3. [Set up the Algolia Action Connector](#set-up-the-algolia-action-connector) 4. [Test out the Automation for Algolia Search Index](#test-out-the-automation-for-algolia-search-index) Let's look at the setup in detail. 1. ## Create an Automation To create an automation, perform the steps given below: 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. After logging in, click the **App Switcher** icon, then select **Agent** **OS** from the list.![App\_Switcher\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9e8ac72768458f95/699d373d68c24300082b30de/App_Switcher_Icon.png) 3. Go to your project or click + New Project to add a new project. 4. Click **\+ New Automation** to add the steps required to configure the automation. Next, let's look at the steps to set up the trigger event. 2. ## Set up the Contentstack Trigger Event 1. Click **Configure Trigger** from the left navigation panel. ![Configure\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4ad2f1723ca93ed4/699d36fe3f35720008e050cc/Configure_Trigger.png) 2. Within the **Configure Trigger** step, click the **Contentstack** connector. ![Select\_Contentstack\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5ef3f31fd371b2ed/699d36feead2f50008c96c46/Select_Contentstack_Trigger.png) 3. Add your Contentstack account. For more information, refer to the [Contentstack Trigger](/docs/agent-os/contentstack-trigger/) documentation. 4. Once done, select **Entry** **Created** from the list of trigger events and define the rest of the steps needed to set up the trigger (refer to **steps 3 to 12** in [Contentstack Trigger](/docs/agent-os/contentstack-trigger/)).![Entry\_Trigger\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0351bb1bfc1dce2c/699d36fe7603c100089f2885/Entry_Trigger_Fields.png) 5. Click **Test Trigger** to execute and test the trigger that you configured. 3. ## Set up the Algolia Action Connector Let s configure the Algolia action connector. 1. Click **Configure Action** **Step** from the left navigation panel. ![Configure\_Action\_Step.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt13eee4f886a5ea8c/699d36fd7603c100089f2881/Configure_Action_Step.png) 2. Click **Action Step** to configure third-party services. ![Select\_Action\_Step.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1e9582f1486e33ba/699d36fe48bd410008f0a25d/Select_Action_Step.png) 3. Within the **Configure Action Step**, click the **Algolia** connector. ![Select\_Algolia\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8ff3ba151c355384/699d36feead2f50008c96c42/Select_Algolia_Connector.png) 4. Select the **Index Entries** action. ![Select\_Algolia\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta2d80d5e8a7580c1/699d36fe8b33e4000870cd85/Select_Algolia_Action.png) 5. Click the **\+ Add New Account** button to select your Algolia account. 6. To add your Algolia account, refer to the [Algolia Connector](/docs/agent-os/algolia/) document. 7. Select the **Index Name** where you want to send the data. 8. Enter the data to be added to the index in the **Entries** field. **Note**: Provide your index data as per your object schema and in JSON format only. You can also pass dynamic data from the output of the previous step i.e., Entry Trigger. For that, just create an entry in your stack and enable the automation. In the execution logs, you can see the status of the automation. 9. Click **Proceed**. 10. This completes the configuration of your action. Now, click the **Test Action** button to send your data to the Algolia index. 11. Once the execution is successful, you will get the final output as seen in the screenshot in step 13. 12. This should initiate Algolia to add your entry into its Search Index. You need to navigate to your Algolia **Index** section and check the latest indexed entry. If it displays the data we passed as objects in the Algolia action connector, that means the automation works successfully. 13. Navigate back to your automation set up page, and click **Save and Exit** to finish setting up the action. 14. You need to enable automation in order to test it. This sets the **Algolia** action connector. 4. ## Test out the Automation for Algolia Search Index Now, let s see how you can test out your automation. To do so, perform the steps given below: 1. Go to Contentstack and [create an entry](/docs/headless-cms/create-an-entry) for the content type that you selected in your trigger event in step 2. This should trigger your automation. 2. Now, navigate to Algolia, log in and check the latest indexed entry in your **Algolia Index** section. If your automation worked, you should see the following output: ![Algolia-Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt88952b016fd2a78c/63d8df8e9d7bcb54223510f3/Algolia-Output.png) --- ## URL: https://www.contentstack.com/docs/agent-os/agent-os-and-its-components-agents-and-automations --- title: [Automations guides and connectors] - Agent OS and Its Components: Agents and Automations description: Learn how Agent OS, Agents, and Automations work together in Contentstack to deliver intelligent, reusable workflows. url: https://www.contentstack.com/docs/agent-os/agent-os-and-its-components-agents-and-automations product: Automations doc_type: documentation audience: - developers version: v1 last_updated: 2026-02-19 filename: agent-os-and-its-components-agents-and-automations.md --- # [Automations guides and connectors] - Agent OS and Its Components: Agents and Automations This page explains [Automations guides and connectors] - Agent OS and Its Components: Agents and Automations for Automations. It is intended for developers who need to understand or implement this topic. Use it when you are setting up, configuring, or troubleshooting this feature. ## Agent OS and Its Components: Agents and Automations The concepts of **Agent OS**, **Agents**, and **Automations** are closely related but serve distinct roles within the platform. While the table below provides a high-level comparison, the real value emerges when these components work together to interpret context, make decisions, and execute outcomes in a governed and reusable way. | Aspect | Agent OS | Agents | Automations | | --- | --- | --- | --- | | What it is | The **control layer** that sets the rules for how AI and workflows are allowed to operate across the platform | A **decision-making AI entity** that can understand context and make judgments | A **step-by-step process** that carries out actions exactly as defined | | What it does | Enforces permissions, brand and safety rules, logging, rate limits, and reuse so AI and workflows run consistently and safely | Reads content or signals, interprets intent, evaluates conditions, and decides the correct outcome | Executes predefined steps such as creating tasks, sending notifications, updating entries, or publishing content | | What it does not do | Interpret content or make decisions | Execute system actions directly | Interpret context or make judgments | | Real-life example | Ensures only approved users can run AI checks, applies brand rules, records audit logs, and prevents unsafe actions across all workflows | Publishes an entry, identifies errors, fixes them, and retries until publishing succeeds | On publish failure, sends a Slack message and creates a revision task | | Why it exists | Without it, AI behavior becomes inconsistent, unsafe, and impossible to govern at scale | Without it, the system can only follow rigid rules and cannot handle ambiguity | Without it, decisions never turn into real outcomes | | How users experience it | Indirectly, through trust, consistency, security, and predictable behavior | Through suggestions, validations, explanations, and decisions shown in their workflow | Through visible outcomes like notifications, task creation, and status changes | ### How Agent OS, Agents, and Automations Work Together #### For Users: **Example:** When a user submits a content draft, Agent OS routes the request and applies governance rules. An agent reads the content, determines whether the tone aligns with brand guidelines, and initiates an automation to notify the author and create a revision task if needed. #### For Developers: * Agent defines the what (for example, “I am an agent responsible for tone analysis”). * Automation defines the how (for example, “If the tone analysis agent detects a formal tone, execute the notification and task-creation steps”). ## Common questions ### What is covered in [Automations guides and connectors] - Agent OS and Its Components: Agents and Automations? This page covers the topic described in the title and provides the steps, options, and examples needed to use it. ### Who should read [Automations guides and connectors] - Agent OS and Its Components: Agents and Automations? Anyone responsible for configuring, implementing, or maintaining this capability should use this page as a reference. ### When should I use this page? Use it when you are setting up this feature, troubleshooting issues, or validating expected behavior. --- ## URL: https://www.contentstack.com/docs/agent-os/agent-os-architecture --- title: [Automations guides and connectors] - Agent OS Architecture description: Discover Agent OS, an adaptive AI framework with Agents, Automations, and governance for scalable enterprise automation. url: https://www.contentstack.com/docs/agent-os/agent-os-architecture product: Automations doc_type: documentation audience: - developers version: v1 last_updated: 2026-02-20 filename: agent-os-architecture.md --- # [Automations guides and connectors] - Agent OS Architecture This page explains [Automations guides and connectors] - Agent OS Architecture for Automations. It is intended for developers who need to understand or implement this topic. Use it when you are setting up, configuring, or troubleshooting this feature. ## Agent OS Architecture Agent OS is Contentstack’s unified intelligence platform, designed to centralize reasoning, execution, and governance so intelligence can be built once and reused safely across the platform. ### Architectural Principle Agent OS separates intelligence, execution, and interaction so the same agents can power internal tools, background automation, and customer-facing experiences, without duplication or loss of control. ### Core Subsystems * **Agents:** The adaptive intelligence layer that reasons, decides, and coordinates actions. * **Automations:** The deterministic execution layer that runs workflows reliably at scale. * **Polaris:** The internal conversational interface for contextual assistance and human-in-the-loop control. * **Digital Concierge:** The external conversational interface that brings the same governed intelligence to customer-facing digital experiences. ### Layered Architecture Agent OS follows a layered model that separates concerns while allowing tight coordination between intelligence and execution. ![Architecture_image](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt758a4d86ac50940f/6998735d99cddc000822b44e/Architecture_image.png) #### Intelligence layer: Agents Agents form the core of Agent OS. They interpret context, reason over data, and decide what actions to take. Agents are interface-agnostic, allowing the same intelligence to be reused across Polaris, Automations, and the Digital Concierge. #### Execution layer: Automations Automations handle how actions are executed. They provide predictable, event-driven, and auditable workflows. Agents can invoke automations, and automations can invoke agents, combining AI-driven decisions with reliable execution. #### Interface layer: Polaris and Digital Concierge Polaris and Digital Concierge are two interaction surfaces for the same intelligence: * **Polaris** supports internal users with guidance, explanations, and approvals. * **Digital Concierge** enables external users to interact with agents through conversational experiences. Both interfaces invoke the same agents and automations, ensuring consistent behavior and outcomes. #### Integration layer: MCP Server The Model Context Protocol (MCP) enables secure, standardized integration with Contentstack services and third-party systems, reducing tight coupling and improving maintainability. ### Governance and Trust Governance is built into the architecture of Agent OS. * **Observability:** Centralized visibility into agents, automations, and executions. * **Auditability:** Detailed logs for actions, content changes, API calls, and errors. * **Brand Control:** Brand Kit and Knowledge Vault ensure consistent tone, terminology, and factual accuracy across all AI outputs. ### Why This Architecture Matters Agent OS enables enterprises to: * Build intelligence once and reuse it everywhere. * Combine AI flexibility with reliable execution. * Maintain consistent brand and governance across channels. * Scale AI adoption with confidence. ## Common questions ### What is covered in [Automations guides and connectors] - Agent OS Architecture? This page covers the topic described in the title and provides the steps, options, and examples needed to use it. ### Who should read [Automations guides and connectors] - Agent OS Architecture? Anyone responsible for configuring, implementing, or maintaining this capability should use this page as a reference. ### When should I use this page? Use it when you are setting up this feature, troubleshooting issues, or validating expected behavior. --- ## URL: https://www.contentstack.com/docs/agent-os/agent-os-dashboard --- title: [Automations guides and connectors] - Agent OS Dashboard description: Manage and monitor your agents, automations, and executions in one place with the Dashboard for smarter, scalable workflows. url: https://www.contentstack.com/docs/agent-os/agent-os-dashboard product: Automations doc_type: documentation audience: - developers version: v1 last_updated: 2026-02-20 filename: agent-os-dashboard.md --- # [Automations guides and connectors] - Agent OS Dashboard This page explains [Automations guides and connectors] - Agent OS Dashboard for Automations. It is intended for developers who need to understand or implement this topic. Use it when you are setting up, configuring, or troubleshooting this feature. ## Agent OS Dashboard The **Agent OS Dashboard** is your central workspace to build, manage, and monitor everything you automate within Contentstack. It brings together Agents, Automations, and Executions tracking into one powerful overview, helping you optimize workflows and scale confidently. Whether you are creating manual workflows or intelligent Agents, the Dashboard provides a unified place to control and optimize your automation strategies. ### Why Use the Agent OS Dashboard? The Agent OS Dashboard is designed to help you: * **Visualize your automation landscape:** Quickly see how many agents and automations you have and how they are performing. * **Monitor success rates and execution times:** Understand which workflows are running smoothly and where you might need adjustments. * **Track real-time activity:** Stay updated on every action your agents take, using the live feed. * **Scale your operations:** Easily build new automations or agents as your needs grow, without losing control or visibility. ![Explore_agents_automations](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbb21ebee776bbcc4/6998737d697d920008a2489e/Explore_agents_automations.png) By centralizing this information, Agent OS makes it easy for teams to move fast while staying aligned on automation goals. ### Key Features Here are the key features of the Agent OS Dashboard to explore: #### Overview At the top of the dashboard, you get a quick glance at the following: * Total count of **Agents** and **Automations** created in a project. * **Success Rate** reflects the total count of successful execution for Agents and Automations. Suppose, there are a total of 100 executions in a day, out of which 60 are successful and 40 are in some other statuses such as Failed, Running, Paused, etc. So the success rate would be **60%** for the day. **Note:** The data is recorded for **24 hours**. * **Execution Summary (Today)** to track the total number of executions in a day for both Agents and Automations. * **Average Execution Time** is the time taken by each Automation and Agent (in a project) to run. Whenever an Automation or Agent is activated or deactivated, this change is instantly reflected in the Overview section. There is no need to manually refresh the page, the activity is tracked and displayed in real-time, ensuring that you always have an up-to-date view of the current system status and operational changes. ![Overview_section](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta3a4132c1019d8e1/6998737dc9b89800084dd6a1/Overview_section.png) #### Agents and automations From the Dashboard, you can quickly check all the active Automations and Agents. * **Agents:** View all active Agents, along with their Abilities, Status, and Models directly from the Agent cards. * **Automations:** View all active Automations, including the number of steps, creator name, etc., from the Automation cards. You can monitor each Agent or Automation individually, track their usage, and refine them based on performance insights. When you activate or deactivate an Automation or an Agent, this activity is tracked in real time in the Overview section. ![Agents_automations_view](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt96f4af16613b5f3d/6998737da6967e0008df483b/Agents_automations_view.png) #### Execution log The Execution Log view gives you full transparency into every workflow run. You can filter executions, monitor success and failure rates, and troubleshoot based on detailed logs — helping you optimize and scale confidently. **Note:** You can filter execution history for up to **90 days** at a time. ![Execution_Log](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt46e6d6c8e80994de/6998737d73e3df0008d2e1fd/Execution_Log.png) ### How to Get Started Follow the steps below to view the dashboard: 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list.![App_switcher_icon](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6290d7afc992eda9/6998761148bd410008f0963f/App_switcher_icon.png) 3. Navigate to your project. 4. From the Agent OS Dashboard, use the Overview section to monitor the health of your workflows.![Overview_section](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta3a4132c1019d8e1/6998737dc9b89800084dd6a1/Overview_section.png) 5. Dive into the **Execution** **Log** section to review daily executions for both Agents and Automations. ### Best Practices * **Start small:** Build a few workflows first, then expand as your needs grow. * **Monitor regularly:** Use metrics like **Success Rate** and **Average Execution** Time to fine-tune workflows. * **Use agents for dynamic tasks:** For workflows that require AI reasoning, start using Agents early. * **Stay agile:** Review the Execution Log frequently to adjust strategies based on real data. The **Agent OS Dashboard** is more than a monitoring tool, it is the **control center** for your automation strategy. It empowers you to create smarter workflows, monitor them at scale, and continuously improve based on real-time insights. Whether you are building manual automations or leveraging agents, the Dashboard makes sure you always have full control over your automation journey. ## Common questions ### What is covered in [Automations guides and connectors] - Agent OS Dashboard? This page covers the topic described in the title and provides the steps, options, and examples needed to use it. ### Who should read [Automations guides and connectors] - Agent OS Dashboard? Anyone responsible for configuring, implementing, or maintaining this capability should use this page as a reference. ### When should I use this page? Use it when you are setting up this feature, troubleshooting issues, or validating expected behavior. --- ## URL: https://www.contentstack.com/docs/agent-os/agent-os-usage-limits --- title: "Agent OS Usage Limits" description: "Know about the execution limits in an organization." url: "https://www.contentstack.com/docs/agent-os/agent-os-usage-limits" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: agent-os-usage-limits.md --- # Agent OS Usage Limits **Note:** For access, please talk to our [Support](mailto:support@contentstack.com) team. ## Types of Limits for an Organization There are two limits based on the plan for an organization. * **Soft Limit:** The soft limit marks the threshold at which the organization’s number of executions for the month exceeds the purchased plan for that organization. At this point, the organization will begin paying for executions at the negotiated rate per 100 executions, and all users will get a warning message on Automations and Agents landing page. The site organization owners will also get an email notification. Consider a scenario where an organization possesses a monthly execution limit of 10,000. Upon reaching or surpassing this limit, the user will receive a warning message informing them of the current status. * **Hard Limit:** The hard limit defines the maximum limit for the number of executions that can run each month. This cap helps protect both Contentstack and our customers against misuse or misconfigurations. If exceeded, users will receive a notification on their Automations and Agents landing page, and site owners will also get an email notification. While you can continue to edit and configure your automations after the hard limit has been met, the executions will no longer run. Reaching the hard limit temporarily suspends automation executions. To resume using the Agent OS, you will need to upgrade your usage plan, or wait until the beginning of the next month when your plan limits are refreshed. **Additional Resource:** For more information, refer to the [Supported Capabilities of Agent OS](/docs/agent-os/supported-capabilities-of-agent-os) document. --- ## URL: https://www.contentstack.com/docs/agent-os/airtable --- title: Automations guides and connectors - Airtable description: Airtable connector actions for creating, updating, deleting, and fetching records in Airtable. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/airtable product: Automations guides and connectors doc_type: connector-guide audience: - developers version: v1 last_updated: 2026-03-26 filename: airtable.md --- # Automations guides and connectors - Airtable This page describes how to set up and use the Airtable connector in Automations, including how to configure actions to create, update, delete, and fetch Airtable records. It is intended for developers or automation builders who need to connect an automation workflow to Airtable and should be used when configuring Airtable action steps. ## Airtable The Airtable connector lets you create/update/delete and fetch the records in Airtable. ## Set up Airtable Connector The Airtable connector lets you perform the following actions: - [Create Record](#create-record) - [Delete a Record](#delete-a-record) - [Get Single Record](#get-single-record) - [Get Records](#get-records) - [Update a Record](#update-a-record) Let’s look at each of them in detail. ### Create Record This action lets you create a record(s) in a table. - Click **Configure Action Step** from the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the **Airtable** connector. - Under **Choose an Action** tab, select the **Create Record** action. - Click the **+ Add New Account** button to add your Airtable account. - In the pop-up window, mark the checkboxes for all the OAuth permissions and then click the **Authorize** button. - Click **+ Add a base **to add a new database or select an existing one. Click **Grant access** to allow access to Airtable. - Enter an **Account Name** and then click **Save**. - Select a **Database Name/ID** present in the Airtable account. - Select a **Table Name/ID** to create a new record(s) in the selected table. - In the **Record Data** field, provide the value for the record(s) you want to create.**Note:** Below is a sample format to create the records. Here Name, Notes, and Status are column names of the table. You must provide values in key-value pairs. ``` { "records" : [ "fields": { "Name" : "Demo", "Notes" : "Demo notes", "Status" : "Done" } ] } ``` - Click the **Proceed** button. - Click the **Test Action **button to test the configured action. - Once set, click the **Save and Exit** button. You have successfully created a record(s) in the selected table in Airtable. ### Delete a Record This action lets you delete a single record in a table. - Under **Choose an Action** tab, select the **Delete a Record** action. - Click the **+ Add New Account** button to add your Airtable account. - In the pop-up window, mark the checkboxes for all the OAuth permissions and then click the **Authorize** button. - Click **+ Add a base** to add a new database or select an existing one. Click **Grant access** to allow access to Airtable. - Enter an **Account Name **and then click **Save**. - Select a** Database Name/ID **present in the Airtable account. - Select a **Table Name/ID** to delete a record. - In the **Record ID** field, select the ID of the record you want to delete from the **Lookup** dropdown. - Click the **Proceed** button. - Click the **Test Action** button to test the configured action. - Once set, click the** Save and Exit** button. You have successfully deleted a record in the selected table in Airtable. ### Get Single Record This action lets you fetch the details of a single record from a table. - Under **Choose an Action** tab, select the** Get Single Record **action. - Click the **+ Add New Account **button to add your Airtable account. - In the pop-up window, mark the checkboxes for all the OAuth permissions and then click the **Authorize** button. - Click **+ Add a base **to add a new database or select an existing one. Click** Grant access** to allow access to Airtable. - Enter an **Account Name** and then click **Save**. - Select a **Database Name/ID** present in the Airtable account. - Select a **Table Name/ID** to fetch details of a record from the selected table. - In the **Record ID** field, select the ID of the record you want to fetch from the **Lookup** dropdown. - Click the **Proceed** button. - Click the **Test Action **button to test the configured action. - Once set, click the **Save and Exit** button. You have successfully fetched the details of a single record from the selected table. ### Get Records This action lets you fetch the details of multiple records in a table. - Under **Choose an Action** tab, select the **Get Records **action. - Click the **+ Add New Account **button to add your Airtable account. - In the pop-up window, mark the checkboxes for all the OAuth permissions and then click the **Authorize** button. - Click **+ Add a base** to add a new database or select an existing one. Click **Grant access** to allow access to Airtable. - Enter an **Account Name** and then click **Save**. - Select a **Database Name/ID** present in the Airtable account. - Select a **Table Name/ID **to fetch details of a record(s) present in the table. - In the **Number of records** field, enter the number of records you want to fetch from the selected table.**Note: **You can fetch up to 100 records. - **[Optional]** Enable the **Show optional fields** toggle button to display the **Sort ****Column Name**, **Order of Sorting**, and **Airtable Filter** field. Column Name sorts the records based on the column names. The Order of Sorting field sorts the records in Ascending or Descending order. You can add a filter formula to fetch the record.**Additional Resource:** To learn more, refer to the [Formula field reference](https://support.airtable.com/docs/formula-field-reference#numeric-operators-and-functions) document. - Click the **Proceed** button. - Click the **Test Action** button to test the configured action. - Once set, click the **Save and Exit** button. You have successfully fetched the details of multiple records from the selected table. ### Update a Record This action lets you update a record in a table. - Under **Choose an Action **tab, select the **Update a Record** action. - Click the **+ Add New Account** button to add your Airtable account. - In the pop-up window, mark the checkboxes for all the OAuth permissions and then click the **Authorize** button. - Click** + Add a base** to add a new database or select an existing one. Click** Grant access** to allow access to Airtable. - Enter an **Account Name** and then click **Save**. - Select a **Database Name/ID** present in the Airtable account. - Select a **Table Name/ID** to update a new record in the table. - In the **Record ID** field, select the ID of the record you want to update from the **Lookup** dropdown. - In the **Record Data** field, provide the value for the record you want to update.**Note:** You need to add the values for each column to update the record. If any column value is not updated, then it will remain empty - Click the **Proceed** button. - Click the** Test Action **button to test the configured action. - Once set, click the **Save and Exit **button. You have successfully updated a record in the selected table. ## Common questions ### Do I need to add a new Airtable account for each action? You can click **+ Add New Account** when configuring an action step to add your Airtable account, and then select a **Database Name/ID** and **Table Name/ID** present in the Airtable account. ### How many records can I fetch with Get Records? In the **Number of records** field, you can fetch up to 100 records. ### Where do I find the Record ID for Delete a Record, Get Single Record, or Update a Record? In the **Record ID** field, select the ID of the record you want from the **Lookup** dropdown. ### Can I sort or filter results when using Get Records? Enable the **Show optional fields** toggle button to display the **Sort ****Column Name**, **Order of Sorting**, and **Airtable Filter** field, and you can add a filter formula to fetch the record. --- ## URL: https://www.contentstack.com/docs/agent-os/algolia --- title: "Algolia" description: "Use this connector to perform CRUD operation in the Algolia account." url: "https://www.contentstack.com/docs/agent-os/algolia" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: algolia.md --- # Algolia The Algolia Connector helps you to create search index entries in your Algolia account. ## Prerequisites To use the Algolia connector, you first need to add your [Algolia account](https://dashboard.algolia.com/users/sign_in). To do so, follow the steps given below: ### Connect your Algolia Account 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the Configure **Action** Step, click the **Algolia** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt624b713b8578611d/66a8d528c103442ffa06771d/Select_Connector.png) 4. Under **Choose an Action** tab, select any one action from the list. Here, we are selecting the **Index Entries** action. ![Select\_Index\_Entries\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaeab97d4fac522df/66a8d528d141064461555da8/Select_Index_Entries_Action.png) 5. On the **Configure Action** page, click the **\+ Add New Account** to add your Contentstack account. ![Add\_Account\_Index\_Entries.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt75b9d885f9de8602/66a8d5287cd4c96c183957e2/Add_Account_Index_Entries.png) 6. In the **Authorize** modal, enter a **Title**, an **Application ID**, and an **API Key**. To find your **Application ID** and **API Key**, log in to the Algolia dashboard and perform the following steps: ![Algolia\_API\_Key](https://lh4.googleusercontent.com/8UaMJnA1r9_XlNWgfsInnTvebusaTUbg9xzIrmEGSSI46nrHDMNdRBI7KvflhI4LpkXZZb48Is6T0Ci5fS-C0R-oz2nrUnM_H3VLVGSLWn5qMEUKp9-WxFv66TalbqDGm8pD2aEg6jGrpYhL5vAzosc) **Additional Resource:** For more details, refer to the [Importing with API’s](https://www.algolia.com/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/importing-with-the-api/#quickstart) document. Then, click **Authorize**. ![Algolia\_Authorize.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt77525b3e264ac2c6/63dc0916842f040f19e3e743/Algolia-Authorize.png) This sets up your Algolia account for the Algolia connector. ## Set up the Algolia Connector Perform the following steps to set up the Algolia action connector: 1. From the left navigation panel, click **Configure Action** Step. 2. Then, click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Algolia** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt624b713b8578611d/66a8d528c103442ffa06771d/Select_Connector.png) **Note:** You can sort and search the connector(s) based on the filter. 4. Under **Choose an Action**, you will see three actions: **Delete Entries**, **Index Entries**, and **Update Entries**. ![Select\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6c354117a2253b30/66a8d5282b7be51b51a7677d/Select_Action.png) Once done, you can go ahead and set up your Algolia connector. ### Action 1: Select the Index Entries action: 1. Under **Choose an Action** tab, select the **Index Entries** action. 2. On the **Index Entries Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Algolia Account](#connect-your-algolia-account) step. 2. Select the **Index Name** where you want to send the data in the form of a list of objects. 3. In the **Entries** field, enter the data to be included in the index. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt86d1b9ebb0cdd391/66a8d528a3b12e15055f5e5e/Select_Fields.png) **Note:** Provide your index data as per your object schema and in JSON format only. You can add a JSON object or an array of JSON objects. 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test Action**. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb92ada81e778cd84/66a8d528a3b12ed71a5f5e5a/Test_Action.png) 5. Once set, click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt983734c2797a9492/66a8d5287f0b670819fd1c23/Save_Exit.png) 6. Go to the Algolia Index section and check the latest index entry with the data we passed as objects within the connector configurations. ![Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte7b80bbc7ff72565/66a8d74bd14106e075555dbb/Output.png) ### Action 2: Select the Delete Entries action: 1. Under **Choose an Action** tab, select the **Delete Entries** action. 2. On the **Delete Entries Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Algolia Account](#connect-your-algolia-account) step. 2. Select the **Index Name**. 3. Enter the object ID to be deleted in the **Entries** field. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1ab42a8f07baa2e8/66a8d509c103445f71067718/Select_Fields.png) **Note:** You can add multiple object IDs separated by a comma to delete from the Algolia index. 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test Action**. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte9fa7d5361656af3/66a8d508adec83715e2d0d3e/Test_Action.png) 5. Once set, click **Save and Exit**. ![Save\_Exit\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt131543f377ea05c4/66a8d509b3480c98ab14b344/Save_Exit_Button.png) ### Action 2: Select the Update Entries action: 1. Under **Choose an Action** tab, select the **Update Entries** action. 2. On the **Update Entries Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Algolia Account](#connect-your-algolia-account) step. 2. Select the **Index Name** where you want to send the data in the form of a list of objects. 3. In the **Entries** field, enter the data to be updated. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte9e587683a7e3cd8/66a8d536a4a657c28a1de4cd/Select_Fields.png) **Note:** Provide your index data as per your object schema and in JSON format only. You can add a JSON object or an array of JSON objects. 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test Action**. ![Test-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0e5e2bb34ee7efb6/66a8d535c3ff6a6ce609c90c/Test-Action.png) 5. Once set, click **Save and Exit**. ![Save\_Exit\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt91ca68ef81dd5e07/66a8d535cfbd23f7047d791c/Save_Exit_Button.png) 6. To verify the output, go to the Algolia Index section and check the updated entry. ![Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6566200bade2f358/66a8d920eb20b447752cfafb/Output.png) This sets the **Algolia** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/anthropic --- title: Automations guides and connectors - Anthropic description: Set up and use the Anthropic connector in Automate to generate chat responses using Claude models for text and images. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/anthropic product: Contentstack Automate doc_type: connector-guide audience: - developers - automation-builders version: v1 last_updated: 2026-03-25 filename: anthropic.md --- # Automations guides and connectors - Anthropic This page explains how to connect Anthropic Console to Contentstack Automate and configure the Anthropic connector’s **Chat** action to generate chat responses using Claude models for text and images. It is intended for users setting up third-party connectors inside Automate and should be used when you need to authorize Anthropic and configure prompts, models, and optional generation settings. ## Anthropic [Anthropic](https://www.anthropic.com/) is an AI research company focused on **AI safety**, **reliability**, and **alignment**. Claude is a family of AI Assistants developed by Anthropic, designed for advanced reasoning, safe AI interactions, and intelligent automation, offering capabilities beyond standard chatbot models like ChatGPT. The Anthropic connector allows you to generate chat responses using Claude models for text and images. The connector currently contains one action: **Chat**. ## Prerequisites To use the Anthropic connector, you first need to connect your Anthropic Console with Automate using the following steps: - [Log in to your Contentstack account](https://www.contentstack.com/login) and click the **Automate **icon from the left navigation panel. - Select your project and then the automation. - Click **Configure Action Step** from the left navigation panel and then **Action Step** to configure third-party services. - Within the **Choose Connector**, click the **Anthropic **connector. - Under **Choose an Action**, select the **Chat **action. - In the **Configure Action** section, click **+ Add New Account **to add your Anthropic Console account. - In the **Authorize **modal, provide details such as **Title**, and **API Key **retrieved from the Anthropic Console.To generate an API key in Anthropic Console, follow the steps below: Go to the [Anthropic Console](https://console.anthropic.com/login) and log in to your account. Once done, the Dashboard appears. - In the left navigation, click the **API keys **and then click the **+ Create Key** button. - In the pop-up that appears, select your preferred **Workspace**, enter the name of your API key and then click **Add**. - From the **Save your API key** modal, click **Copy Key **to copy the API key to your clipboard. Enter this API key in the Authorize modal. - Click the **Authorize **button. This sets up your Anthropic Console account for the Anthropic connector. ## Set up the Anthropic Connector Perform the following steps to set up the Anthropic connector: - From the left navigation panel, click **Configure Action Step**. - Then, click **Action Step **to configure third-party services. - Within the **Configure Action Step**, click the **Anthropic **connector. - Under **Choose an Action**, you will see the **Chat **action. ## Chat The Chat action returns the chat response(s) from the Anthropic Claude models. To use the Chat action, follow the steps below: - Under **Choose an Action **tab, select the **Chat** action. - On the **Chat Configure Action **page, enter the details given below:Click** + Add New Account** button to connect your Anthropic account as shown in the [Prerequisites](#prerequisites) step. - Select the **Model **from the dropdown list to generate content for the chat responses. For this guide, we are selecting the **Claude 3.7 Sonnet** model.**Note: **Different models are available to different users, based on the account the user holds such as paid accounts. You must check your account access before selecting the model. - Enter the **System Instruction Text** to provide specific guidance or directives to the model to help it understand the context and generate an appropriate response based on the provided prompt text. - Provide the **Prompt Text **to generate response(s). Click** + Add Prompt Text **to enter multiple prompts.**Note:** For the Role as **assistant**, you will see the Prompt Value to enter the text to generate response. If you select the **Role **as **user**, you can select the type of prompt content, i.e. **Text **or **Image**. If you select the **user **Role, follow the below steps: Under the **Prompt Input **section, click **+ Add Prompt Input** button. - In the **Select Prompt Type** drop-down, select the type of content for which you want to generate the response, i.e. **Text **or **Image**. - Enter the **Prompt Value**. You can enter a text prompt or a valid image URL to generate a response. If you select the **assistant **Role, follow the below steps: - Enter the **Prompt Value**. You can enter a text prompt or a valid image URL to generate a response. - Click the **Show Optional Fields** toggle button to use these optional fields:Enter the **Number of ****Tokens** to generate the content. - Mark the **Sanitize text **checkbox to remove special characters or spaces from the chat response. Enabling this checkbox, eliminates any special characters or spaces in the chat response, resulting in a clean and compatible text. - Mark the **Reasoning **checkbox to enable reasoning to allow Claude to dedicate computational resources to structured problem-solving, enhancing the depth and accuracy of its responses. The reasoning process is provided alongside the final answer, offering insight into how conclusions are reached.If enabled, enter the number of **Reasoning Tokens **to be used. Ensure that the **Number of Tokens **allocated is **greater than **the **Reasoning Tokens **value. **Note:** If you select the **Reasoning **checkbox, **Randomness of Responses**, **Top-K**, and **Top-P** fields will not be displayed. - Enter a value for the **Randomness of Responses **of the generated content. 0 being the most precise and 1 being the most random content predictions. This must be within the range of **0 to 1**. - Enter the **Top-P** value to define how the model selects tokens for output. For instance, if tokens A, B, and C have probabilities of 0.3, 0.2, and 0.1; then entering a Top-P value as 0.5, the model chooses either A or B as the next token using temperature and excludes C. This must be within the range of **0 to 1**. - Enter the **Top-K **value to define how the model selects tokens for output. Entering a Top-K value of 1 implies that the next chosen token is the most likely among all tokens in the model's vocabulary. Top-K value of 3 means that the next token is selected from the three most probable tokens using temperature. This must be within the range of **1 to 40**. - Click **Proceed**. - Check if the details are correct. If yes, then click **Test Action**. - You will get the response(s). Once set, click **Save and Exit**. This completes the **Anthropic **connector’s setup. ## Common questions **Q: What actions are available in the Anthropic connector?** A: The connector currently contains one action: **Chat**. **Q: Where do I get the API key required in the Authorize modal?** A: Generate it in the Anthropic Console under **API keys** by clicking **+ Create Key**, then use **Copy Key** and enter it in the Authorize modal. **Q: Can I use both text and images in prompts?** A: Yes. If you select the **Role **as **user**, you can select the type of prompt content, i.e. **Text **or **Image**. **Q: Why don’t I see Randomness of Responses, Top-K, or Top-P fields?** A: **Note:** If you select the **Reasoning **checkbox, **Randomness of Responses**, **Top-K**, and **Top-P** fields will not be displayed. --- ## URL: https://www.contentstack.com/docs/agent-os/aprimo --- title: "Aprimo" description: "Use this connector to update and retrieve asset details stored in Aprimo." url: "https://www.contentstack.com/docs/agent-os/aprimo" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: aprimo.md --- # Aprimo The Aprimo connector lets you update and fetch asset details stored in Aprimo. ## Set up the Aprimo Connector The Aprimo connector lets you perform the following actions: 1. [Edit a Record](#edit-a-record) 2. [Get Single Record](#get-single-record) Let’s look at each of them in detail. ### Edit a Record This action lets you update the attributes such as Asset ID, Title, Description, Asset Status etc. of an asset/record stored in Aprimo. 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Aprimo** connector. ![Select\_the\_Connector\_Aprimo.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt712955cec57c3b95/6527c9503347f310d80279d0/Select_the_Connector_Aprimo.png) 4. Under **Choose an Action** tab, select the **Edit a Record** action. ![Edit-Record](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd6662da048fef6cc/6442cec50de4a8509dbb883d/Edit-Record.png) 5. Click the **\+ Add New Account** button to add your Aprimo account. ![Add\_New\_Account\_for\_Edit\_a\_Record](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaa7d0a2060741937/6470320c86bda56c0e52fb6c/Add_New_Account_for_Edit_a_Record.png) 6. In the Authorize pop-up window, provide the **Title**, **Aprimo URL**, **Client ID**, and **Client Secret**. ![Authorize\_Button\_New](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcad39ebfb61aef4f/649c21e584a4c73193d8d95f/Authorize_Button_New.png) To generate **Client ID** and **Client Secret**, log in to the Aprimo dashboard and perform the following steps: 1. Click the **Administration** tab in the left navigation panel 2. Click **Integration** in the left navigation panel and then click **Registrations**. 3. Click the New icon present on the right side of the page. 4. Provide the required details and then click the **Save** icon. 5. You will be able to see the **Client ID**. Below is the list of Redirect URLs for different Contentstack Regions. * **US (North America, or NA)** Redirect URL: ``` https://automations-api.contentstack.com/userauths/auth/callback ``` * **Azure NA** Redirect URL: ``` https://azure-na-app.contentstack.com/automationsapi/userauths/auth/callback ``` * **Europe (EU)** Redirect URL: ``` https://eu-prod-automations-api.contentstack.com/userauths/auth/callback ``` **Note:** It is mandatory to select the **OAuth Flow Type** as **Client Credential**. The credentials are activated after 15 minutes so you can use them to authorize your Aprimo account. ![Aprimo\_Config\_Screen](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt43a7003baf96d8f2/649c21e448bdd24c5a10441c/Aprimo_Config_Screen.png) 7. Enter an **Account Name** and then click **Save**. ![Save-Account](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdb76df9291ef529e/6442cec51276ca183e1c0000/Save-Account.png) 8. Select an **Asset** which you want to update from the **Lookup** dropdown. **Note:** Contentstack Marketplace offers an [Aprimo](/docs/marketplace/aprimo/) app for its users, so they can fetch the assets/images into their Contentstack CMS entry. With the Aprimo connector, you can fetch the asset id from the Aprimo entry and you can edit the asset attributes. 9. In the **Asset Attribute** field, provide the name of the attribute in the **Key** field and the value that you want to update in the **Value** field. ![Select\_Different\_Fields\_Edit\_Record](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc077304f1f0dbde2/6470320bec223357c951b0b6/Select_Different_Fields_Edit_Record.png) 10. Click the **Proceed** button. 11. Click the **Test Action** button to test the configured action. ![Test-Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt874d0444752122db/6442ced956d6297d852bcecb/Test-Action.png) 12. Once set, click the **Save and Exit** button. ![Save-Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9afd496669ae9408/6442ced810882b4f2385c26c/Save-Exit.png) 13. Navigate to the Aprimo dashboard to view the changes on the selected asset/record. ![Edit-Output](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5fc1084b49433a58/6442cec7ef41f64ab295153a/Edit-Output.png) ### Get Single Record This action lets you fetch the asset details from your Aprimo dashboard. 1. Within the **Configure Action Step**, click the **Aprimo** connector. 2. Select the **Get Single Record** action. ![Get-Single-Record](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt16bf930690787616/6442cec5c5646c7d86ea69a2/Get-Single-Record.png) 3. Click the **\+ Add New Account** button to add your Aprimo account. ![Add\_New\_Account\_Get\_Record](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2ed8c68eda5cfdf8/6470320bdfafe53c8c04974f/Add_New_Account_Get_Record.png) 4. In the Authorize pop-up window, provide the **Title**, **Aprimo URL**, **Client ID**, and **Client Secret**. ![Authorize\_Button\_New](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcad39ebfb61aef4f/649c21e584a4c73193d8d95f/Authorize_Button_New.png) To generate **Client ID** and **Client Secret**, log in to the Aprimo dashboard and perform the following steps: 1. Click the **Administration** tab in the left navigation panel 2. Click **Integration** in the left navigation panel and then click **Registrations**. 3. Click the New icon present on the right side of the page. 4. Provide the required details and then click the **Save** icon. 5. You will be able to see the **Client ID**. Below is the list of Redirect URLs for different Contentstack Regions. * **US (North America, or NA)** Redirect URL: ``` https://automations-api.contentstack.com/userauths/auth/callback ``` * **Azure NA** Redirect URL: ``` https://azure-na-app.contentstack.com/automationsapi/userauths/auth/callback ``` * **Europe (EU)** Redirect URL: ``` https://eu-prod-automations-api.contentstack.com/userauths/auth/callback ``` **Note:** It is mandatory to select the **OAuth Flow Type** as **Client Credential**. The credentials are activated after 15 minutes so you can use them to authorize your Aprimo account. ![Aprimo\_Config\_Screen](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt43a7003baf96d8f2/649c21e448bdd24c5a10441c/Aprimo_Config_Screen.png) 5. Enter an **Account Name** and then click **Save**. ![Save-Account](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdb76df9291ef529e/6442cec51276ca183e1c0000/Save-Account.png) 6. Select the **Record ID** to fetch the asset details from the **Lookup** dropdown. ![Select\_Record\_ID\_Fields\_Get\_Record](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc1b29e05778c7e11/6470320c86abb2b600e82b0a/Select_Record_ID_Fields_Get_Record.png) 7. Click the **Proceed** button. 8. Click the **Test Action** button to test the configured action. ![Test-Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt874d0444752122db/6442ced956d6297d852bcecb/Test-Action.png) 9. Once set, click the **Save and Exit** button. ![Save-Exit-Get-single-Record](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt34d48e60d06cf84d/6442ced9de40d20defb3c3cf/Save-Exit-Get-single-Record.png) **Note:** Aprimo does not support the Firefox browser, hence you cannot run this connector on Firefox. This sets up the **Aprimo** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/asana --- title: Automations guides and connectors - Asana description: Documentation for the Asana action connector, including setup and available actions (Create a Task, Get Tasks from Project, Get a User, Update a Task). url: https://www.contentstack.com/docs/developers/automation-hub-connectors/asana product: Automation Hub Connectors doc_type: connector-guide audience: - developers - automation-builders version: v1 last_updated: 2026-03-26 filename: asana.md --- # Automations guides and connectors - Asana This page explains how to set up and use the **Asana** action connector in an automation workflow. It is intended for users configuring third-party action steps and should be used when you need to create, fetch, or update Asana tasks or retrieve Asana user information. ## Asana The Asana action connector lets you create a task, fetch tasks details from a project, get user information, and update a task in the Asana dashboard. ## Set up Asana - Click **Configure Action Step** from the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the **Asana** connector. - Under **Choose an Action** tab, you will see four actions: [**Create a Task**](#action-1-select-the-create-a-task-action) (creating a task in Asana) - [**Get Tasks from Project**](#action-2-select-the-get-tasks-from-project-action) (fetching tasks from Asana project) - [**Get a User**](#action-3-select-the-get-a-user-action) (getting user information from Asana) - [**Update a Task**](#action-4-select-the-update-a-task-action) (updating a task in Asana) Let’s look at each of them in detail. ## Action 1: Select the Create a Task action - Click the **+ Add New Account** button to add your Asana account (see screenshot in next step). - In the **Manage Permissions** modal, click the **Checkbox** and click **Authorize**. - In the **Set Account Name** modal, enter the **Title** and click **Save** to add your Asana account. - On the **Create a Task - Configure Action** page, enter the details given below: Select the **Project Name** from the lookup values to create a task. - Enter an appropriate **Title** to the task. - Click the **Show optional fields** toggle button to use the optional fields. - Enter the **Description** for the task. - Select the **Assignee Name** from the lookup values to whom you want to assign this task. - Select the **Parent Task Name** from the lookup list if creating a sub-task. - Choose the section from the **Select Section** dropdown where you want to place the task. **Note**: When you want to change the section, the task must be assigned to a user. - **Custom Fields** are the user-specified fields that store the task information in the Asana project—for example, Priority, Status, etc. You can add a Custom Field as a key-value pair from the lookup data. - Choose the value from the **Select Approval Status** dropdown to set the approval status. The status can be **Pending**, **Approved**, **Rejected**, and **Changes Requested**. - Check the **Mark a task as complete** checkbox to set the task status as complete. - Click **Proceed**. - Click **Test Action** to test the configured action. - You will get the response. Once set, click **Save and Exit**. - Navigate to your Asana Project. You should see that the task has been created successfully. ## Action 2: Select the Get Tasks from Project action - Click the **+ Add New Account** button to add your Asana account (see screenshot in next step). - In the **Manage Permissions** modal, click the **Checkbox** and click **Authorize**. - In the **Set Account Name** modal, enter the **Title** and click **Save** to add your Asana account. - On the **Get Tasks from Project - Configure Action** page, enter the details given below: - Select **Project Name** from the lookup List to fetch the tasks. - Click the **Show optional fields** toggle button to use the optional fields. - Provide the value to set the **Task Limit** to retrieve the tasks. For example, if you set the limit to 10, 10 tasks will be fetched. **Note**: The maximum task limit is 100. - Provide the **Offset Token** value returned from the Asana platform. It acts as a benchmark to fetch the next set of tasks as per the limit. **Additional Resource**: For more information, please refer to the [Get tasks from a project API Reference](https://developers.asana.com/reference/gettasksforproject) documentation. - Click **Proceed**. - Click **Test Action** to test the configured action. - You will get the response. Once set, click **Save and Exit**. ## Action 3: Select the Get a User action - Click the **+ Add New Account** button to add your Asana account (see screenshot in next step). - In the **Manage Permissions** modal, click the **Checkbox** and click **Authorize**. - In the **Set Account Name** modal, enter the **Title** and click **Save** to add your Asana account. - On the **Get a User - Configure Action** page, select the **User Name** or **Email ID** from the lookup values to retrieve the user details. - Click **Proceed**. - Click **Test Action** to test the configured action. - You will get the response. Once set, click **Save and Exit**. ## Action 4: Select the Update a Task action - Click the **+ Add New Account** button to add your Asana account (see screenshot in next step). - In the **Manage Permissions** modal, click the **Checkbox** and click **Authorize**. - In the **Set Account Name** modal, enter the **Title** and click **Save** to add your Asana account. - On the **Update a Task - Configure Action** page, enter the details given below: Select the **Project Name** from the lookup values to update a task. - Select the **Task Name** which you want to update. - Click the **Show optional fields** toggle button to use the optional fields. - Enter the suitable **Title** to update the title of the task. - Enter the **Description** to update the task description. - Select the **Assignee Name** from the lookup values to whom you want to assign this task. - Choose the section from the **Select Section** dropdown where you want to place the task. **Note**: When you want to change the section, the task must be assigned to a user. - **Custom Fields** are the user-specified fields that store the task information in the Asana project—for example, Priority, Status, etc. You can add a Custom Field as a key-value pair from the lookup data. - Choose the value from the **Select Approval Status** dropdown to set the approval status. The status can be **Pending**, **Approved**, **Rejected**, and **Changes Requested**. - Check the **Mark a task as complete** checkbox to set the task status as complete. - Click **Proceed**. - Click **Test Action** to test the configured action. - You will get the response. Once set, click **Save and Exit**. - Navigate to your Asana Project. You should see that the task has been updated successfully. This sets the **Asana** action connector. ## Common questions ### Do I need to add a new Asana account for each action? Each action includes steps to click the **+ Add New Account** button and authorize Asana, so you should add an account when prompted during action configuration. ### What is the maximum **Task Limit** for fetching tasks from a project? **Note**: The maximum task limit is 100. ### Why can’t I change the section for a task? **Note**: When you want to change the section, the task must be assigned to a user. ### Where can I find more information about fetching tasks from a project? **Additional Resource**: For more information, please refer to the [Get tasks from a project API Reference](https://developers.asana.com/reference/gettasksforproject) documentation. --- ## URL: https://www.contentstack.com/docs/agent-os/automating-asset-management-with-contentstack-automate --- title: "Automating Asset Management with Contentstack Automate" description: "Learn how to automate digital asset management in Contentstack with a step-by-step guide. Streamline workflows using triggers, AI-driven actions, and automated updates." url: "https://www.contentstack.com/docs/agent-os/automating-asset-management-with-contentstack-automate" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: automating-asset-management-with-contentstack-automate.md --- # Automating Asset Management with Contentstack Automate This use case covers a scenario where you can dynamically update the asset description based on a Voice Profile whenever a new asset is published in Contentstack. In this use case, we configure the **Contentstack Asset** Trigger. With the **Chat with Vision** action, fetch the asset UID and provide a suitable prompt to generate the response. In the next step, configure the **Get a Single Voice Profile** action using the Brand Kit connector to fetch the **Voice Profile**. To use this action, you must create a Voice Profile that certainly defines the product’s Voice Profile. Next, in the Chat action, fetch the asset title and description based on the Voice Profile and Chat with Vision response. Once done, configure the Update an Asset action to update the asset description. Let's break this scenario to see what the trigger event and the consequent action must be required to execute the Automation: * **Set up the “Contentstack Asset'' Trigger Event:** This trigger event is activated whenever a user publishes an asset in Contentstack. * **Set up the ChatGPT “Chat with Vision” Action:** Once the above event triggers the automation, Chat with Vision fetches the asset UID and generates a response based on the prompt. * **Set up the Brand Kit “Get a Voice Profile” Action:** Once the response generates, Get a Single Voice Profile fetches the Voice Profile created in the Brand Kit. * **Set up the ChatGPT “Chat” Action:** Provide a prompt to generate an output based on the Chat with Vision and Get a Voice Profile action output. * **Set up the Contentstack “Update an Asset” Action:** Fetch the output of the Chat action in the Asset Description. The steps to set up the Automation are as follows: 1. [Configure Contentstack Trigger](#configure-contentstack-trigger) 2. [Configure ChatGPT Connector](#configure-chatgpt-connector) 3. [Configure Brand Kit Connector](#configure-brand-kit-connector) 4. [Configure ChatGPT Connector](#configure-chatgpt-connector) 5. [Configure Contentstack Connector](#configure-contentstack-connector) Let's look at the setup in detail. 1. ## Configure Contentstack Trigger 1. Log in to your [Contentstack account](https://www.contentstack.com/login/). 2. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list. ![App\_Switcher\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9e8ac72768458f95/699d373d68c24300082b30de/App_Switcher_Icon.png) 3. Go to your project or click **\+ New Project** to add a new project. Enter a **Project Name** and an optional **Description**. 4. In the top navigation, click **Automations**. Then, click **\+ New Automation**. From the dropdown, click **Create New** to add the steps required to configure the automation. 5. Enter the **Automation Name** and **Description**. 6. Click **Create**. 7. Select **Configure Trigger** from the left navigation panel. 8. Within the **Configure Trigger** step, click the **Contentstack** trigger connector. ![Select\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7f4670dfd3b3b666/66c740175c1ba4563326a882/Select_Trigger.png) 9. Under the **Choose Trigger** tab, select **Asset** Trigger. ![Select\_Asset\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7cf2f6cca5041fb9/66c740174c39123b8eac15bd/Select_Asset_Trigger.png) 10. On the **Asset Trigger Configure Trigger** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account. **Additional Resource:** Refer to the [Contentstack Trigger](/docs/agent-os/contentstack-trigger) documentation to learn about adding an account. 2. Select the trigger event from the drop-down, i.e., **Asset Published** and select a **Stack** and **Branch** from the **Lookup** drop-down. For Asset Trigger, you will find the following events: * **Asset Created:** When you create a new asset in your stack. * **Asset Updated:** When you update an asset. * **Asset Deleted:** When you delete an asset. * **Asset Published:** When you publish your assets to a publishing environment. * **Asset Publish Failed:** When asset publishing fails due to an error. * **Asset Unpublished:** When you unpublish or remove your assets from a publishing environment. * **Asset Unpublish Failed:** When the asset unpublishing activity fails. * **All:** When you perform any of the above activities on an asset. **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Environment** field. ![Select\_Trigger\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt916ccec1c4379950/66c740177118678416aa329c/Select_Trigger_Field.png) 11. Click **Proceed**. 12. Click **Test Trigger** to execute and test the trigger that you configured. 13. If successful, you will see an output as follows. If it looks appropriate, click **Save and Exit**. ![Save\_Exit\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbb55ea8404b473c8/66c74017b506aabeebc70693/Save_Exit_Trigger.png) 2. ## Configure ChatGPT Connector 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **ChatGPT** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltac0c17ec610c36d6/66c73ffdab1b6958413cc546/Select_Connector.png) 4. Under **Choose an Action** tab, select the **Chat with Vision** action. ![Select\_Chat\_wit\_Vision.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9b4050cd5a587ce8/66c73ffd83db6711cdaef213/Select_Chat_wit_Vision.png) 5. On the **Chat with Vision Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your ChatGPT account. **Additional Resource:** Refer to the [ChatGPT](/docs/agent-os/chatgpt#prerequisites) Connector documentation to learn about adding an account. 2. Select the **API Model** from the drop-down list for response predictions. You can select the **gpt-4-vision-preview** API model. This model will be available as gpt-4-vision after production support. 3. Provide the **Prompt Text** to generate response(s). Click **\+ Add Prompt Text** to enter multiple prompts. **Note:** For the Role as **system** or **assistant**, you will see the Prompt Text box to enter the text to generate response. If you select the Role as **user**, you can select the type of prompt content, i.e. Text or Image. If you select the Role as user, then follow the below steps: 1. Under the Prompt Input section, click **\+ Add Prompt Input** button. 2. In the **Select Prompt Type** drop-down, select the type of content, i.e., **Text** or **Image** to generate a response. For our use case we will select **Text**. 3. Enter the **Prompt Value**. Fetch the asset UID from the trigger step and provide a valid prompt related to the asset. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt16676d6c93ba5638/66c73ffde712ef1fc2313014/Select_Fields.png) 4. Click the **Show Optional Fields** toggle button to use these optional fields. 1. Enter the **Number of Tokens** to generate the content. This must be within the range of 1 to 2048. 2. Enter a value for the **Randomness of Responses** of the generated content. 0 being the most precise and 2 being the most random content predictions. This must be within the range of 0 to 2. 3. Enter the **Number of Prompt Responses** you want to be generated in the automation response. This must be within the range of 1 to 3. 4. Provide the value to set the **Frequency of Repeated Words**. The most positive value is likely to avoid the use of repeated words. This must be within the range of -2 to 2. 5. Provide the value to set the **Presence of Repeated Responses**. The most positive value is likely to generate a new response. This must be within the range of -2 to 2. 6. You can mark the **Sanitize text** checkbox to remove special characters or spaces from the chat response. Enabling this checkbox, eliminates any special characters or spaces in the chat response, resulting in a clean and compatible text. 6. Click **Proceed**. 7. Click **Test Trigger** to execute and test the trigger that you configured. 8. If successful, you will see an output as follows. If it looks appropriate, click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc19a90dc0798891b/66c73ffd0baf9bc664af7fa9/Save_Exit.png) 3. ## Configure Brand Kit Connector 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Brand Kit** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdf9482b538181e67/66c73fe47118675870aa3284/Select_Connector.png) 4. Under **Choose an Action** tab, select the **Get a Single Voice Profile** action. ![Select\_Voice\_Profile.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltef7bbd8c508bb095/66c73fe4ab1b693eed3cc53e/Select_Voice_Profile.png) 5. On the **Get a Single Voice Profile Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Brand Kit account. **Additional Resource:** Refer to the [Brand Kit Connector documentation](/docs/agent-os/brand-kit#prerequisites) to learn about adding an account. 2. Select a **Brand Kit** and **Voice Profile** from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3660bbc80b17a399/66c73fe4711867d537aa3288/Select_Fields.png) 6. Once done, click **Proceed**. 7. Click **Test Action** to test the configured action. 8. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt48e42246af1ce965/66c73fe4ca9595be7453c6a4/Save_Exit.png) 4. ## Configure ChatGPT Connector 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **ChatGPT** connector.![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7116a6cfa60b66f2/66c73ff15c1ba4d51126a874/Select_Connector.png) 4. Under **Choose an Action** tab, select the **Chat** action.![Select\_Chat\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt489b7aa0b7e36367/66c73ff11ee805fb1a168a1a/Select_Chat_Action.png) 5. On the **Chat Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your ChatGPT account. **Additional Resource:** Refer to the [ChatGPT](/docs/agent-os/chatgpt#prerequisites) Connector documentation to learn about adding an account. 2. Select the **API Model** from the drop-down list to generate content for the chat responses. **Note:** Different models are available to different users based on the account the user holds such as paid accounts. You must check the account access before selecting the model. 3. Provide the **Prompt Text** to generate response(s). Click **\+ Add Prompt** **Text** to enter multiple prompts. 4. Select the **Role** from the drop-down options to send to the API model request. By default, the role is set to the user. **Additional Resource:** There are three different types of roles provided by the OpenAI platform. The **system** role sets the response context, the **assistant** role provides the response content, and the **user** role asks the prompt. 5. Enter the value in the **Input Query** field. Add a prompt to generate a response based on the output data from Chat with Vision and Get a Single Voice Profile actions. This will ensure that the generated content aligns with the Brand Kit Voice Profile. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1d0e43ca0455d238/66c73ff1e712ef00db313010/Select_Fields.png) 6. Click the **Show Optional Fields** toggle button to use these optional fields: 1. Select the **Response Type** as either **Text** or **JSON**. This ensures that the output is produced in a valid JSON format. By default, the response in ChatGPT is fetched in text format. **Note:** Ensure you are using the gpt-3.5-turbo-1106 model and above to access and correctly use the Response Type field in the connector. 2. Enter the **Number of Tokens** to generate the content. This must be within the range of 1 to 2048. 3. Enter a value for the **Randomness of Responses** of the generated content. 0 being the most precise and 2 being the most random content predictions. This must be within the range of 0 to 2. 4. Enter the **Number of Chat Responses** you want to be generated in the automation response. This must be within the range of 1 to 3. 5. Provide the value to set the **Frequency of Repeated Words**. The most positive value is likely to avoid the use of repeated words. This must be within the range of -2 to 2. 6. Provide the value to set the **Presence of Repeated Responses**. The most positive value is likely to generate a new response. This must be within the range of -2 to 2. 7. You can mark the **Sanitize text** checkbox to remove special characters or spaces from the chat response. Enabling this checkbox, eliminates any special characters or spaces in the chat response, resulting in a clean and compatible text. 6. Once done, click **Proceed**. 7. Click **Test Action** to test the configured action. 8. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0e7263f4942fd3c7/66c73ff11ee8055b5e168a16/Save_Exit.png) 5. ## Configure Contentstack Connector 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Contentstack** connector.![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7116a6cfa60b66f2/66c73ff15c1ba4d51126a874/Select_Connector.png) 4. Select the **Contentstack Management** connector to perform CMS tasks. ![Select\_Contentstack\_Management.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0987662330599290/66c7400c20995e7a22d2e14b/Select_Contentstack_Management.png) 5. Under **Choose an Action** tab, select the **Update an Asset** action. ![Select\_Contentstack\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3a7f2b95986dca32/66c7400c5c9bfec8d20f2bc3/Select_Contentstack_Connector.png) 6. On the **Update an Asset Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your ChatGPT account. **Additional Resource:** Refer to the [Contentstack](/docs/agent-os/about-contentstack-management-actions) Connector documentation to learn about adding an account. 2. Select a **Stack** and an **Asset** from the **Lookup** list. If you have assets stored in nested folders within your Contentstack CMS, you can select such assets as well for updating their details. 3. Enter a **Title** and a suitable **Description** for the asset to update. Here, fetch the asset title from the **Asset Trigger** step and description from the Chat action as shown below: ![Select\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt639536e1b9013ac0/66c7400c1ee805ccb1168a22/Select_Field.png) 4. Specify a **File Name** for the asset and the Input URL of the image you want to update. 5. Optionally, enable the **Show Optional Fields** toggle button to display the **Select Folder** field. In the **Select Folder** drop-down, choose a destination folder to update an asset in it. 7. Once done, click **Proceed**. 8. Click **Test Action** to test the configured action. 9. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit-Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt65ae579321891920/66c7400c3bab11a3b2a2e923/Save_Exit-Button.png) Activate the automation and publish an asset in the selected stack. You will see the updated description of the asset. --- ## URL: https://www.contentstack.com/docs/agent-os/automation-sharing --- title: "Automation Sharing" description: "Discover how Contentstack's Automation Sharing feature allows you to effortlessly share and replicate automation workflows across different organizations." url: "https://www.contentstack.com/docs/agent-os/automation-sharing" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: automation-sharing.md --- # Automation Sharing Automation Sharing enables you to seamlessly share automation workflows across different organizations. By generating a sharable recipe link, you can easily create a copy of your automation in another organization, without affecting the original version. This streamlines collaboration and allows you to replicate successful automations efficiently, saving time and effort. To share an automation, [log in](https://www.contentstack.com/login) to your Contentstack account and perform the steps given below: **Access the Automations Listing:** 1. Navigate to your project and in the top navigation panel, click **Automations**. 2. On the automations listing page, go to the automation you want to share, and then click the vertical ellipses under the **Actions** column. 3. Select the **Get Recipe Link** option. A pop-up modal named **Create a Recipe Link for the Automation** appears. ![Get\_Recipe\_Link\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt31e8a035c99eb6a2/699bcd8b3f35720008e049c5/Get_Recipe_Link_Icon.png) **Create a Recipe Link:** 1. In the **Create a Recipe Link for the Automation** modal, check the box to save and copy the automation recipe link. 2. Once done, click **Save and Copy Link**.![Enable\_Sharing.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt01f98b3d1ee2b809/67c6b89e4f90665ab58f965c/Enable_Sharing.png) **Import the Automation:** 1. Move to your target organization and paste the copied link into your browser's address bar. 2. On the **Import Automation** screen, select a project from the Project Name drop-down where you want to import the automation. 3. If needed, create a new project by clicking **\+ New Project**.![+New Project.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte634943b7dd9b72d/66cf2e32b838be9743e0194e/_New_Project.png) **Complete the Import:** 1. After selecting the project, click the **Confirm and Import** button.![Confirm\_Import\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltccb0e237a3881151/66cf2ece1d50fbd1467aa7ec/Confirm_Import_Button.png) 2. You will be redirected to the cloned automation. From here, you can activate and start using the automation. ### Handling Project Variables If your automation includes Project Variables, you can choose how to handle them during the sharing process. You have two options when creating the recipe link: 1. **With Values:** Share non-sensitive data along with the recipe. This is useful if the values are safe to be shared across organizations. 2. **Without Values:** Omit values to avoid sharing sensitive information. This is recommended for secure data handling.![Enable\_Sharing\_Project\_Variables.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt98d324159338c438/67c6b89e53fc5ebad5b1bfa2/Enable_Sharing_Project_Variables.png) #### With Values Option: **Import with Values:** 1. Paste the recipe link in the target organization’s browser. 2. On the **Import Automation** screen, select the project and click the **Next Step** button. **Copy Project Variables:** 1. On the **Project Variables** screen, a list of variables will appear with both Keys and Values. 2. Check the **Mark to Copy** box to include these values in the imported automation. **Note:** You can change the variable Value during the automation import process. The recipe and Project Variables tab update to reflect the project variable changes. ![Automation Sharing.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt40dbfefcda1e26c9/67b845b53cf087164385ee9a/Automation_Sharing.png) **Finalize the Import:** 1. Click **Confirm and Import** to complete the process. The cloned automation will include the selected project variables. #### Without Values Option: **Import without Values:** 1. Paste the recipe link in the target organization’s browser. 2. On the **Import Automation** screen, select the project and click the **Next Step** button. **Copy Keys Only:** 1. On the **Project Variables** screen, only the Keys will be listed. 2. Check the **Mark to Copy** box to include just the keys in the automation. ![Copy\_Key.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9c3fb569f17e34cd/67b845b6725905278db79033/Copy_Key.png) **Finalize the Import:** 1. Click **Confirm and Import**. The cloned automation will include the project variables without their values. ![Imported\_Recipe.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte18c3c0786b3e082/67bc06622cce5be55d8f77ac/Imported_Recipe.png) ### Managing Project Variables Post-Import To review and update the Project Variables after import: **Navigate to Project Variables:** 1. In the top navigation panel, click Settings. Then, in the left navigation panel, click Variables. 2. In the **Actions** column, click the three dots next to a variable, then select **Edit**.![Edit\_Variable.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd91f844ba648a565/66cf037f060745478e37c924/Edit_Variable.png) 3. Enter the appropriate values and click **Update**. 4. After updating the variables, revisit your automation to ensure it is correctly configured with the new values.![Update\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt92fa4f8bb79fe064/66cf038762373b1ae87241df/Update_Button.png) ### Pre-installation Information for Recipe When creating an automation, add important context in the Pre-installation Information for Recipe section within the Automation Settings. This helps users importing the automation understand the recipe clearly. You can include: * **Estimated Setup Time:** Specify the approximate setup time (in minutes) for the automation to help users plan effectively. * **Additional Setup Details:** Provide essential information, including trigger configurations, setup tips, or important considerations to simplify the automation process. ![Installation\_Screen.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdb2b1d2023525c31/6794ee8f7cdcd3663d5c3a19/Installation_Screen.png) This added context improves the user experience and simplifies the implementation of imported recipes. --- ## URL: https://www.contentstack.com/docs/agent-os/aws-bedrock --- title: "AWS Bedrock" description: "Use this connector to generate content using the different Foundation model." url: "https://www.contentstack.com/docs/agent-os/aws-bedrock" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: aws-bedrock.md --- # AWS Bedrock [AWS Bedrock](https://aws.amazon.com/bedrock/) is an AI-based service offered by Amazon Web Service to help developers leverage AI as per their specifications using Foundation Models. With the AWS Bedrock connector, you can integrate the foundation models offered by [AI21 Labs](https://www.ai21.com/), [Anthropic](https://www.anthropic.com/), [Amazon Web Services](https://aws.amazon.com/ai/), [Meta](https://llama.meta.com/), and [Mistral](https://mistral.ai/) to generate prompt responses. **Note:** The AWS Bedrock connector supports the models listed above from various providers. Access to each model depends on the specific plan chosen by the user. Enterprises and businesses can deploy their ChatGPT versions on the Azure cloud and use the Azure ChatGPT connector to generate responses by integrating their Azure account within the Azure ChatGPT connector. ## Set up AWS Bedrock Perform the following steps to set up the AWS Bedrock action connector: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **AWS Bedrock** connector. ![Select\_the\_Connector\_Bedrock.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb9a1f70a4c377f64/6527c9504824f5c005f27141/Select_the_Connector_Bedrock.png) 4. Under **Choose an Action** tab, select the **Prompt** action. ![Select\_Action\_New.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5ce7877bd9c30b24/659d218cfa27744535f68fbf/Select_Action_New.png) 5. In the **Configure Action** tab, click **\+ Add New Account** to add your AWS Bedrock account. ![Add\_Account\_New.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltac3bba6ef7427cfa/659d218c43e8cb8b4ea4a67d/Add_Account_New.png) 6. In the **Authorize** modal, provide details such as **Title**, **Access Key**, **Secret Key**, and **Region**. You can generate the **Access** and **Secret Key** by navigating through **Security credentials** \> **Access Keys** \> **Create New Access Key** in your AWS account. ![Access\_key.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt615160445db1484a/650c47aa8a15ce787cd999d1/Access_key.png) **Additional Resource**: For more information, refer to the [Managing access keys for IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) document. 7. Once done, click **Authorize**. ![Authorize\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2142f6f3a7bdd670/6504320e9bf261a2a16bd65b/Authorize_Button.png) 8. Select the **Foundation Model** from the dropdown list to generate content for the prompt. The **Foundation Model(s)** are large Machine Learning models comprising vast amounts of data that enable them to perform multiple tasks across multiple domains. **Note:** Stable Diffusion model is not supported at this time. 9. Provide the **Prompt Text** to generate the prompt response(s). ![AWS\_Bedrock.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8a1df2b01dbd570c/671a4280221dabe070c17f1d/AWS_Bedrock.png) 10. \[optional\] Click the **Show optional fields** toggle button to view the **Number of Tokens**, **Randomness of Responses**, and **Top P** fields. 11. Enter the **Number of Tokens** to generate the content. This must be within the range of 1 to 4096. **Note:** Prompt text is split into multiple tokens so the language model can process and deliver more accurate responses. 12. Enter a value for the **Randomness of Responses** of the generated content. 0 being the most precise and 2 being the most random content predictions. This must be within the range of 0 to 2. **Note:** If you set the randomness to 0, you will get deterministic responses for your prompt, whereas if the randomness is 1 or more, the responses become more random. You will get a different response each time. 13. Enter the value for the **Top P (Nucleus sampling)** field. With **Top P**, you can enter the probability to predict the next set of words expected for your response. This must be within the range of 0 to 1. If the Top P is 0.4, the foundation model will consider only the following 40 most likely words expected for the response. If the Top P is 0.9, it will find 90 most likely anticipated words expected for the response. 14. You can mark the **Sanitize text** checkbox to remove special characters or spaces from the chat response. By enabling this checkbox, any special characters or spaces in the chat response will be eliminated, resulting in a clean and compatible text. ![Sanitize\_text.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltec147552331a3943/656c3f2f4c0b9a3724d564b2/Sanitize_text.png) 15. Click the **Proceed** button. 16. To execute and test the configured action, click the **Test Action** button. ![Test\_Action\_New.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3e19610d2b2800fd/659d225992c0763bb8b3698c/Test_Action_New.png) 17. On successful configuration, you can see the below output. Click the **Save and Exit** button. ![Save\_Exit\_New.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt18c6ba566bb0ea27/659d225943e8cb5505a4a685/Save_Exit_New.png) This sets the **AWS Bedrock** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/aws-lambda --- title: "[Automations guides and connectors] - AWS Lambda" description: Configure and execute an AWS Lambda function invoked in response to an event generated in Contentstack using the Automations AWS Lambda action connector. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/aws-lambda product: Contentstack doc_type: connector-guide audience: - developers - administrators version: v1 last_updated: 2026-03-26 filename: aws-lambda.md --- # [Automations guides and connectors] - AWS Lambda This page explains how to configure the Automations AWS Lambda action connector to execute an AWS Lambda function in response to events generated in Contentstack. It is intended for developers or administrators setting up third-party integrations in Automations, and should be used when you want Contentstack events to trigger Lambda-based workflows. ## AWS Lambda The AWS Lambda action connector lets you configure and execute a Lambda function that is invoked in response to an event generated in Contentstack. **Note**: You need to define the Lambda function in your AWS Services console before configuring it for the Automations AWS Lambda action connector. For instance, consider a scenario where you want to be notified whenever someone creates or updates an entry in Contentstack. In this case, you can set up a system that includes a webhook that triggers when a user creates or updates an entry. This webhook in turn must invoke a lambda function that notify a messaging service such as AWS SNS. ## Set Up AWS Lambda action Connector Perform the following steps to set up the AWS Lambda action connector: - Click **Configure Action Step** from the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the **AWS Lambda** connector. - Under **Choose an Action** tab, select the **Execute Lambda Function** action. - Click **+ Add New Account** to add your AWS account. - In the **Authorize** pop-up window, provide details such as **Title**, **Access Key**, **Secret Key**, and **Region**. You can generate the **Access** and **Secret Access Key** by navigating through **Security credentials** > **Access Keys** > **Create New Access Key** in your AWS console. **Additional Resource:** For more information, refer to the [Managing access keys for IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) document. - Once done, click **Authorize**. - Click the **Function Name** textbox and select the required lambda function from the **Lookup** dropdown. **Note**: You need to have your Lambda function defined in your AWS Services console before configuring your AWS Lambda action connector in Automations. - Click the **Invocation Type** textbox and select an option from the given dropdown. Here, you can choose from three options: **Event**, **RequestResponse**, and **DryRun**. **Event:** This returns a request ID and status code after successful execution of the function. - **RequestResponse:** This returns a status code and a response message as **body** for the selected lambda function. - **DryRun:** This allows you to test the function, and it returns a request ID and status code. - Lets select **Event** as the invocation type for our first example, then we will cover other invocation types proceeding further. - [*Optional*] You can choose to add optional fields by clicking on the **Show optional fields** toggle. You will find two additional fields have appeared: **Parameters** and **Specific Version or Tag**. - Click the **Parameters** textbox to add dynamic parameters to your Lambda function. Make sure to enter the parameter in JSON format only. You can also specify a **Specific Version or Tag** for your Lambda function. - Once done, click **Proceed**. - Click **Test Action** to test the configured action connector. - After successful execution, you will get a Request ID and status code for your Lambda function. Click** Save and Exit** to finish the process. Now, in continuation to step 7 above, lets check out the output for the Invocation types RequestResponse and DryRun. **Invocation Type:** RequestResponse After performing **steps 1-6** from above, perform the following steps: - Select **RequestResponse** as the **Invocation** **Type**. - [*Optional*] Click the **Show optional fields** toggle. Add dynamic parameters (in JSON format) to your Lambda function under the **Parameters** textbox. And, specify a **Specific Version or Tag** for your Lambda function if need be. - Once done, click **Proceed**. - Click **Test Action** to test the configured action connector. - After successful execution, you will get a status code and a response message (body) for your Lambda function. Click **Save and Exit** to finish setting up your connector. **Invocation Type:** DryRun After performing steps 1-6 that we covered under setting up the Event invocation type, perform the following steps: - Select **DryRun** as the **Invocation Type**. - [*Optional*] Click the **Show optional fields** toggle. Add dynamic parameters (in JSON format) to your Lambda function under the **Parameters** textbox. And, specify a **Specific Version or Tag** for your Lambda function if need be. - Once done, click **Proceed**. - Click **Test Action** to test the configured action connector. - After successful execution, you will get a Request ID and status code for your Lambda function. Click **Save and Exit** to finish the process. This sets the **AWS Lambda** action connector. ## Common questions ### Do I need to create the Lambda function before configuring the connector? Yes. **Note**: You need to define the Lambda function in your AWS Services console before configuring it for the Automations AWS Lambda action connector. ### Where do I get the AWS Access Key and Secret Key used in the connector? You can generate the **Access** and **Secret Access Key** by navigating through **Security credentials** > **Access Keys** > **Create New Access Key** in your AWS console. ### What is the difference between Event, RequestResponse, and DryRun invocation types? **Event:** This returns a request ID and status code after successful execution of the function. **RequestResponse:** This returns a status code and a response message as **body** for the selected lambda function. **DryRun:** This allows you to test the function, and it returns a request ID and status code. ### Can I pass parameters to the Lambda function from Automations? Yes. Click the **Parameters** textbox to add dynamic parameters to your Lambda function, and make sure to enter the parameter in JSON format only. --- ## URL: https://www.contentstack.com/docs/agent-os/aws-s3 --- title: "AWS S3" description: "Use the AWS S3 connector to store your files in the AWS bucket. You can fetch or delete files from your AWS bucket." url: "https://www.contentstack.com/docs/agent-os/aws-s3" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: aws-s3.md --- # AWS S3 The AWS S3 connector stores files in AWS buckets that you can retrieve later. For example, consider a scenario where you create an entry in the Contentstack CMS. You can create a trigger that activates when you create a new entry and the backup of the created entry gets stored in the AWS bucket. With the AWS S3 Connector, you can fetch the details of all the files and also delete an existing object from your AWS bucket. ## Prerequisites To use the AWS S3 connector, you first need to add your [AWS S3 account](https://aws.amazon.com/s3/). To do so, follow the steps given below: ### Connect your AWS S3 Account 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **AWS S3** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc31970e34fdb9e35/66822a549b2b7abe05d9790d/Select_Connector.png) 4. Under **Choose an Action** tab, select any one action from the list. Here, we are selecting the **Create a New Object** action. ![Select\_Create\_an\_Object\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt48b6ee0882d5c5f9/66822a54aaed412f1644d50c/Select_Create_an_Object_Action.png) 5. On the **Configure Action** page, click the **\+ Add New Account** button to add your AWS S3 account. ![Add\_Create\_Object\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0db31c3a3a3e6e18/66822a54c8ca776685cdf4f2/Add_Create_Object_Account.png) 6. In the **Authorize** modal, enter a **Title**, enter the **Access Key**, **Secret Key**, and the **Region** details. You can generate the **Access** and **Secret Key** by navigating through **Security credentials** \> **Access Keys** \> **Create New Access Key** in your AWS account. ![4.Generate\_Access\_Key.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt3f5986b454f8b00d/63860091ff8d4a109d0e4216/4.Generate_Access_Key.jpg) **Additional Resource:** For more information, refer to the [Managing access keys for IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) document. 7. Then click **Authorize**. ![Authorize\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7be9c8c0e6292bdf/66822a54e316341f9171da86/Authorize_Button.png) This sets up your AWS S3 account for the AWS S3 action connector. ## Set up the AWS S3 Connector Perform the following steps to set up the AWS S3 connector: 1. From the left navigation panel, click **Configure Action** Step. 2. Then, click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **AWS S3** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc31970e34fdb9e35/66822a549b2b7abe05d9790d/Select_Connector.png) **Note:** You can sort and search the connector(s) based on the filter. 4. Under **Choose an Action**, you will see three actions: **Create a New Object**, **Delete an Object**, and **Get All Files**. ![Select\_Actions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3593e27c88bc6d6e/66822a54fcee4a845d2e0101/Select_Actions.png) Once done, you can go ahead and set up your AWS S3 connector. ### Create a New Object This action lets you create a new object in the AWS S3 bucket. 1. Under **Choose an Action t**ab, select the **Create a New Object** action. 2. On the **Create a New Object Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your AWS account as shown in the [Connect your AWS S3 Account](#connect-your-aws-s3-account) step. 2. You can select the AWS **Bucket Name** from the **Lookup** list that appears when you click the textbox. The lookup drop-down loads the buckets already defined and present in your AWS S3 account. 3. Enter the **File Name** (for example, File01) or/and any value from the values list. 4. In the **Source** drop-down, select the Source of the upload (Content or File URL) and the **Input Value** for each source. ![Select\_Create\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6315dc7f60e20c42/66822a5efcee4a44a62e0109/Select_Create_Fields.png) 5. Click the **Show Optional Fields** toggle button to enter the text for the **Tags** and **Metadata** optional fields. ![Show\_Optional\_Fields\_Create.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt326c6848c3583552/66822a5eabc51390355d1f4c/Show_Optional_Fields_Create.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test Action**. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf87279a35e14d708/659d18e62d957dd667fbca50/Test_Action.png) 5. Once set, click **Save and Exit**.![Save\_Exit\_Create.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd4cd9fdda05d75c0/66822a54ee05f3894a30058f/Save_Exit_Create.png) 6. Log into your AWS account and see the list of files in the bucket. In the AWS account’s bucket, you can see the created file. 7. Download the file and open it. You can see the content stored in the file. ### Delete an Object This action lets you delete an existing object from the AWS S3 bucket. 1. Under **Choose an Action** tab, select the **Delete an Object** action. 2. On the **Delete an Object Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your AWS S3 account as shown in the [Connect your AWS S3 Account](#connect-your-aws-s3-account) step. 2. You can select the AWS **Bucket Name** from the **Lookup** list. The drop-down loads the buckets already defined and present in your AWS S3 account. 3. Select the **File Name** from the **Lookup** drop-down. You can select multiple files to delete. ![Select\_Fields\_Delete\_Object.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf1cf38f9014a7529/66822a5ebbf7b4e178a762ee/Select_Fields_Delete_Object.png) 3. Click **Proceed**. 4. Click the **Test Action** button to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt185dfb5fea1f3561/66822a5eee05f32dcf300593/Test_Action.png) 5. Once set, click **Save and Exit**. ![Save\_Exit\_Delete.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8868533759f26a85/66822a54c66c8836a469e0e1/Save_Exit_Delete.png) ### Get All Files This action lets you fetch the details of all the files from the AWS S3 bucket. 1. Under **Choose an Action** tab, select the **Get All Files** action. 2. On the **Get All Files Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your AWS S3 account as shown in the [Connect your AWS S3 Account](#connect-your-aws-s3-account) step. 2. Select the AWS **Bucket Name** from the **Lookup** list. The drop-down loads the buckets already defined and present in your AWS S3 account. 3. Optionally, enable the **Show Optional Fields** toggle button to display the **Folder Name** field. You can select the folder to fetch all the associated files. **Note:** If you do not select any folder name, all the files available in the selected AWS S3 bucket will be fetched. ![Select\_Fields\_Get.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbd73b4b0db27b1b8/66822a5eabc51383dd5d1f48/Select_Fields_Get.png) 3. Click **Proceed**. 4. Click the **Test Action** button to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt185dfb5fea1f3561/66822a5eee05f32dcf300593/Test_Action.png) 5. Once set, click **Save and Exit**. ![Save\_Exit\_Get.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0619eacf9e0bb997/66822a54fcee4a54122e0105/Save_Exit_Get.png) This sets up your **AWS S3** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/aws-sns --- title: "[Automations guides and connectors] - AWS SNS" description: AWS SNS connector setup and usage for sending notifications via AWS Simple Notification Service (AWS SNS). url: https://www.contentstack.com/docs/developers/automation-hub-connectors/aws-sns product: Contentstack doc_type: automation-connector-guide audience: - developers - administrators version: unknown last_updated: 2026-03-26 filename: aws-sns.md --- # [Automations guides and connectors] - AWS SNS This page explains what the AWS SNS connector does in Contentstack Automations and how to configure the AWS SNS action connector to send notifications. It is intended for developers or admins setting up automation workflows that trigger AWS SNS notifications when events occur in Contentstack. ## AWS SNS The AWS Simple Notification Service (AWS SNS) connector automates the process of sending notifications to the members subscribed/added to AWS SNS. For instance, consider a scenario where you either create or update an entry in Contentstack and you want to notify specific users about it via a specific platform. In this case, link your AWS SNS account to the AWS SNS Automations connector, and every time the event occurs, it will trigger our action connector to send notifications to the medium(s) that has been set in your AWS SNS account. ## Set Up AWS SNS Perform the following steps to set up the AWS SNS action connector: - Click **Configure Action Step** from the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the **AWS SNS **connector. - Under **Choose an Action** tab, select the** Send Notification** action. - Click the **+ Add New Account **button to add your AWS account (see screenshot in next step). - In the **Authorize** modal, provide details such as** ****Title****, Access Key**, **Secret Key**, and **Region**. You can generate the **Access** and **Secret Key **by navigating through **Security credentials **> **Access Keys **>** Create New Access Key **in your AWS account. **Additional Resource:** For more information, refer to the [Managing access keys for IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) document. Then, click** Authorize**. - After adding an account, click the** Topic **field and select a given topic from the Lookup dropdown, click the **Topic type** field and select the topic type based on the Topic you selected, and then click the** Message Body** textbox and enter a sample message for the notification. You can even add dynamic parameters that appear in the output dropdown. - Click the **Show optional fields** toggle button to enter the values for **Message Attributes** and **Subject** optional fields. In **Message attributes**, you can enter certain attributes (in JSON format only) along with your message, and in **Subject**, you can enter the subject of the message. - Click **Proceed**. - Check if the details are correct. If yes, click **Test Action**. - After successfully executing the Action, you will get a notification on your configured communication medium. For this example, we have configured the user's email in their SNS account. - Click **Save and Exit** to finish the process. This sets the **AWS SNS** action connector. ## Common questions ### What does the AWS SNS connector do? It automates sending notifications to members subscribed/added to AWS SNS when configured events occur. ### What information is required to authorize an AWS account? You need to provide **Title**, **Access Key**, **Secret Key**, and **Region** in the **Authorize** modal. ### Where do I generate the AWS Access Key and Secret Key? In your AWS account, navigate through **Security credentials** > **Access Keys** > **Create New Access Key**. ### What optional fields can be configured for the notification? You can use **Show optional fields** to enter values for **Message Attributes** (JSON format only) and **Subject**. --- ## URL: https://www.contentstack.com/docs/agent-os/aws-sqs --- title: "[Automations guides and connectors] - AWS SQS" description: AWS SQS connector setup and usage for sending messages via an automation action step. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/aws-sqs product: Automation Hub doc_type: connector-guide audience: - developers - automation-builders version: v1 last_updated: 2026-03-26 filename: aws-sqs.md --- # [Automations guides and connectors] - AWS SQS This page explains what the AWS SQS connector is and how to set it up as an action connector to send messages to an AWS SQS queue. It is intended for developers and automation builders configuring third-party service integrations, and should be used when you need to connect an automation action step to AWS SQS. ## AWS SQS AWS Simple Queue Service (AWS SQS) connector is a message queuing system that enables two-way communication between different distributed app components. It follows a polling mechanism where one component (publisher) pushes messages to the queue, and the consumer (processor) explicitly pulls out those messages from the queue to check them. ## Set Up AWS SQS Perform the following steps to set up the AWS SQS action connector: - Click **Configure Action Step** from the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the **AWS SQS **connector. - Under **Choose an Action** tab, select the** Send Message** action. - Click the **+ Add New Account **button to add your AWS account (see screenshot in next step). - In the **Authorize** modal, provide details such as **Title**, **Access Key, Secret Key** and **Region**. You can generate the **Access** and **Secret Key **by navigating through **Security credentials **> **Access Keys **>** Create New Access Key **in your AWS account. **Additional Resource:** For more information, refer to the [Managing access keys for IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) document. Then click** Authorize.** - You can select the **Queue URL** from the Lookup list that appears when you click the textbox. The **Queue URL** needs to be present and defined in your AWS account. Select the **Queue Type **from a list of populated suggestions. There are two types of queues, i.e., **Standard **and **FIFO**. Choose as per your requirement. For this example, we have chosen the **Standard** Queue Type. The **Message Body** should contain the message you want to see in the SQS dashboard. - Click the **Show optional fields** toggle button to add **Message Attributes** in the **JSON **format. For **Standard** Queue Type, you need to enter the number of seconds for delaying any specific message in the **Delay Seconds** textbox. For **FIFO** Queue Type, you need to enter the **Message Group Id** and **Message Deduplication Id** in the respective textboxes. - Click **Proceed**. - Check if the details are correct. If yes, click **Test Action**. - Once set, click **Save and Exit**. - To see the SQS message, login to your **AWS account**. Type **SQS** in the search bar, and click on **Sample Queue Service** to navigate to the **SQS dashboard**. - Click the queue name or URL from the populated list. - Click **Send and receive messages** to fetch messages from SQS. A list of messages appears below the table. - In AWS SQS, you need to pull the messages from the server. Click on **Poll for messages** to fetch the list of messages. - Click the message **ID** to view your message. - Your final output will appear as follows. This sets the **AWS SQS** action connector. ## Common questions ### What AWS SQS actions are described on this page? Under **Choose an Action** tab, select the** Send Message** action. ### Where do I get the AWS Access Key and Secret Key? You can generate the **Access** and **Secret Key **by navigating through **Security credentials **> **Access Keys **>** Create New Access Key **in your AWS account. ### What queue types can I choose from? There are two types of queues, i.e., **Standard **and **FIFO**. ### How do I view messages in AWS SQS after sending? Click **Send and receive messages** to fetch messages from SQS, and click on **Poll for messages** to fetch the list of messages. --- ## URL: https://www.contentstack.com/docs/agent-os/azure-blob-storage --- title: "[Automations guides and connectors] - Azure Blob Storage" description: Azure Blob Storage connector documentation for creating or uploading blobs via Contentstack Automations. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/azure-blob-storage product: Contentstack doc_type: connector-guide audience: - developers - automation-builders version: latest last_updated: 2026-03-26 filename: azure-blob-storage.md --- # [Automations guides and connectors] - Azure Blob Storage This page explains how to use the Azure Blob Storage connector in Contentstack Automations to create or upload blobs to an Azure Blob Storage container. It is intended for developers and automation builders setting up the connector, generating required Azure credentials (Storage Account Name and SAS Token), and configuring an action step. ## Azure Blob Storage The [Azure Blob Storage](https://azure.microsoft.com/en-in/products/storage/blobs/) connector lets you create or upload a blob into your Azure Blob Storage account via Contentstack. In the Azure Blob Storage account, you can create multiple containers and create or upload unstructured data (blob), such as images, files, etc. ## Prerequisite To use the Azure Blob Storage connector, you first need to generate a Storage Account Name, create a container, and then generate a SAS Token in your Azure Blob Storage account. To do this, follow the steps given below: - Log into your Azure Blob Storage account. - Click **Storage accounts** from the list of Azure services and then click **+ Create**. - Enter all the necessary information and click **Review** to run the validation. This checks if a user has the permissions to create a storage account. - Once the validation is complete, click **Create** to initiate the storage account deployment. - Once the deployment completes, the storage account gets created. We will now have to create a container inside this storage account. - So, navigate to this newly created storage account. Under the **Data storage** section, in the left navigation panel, click **Containers**. - Then, click **+ Container**. The **New container** modal opens. - Enter a suitable name for your container in the **Name** field. You then have to define the access level of the container. For this, check the **Anonymous access level** drop-down. If it is disabled, you will have to enable it to change its settings. To do this, follow the steps given below: From the left navigation panel, go to the **Settings** menu and then click **Configuration**. - You will be presented with different options. Scroll down to **Allow Blob anonymous access**, mark the **Enabled** checkbox, and click **Save** at the top. **Note**: This access is required so that you can store blobs through the Automate connector to your storage account. - Now go back to your container by navigating to **Data Storage**. Click **Containers** and then click the **Change access level** option. - From the **Anonymous access level** drop-down, select **Container (anonymous read access for container and blobs)** and click **OK**. - Navigate to the storage account. From the left navigation panel, click **Access keys** and copy the **Storage account name** to your clipboard. - To generate the **SAS Token**, follow the steps below: From the left navigation panel, navigate to the **Security + networking** section and click the **Shared access signature** tab. - In **Allowed services**, keep only **Blob** selected, as our Automate currently supports only blobs. - In **Allowed service types**, keep all options checked and in **Allowed permissions**, select only **Read**, **Write**, **Delete**, **List**, **Add**, and **Create**. - Also, keep the options under **Blob versioning permissions** and **Allowed blob index permissions** selected. - You can set the start and expiry date and time of the SAS token under the **Start and expiry date/time** option.**Note**: By default, this token expires in a few hours, so you can set its expiry according to your requirement. - Once you have added these details, click the **Generate SAS and connection string** button. - The **Connection string**, **SAS token**, and **Blob service SAS URL** will get generated. Copy the SAS Token to your clipboard. **Additional Resources**: For more information, refer to the [Grant limited access to Azure Storage resources using shared access signatures (SAS)](https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview) documentation. ## Set up Azure Blob Storage Connector Perform the following steps to set up the Azure Blob Storage connector: - Click **Configure Action Step** from the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the **Azure Blob Storage** connector.**Note**: You can sort and search the connector(s) based on the filter. - Under **Choose an Action** tab, select **Create or Upload a Blob** action. - Click the **+ Add New Account** button to add your Azure Blob Storage account. - In the **Authorize** modal, enter a **Title**. Enter the **Storage Account Name** and **SAS Token** retrieved in the [Prerequisite](#prerequisite) step from your Azure Blob Storage account. Click the **Authorize** button. - Select a **Container Name** from the **Lookup** list that appears when you click the textbox. The lookup drop-down loads all the containers that are already defined in your Azure Blob Storage account. - Enter a **File Name** (for example, File01.txt) to create or upload a blob in your container. - Select the **Access Tier**, i.e., **Hot**, **Cold**, **Cool**, and **Archive** to define the accessibility of your blob data. Let’s take a look at each of them: **Hot Tier**: A tier designed for frequently accessed or modified data online. - **Cool Tier**: An online tier tailored for storing rarely accessed or modified data. Data in the Cool tier must be retained for at least 30 days. - **Cold Tier**: An online tier designed for infrequently accessed or modified data, yet demands swift retrieval. Data in the Cold tier must be retained for a minimum of 90 days. - **Archive Tier**: A storage tier for rarely accessed data with flexible timing needs, usually within hours. Data in the Archive tier must be retained for at least 180 days. **Additional Resources**: For more information, refer to the [Access tiers for blob data](https://learn.microsoft.com/en-us/azure/storage/blobs/access-tiers-overview) documentation. - In the **Source** drop-down, select a **Source** for the upload (*Content or File URL*) and provide the **Input Value** or **Input URL** for each source.**Note**: For the **Source** type **Content** and **File URL**, you **must** create files with an extension, such as .txt or .jpeg. If the appropriate extensions are not provided, the file will be encoded into a format different from its original one. Consequently, this will result in storing a wrongly encoded file in the storage container. - Click the **Show optional fields** toggle button to enter the data for the **Blob Tags** and **Metadata** optional fields. Blob tags and metadata offer extra details about a blob. Tags help in blob categorization or organization, while metadata offers specific information like creation date, author, or other attributes. - Click **Proceed**. - Check if the details are correct. If yes, click **Test Action**. - Once set, click **Save and Exit**. - To check all the files created or uploaded in the container, log into your Azure Blob Storage account. This sets the Azure Blob Storage connector. ## Common questions ### What do I need before configuring the Azure Blob Storage connector? You need to generate a Storage Account Name, create a container, and generate a SAS Token in your Azure Blob Storage account. ### Which Azure service is supported by this connector? In **Allowed services**, keep only **Blob** selected, as our Automate currently supports only blobs. ### Why do I need to include a file extension when using Content or File URL as the Source? For the **Source** type **Content** and **File URL**, you **must** create files with an extension, such as .txt or .jpeg; otherwise the file may be encoded into a different format and stored wrongly encoded in the storage container. ### Where can I verify that files were created or uploaded successfully? To check all the files created or uploaded in the container, log into your Azure Blob Storage account. --- ## URL: https://www.contentstack.com/docs/agent-os/azure-chatgpt --- title: "Azure ChatGPT" description: "Use this connector to generate content using the Azure cloud network." url: "https://www.contentstack.com/docs/agent-os/azure-chatgpt" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: azure-chatgpt.md --- # Azure ChatGPT The Azure ChatGPT connector lets you generate the content via chat responses and prompt responses using the Azure cloud network. You can also translate the entry data using the **Translate an Entry** action. Enterprises and businesses can deploy their ChatGPT versions on the Azure cloud and use the Azure ChatGPT connector to generate responses by integrating their Azure account within the Azure ChatGPT connector. ## Prerequisites To use the Azure ChatGPT connector, you first need to connect your Azure ChatGPT account using the following steps: 1. [Log in to your Contentstack account](https://www.contentstack.com/login) and click **Automations** in the left navigation panel. 2. Select your project and then the automation. 3. Click **Configure Action Step** from the left navigation panel and then **Action** **Step** to configure third-party services. 4. Within the **Choose Connector**, click the **Azure** **ChatGPT** connector.![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt322198feaa68952e/6826fdc364f73f79a09008d1/Select_Connector.png) 5. Under **Choose** **an Action**, select the **Chat** action. 6. In the **Configure Action** section, click **+ Add New Account** to add your Azure ChatGPT account. 7. In the **Authorize** modal, enter the **Title**, **Resource Name**, **API Key**, **Deployment Name/ID**, and **API Version** retrieved from the Azure platform. 1. Log in to the [**Azure**](https://azure.microsoft.com/en-in) Platform. 2. You must create a resource (if not created already). Click **\+ Create Resource**. 3. Click the resource created. Click to manage the keys or create one in the **Manage Keys** section. 4. In the **Model Deployments** section, click **Manage Deployments** -> Authorize your account. You will see a list of all the deployments created in the Azure platform. Click **\+ Create new deployment** to create a new deployment. **Note:** Refer to the [Azure OpenAI Service REST API Reference](https://learn.microsoft.com/en-us/azure/foundry/openai/reference) document for more information on API Version. 8. Click the **Authorize** button. ![Click\_the\_Authorize\_Button](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt44dd7f4236dcf9f5/64ba72a3320b7e4063ca7646/Click_the_Authorize_Button.png) This sets up your Azure ChatGPT account for the Azure ChatGPT connector. ## Set up the Azure ChatGPT Perform the following steps to set up the Azure ChatGPT action connector: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Azure ChatGPT** connector.![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt322198feaa68952e/6826fdc364f73f79a09008d1/Select_Connector.png) 4. You will see three actions under the **Choose an Action** tab: **Chat**, **Prompt**, and **Translate an Entry**. ![Screenshot 2025-05-05 at 12.10.12 PM (1).png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf0c0a7a0023f52b8/6818710b0307cd518cedfb64/Screenshot_2025-05-05_at_12.10.12_PM_\(1\).png) Let’s look at each of them in detail. ### Chat Action 1. Under **Choose an Action** tab, select the **Chat** action. 2. On the **Chat Configure Action** page, enter the details given below: 1. Click the **\+ Add New Account** button to add your **Azure ChatGPT** account. 2. In the **Prompt Text** field, provide your query to generate the chat response(s). 3. Select the **Role** from the dropdown options to send to the API model request. By default, the role is set to the user. **Additional Resource:** There are three types of roles provided by the OpenAI platform. The **system** role sets the response context, the **assistant** role provides the response content, and the **user** role asks the prompt. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6cd2f92f8ca73b16/68273f6146fb3c4bc38895c7/Select_Fields.png) 4. Enable the **Show Optional Fields** toggle button to display the **Number of Tokens**, **Randomness of Responses**, **Number** **of** **Chat** **Responses**, **User Identifier**, **Frequency** **of** **Repeated** **Words**, **Presence** **of** **Repeated** **Responses**, and **Additional** **Prompt** **Text** fields. 5. Enter the **Number of Tokens** to generate the content. This must be within the range of 1 to 2048. 6. Enter a value for the **Randomness of Responses** of the generated content. 0 being the most precise and 2 being the most random content predictions. This must be within the range of 0 to 2. 7. Enter the **Number of Chat Responses** you want to be generated in the automation response. This must be within the range of 1 to 3. 8. Provide the **User Identifier** name, which helps the OpenAI platform to monitor and detect abuse. 9. Provide the value to set the **Frequency of Repeated Words**. The most positive value is likely to avoid the use of repeated words. This must be within the range of -2 to 2. 10. Provide the value to set the **Presence of Repeated Responses**. The most positive value is likely to generate a new response. This must be within the range of -2 to 2. 11. You can mark the **Sanitize text** checkbox to remove special characters or spaces from the chat response. By enabling this checkbox, any special characters or spaces in the chat response will be eliminated, resulting in a clean and compatible text. ![Select\_Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf6d6df4b33bcdc94/68273f62377d2d306922f9f7/Select_Show_Optional_Fields.png) 3. Click **Proceed**. 4. To test the configured action, click the **Test Action** button. 5. You will get the response(s). Once set, click the **Save and Exit** button. ![Save\_and\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt66e89cf1a716307e/659d3530e4d0aa47fc2db690/Save_and_Exit.png) ### Prompt Action 1. Under **Choose an Action** tab, select the **Prompt** action. 2. On the **Prompt Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Azure ChatGPT account as shown in the [Prerequisites](#prerequisites) step. 2. Provide the **Prompt Text** to generate response(s). ![Select\_Field\_Latest.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltae8cc4c926c0dd49/682b095424eaf74ab781818d/Select_Field_Latest.png) 3. Enable the **Show Optional Fields** toggle button to display the **Number of Tokens**, **Randomness of Responses**, **Number of Prompt Responses**, **User Identifier**, **Frequency** **of** **Repeated** **Words**, and **Presence** **of** **Repeated** **Responses** fields. 4. Enter the **Number** **of** **Tokens** to generate the content. This must be within the range of 1 to 2048. 5. Enter a value for the **Randomness of Responses** of the generated content. 0 being the most precise and 2 being the most random content predictions. This must be within the range of 0 to 2. 6. Enter the **Number of Prompt Responses** you want to be generated in the automation response. This must be within the range of 1 to 3. 7. Provide the **User Identifier** name which helps the OpenAI platform to monitor and detect abuse. 8. Provide the value to set the **Frequency of Repeated Words**. The most positive value is likely to avoid the use of repeated words. This must be within the range of -2 to 2. 9. Provide the value to set the **Presence of Repeated Responses**. The most positive value is likely to generate a new response. This must be within the range of -2 to 2. 10. You can mark the **Sanitize text** checkbox to remove special characters or spaces from the chat response. By enabling this checkbox, any special characters or spaces in the chat response will be eliminated, resulting in a clean and compatible text. ![Prompt\_Text\_Sanitize.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt484f1f9ca0b076e3/656c41807e63e3192c11170a/Prompt_Text_Sanitize.png) 3. Click **Proceed**. 4. To test the configured action, click the **Test Action** button. 5. You will get the response(s). Once set, click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltee6864b00127af23/659d352257b479211cb07386/Save_Exit.png) ### Translate an Entry The Translate an Entry action returns the translated entry data in the response. To use this action, follow the steps below: 1. Under **Choose an Action** tab, select the **Translate an Entry** action. 2. On the **Translate an Entry Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Azure ChatGPT account as shown in the [Prerequisites](#prerequisites) step. 2. In the **Entry** **Data** field, enter the entry data to translate. 3. In the **Content** **Type** **Schema** field, enter the content type schema for translating the entry data. You can fetch the **Entry** **Data** and **Content** **Type** **Schema** from the previous step using the [_Get a Single Content Type_](/docs/agent-os/contentstack-management-content-types-actions#get-a-single-content-type) and [_Get a Single Entry_](/docs/agent-os/contentstack-management-entries-actions#get-a-single-entry) actions. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5a97feb414338b75/681859f66a96c056905601b6/Select_Fields.png) 4. In the **Select** **Language** drop-down, select the language in which you want to translate the entry data. 5. Click the **Show Optional Fields** toggle button to use these optional fields: 1. Provide the **Prompt** **Text** to generate the response. This offers additional capabilities to customize the translated entry data. 2. Enter the **Number** **of** **Tokens** to generate the content. By default, the token limit is **2000**. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3bdded98b9620c9a/681859f6daa0a33ba944c3f2/Show_Optional_Fields.png) 6. Click **Proceed**. 7. Check if the details are correct. If yes, then click **Test Action** button. 8. You will get the response(s). Once set, click **Save and Exit**. ![Save\_Exi.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9ed508c32145ab79/681859f69b09251080def69d/Save_Exi.png) This sets the **Azure ChatGPT** connector. --- ## URL: https://www.contentstack.com/docs/agent-os/azure-devops --- title: Automations guides and connectors - Azure DevOps description: Azure DevOps connector setup for automating CI/CD workflow by running a pipeline. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/azure-devops product: Automation Hub doc_type: connector-guide audience: - developers version: v1 last_updated: 2026-03-26 filename: azure-devops.md --- # Automations guides and connectors - Azure DevOps This page explains how to use and set up the Azure DevOps connector to automate CI/CD workflows by running pipelines. It is intended for developers configuring third-party service connectors and should be used when you want to authorize an Azure DevOps account and configure the “Run a Pipeline” action. ## Azure DevOps The [Azure DevOps](https://azure.microsoft.com/en-in/products/devops/) connector lets you automate your CI/CD workflow by running a pipeline. With this connector, you can automate the execution of the pipeline defined in the Azure DevOps dashboard. ## Set up Azure DevOps - Click **Configure Action Step** from the left navigation panel. - Click **Action Step **to configure third-party services. - Within the **Configure Action Step**, click the **Azure DevOps** connector. **Note: ** You can sort and search the connector(s) based on the filter. - Under **Choose an Action** tab, select the **Run a Pipeline** action. - Click the **+ Add New Account **button to set up your Azure DevOps account. - In the **Authorize **modal, enter a **Title**, and an **Access ****Token**. To find your **Access ****token**, log in to the Azure DevOps dashboard and perform the following steps: Click **User ****Settings **besides the profile icon. - Click **Personal ****access ****tokens**. - Click **+ New Token**. - In the **Build **scope, click **Run & execute**. - In the Project & team, click **Read**. - Click the **Authorize **button. - Enter the **Organization ****Name **and select a **Project ****Name **from the **Lookup **dropdown. - Select a **Pipeline ****Name **from the **Lookup **dropdown. Each pipeline is linked with a GitHub repository where a YAML file is added to test the pipeline. - Enter the **YAML Template Parameters** in **JSON **format you want to add in the YAML file to run the pipeline. - Optionally, enable the** Show optional fields **toggle button to display the optional fields. - Enter the **Pipeline ****Version **to select a specific pipeline. With the **Preview ****Run **checkbox, you can run and test the pipeline in any environment except production. - Enter the **Resource ****Data **to add in the YAML file such as builds, repositories, containers, etc. Click **+ Add Skip Stage** to skip any defined stage in the YAML file. - In the **Custom ****Variable **field, pass the variables that you want to add in the **Custom ****YAML **file. You can add one or more custom files in the Custom YAML field. - Click **Proceed**. - Click the **Test ****Action **button to test the configured action. - Click **Save ****and ****Exit**. This sets the **Azure ****DevOps **action connector. ## Common questions ### What does the Azure DevOps connector do? The [Azure DevOps](https://azure.microsoft.com/en-in/products/devops/) connector lets you automate your CI/CD workflow by running a pipeline. ### Which action should I choose to run a pipeline? Under **Choose an Action** tab, select the **Run a Pipeline** action. ### Where do I find the Access token for authorization? To find your **Access ****token**, log in to the Azure DevOps dashboard and use **User ****Settings **besides the profile icon**, then **Personal ****access ****tokens**, and create a token with the required scopes. ### Can I include parameters and variables when running the pipeline? Enter the **YAML Template Parameters** in **JSON **format, and in the **Custom ****Variable **field, pass the variables that you want to add in the **Custom ****YAML **file. --- ## URL: https://www.contentstack.com/docs/agent-os/backup-entries-or-assets-to-aws-s3 --- title: "Backup Entries or Assets to AWS S3" description: "Backup Entries or Assets to AWS S3" url: "https://www.contentstack.com/docs/agent-os/backup-entries-or-assets-to-aws-s3" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: backup-entries-or-assets-to-aws-s3.md --- # Backup Entries or Assets to AWS S3 The Backup Entries/Assets to S3 use case shows how you can use Contentstack s Automate to automate backing up entries or assets to an AWS S3 bucket. The AWS Simple Storage Service (S3) is a cloud-based storage service provided by Amazon that allows users to store any amount of data for virtually any use case. * [Configure Entry Trigger to Backup Entries or Assets to AWS S3](#configure-entry-trigger-to-backup-entries-or-assets-to-aws-s3) * [Add an Asset](#add-an-asset) Let s look at the steps in more detail. 1. ## Configure Entry Trigger to Backup Entries or Assets to AWS S3 1. Log in to your [Contentstack account](https://app.contentstack.com/#!/login) and click the Automate  icon. 2. Click **\+ New Project** to add a new project. 3. Click **\+ New Automation**. 4. Enter the **Automation Name** and **Description**. 5. Click **Create**. 6. Click **Configure Trigger** from the left navigation panel. ![Configure-Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1f2711c66edfaa36/63d90bd01d043210df68769f/Configure-Trigger.png) 7. Within the **Configure Trigger** step, click the **Contentstack** connector. ![Select\_the\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3e8bd5b9927abad3/651ba082ff4a20ae40cb0f8c/Select_the_Trigger.png) 8. Click the **Entry Trigger** event. ![Select-Entry-Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte8a5910dbb80fb10/63d90be2e408254c88fc03a3/Select-Entry-Trigger.png) 9. Click **\+ Add New Account** to add your Contentstack account. ![Add-New-Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt53b41f66ab3308ed/63d90bd0071fae111ebfd8b2/Add-New-Account.png) 10. Select the **Event** and the **Stack** for which you want to configure the trigger.  ![Select-Event-Stack.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9950ac581d6a13b1/63d90be204ee8615186bd5be/Select-Event-Stack.png) 11. Once done, click **Proceed**. 12. Click **Test Trigger**. ![Test-Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2992ee96e18512ab/63d90be22d94ad4c89edc30c/Test-Trigger.png) 13. Click **Save and Exit**. 2. ## Add an Asset The next step requires you to add an asset to the AWS S3 bucket. To add an asset, follow the given instructions: 1. Click **Configure Action Step** from the left navigation panel.  ![Click-Configure-Action-Step.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd883d64a7b2deb55/63d90bd05c5c9c52a32ed0c9/Click-Configure-Action-Step.png) 2. Click **Action Step** to configure third-party services. ![Select-Action-Step.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb329321383833978/63d90bd0bbcc27228d8e0296/Select-Action-Step.png) 3. Within the **Configure Action Step**, click the **AWS S3** connector. **Note:** You can sort and search the connector(s) based on the filter. ![Select\_AWS\_S3\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf4eabc525c2c0867/651ba0829f3cb10dcd54f617/Select_AWS_S3_Connector.png) 4. Select the **Create New Object** action. ![Select-AWS-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf3eb5c48d093c74b/63d90bd1c9787852a26be72a/Select-AWS-Action.png) 5. Click **\+ Add New Account** to add your AWS S3 account. 6. Add **Bucket name**, **File Name**, and **Content** details in their respective fields. Once done, click **Proceed**. ![AWS-S3-Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5c8b7124928363d2/63d90bd00cf395166a6e1d86/AWS-S3-Fields.png) 7. Click **Test Action**. ![Test-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3fbe01d8f4c7a879/63d90be2e480c910d1acb664/Test-Action.png) 8. Once the action is successfully executed, click **Save and Exit** to finish the process. ![Save-Exit-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd6cc01a6af064c66/63d90bd099f0c910e171a299/Save-Exit-Action.png) 9. Navigate to your AWS S3 bucket and check for the recently uploaded asset. You can view the details in the Object overview section. ![47.AWS\_S3\_Bucket.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt4b9a3c97ffd548a6/6370c8bf6237d71069349bb5/47.AWS_S3_Bucket.jpg) This sets the Backup Entries/Assets to **AWS S3** scenario. --- ## URL: https://www.contentstack.com/docs/agent-os/bigcommerce --- title: Automations guides and connectors - BigCommerce description: Set up the BigCommerce action connector to retrieve product details from your BigCommerce store. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/bigcommerce product: BigCommerce doc_type: connector-guide audience: - developers - automation-builders version: v1 last_updated: 2026-03-26 filename: bigcommerce.md --- # Automations guides and connectors - BigCommerce This page describes the BigCommerce connector in an automation hub, including what it does and the steps required to configure and authorize it. It is intended for developers and automation builders who need to retrieve product details from a BigCommerce store as part of an automated workflow. ## BigCommerce BigCommerce is a cloud-based platform that helps set up an online store for your products. This action connector allows you to retrieve product details from your BigCommerce store. ## Set up BigCommerce Perform the following steps to set up the BigCommerce action connector: - Click **Configure Action Step** from the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the **BigCommerce** connector. - Under **Choose an Action** tab, select the **Get Product Details** action. - In the **Configure Action** tab, click** + Add New Account** to add your BigCommerce account. - In the **Authorize** pop-up window, provide the **Store Hash** and **Access Token**.To generate Store Hash and Access Token, log in to the BigCommerce dashboard and perform the following steps: Click the **Advanced Settings** tab in the navigation and select **API Accounts**. - Under the “API Accounts” section, click **+ Create API Account**. - Provide a **Name** and set the OAuth scopes. Once done, click **Save**. - Copy the “Store Hash” and “Access Token” for future use. For more information, refer to the[Store API Accounts](https://support.bigcommerce.com/s/article/Store-API-Accounts?language=en_US)document. - Once done, click **Authorize**. - Provide the **Product ID** to fetch your product details. You can either check for the Product ID from your BigCommerce online store or can dynamically add it from the previous step. - Click **Proceed**. - To execute and test the configured action, click **Test Action**. - On successful configuration, you can see the below output. Click **Save and Exit**. This sets the **BigCommerce** action connector. ## Common questions ### What does the BigCommerce connector do? It allows you to retrieve product details from your BigCommerce store using the **Get Product Details** action. ### What information is required to authorize the connector? You must provide the **Store Hash** and **Access Token** in the **Authorize** pop-up window. ### Where do I find the Store Hash and Access Token? Log in to the BigCommerce dashboard, go to **Advanced Settings** > **API Accounts**, create an API account, and copy the “Store Hash” and “Access Token”. ### What input is needed to fetch product details? You must provide the **Product ID**, either by checking it in your BigCommerce online store or dynamically adding it from the previous step. --- ## URL: https://www.contentstack.com/docs/agent-os/bigcommerce-trigger --- title: "BigCommerce Trigger" description: "Use the BigCommerce trigger to invoke BigCommerce related events via Automation Hub." url: "https://www.contentstack.com/docs/agent-os/bigcommerce-trigger" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: bigcommerce-trigger.md --- # BigCommerce Trigger [BigCommerce](https://www.bigcommerce.com/) is a cloud-based platform that helps set up an online store for your products. The BigCommerce trigger lets you add BigCommerce-specific trigger events, such as Cart Converted, Customer Created, Product Created, Order Created, Shipment Created, SKU Created in your automation. **Note:** After successfully configuring a trigger, if you re-configure any other trigger you will be prompted to revert to the previously configured trigger. You can revert back to the last trigger configurations by clicking the **Revert** **Changes** button. ## Set up the BigCommerce Trigger Perform the following steps to configure the BigCommerce trigger: 1. Click **Configure Trigger** from the left navigation panel. 2. Within the **Configure Trigger** step, click the **BigCommerce** connector. ![Select\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd48b9b56654465e7/65c1c5ef65d14328a57d6302/Select_Trigger.png) 3. Under **Choose Trigger** tab, select the **BigCommerce** trigger. ![Select\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt97be883cd005d80a/65c1c5eefb34d0c1121afb3d/Select_Action.png) 4. In the **Configure Trigger** tab, click **\+ Add New Account** to add your BigCommerce account. ![Add\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcc6f7cd5d0fc1e0d/65c1c5ee68e9235793e56d20/Add_Account.png) 5. In the **Authorize** pop-up window, provide the **Store** **Hash** and **Access** **Token**. To generate Store Hash and Access Token, log into your BigCommerce dashboard and perform the following steps: 1. Click the **Advanced** **Settings** tab in the navigation and select **API** **Accounts**. 2. Under the “API Accounts” section, click **\+ Create API Account**. 3. Provide a **Name** and set the OAuth scopes. Once done, click **Save**. 4. Copy the “Store Hash” and “Access Token” to your clipboard for future use. **Additional Resources:** For more information, refer to the [Store API Accounts](https://support.bigcommerce.com/s/article/Store-API-Accounts?language=en_US) document. 6. Once done, click **Authorize**. ![Authorize.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf4f45b1865a1e172/65c1c5ee815b232e7dbb36ab/Authorize.png) 7. **Select an Event** from the dropdown. 8. Optionally, enable the **Show optional fields** toggle to add **Custom** **Header**. Click **\+ Add Custom Header** to add multiple headers. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfe9389fbf10ba748/65c1c5ef65d143b3a97d62fe/Select_Fields.png) 9. Click the **Proceed** button. 10. To execute and test the configured trigger, click the **Test** **Trigger** button. ![Test\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9fe87601bf413688/65c1ce5b25aa94b86934f4ff/Test_Trigger.png) 11. On successful configuration, you can see the below output. Click the **Save** **and** **Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt75b22d48990df74e/65c1c5efb3cfc0e64ae5e37f/Save_Exit.png) Additionally, you can use the BigCommerce trigger with the [BigCommerce](/docs/agent-os/bigcommerce) connector to fetch the product details. For example, you can select the “Product Created” event in the BigCommerce trigger and configure the action to fetch the product details. This sets the **BigCommerce** trigger connector. --- ## URL: https://www.contentstack.com/docs/agent-os/box-action --- title: "Box Action" description: "Use the Box action connector to fetch a file download URL for your Box cloud drive assets." url: "https://www.contentstack.com/docs/agent-os/box-action" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: box-action.md --- # Box Action [Box](https://www.box.com/) is a cloud content management and file sharing service. The platform lets you store, share, collaborate on, and manage files and documents securely on the cloud. The Box action connector lets you automate the file upload and generation of a file download URL for your Box cloud drive assets. You can use the generated URL and utilize it in any other automation action. **Note:** The generated URL is valid only for **15 minutes**. ## Set up the Box Action Perform the following steps to configure the Box action: 1. Click **Configure Action Step** from the left navigation panel. 2. Then, click **Action Step** to configure third-party services. 3. Within the **Configure Action step**, click the **Box** connector.![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf5b67bc903f17131/66a263e5fef3ea42ee007dd9/Select_Connector.png) 4. Under **Choose an Action** tab, select the **Get File URL** action. ![Select\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte341b021c034e39b/65df70e8ae62f7a1154beeb8/Select_Action.png) 5. In the **Configure Action** tab, click **+ Add New Account** to add your Box account. ![Add\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb84a24cf75ec4ce5/66a263e5e0326e0b1d3daf7d/Add_Account.png) 6. For Box OAuth, provide the OAuth permissions for all the values by checking the boxes, and then click **Authorize**.![Authorize\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2b5faac2d02e7dc5/65e18491eef4e37e111e71da/Box_Action_Authorize_Button.png) 7. In the pop-up that appears, log into your Box account. Once done, click the **Grant access to Box** button. 8. Provide an Account Name and then click **Save**.  9. In the **Select Folder** drop-down, select a folder within the #root folder to fetch the file URL. You can select nested folders created in your Box account. ![Select\_Folder.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdd2587e0db306a78/66a263e6e91a171084159407/Select_Folder.png) 10. In the **Select File** drop-down, select the file to fetch its URL. ![Select\_File.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte58211cb69f5393f/66a263e64252d531e1eba724/Select_File.png) 11. Optionally, enable the **Show Optional Fields** toggle button to display the **File Version** field. 12. In the **File Version** drop-down, select a file version to fetch the download URL of that version. Additionally, you can select the version from the **Suggested Data Element(s)** list. It fetches the most relevant element(s) configured in the previous step(s).![File\_Version.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb5c6f99cc6449dc8/66a263e57749f50adb3b1853/File_Version.png) 13. Click the **Proceed** button. 14. To execute and test the configured action, click the **Test Action** button. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf6a634524b549d8f/65df70e855b8c67169a12740/Test_Action.png) 15. On successful configuration, you can see the below output. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8373a1d92ace922a/65df70e77c852667dc234c91/Save_Exit.png) Additionally, you can use the [Box Trigger](/docs/agent-os/box-trigger) with the Box Connector to generate the file download URL. For example, select the “File Uploaded” event in the Box trigger and configure the Box action to fetch the file download URL. This sets the **Box** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/box-trigger --- title: "Box Trigger" description: "Use the Box trigger connector to automate the file upload event in your Box cloud drive." url: "https://www.contentstack.com/docs/agent-os/box-trigger" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: box-trigger.md --- # Box Trigger [Box](https://www.box.com/) is a cloud content management and file sharing service. The platform lets you store, share, collaborate on, and manage files and documents securely on the cloud. The Automate Box trigger lets you add Box-specific trigger events, such as **File Uploaded**, in your automation. **Note:** After successfully configuring a trigger, if you re-configure any other trigger you will be prompted to revert to the previously configured trigger. You can revert back to the last trigger configurations by clicking the **Revert Changes** button. ## Set up the Box Trigger Perform the following steps to set up the Box trigger: 1. Click **Configure Trigger** from the left navigation panel. 2. Within the **Configure Trigger step**, click the **Box** connector.![Select\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8228d5cd16bc825e/66a2570029dc3c94134aa315/Select_Trigger.png) 3. Under **Choose Trigger** tab, select the **Box** trigger.  ![Select\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte4a5da665b78b3e2/65df6be531aca1acff7ef1ab/Select_Action.png) 4. In the **Configure Trigger** tab, click **\+ Add New Account** to add your Box account. ![Add\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt79c26c0867aa931b/66a258154252d525eaeba5a9/Add_Account.png) 5. For Box OAuth, provide the OAuth permissions for all the values by checking the boxes, and click **Authorize**.![Box\_Trigger\_Authorize\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt77ac831cbe8accae/65e1a23c375999e15d70c3da/Box_Trigger_Authorize_Button.png) 6. In the pop-up that appears, log into your Box account. Once done, click the **Grant access to Box** button. 7. Provide an Account Name and then click **Save**. 8. **Select an Event** from the drop-down. In the **Select Folder** drop-down, select a folder to invoke the trigger. You can select nested folders created in your Box account. **Note:** You **must** create a new folder within your Box cloud drive, as the #root folder cannot be selected for a trigger. Additionally, you can **only** assign a **single** folder to a trigger. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt08272b35556411e8/66a2570002bf2714873b9f57/Select_Fields.png) 9. Click the **Proceed** button. 10. To execute and test the configured trigger, click the **Test Trigger** button. ![Test\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdbeec94fa9f4f9b0/65df6be52568ef32436cb733/Test_Trigger.png) 11. On successful configuration, you can see the below output. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb5d5588c924b3e64/65df6be511cd1ddb59a19c3d/Save_Exit.png) Additionally, you can use the Box trigger with the [Box Connector](/docs/agent-os/box-action) to generate the file download URL. For example, select the “File Uploaded” event in the Box trigger and configure the Box action to fetch the file download URL. This sets the **Box** trigger connector. --- ## URL: https://www.contentstack.com/docs/agent-os/brand-kit --- title: "Brand Kit Connector" description: "Automate Brand Kit actions seamlessly with the Brand Kit Connector." url: "https://www.contentstack.com/docs/agent-os/brand-kit" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: brand-kit.md --- # Brand Kit Connector Contentstack's Brand Kit lets you streamline the management of brand identity and guidelines for your content. Within the Brand Kit platform, you can create a Brand Kit to store brand-specific information. Inside a Brand Kit, you can make tone-specific Voice Profiles to set the tone of voice, formality level, and other key branding elements that highlight your brand. Each Brand Kit contains a Knowledge Vault, a centralized repository designed to store, manage, and organize all brand-related data items. Serving as a comprehensive knowledge base, it supports Contentstack's Generative AI by offering a reliable reference for content creation. **Additional Resource:** Refer to the [Brand Kit](/docs/brand-kit/about-brand-kit) documentation to know more. The Brand Kit connector lets you perform Brand Kit specific actions. With this connector, you can fetch the details of Voice Profiles, Generative AI content, and create/update/delete and fetch the details of the Knowledge Vault items. Details of each action are covered in their respective sections. ## What You Will Learn * How to connect your Brand Kit account to Automate. * How to set up the Brand Kit connector. * How to configure the Generative AI, Knowledge Vault, and Voice Profile actions. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Brand Kit-enabled Organization with [Owner or Admin](/docs/administration/about-administration-roles) permissions * A connected Brand Kit account To use the Brand Kit connector, you first need to add your Brand Kit account. To do so, follow the steps given below: ### Connect your Brand Kit Account 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Brand Kit** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbcadf6e61a2bfa02/6647665e5fd9af3a7470dc69/Select_Connector.png) 4. Under **Choose an Action** tab, select any one action from the list. Here, we are selecting the **Create an Item in Knowledge Vault** action. ![Create\_an\_Item\_in\_Knowledge\_Vault.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaa5ac3fb4ec4cd05/6647665e5fd9af27ff70dc6d/Create_an_Item_in_Knowledge_Vault.png) 5. On the **Configure Action** page, click the **\+ Add New Account** to add your Brand Kit account. ![Add\_New\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltba4297fd15e2b1d4/6647665da0104be0e4c65a82/Add_New_Account.png) 6. In the pop-up window, mark the checkboxes for all the OAuth permissions and then click the **Authorize** button. ![Authorize\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltea69de9af3728964/664767614b531e5cfec321ec/Authorize_Button.png) 7. In the pop-up, select your organization to complete the authorization. ![Select\_Organization.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdf3a3e778de9fd16/6647665e5c24837b83bc2e47/Select_Organization.png) 8. In the pop-up that appears, view the module-specific access rights provided to the app. Click **Authorize** to complete authorization. ![Authorize\_Organization.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4d0f3962f4d74560/6647665ef445aa978054bf68/Authorize_Organization.png) 9. Provide an Account Name and then click **Save**. ![Save\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9ac86289da96d994/6647665d4ac76ef6b440f275/Save_Account.png) Once done, you can go ahead and set up your Brand Kit connector. ## Set up the Brand Kit Connector Perform the following steps to set up the Brand Kit connector: 1. From the left navigation panel, click **Configure Action Step**. 2. Then, click **Action Step** to configure third-party services. 3. Within the **Configure Action** Step, click the **Brand Kit** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbcadf6e61a2bfa02/6647665e5fd9af3a7470dc69/Select_Connector.png) **Note:** You can sort and search the connector(s) based on the filter. 4. Under **Choose an Action**, you will see these categories of actions: **Generative AI**, **Knowledge Vault**, and **Voice Profile**. ![Select\_Actions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5b1bcd4bfccbe3e1/6647665e6d70550f9e4d8a7a/Select_Actions.png) Let’s look at each of them in detail. ## Generative AI Action The Generative AI acts as a bridge connecting your Vector database and the Large Language Model (LLM). When you give a prompt or command, the Generative AI API uses the prompt and sends it to the Vector database. The Vector database fetches a bunch of relevant data. Next, the Generative AI API passes this data to the Large Language Model (LLM). Based on your prompt, the LLM then analyzes the data and understands what it means. Finally, the Generative AI API sends back the processed information to you as a response. **Additional Resource:** Refer to the [Generative AI API](/docs/developers/apis/generative-ai-api/generative-ai) documentation to know more. With the Generative AI action, you can fetch the details of the response generated using a Voice Profile and Knowledge Vault. You can perform Generative AI-based operations using the following Generative AI action. Let’s look at the action in detail. ### Generative AI This action fetches a response based on the provided prompt, generated using the selected Voice Profile and optionally the Knowledge Vault. 1. Under **Choose an Action** tab, select the **Generative AI** action. 2. On the **Generative AI Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Brand Kit account as shown in the [Connect your Brand Kit Account](#connect-your-brand-kit-account) step. 2. Select a **Brand Kit** and **Voice Profile** from the **Lookup** list. 3. Enter the preferred **Prompt** to generate the response. 4. Click the **Use Knowledge Vault** checkbox to generate a response aligned with the **Knowledge Vault** items. If you mark the checkbox, the AI will check for the items in the Knowledge Vault as per the prompt and the selected Voice Profile and generate a response for the provided prompt. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt32fa61d8fd08718c/664765deb2e852640f451317/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7d8afc69d444b6f8/664765dea0104bb426c65a7e/Save_Exit.png) ## Knowledge Vault Actions A Knowledge Vault is a centralized repository to store, manage, and organize brand-related documents, data, and content in your Brand Kit. You can create, update, or delete items within a Knowledge Vault. These items can be used to generate responses using the [Generative AI](#generative-ai) action. **Additional Resource:** Refer to the [Knowledge Vault](/docs/brand-kit/about-knowledge-vault) documentation to know more. With the Knowledge Vault actions, you can create/delete/update and fetch the details of the items in the Knowledge Vault. You can perform Knowledge Vault based operations using the following Knowledge Vault actions. **Example use case:** Set up an automation with Create an Item in Knowledge Vault action and Generative AI action. With this automation, you can create an item in Knowledge Vault and generate content using the Knowledge Vault items and the prompt. If you do not mark the checkbox for Knowledge Vault, Generative AI will provide a generic response. **Additional Resource:** Refer to the [Knowledge Vault API](/docs/developers/apis/knowledge-vault-api/knowledge-vault) documentation to know more. ### Create an Item in Knowledge Vault This action lets you create a new item in the Knowledge Vault. 1. Under **Choose an Action** tab, select the **Create an Item in Knowledge Vault** action. 2. On the **Create an Item in Knowledge Vault Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Brand Kit account as shown in the [Connect your Brand Kit Account](#connect-your-brand-kit-account) step. 2. Select a **Brand Kit** from the **Lookup** list. 3. Enter the preferred **Content** to create an item. ![Select\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta1c1bac622632953/664765c3015b1c67e056e962/Select_Field.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt62cb15de7327e0e5/664765c3b2e8521131451312/Save_Exit.png) ### Delete an Item from Knowledge Vault This action deletes an item from the Knowledge Vault. 1. Under **Choose an Action** tab, select the **Delete an Item from Knowledge Vault** action. 2. On the **Delete an Item from Knowledge Vault Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Brand Kit account as shown in the [Connect your Brand Kit Account](#connect-your-brand-kit-account) step. 2. Select a **Brand Kit** from the **Lookup** list. 3. Select the **Knowledge Vault Item** you want to delete from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4f0afc58968c2001/664765d2acadafc357727c98/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt12af2ca2343fc7b8/664765d16d705581c64d8a6f/Save_Exit.png) ### Get All Items in Knowledge Vault This action fetches the details of all the items in the Knowledge Vault. 1. Under **Choose an Action** tab, select the **Get All Items in Knowledge Vault** action. 2. On the **Get All Items in Knowledge Vault Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Brand Kit account as shown in the [Connect your Brand Kit Account](#connect-your-brand-kit-account) step. 2. Select a **Brand Kit** from the **Lookup** list to fetch all the items. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt45a31a1843227652/664766224b531e7c82c321db/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt14d8627ae424cb38/66476623d4d02e2faf2ea530/Save_Exit.png) ### Get a Single Item in Knowledge Vault This action fetches the details of a single existing item in the Knowledge Vault. 1. Under **Choose an Action** tab, select the **Get a Single Item in Knowledge Vault** action. 2. On the **Get a Single Item in Knowledge Vault Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Brand Kit account as shown in the [Connect your Brand Kit Account](#connect-your-brand-kit-account) step. 2. Select a **Brand Kit** and **Knowledge Vault Item** from the **Lookup** list to fetch the details of a single item. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt229ec99169efbf82/664765fab2e852e0b045131b/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6a8180464139ea26/664765fadda14b8491dfeff8/Save_Exit.png) ### Get Data Chunks from Knowledge Vault This action retrieves the most relevant data chunks by querying the existing Knowledge Vault in your Contentstack Brand Kit. **Note:** You can fetch up to a maximum of **two** relevant data chunks at a time. 1. Under **Choose an Action** tab, select the **Get Data Chunks from Knowledge Vault** action. 2. On the **Get Data Chunks from Knowledge Vault Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Brand Kit account as shown in the [Connect your Brand Kit Account](#connect-your-brand-kit-account) step. 2. Select a **Brand** **Kit** from the **Lookup** list to fetch the details of the data chunks from the Knowledge Vault. 3. In the **Search** **Content** field, enter the content you want to query within the existing Knowledge Vault to retrieve the most accurate and relevant data chunks. **Note**: * Ensure that items are added to the Knowledge Vault to enable the retrieval of data chunks. * If the Knowledge Vault does not contain content matching the **Search** **Content**, the output will be generated based on the highest similarity score. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfd050d8a45b46b17/6746ebfcde20c0d0d7d2dea4/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte5ba922005e2274a/6746ebfc50a1cf1191d5d28f/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb198218450a13b94/6746ebfc9457b5c9894380d1/Save_Exit_Button.png) ### Update an Item in Knowledge Vault This action lets you update an existing item in the Knowledge Vault. 1. Under **Choose an Action** tab, select the **Update an Item in Knowledge Vault** action. 2. On the **Update an Item in Knowledge Vault Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Brand Kit account as shown in the [Connect your Brand Kit Account](#connect-your-brand-kit-account) step. 2. Select a **Brand Kit** and **Knowledge Vault Item** from the **Lookup** list. 3. Enter the preferred **Content** to update the selected item. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt877b9bd8089680f4/6647664e0b508a9a14dcf5ee/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf51ad6f097ce5783/6647664eefc97a90294c0428/Save_Exit.png) ## Voice Profile Actions Voice Profiles define a brand or individual user's preferred writing style, tone, and communication preferences. Through tailored Voice Profiles, you can direct the AI to produce content that mirrors the unique brand style and messaging objectives. Within a Brand Kit, you can create multiple Voice Profiles, enabling the selection of distinct styles for various scenarios. For example, a company might prefer a formal tone for reports or press releases while opting for a casual tone for blog and social media content. Within the Contentstack’s CMS, you can use the [AI Assistant](/docs/marketplace/ai-assistant-with-brand-kit) app to generate content based on the Brand Kit and Voice Profile. **Additional Resource:** Refer to the [Voice Profile](/docs/brand-kit/about-voice-profile) documentation to know more. With the Voice Profile actions, you can create, update, delete, and fetch the details of all the Voice Profiles and Brand Kit. You can perform Voice Profile based operations using the following Voice Profile actions. ### Create a Voice Profile This action creates a new Voice Profile in a specific Brand Kit. 1. Under **Choose an Action** tab, select the **Create a Voice Profile** action. 2. On the **Create a Voice Profile Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Brand Kit account as shown in the [Connect your Brand Kit Account](#connect-your-brand-kit-account) step. 2. Select a **Brand Kit** from the **Lookup** list. 3. Enter the **Voice Profile Name** to create a new Voice Profile. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd7948ea460e1855d/6657f2ff12f7ee286094a070/Select_Fields.png) 4. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the additional fields. 5. Enter or update the short **Description** for the new Voice Profile. 6. Select the **Formality Level**, **Tone of Voice**, **Humor Level**, **Language Complexity Level** from the drop-down list. 1. **Formality Level**: You can set the formality level as **None**, **Casual**, **Business**, or **Professional**. Let’s discuss these in detail: 1. **None**: Generic content without any specifications. 2. **Casual**: Uses an informal but engaging tone that makes content more compelling. **Example:** "It’s true, nobody really enjoys grocery shopping. Here's five ways to make it less painful." 3. **Business**: Employs clear and concise language that maintains a tone suitable for business settings. **Example:** "Please note that customer support is available 24/7 via our online customer portal." 4. **Professional**: Uses polished language often found in legal documents or important announcements. **Example:** "We are pleased to announce the official launch of our new product line." 2. **Tone Of Voice**: You can set the tone of Voice as **None**, **Informative**, **Assertive**, or **Persuasive**. Let’s discuss these in detail: 1. **None**: Generic content without any specifications. 2. **Informative**: Delivers facts in a neutral way, without opinions or personal slants. **Example:** "The report shows a 15% increase in sales." 3. **Assertive**: Presents arguments and ideas with confidence, making clear recommendations. **Example:** "This method is the most effective based on our research." 4. **Persuasive**: Uses strong arguments and emotional appeals to influence action or belief. **Example:** "Upgrade now and unlock exclusive features to transform your experience!" 3. **Humor Level**: You can set the humor level as **None**, **Serious**, **Subtle**, or **Lighthearted**. Let’s discuss these in detail: 1. **None**: Generic content without any specifications. 2. **Serious**: Maintains a strictly professional tone, avoiding humor altogether. **Example:** "Lack of data security can have serious consequences." 3. **Subtle**: Uses light touches of humor or wit to keep the audience engaged without compromising professionalism. **Example:** "Here are ten tips for writing email subject lines that won’t end up in the dreaded spam folder." 4. **Lighthearted**: Incorporates relevant humor to connect with the audience and create a more playful atmosphere. **Example:** "Sometimes my biggest accomplishment of the day is simply remembering to mute myself during a virtual meeting." 4. **Language Complexity Level**: You can set the complexity level as **None**, **Plain**, **Straightforward**, or **Technical**. Let’s discuss these in detail: 1. **None**: Generic content without any specifications. 2. **Plain**: Uses everyday words that are clear and understandable to a broad audience. **Example:** "Turn on the device and follow the on-screen instructions." 3. **Straightforward**: Employs clear communication, potentially including industry-specific terms relevant to the target audience. **Example:** "The ROI of this investment is significant." 4. **Technical**: Leverages advanced concepts and specialized vocabulary for audiences with prior knowledge. **Example:** "The software leverages machine learning algorithms for optimization. 7. Enter the content in the **Insights** field which will serve as additional information that you can provide to the AI model. 8. Enter the **Sample Content** for your Voice Profile to generate similar content in action. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt86dde7ef235d55b3/6657f2ffe557cb6d0a7f1b9e/Show_Optional_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2fe6ff988895b49a/665db521742a0c2c4c7c5ae1/Save_Exit_Button.png) ### Delete a Voice Profile This action deletes an existing Voice Profile from a specific Brand Kit. 1. Under **Choose an Action** tab, select the **Delete a Voice Profile** action. 2. On the **Delete a Voice Profile Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Brand Kit account as shown in the [Connect your Brand Kit Account](#connect-your-brand-kit-account) step. 2. Select a **Brand Kit** and **Voice Profile** from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4204ce3ba1bbd4f8/6657f3259518af67c0666eb6/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3cc62b6215b5deba/6657f3252da50d3b614747ff/Save_Exit.png) ### Get All Voice Profiles This action fetches the details of all the Voice Profiles from a specific Brand Kit. 1. Under **Choose an Action** tab, select the **Get All Voice Profiles** action. 2. On the **Get All Voice Profiles Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Brand Kit account as shown in the [Connect your Brand Kit Account](#connect-your-brand-kit-account) step. 2. Select a **Brand Kit** from the **Lookup** list to fetch the details of all the Voice Profiles. ![Select\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4fcd452b90bea042/66476640428432342619835d/Select_Field.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbf2898aa40771932/66476640342fb5658262c5cf/Save_Exit.png) ### Get a Single Brand Kit This action fetches the details of a single Brand Kit in an organization. 1. Under **Choose an Action** tab, select the **Get a Single Brand Kit** action. 2. On the **Get a Single Brand Kit Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Brand Kit account as shown in the [Connect your Brand Kit Account](#connect-your-brand-kit-account) step. 2. Select a **Brand Kit** from the **Lookup** list to fetch the details of a single brand kit. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdb0f22cb6b87b0e4/664765eb4ac76e5daa40f261/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc44a88810a532cd1/664765eb4b531e3ee2c321d7/Save_Exit.png) ### Get a Single Voice Profile This action fetches the details of a single Voice Profile. 1. Under **Choose an Action** tab, select the **Get a Single Voice Profile** action. 2. On the **Get a Single Voice Profile Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Brand Kit account as shown in the [Connect your Brand Kit Account](#connect-your-brand-kit-account) step. 2. Select a **Brand Kit** and **Voice Profile** from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc54df67075e34c29/66476612015b1ce2d856e975/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt91d91a34ee793d37/664766126d705577d34d8a75/Save_Exit.png) ### Update a Voice Profile This action updates an existing Voice Profile in a specific Brand Kit. 1. Under **Choose an Action** tab, select the **Update a Voice Profile** action. 2. On the **Update a Voice Profile Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Brand Kit account as shown in the [Connect your Brand Kit Account](#connect-your-brand-kit-account) step. 2. Select a **Brand Kit** and **Voice Profile** from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt891f7d6dc0e68b72/6657f3158e34d54998e19bff/Select_Fields.png) 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the additional fields. **Note**: If you have enabled the **Show Optional Fields** toggle button, you must select at least **one** optional field to update a Voice Profile. 4. Enter a new **Voice Profile Name** to update the title of the Voice Profile. 5. Enter or update the short **Description** for the existing Voice Profile. ![Show\_Optional\_Fields\_One.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc65c0267bf133646/6657f315b752e0eda381b93b/Show_Optional_Fields_One.png) 6. Select the **Formality Level**, **Tone of Voice**, **Humor Level**, **Language Complexity Level** from the drop-down list. You can update the Formality Level, Tone Of Voice, Humor Level, and Language Complexity Level for the Voice Profile as required. Additionally, you can update the information inside the **Insights** and **Sample Content** fields as shown in the [Create a Voice Profile](#create-a-voice-profile) step. ![Show\_Optional\_Fields\_Two.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt75dc7e2291b73ea3/6657f3156d77590875e47385/Show_Optional_Fields_Two.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_and\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt82a10fb02c0fcf29/6657f315b752e0fc1881b93f/Save_and_Exit.png) This sets the **Brand Kit** connector. ## Related Resources * [Brand Kit Management API](/docs/developers/apis/brand-kit-management-api) * [Generative AI API](/docs/developers/apis/generative-ai-api) * [Knowledge Vault API](/docs/developers/apis/knowledge-vault-api) --- ## URL: https://www.contentstack.com/docs/agent-os/chatgpt --- title: "ChatGPT" description: "Use the ChatGPT connector to generate responses for text and images using the OpenAI platform." url: "https://www.contentstack.com/docs/agent-os/chatgpt" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: chatgpt.md --- # ChatGPT The ChatGPT connector enables you to generate content through chat responses and prompt responses using the OpenAI platform. The ChatGPT connector currently contains six actions: **Chat**, **Chat with Vision**, **DALL-E 3 Image Generator**, **Function Calling**, **Function Calling Response**, **Prompt**, and **Translate an Entry**. **Note**: The **gpt-4-vision-preview** model is an Experimental Model with limited support. If deprecated, it may give errors, hence it **cannot** be used for production. Details of each action are covered in their respective sections. ## Prerequisites To use the ChatGPT connector, you first need to add your ChatGPT account and authorize it with a valid API Key and Organization ID. ### Generate API Key and Get Organization ID from the OpenAI platform To generate an API Key and Organization ID in your [OpenAI platform account](https://platform.openai.com/account/api-keys), follow the steps given below: 1. Log into your [OpenAI platform account](https://platform.openai.com/account/api-keys). 2. Once you log in, you will be navigated to the **API keys** section as shown below. Click the **\+ Create new secret key** button to generate a new API Key. ![Create\_New\_Secret\_Key.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb526272ddc675674/6684f11bb84bce84b608c691/Create_New_Secret_Key.png) 3. On the **Create new secret key** modal, enter a **Name (Optional)** and select the appropriate **Permissions**. Click the **Create secret key** button to generate a new secret key. ![Create\_Secret\_key\_Popup.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta4c132221c0f68ce/6684f11cfb37928994687854/Create_Secret_key_Popup.png) An API Key gets generated. Copy it to your clipboard and click the **Done** button to close the pop-up box. ![Copy\_Key.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt24cb2b3497724dad/6684f11bc98488fe375e2776/Copy_Key.png) **Note:** Since the API Key is confidential, it is displayed only once. In case you do not copy it to your clipboard, you will need to create a new secret key. 4. We will now see how to get the Organization ID. So from the top-right corner, click **Settings**, and you will get the **Organization ID**. Copy the organization ID to your clipboard and paste it in the Organization ID field. **Note:** Make sure you save the API Key and Organization ID to your clipboard, as these will be used to [connect your ChatGPT account](#connect-your-chatgpt-account) in the next step. ### Connect your ChatGPT Account Let’s take a look at how to add your **ChatGPT** account using the Organization ID and API Key generated above. To do so, follow the steps given below: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **ChatGPT** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt05cda8c6bd270c2c/6684ee71c984887baa5e2750/Select_Connector.png) 4. Under **Choose an Action** tab, select any one action from the list. Here we are selecting the **Chat** action. ![Chat\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcd2912a11833ba5d/660c4207a16454af804611be/Chat_Action.png) 5. On the **Configure Action** page, click the **+ Add New Account** button to add your ChatGPT account. ![Add\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt07e6abf713df4d2a/66823957b6a6c848e08fa905/Add_Account.png) 6. In the **Authorize** modal, enter a **Title**. Enter the **API Key** and **Organization ID** retrieved in the [Generate API Key and get Organization ID from the OpenAI Platform](#generate-api-key-and-get-organization-id-from-the-openai-platform) step from your OpenAI platform account. Click the **Authorize** button. ![Authorize\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5a6caf23c68da7f6/668648cf5a7e7694781ccff7/Authorize_Button.png) Once done, you can go ahead and set up your ChatGPT account. ## Set up the ChatGPT Connector Perform the following steps to set up the ChatGPT action connector: 1. From the left navigation panel, click **Configure Action Step**. 2. Then, click **Action Step** to configure third-party services. 3. Within **Configure Action Step**, click the **ChatGPT** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt05cda8c6bd270c2c/6684ee71c984887baa5e2750/Select_Connector.png) **Note**: You can sort and search the connector(s) based on the filter. 4. Under **Choose an Action**, you will see five actions: **Chat**, **Chat with Vision**, **DALL-E 3 Image Generator**, **Function Calling**, **Function Calling Response**, **Prompt**, and **Translate an Entry**. ![Select\_Actions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7fddae8295fea0b7/6793afb6d46d4547f9cdedb6/Select_Actions.png) Let’s look at each of them in detail. ### Action 1: Select the **Chat** action The Chat action returns the chat response(s) from the OpenAI platform. To use the Chat action, follow the steps below: 1. Under **Choose an Action** tab, select the **Chat** action. 2. On the **Chat Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your ChatGPT account as shown in the [Connect your ChatGPT Account](#connect-your-chatgpt-account) step. 2. Select the **API Model** from the drop-down list to generate content for the chat responses. **Note**: Different models are available to different users based on the account the user holds such as paid accounts. You must check the account access before selecting the model. **Additional Resource**: For more information about the API Models, please refer to [ChatGPT API Models](https://developers.openai.com/api/docs/models). 3. Provide the **Prompt Text** to generate the chat response(s). 4. Select the **Role** from the drop-down options to send to the API model request. By default, the role is set to **user**. **Additional Resource**: There are three types of roles provided by the OpenAI platform. The **system** role sets the response context, the **assistant** role provides the response content, and the **user** role asks the prompt. 5. Enter the value in the **Input Query** field. ![Select\_Chat\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt803014458afd81f1/668238acb6a6c837e68fa901/Select_Chat_Fields.png) 6. Click the **Show Optional Fields** toggle button to use these optional fields: 1. Select the **Response** **Type** as either **Text**, **JSON** or **Structured** **Output**. For the **Response** **Type** as **JSON** or **Structured** **Output**, the output is produced in a valid JSON format. By default, the response in ChatGPT is fetched in **Text** format. **Note:** Ensure you are using the _gpt-3.5-turbo-1106_ model and above to access and correctly use the Response Type field in the connector. When selecting **Structured** **Output** as the **Response** **Type**, you must provide a valid JSON-formatted structured schema to ensure a properly formatted response. **Note**: * To utilize [Structured Output](https://developers.openai.com/api/docs/assistants/tools/function-calling#using-structured-outputs), all fields or function parameters must be marked as required. * A schema can include up to 100 object properties in total, with a maximum of 5 levels of nesting. * Structured Output generates only specified keys and values. To enable this functionality, you must set additionalProperties: false. Structured Output is supported for GPT-4o-mini models from versions _gpt-4o-mini-2024-07-18_, _gpt-4o-mini-2024-08-06_, and later. **Additional Resource:** See the [JSON Schema](https://json-schema.org/) documentation for more details. 2. Enter the **Number of Tokens** to generate the content. This must be within the range of 1 to 2048. 3. Enter a value for the **Randomness of Responses** of the generated content. 0 being the most precise and 2 being the most random content predictions. This must be within the range of 0 to 2. 4. Enter the **Number of Chat Responses** you want to be generated in the automation response. This must be within the range of 1 to 3. 5. Provide the value to set the **Frequency of Repeated Words**. The most positive value is likely to avoid the use of repeated words. This must be within the range of -2 to 2. 6. Provide the value to set the **Presence of Repeated Responses**. The most positive value is likely to generate a new response. This must be within the range of -2 to 2. 7. You can mark the **Sanitize text** checkbox to remove special characters or spaces from the chat response. Enabling this checkbox, eliminates any special characters or spaces in the chat response, resulting in a clean and compatible text. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbafd1173903c284d/66856476534a9d5805ade6ec/Show_Optional_Fields.png) 7. Click **Proceed**. 8. Check if the details are correct. If yes, then click **Test Action**. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4655757fb8d67175/659d088518123eb82726ce0e/Test_Action.png) 9. You will get the response(s). Once set, click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte7e28d9fdfb01747/668238acb2a2af3ec7a6ca27/Save_Exit.png) ### Action 2: Select the **Chat with Vision** action With the Chat with Vision action, you can generate response(s) for images, providing a descriptive response of an image. To use the Chat with Vision action, follow the steps below: **Note:** The Chat with Vision action generates a text response based on the URL provided, whereas the DALL-E 3 Image Generator action generates an image URL based on the Prompt text. 1. Under **Choose an Action** tab, select the **Chat with Vision** action. 2. On the **Chat with Vision Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your ChatGPT account as shown in the [Connect your ChatGPT Account](#connect-your-chatgpt-account) step. 2. Select the **API Model** from the drop-down list for response predictions. You can select, the **gpt-4-vision-preview** API model. This model will be available as _gpt-4-vision_ after production support. **Additional Resource**: For more information about the API Models, please refer to [ChatGPT API Models](https://developers.openai.com/api/docs/models). 3. Provide the **Prompt Text** to generate response(s). Click **\+ Add Prompt Text** to enter multiple prompts. **Note**: For the Role as **system** or **assistant**, you will see the Prompt Text box to enter the text to generate response. If you select the **Role** as **user**, you can select the type of prompt content, i.e. Text or Image. 4. If you select Role as _user_ then follow the below steps: 1. Under the Prompt Input section, click **\+ Add Prompt Input** button. 2. In the **Select Prompt Type** drop-down, select the type of content, i.e. **Text** or **Image** to generate a response. 3. Enter the **Prompt Value**. You can enter a text prompt or a valid image URL to generate a response. ![All\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt624a20cc66921908/65969f53a2c41f40eddb19ad/All_Fields.png) 5. Click the **Show Optional Fields** toggle button to use these optional fields: 1. Enter the **Number of Chat Responses** you want to be generated in the automation response. This must be within the range of 1 to 3. 2. Enter the **Number of Tokens** to generate the content. This must be within the range of 1 to 2048. 3. Enter a value for the **Randomness of Responses** of the generated content. 0 being the most precise and 2 being the most random content predictions. This must be within the range of 0 to 2. 4. Provide the value to set the **Frequency of Repeated Words**. The most positive value is likely to avoid the use of repeated words. This must be within the range of -2 to 2. 5. Provide the value to set the **Presence of Repeated Responses**. The most positive value is likely to generate a new response. This must be within the range of -2 to 2. 6. You can mark the **Sanitize text** checkbox to remove special characters or spaces from the chat response. Enabling this checkbox, eliminates any special characters or spaces in the chat response, resulting in a clean and compatible text. ![Show\_Optional\_FIleds.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd94c31fd7d5bc7d3/660d29fbc095f8335ec67341/Show_Optional_FIleds.png) 6. Click **Proceed**. 7. Check if the details are correct. If yes, then click **Test Action**. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt92a2b2a8e44fa8f5/65969f53c4b62015a1fb814d/Test_Action.png) 8. You will get the response(s). Once set, click **Save and Exit**. ![Save\_And\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt138baf2bb77f26b4/65969f53b05b9e283ad735fd/Save_And_Exit.png) ### Action 3: Select the **DALL-E 3 Image Generator** action The DALL-E 3 Image Generator action allows you to generate an image based on the text prompt and returns a URL for the generated image as a response from the OpenAI platform. To use the DALL-E3 Image Generator action, follow the steps below: 1. Under **Choose an Action** tab, select the **DALL-E 3 Image Generator** action. 2. On the **DALL-E 3 Image Generator Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your ChatGPT account as shown in the [Connect your ChatGPT Account](#connect-your-chatgpt-account) step. 2. Provide the **Prompt Text** for generating an image. 3. In the **Select Image Size** drop-down, choose the resolution for the image generation. This generates an image in the selected size. 4. In the **Select Style** drop-down, choose the style for the image generation. By default, the image is generated in **Vivid** style. 5. In the **Select Quality** drop-down, choose the quality for the image generation. By default, the image is generated in **Standard** quality. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2a6db15a48084988/65df75cdd85aff47a347c5e1/Select_Fields.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, then click **Test Action**. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte7fe9217c71c2cff/65df75cd2c8bef4ff7621f0c/Test_Action.png) 5. You will get the response(s). Once set, click **Save and Exit**. ![Save\_Exit\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7c115bf255a9fc4b/65df75cdd778b0307aad601b/Save_Exit_Button.png) You have the option to utilize the URL of the generated image within your Contentstack entries. Additionally, you can automate the process of adding the image to your entries. ### Action 4: Select the **Function Calling** action The Function Calling action allows you to generate the responses based on a configured Sub Automation. Within the Function Calling action, you have the flexibility to include various sub-automations, which ChatGPT will analyze to generate and return responses accordingly. To use the Function Calling action, follow the steps below: 1. Under **Choose an Action** tab, select the **Function Calling** action. 2. On the **Function Calling Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your ChatGPT account as shown in the [Connect your ChatGPT Account](#connect-your-chatgpt-account) step. 2. Select the **API Model** from the drop-down list for response predictions. **Additional Resource**: For more information about the API Models, please refer to [ChatGPT API Models](https://developers.openai.com/api/docs/models). 3. Provide the **Prompt Text** to generate response(s). Click **\+ Add Prompt Text** to add multiple prompts. **Note**: For the Role as **system** or **assistant**, you see the Prompt Text box to enter the text to generate response. If you select the Role as **user**, you can select the type of prompt content, i.e. Text or Image. 4. Under the Prompt Input section, click **\+ Add Prompt Text** button. 5. Select the Role and enter the **Input Query**. You can enter an input query i.e., Translate to German language. 6. Click **\+ Add Sub Automation** to add multiple sub automations. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd516bad6fdca092c/660d2b49a16454f59f4617e6/Select_Fields.png) 7. Click the **Show Optional Fields** toggle button to use these optional fields: 1. Enter the **Number of Tokens** to generate the content. This must be within the range of 1 to 2048. 2. Enter a value for the **Randomness of Responses** of the generated content. 0 being the most precise and 2 being the most random content predictions. This must be within the range of 0 to 2. 3. You can mark the **Sanitize text** checkbox to remove special characters or spaces from the chat response. Enabling this checkbox, eliminates any special characters or spaces in the chat response, resulting in a clean and compatible text. ![Function\_Calling\_Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt20988091501744ad/6694ca6f2584707097dcbab7/Function_Calling_Show_Optional_Fields.png) 8. Click **Proceed**. 9. Check if the details are correct. If yes, then click **Test Action**. ![ChatGPT\_Function\_Calling\_Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd3e90930e85cd8e2/65c37e7617201a6aa44ac796/ChatGPT_Function_Calling_Test_Action.png) 10. You will get the response(s). Once set, click **Save and Exit**. ![ChatGPT\_Function\_Calling\_Save\_Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcc0b1db8204af939/65c37e767998da1d0e6b5317/ChatGPT_Function_Calling_Save_Exit.png) ### Action 5: Select the **Function Calling Response** action With the Function Calling Response action, you can format the output from the Function Calling action and the Sub Automation. To use the Function Calling Response action, follow the steps below: 1. Under **Choose an Action** tab, select the **Function Calling Response** action. 2. On the **Function Calling Response Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your ChatGPT account as shown in the [Connect your ChatGPT Account](#connect-your-chatgpt-account) step. 2. Select the **API Model** from the drop-down list for response predictions. **Additional Resource**: For more information about the API Models, please refer to [ChatGPT API Models](https://developers.openai.com/api/docs/models). 3. In the **Function Calling Response** field, select the output from the previous Function Calling action step. 4. In the **Sub Automation Response** field, select the output from the sub automation. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbeccc4a2a9d06da5/660d2db904d34cd431bdae5a/Select_Fields.png) 3. Click the **Show Optional Fields** toggle button to use these optional fields: 1. Enter the **Number of Tokens** to generate the content. This must be within the range of 1 to 2048. 2. Enter a value for the **Randomness of Responses** of the generated content. 0 being the most precise and 2 being the most random content predictions. This must be within the range of 0 to 2. 3. You can mark the **Sanitize text** checkbox to remove special characters or spaces from the chat response. Enabling this checkbox, eliminates any special characters or spaces in the chat response, resulting in a clean and compatible text. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7c1365dcd8653c11/660d2dba1e85230fa77397e8/Show_Optional_Fields.png) 4. Click **Proceed**. 5. Check if the details are correct. If yes, then click **Test Action**. ![ChatGPT\_Function\_Calling\_Response\_Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4120baa978f3ff08/65c3863ce7bf98d7c96d33f9/ChatGPT_Function_Calling_Response_Test_Action.png) 6. You will get the response(s). Once set, click **Save and Exit**. ![ChatGPT\_Function\_Calling\_Response\_Save\_Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte224cab0521fcebb/65c3863c554798b38180a30c/ChatGPT_Function_Calling_Response_Save_Exit.png) ### Action 6: Select the **Prompt** action The Prompt action returns the generated response(s) for the prompt provided via an automation in Automate. To use the Prompt action, follow the steps below: 1. Under **Choose an Action** tab, select the **Prompt** action. 2. On the **Prompt Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your ChatGPT account as shown in the [Connect your ChatGPT Account](#connect-your-chatgpt-account) step. 2. Select the **API Model** from the drop-down list for response predictions. **Additional Resource**: For more information about the API Models, please refer to [ChatGPT API Models](https://developers.openai.com/api/docs/models). 3. Provide the **Prompt Text** to generate response(s). ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt219b2f97a6ff11c7/660d30051d996f0c9f152422/Select_Fields.png) 4. Click the **Show Optional Fields** toggle button to use these optional fields: 1. Enter the **Number of Prompt Responses** you want to be generated in the automation response. This must be within the range of 1 to 3. 2. Enter the **Number of Tokens** to generate the content. This must be within the range of 1 to 2048. 3. Enter a value for the **Randomness of Responses** of the generated content. 0 being the most precise and 2 being the most random content predictions. This must be within the range of 0 to 2. 4. Provide the **User Identifier** name which helps the OpenAI platform to monitor and detect abuse. 5. Provide the value to set the **Frequency of Repeated Words**. The most positive value is likely to avoid the use of repeated words. This must be within the range of -2 to 2. 6. Provide the value to set the **Presence of Repeated Responses**. The most positive value is likely to generate a new response. This must be within the range of -2 to 2. 7. You can mark the **Sanitize text** checkbox to remove special characters or spaces from the chat response. Enabling this checkbox, eliminates any special characters or spaces in the chat response, resulting in a clean and compatible text. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta496efbb50228855/660d3006fa138c0b1a87ec45/Show_Optional_Fields.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, then click **Test Action**. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta5fdfc2540cffbca/659d1399d6dbc07bc87be882/Test_Action.png) 5. You will get the response(s). Once set, click **Save and Exit**. ![ChatGPT-Prompt-Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf6cb59ec9ff93da9/64226031d794441fc0f4506e/ChatGPT-Prompt-Output.png) **Additional Resources:** Refer to the [ChatGPT Use Cases](/docs/agent-os/chatgpt-use-cases) guide for the two use cases to translate texts via the Function Calling action and generate image URLs via the DALL-E 3 Image Generator action. ### Action 7: Select the **Translate an Entry** action The Translate an Entry action returns the translated entry data in the response. To use this action, follow the steps below: 1. Under **Choose an Action** tab, select the **Translate an Entry** action. 2. On the **Translate an Entry Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your ChatGPT account as shown in the [Connect your ChatGPT Account](#connect-your-chatgpt-account) step. 2. Select the **API** **Model** from the dropdown list for response predictions. **Additional Resource**: For more information about the API Models, please refer to [ChatGPT API Models](https://developers.openai.com/api/docs/models). 3. In the **Entry** **Data** field, enter the entry data to translate. 4. In the **Content** **Type** **Schema** field, enter the content type schema for translating the entry data. You can fetch the **Entry** **Data** and **Content** **Type** **Schema** from the previous step using the [Get a Single Content Type](/docs/agent-os/contentstack-management-content-types-actions#get-a-single-content-type) and [Get a Single Entry](/docs/agent-os/contentstack-management-entries-actions#get-a-single-entry) actions. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt21cccd8fd431165a/6793afb7d46d45deb2cdedba/Select_Fields.png) 5. In the **Select** **Language** drop-down, select the language in which you want to translate the entry data. 6. Click the **Show Optional Fields** toggle button to use these optional fields: 1. Provide the **Prompt** **Text** to generate the response. This offers additional capabilities to customize the translated entry data. 2. Enter the **Number** **of** **Tokens** to generate the content. By default, the token limit is 2000. ![Sow\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta323c7c25882841c/6793afb77d9db22565c0ab9c/Sow_Optional_Fields.png) 7. Click **Proceed**. 8. Check if the details are correct. If yes, then click **Test Action**. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4655757fb8d67175/659d088518123eb82726ce0e/Test_Action.png) 9. You will get the response(s). Once set, click **Save and Exit**.![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt524f32006b8c5a2c/6793afb6a949fd4828ee0c31/Save_Exit.png) This sets the **ChatGPT** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/chatgpt-use-cases --- title: "ChatGPT Use Cases" description: "This guide helps you with two use cases for the ChatGPT Connector to translate texts and generate image URLs." url: "https://www.contentstack.com/docs/agent-os/chatgpt-use-cases" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: chatgpt-use-cases.md --- # ChatGPT Use Cases The Contentstack Automate [ChatGPT Connector](/docs/agent-os/chatgpt/) integrates OpenAI's ChatGPT with Contentstack's content management system, allowing users to create high-quality AI-generated content directly within Contentstack. This streamlines content creation, enhances digital experiences, and offers two automation use cases for translating text and generating image URLs. Below are two distinct ChatGPT automation use cases: 1. [For translating a specified string into a chosen language upon trigger invocation via the Function Calling action](/docs/agent-os/chatgpt-use-cases#use-case-1-translate-the-response-using-function-calling-action-based-on-sub-automation). 2. [For generating an image URL via the DALL-E 3 Image Generator action, which can then be utilized to create an asset in Contentstack](/docs/agent-os/chatgpt-use-cases#use-case-2-generate-an-image-using-the-dall-e-3-image-generator-action). ## Prerequisites To use the ChatGPT connector, you first need to add your ChatGPT account and authorize it with a valid API Key and Organization ID. ### Generate API Key and Get Organization ID from the OpenAI platform To generate an API Key and Organization ID in your [OpenAI platform account](https://platform.openai.com/account/api-keys), follow the steps given below: 1. Log in to your [OpenAI platform account](https://platform.openai.com/account/api-keys). 2. Once you log in, you will be navigated to the **API keys** section as shown below. Click the **\+ Create new secret** **key** button to generate a new API Key. ![Create\_New\_Secret\_key.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltde875e27760a2abd/6613ccc5be36f58550d962d2/Create_New_Secret_key.png) 3. On the **Create new secret key** modal, enter a **Name (Optional)** and select the appropriate **Permissions**. Click the **Create secret key** button to generate a new secret key. ![Create\_Secret\_Key\_Popup.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt26e23123712f0998/6613ccc4470f71da706155de/Create_Secret_Key_Popup.png) An API Key gets generated. Copy it to your clipboard and click the **Done** button to close the pop-up. ![Copy\_secret.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2f1895c6c62c30f9/6613ccc454d7c15d668edde2/Copy_secret.png) **Note:** Since the API Key is confidential, it is displayed only once. If you do not copy it to your clipboard, you will need to create a new secret key. 4. We will now see how to get the Organization ID. So from the left navigation panel, click **Settings**, and you will get the **Organization ID**. Copy the organization ID to your clipboard and paste it in the Organization ID field. **Note:** Make sure you save the API Key and Organization ID to your clipboard, as these will be used to [connect your ChatGPT account to Automate](#connect-your-chatgpt-account-to-automate) in the next step. ### Connect your ChatGPT Account to Automate Let’s take a look at how to add your **ChatGPT** account using the Organization ID and API Key generated above. To do so, follow the steps given below: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **ChatGPT** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt493156aab1922ee6/6613cf372b98e936331007b3/Select_Connector.png) 4. Under **Choose an Action** tab, select any one action from the list. Here we are selecting the Chat action. ![Chat\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb43aebd46624c95a/6613cf377cacdc13c9d499ec/Chat_Action.png) 5. On the **Configure Action** page, click the **\+ Add New Account** button to add your ChatGPT account. ![Add\_Chat\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt79b1070f9aeb9688/6618b33e081a8f8c4dce814b/Add_Chat_Account.png) 6. In the **Authorize** modal, enter a Title. Enter the **API Key** and **Organization ID** retrieved in the [Generate API Key and get Organization ID from the OpenAI Platform](#generate-api-key-and-get-organization-id-from-the-openai-platform) step from your OpenAI platform account. Click the **Authorize** button. ![image26.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt728bb26e4e35557a/6613d1334180c15c98e402eb/image26.png) Once done, you can go ahead and set up your ChatGPT account. ## Use Case 1: Translate the Response using Function Calling Action based on Sub Automation Let’s see an example to understand the use of the Function Calling and Function Calling Response action. In this use case, we will cover a scenario where, if a user hits a HTTP trigger URL, then a translated response will be shown. Here, we configure the Function Calling action to add different sub automations created in a project. ChatGPT analyses and returns the response based on the most precise sub automation. In the next step, after configuring the Sub Automation action, the user gets the translated output which can be formatted in string format using the Function Calling Response action. Let’s look at the setup in detail. ## Set up the Connectors 1. ### Configure HTTP Trigger 1. From the left navigation panel, click **Configure Trigger**. 2. Within the **Configure Trigger** step, click the **HTTP** connector. 3. Select a **Method**, i.e. GET/POST. ![ChatGPT\_Use\_Case\_Configure\_Trigger\_HTTP\_Trigger](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4a523060705020e6/65c391606519403e298113d9/ChatGPT_Use_Case_Configure_Trigger_HTTP_Trigger.png) 4. Click the **Proceed** button. 5. Click the **Test Trigger** button. ![ChatGPT\_Use\_Case\_Configure\_Trigger\_Test\_Trigger](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7abf4acc3b7573da/65c3916068e92389e0e57a99/ChatGPT_Use_Case_Configure_Trigger_Test_Trigger.png) 6. Click the **Save and Exit** button. ![Save\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt22681d7e55950994/6613d200cbc2fb719a816949/Save_Trigger.png) 2. ### Configure Function Calling Action 1. From the left navigation panel, click **Configure Action Step** . 2. Then, click **Action Step** to configure third-party services. 3. Within the **Configure Action** Step, click the **ChatGPT** connector. 4. Under **Choose an Action** tab, select the **Function Calling** action. 5. On the **Function Calling Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your ChatGPT account as shown in the [Connect your ChatGPT Account to Automate](#connect-your-chatgpt-account-to-automate) step. 2. Select the **API Model** from the drop-down list to generate content for the chat responses. 3. Under the Prompt Input section, click **\+ Add Prompt Text** button. 4. Select the Role and enter the **Input Query**. You can enter an input query i.e., Translate to German language. 5. Click **\+ Add Sub Automation** button to add multiple sub automations configured within your project. ChatGPT will return the most accurate response based on the sub automations. ![Chat\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc26f2d7ab408833c/6613d267ae80e2412e823987/Chat_Fields.png) 6. Click **Proceed**. 7. Click the **Test Action** button. ![ChatGPT\_Use\_Case\_Configure\_Function\_Calling\_Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc1a0cc8caa20e867/65c3935c65d14304527d74b9/ChatGPT_Use_Case_Configure_Function_Calling_Test_Action.png) 8. Click the **Save and Exit** button. You will see the response in the output. ![ChatGPT\_Use\_Case\_Configure\_Function\_Calling\_Save\_Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdfd2b416a2d4c6dd/65c3935ce7bf984aef6d3452/ChatGPT_Use_Case_Configure_Function_Calling_Save_Exit.png) 3. ### Configure Sub Automation Action 1. Within the **Configure Action Step**, click the **Sub Automation** connector. 2. Under **Choose an Action** tab, select the **Sub Automation** action. 3. On the **Sub Automation Configure Action** page, enter the details given below: 1. Select the **Sub Automation** from the drop-down. Select the **Suggested Data Element(s)** value from the drop-down. The **Suggested Data Element(s)** will suggest the function name from the previous step. 2. In the **Sub Automation Template**, select the **Suggested Data Element(s)**. The Suggested Data Element(s) will suggest the sub automation response. ![ChatGPT\_Use\_Case\_Configure\_Sub\_Automation\_Select\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf84a74a325ad70b0/65c3952e554798700780a376/ChatGPT_Use_Case_Configure_Sub_Automation_Select_Fields.png) 4. Click the **Proceed** button. 5. To test the configured action, click the **Test Action** button. ![ChatGPT\_Use\_Case\_Configure\_Sub\_Automation\_Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt31503d3f7be82171/65c3952d65d14354227d74d3/ChatGPT_Use_Case_Configure_Sub_Automation_Test_Action.png) 6. Click the **Save and Exit** button. You will see the translated string in the output. ![ChatGPT\_Use\_Case\_Configure\_Sub\_Automation\_Save\_Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0d73bda0875c452c/65c3952dfb34d012a11b0fba/ChatGPT_Use_Case_Configure_Sub_Automation_Save_Exit.png) 4. ### Configure Function Calling Response Action 1. Within the **Configure Action** Step, click the **ChatGPT** connector. 2. Under **Choose an Action** tab, select the **Function Calling Response** action. 3. On the **Function Calling Response Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your ChatGPT account as shown in the [Connect your ChatGPT Account to Automate](#connect-your-chatgpt-account-to-automate) step. 2. Select the **API Model** from the drop-down list for response predictions. **Additional Resource**: For more information about the API Models, please refer to [ChatGPT API Models](https://developers.openai.com/api/docs/models). 3. In the **Function Calling Response** field, select the output of the Function Calling action from the previous step. 4. In the **Sub Automation Response** field, select the output of the sub automation. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6feec0a89e4cb06e/6613d38afffe40fe721e2fb3/Select_Fields.png) 5. Click the **Show Optional Fields** toggle button to use these optional fields. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3261b2a5c2fe24db/6613d44b0d9945473c0320ba/Show_Optional_Fields.png) 4. Click **Proceed**. 5. Check if the details are correct. If yes, then click **Test Action**. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4655757fb8d67175/659d088518123eb82726ce0e/Test_Action.png) 6. You will get the response(s). Once set, click **Save and Exit**. You see the response in a proper string format. ![ChatGPT\_Use\_Case\_Function\_Calling\_Response\_Save\_and\_Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1a96d232797c07bf/65c396fcfb34d0ba921b0fd1/ChatGPT_Use_Case_Function_Calling_Response_Save_and_Exit.png) 5. ### Configure Response Connector 1. Within the **Configure Action Step**, click the **Response** connector. 2. Under **Choose an Action** tab, select the **Response** action. 3. On the **Response Configure Action** page, enter the details given below: 1. Based on the results of your configured action, enter the **Response Status**. 2. In the **Response Body** field, add the data you want to send as the response. Fetch the data received from the **Function Calling Response** action. ![ChatGPT\_Use\_Case\_Configure\_Response\_Select\_Field](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc1c4da080a0d786c/65c396b2c2586495f608ce8f/ChatGPT_Use_Case_Configure_Response_Select_Field.png) 3. Additionally, you can add **Response Headers** to provide any additional information. 4. Click **Proceed**. 5. To execute and test the configured action, click **Test Action**. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt92a2b2a8e44fa8f5/65969f53c4b62015a1fb814d/Test_Action.png) 6. On successful configuration, you can see the below output. Click **Save and Exit**. ![ChatGPT\_Use\_Case\_Configure\_Response\_Save\_Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt35e0e479842c060a/65c396b2245ed9816790fb52/ChatGPT_Use_Case_Configure_Response_Save_Exit.png) 6. You can check the response by activating the automation and visiting the HTTP webhook URL configured in the trigger step. ## Use Case 2: Generate an Image using the DALL-E 3 Image Generator Action Let’s see an example to understand the use of the DALL-E 3 Image Generator action. In this use case, we will cover a scenario where, if a user creates an entry in Contentstack, the entry gets updated with the image generated via the DALL-E 3 Image Generator. Creating a new entry triggers the automation, and the **DALL-E 3 Image Generator** generates an image based on the entry title fetched from the Entry trigger step. It generates an image URL based on the title. In the next step, configure the **Create an Asset** action and fetch the image generated in the previous step. An asset is created in the Contentstack Assets module. Once the asset is created, configure the **Update an Entry** action. Fetch the _asset UID_ in the **Entry Data** field to update the entry with the image generated. Let’s look at the setup in detail. ## Set up the Connectors 1. ### Configure Entry Trigger 1. Within the **Configure Trigger** step, click the **Contentstack** connector. 2. Under **Choose Trigger** tab, select the **Entry** trigger.![Select\_Entry\_Trigger](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3d6aaf8a2c256a18/65e0838ef86c2415a88e10a6/Select_Entry_Trigger.png) 3. Add your Contentstack account. For more information, refer to the [Contentstack Trigger](/docs/agent-os/contentstack-trigger/) documentation. 4. In the **Select an Event** drop-down, choose the **Entry Created** event from the list of events. 5. Select a **Stack**, and a **Branch** from the **Lookup** drop-down.![Select\_Trigger\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbe9525efb9257ba0/6613d8672b98e94d94100828/Select_Trigger_Fields.png) 6. Once done, click **Proceed**. 7. Click **Test Trigger** to test the configured trigger.![Test\_Trigger](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2b45c30a26a2d4b4/65df80ff7471411f870a3828/Test_Trigger.png) **Note:** You can specify trigger conditions that will determine whether the complete automation should run or not. The automation and conditional path will not be carried out if the trigger conditions are not satisfied. You can see the updated list of executions in the [Execution Log](/docs/agent-os/view-execution-log-of-agent-os/) section. 8. On successful configuration, you can see the below output. Click **Save and Exit**.![Save\_Exit\_Button](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt34a5a973469759fe/65df80ff2c8bef8eff621f52/Save_Exit_Button.png) 2. ### Configure ChatGPT Connector 1. Within the **Configure Action Step**, click the **ChatGPT** connector. 2. Under **Choose an Action**, select the **DALL-E 3 Image Generator** action. 3. On the **Function Calling Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your ChatGPT account as shown in the [Connect your ChatGPT Account to Automate](#connect-your-chatgpt-account-to-automate) step. 2. Provide the **Prompt Text** to generate an image response. For our use case, provide the following prompt text as shown below: “_Create an image for the Blog title -_ ” followed by the entry title fetched from the previous Entry trigger step. 3. In the **Select Image Size** drop-down, select the resolution for the image generation from the drop-down list. This will generate an image in the defined size. 4. In the **Select Style** drop-down, select the style for the image generation from the drop-down list. By default, the image is generated in **Vivid** style. 5. In the **Select Quality** drop-down, select the quality for the image generation from the drop-down list. By default, the image is generated in **Standard** quality. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt81ea977e03934512/65df811ad85aff627747c646/Select_Fields.png) 4. Click **Proceed**. 5. Check if the details are correct. If yes, then click **Test Action**.![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta52cc2d06376b06c/65df811ac59852e35cf6baf6/Test_Action.png) 6. You will get the following response. Once set, click **Save and Exit**.![Save\_Exit\_button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt88750805c51d741b/65df811a3b4c4f02c47adeb4/Save_Exit_button.png) 3. ### Configure Create an Asset Action 1. Within the **Configure Action Step**, click the **Contentstack** connector. 2. Under **Choose an Action** tab, select **Create an Asset** action. 3. On the **Create an Asset Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account. **Additional Resource:** For more information, refer to the [Contentstack Management](/docs/agent-os/about-contentstack-management-actions) documentation. 2. Select a **Stack** from the **Lookup** list and enter a **Title** for the asset. Fetch the entry title from the previous step as shown below. This will create an asset with the same name as the entry. 3. Specify a **File Name** for the asset, such as ‘_vacation.png_’ or ‘_vacation.jpeg_’. ![Create\_an\_Asset\_Field\_1.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt87389de471d27107/6618b33e56f9e8e749edf171/Create_an_Asset_Field_1.png) 4. Select the **Input URL** of the image fetched from the previous step, i.e., DALL-E 3 Image Generator action step and specify a suitable **Description** for the asset.![Create\_an\_Asset\_Field\_2.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5b4aa853ea2f646f/6618b33e2ecd881ca3608162/Create_an_Asset_Field_2.png) 5. Optionally, enable the **Show Optional Fields** toggle button to display the **Select Folder** field. In the **Select Folder** drop-down, choose a destination folder to create an asset in it. 4. Once done, click **Proceed**. 5. Click **Test Action** to test the configured action. ![Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3046ad289994d899/65df076172b3870ba422b7ab/Test_Action.png) 6. On successful configuration, you can see the below output. Click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb6d01dc023357f4b/65df810cc59852e3dff6baee/Save_Exit.png) 4. ### Configure Update an Entry Action 1. Within the **Configure Action Step**, click the **Contentstack** connector. 2. Under **Choose an Action** tab, select **Update an Entry** action. 3. On the **Update an Entry Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Contentstack account. **Additional Resource:** For more information, refer to the [Contentstack Management](/docs/agent-os/about-contentstack-management-actions) documentation. 2. Select a **Stack**, **Branch**, **Content Type**, and **Entry** from the **Lookup** list. You can fetch the UIDs for all the previously configured automation steps directly from the **Suggested Data Element(s)** list. ![Update\_Entry.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6f81f380f34a7046/6618b358569f27539baee855/Update_Entry.png) **Note**: By default, the **main** branch is selected (even if the Branch field is empty). 3. In the **Entry Data** field, you can add a predefined schema template for your entry data. This will add a structure to provide your entry data in a particular format for different fields. **Note**: You must configure the entry data for **JSON Rich Text Editor**, **Custom**, and **Experience Container** fields manually. For our use case, provide the _asset UID_ created in the Create an Asset step to add the image in the entry. ![Update\_Entry\_2.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9c9a6d4937a47ed0/6618b358569f27230faee851/Update_Entry_2.png) **Note**: Enter the data in **JSON** format only. 4. Optionally enable the **Show Optional Fields** toggle button to display additional fields. Select the **Locale** and check the **Include branch** checkbox to fetch these details in addition to the entry details. 4. Once done, click **Proceed**. 5. Click **Test Action** to test the configured action.![Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3046ad289994d899/65df076172b3870ba422b7ab/Test_Action.png) 6. On successful configuration, you can see the below output. Click **Save and Exit**.![Save\_Exit\_buttton.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9698aca689079e0e/65df8129eb51e37a39115d5c/Save_Exit_buttton.png) 7. Navigate to your entry and refresh the page to see the updated entry.![Final\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3a36bfd38d99191d/65df8128d85aff229247c64e/Final_Output.png) --- ## URL: https://www.contentstack.com/docs/agent-os/circleci --- title: "CircleCI" description: "CircleCI" url: "https://www.contentstack.com/docs/agent-os/circleci" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: circleci.md --- # CircleCI The CircleCI action connector allows you to configure and integrate the CircleCI services to your project. CircleCI is a CI/CD delivery platform that provides services to implement DevOps practices. It automates the process of creating the build and deploying the project to CI/CD pipeline. ## Set up the CircleCI action Connector Follow the given instructions to set up the CI/CD action connector: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the Configure Action Step, click the **CircleCI** connector. ![Select\_the\_Connector\_Circleci.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5fd181090e8704dd/6527c9d57986d470318f3834/Select_the_Connector_Circleci.png) 4. Under **Choose an Action** tab, select the Trigger a Pipeline action. ![Select\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7923445dbf251200/63db55bc2d94ad4c89edca29/Select-Action.png) 5. In the **Configure Action** tab, click **\+ Add New Account** to add your CircleCI account. ![Add\_New\_Account](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt069683a6baea4735/63db55bcddb7a921030a7f07/Add-New-Account.png) 6. Enter the **Title** and **API Token**. Once done, click **Authorize**. ![Authorize\_Account](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt39a6f0e37311aba1/63db55bc0cf395166a6e24cb/Authorize-Account.png) 7. To generate the API Token for your CircleCI account, follow these steps: 1. Navigate to your CircleCI console and click **User Settings**.![User\_Setting](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf75d3aeb81dc2458/63db56ffc73e0910c5408c8f/User-Setting.png) 2. Click the **Personal API Tokens** tab, then click **Create New Token**. ![Personal\_API\_Token](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb521cdbebf9214ae/63db56ffffb41a7454dbfa00/Personal_API_Token.png) **Additional Resource:** For more information, refer to the [Managing API’s](https://circleci.com/docs/guides/toolkit/managing-api-tokens/) doc. 8. Select the **VCS type** textbox and select the repo type from the drop-down. ![Select\_VCS\_type](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb2f216818a956d0e/63db55bd5e9f5911307af893/Select-VCS-type.png) 9. Enter details such as **Organization name**, **Repository name**, **Branch/Tag**, and **Branch/Tag** name in their respective fields. Once done, click **Proceed**.![Select\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt881f4c136879824a/63db55bc9c202c10ccaf622f/Select-Fields.png) 10. Click **Test Action**. ![Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt32cfef9f9cbdb0d1/63db55bc771d7f10c63c3205/Test-Action.png) 11. You should see the output as follows. If all looks good, click **Save and Exit** to finish the process. ![Save\_Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt86817aa04518c9c2/63db55bde480c910d1acbd56/Save-Exit.png) This sets your **CircleCI** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/clone-an-automation --- title: "Clone an Automation" description: "Clone an Automation" url: "https://www.contentstack.com/docs/agent-os/clone-an-automation" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: clone-an-automation.md --- # Clone an Automation You can duplicate an automation from the automations listing page. A copy of the existing automation and all the current configurations is created, i.e., trigger(s) and action(s). Since the original and the cloned automation are in the same project, they can share important attributes, such as invited users and connected apps. Creating a duplicate version of an automation can be useful for a number of reasons: * You can create a backup of a working automation in case you need to revert to a previous version. * You can duplicate a live automation to make changes and test them in duplicate. Once the updates are tested, you can replace the original with the updated version. This way, you do not have to change a live automation. * Suppose you need to create an automation similar to another one. In that case, you can create a clone of the similar automation and have a nice starting point from which to begin building your steps. To clone an automation, perform the steps given below: 1. On the **Automations** listing page, click the **clone** icon. ![Clone\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt929a4072f9f79cad/699bcdb58923a00008498a84/Clone_Icon.png) 2. On the **Clone Automation** modal, provide the **Automation Name** and **Select Project** from the dropdown to clone the automation to the selected project. 3. Once you have updated the details, click **Clone**. ![Clone\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt689742509b94d67a/699bcdb5676f8800085c09f8/Clone_Button.png) 4. You can see the clone created for the automation in the selected project.![Cloned\_Automation\_on\_listing\_page.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9b241d4839e2faa5/699bcdb5e8917700087c2736/Cloned_Automation_on_listing_page.png) 5. Alternatively, go to the automation **Settings** page and click **Clone Automation** to duplicate the automation. ![Clone\_settings\_page.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt726350aa42f65ce6/699bcdb58923a00008498a88/Clone_settings_page.png) **Note:** You can now throttle the execution for your automations to avoid rate limit. For more information, refer to the [Throttle Execution](/docs/agent-os/throttle-execution) document. If the automation is cloned in the same project, some steps may appear as tested and untested. If any action has a dependency on the previous step and that step remains untested, then all the subsequent steps become untested. You can find the dependency by checking the automation step number in the active action step. If the current step fetches value from the untested step, it becomes dependent on the previous step to testify as tested. **Note:** If a user clones an automation to a different project, all the automation steps become untested and the user needs to configure connected apps to activate the automation. ### What if you have Project Variables defined in your project? If you have defined project variables in your project and used them in your automation, then you can copy the project variables to the destination project for the cloned automation to work properly. 1. In the Clone Automation modal, provide the **Automation Name** and **Select Project** from the dropdown to clone the automation to the selected project. 2. Click **Next Step** to view and copy the project variables in the destination project. ![Next\_Step.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2114e0da803f135a/656dbe1907f01a7544bf0451/Next_Step.png) **Note:** Project Variables are defined at project level. 3. Enable the toggle to copy the variables. 4. Click **Clone** to clone the automation. ![Clone\_Button\_New.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt45a84e1b1ab1b92a/656dbe190e4fd115ee57fc4a/Clone_Button_New.png) 5. You will see the cloned automation along with the project variables in the destination project. ![Cloned\_Automation.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt186c29da47bc5537/656dbe360e4fd163d957fc4e/Cloned_Automation.png) --- ## URL: https://www.contentstack.com/docs/agent-os/cloudinary --- title: Automations guides and connectors - Cloudinary description: Set up the Cloudinary action connector to automate updating metadata for assets in a Cloudinary account. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/cloudinary product: Automate doc_type: connector-guide audience: - developers - automation-builders version: v1 last_updated: 2026-03-26 filename: cloudinary.md --- # Automations guides and connectors - Cloudinary This page describes the Cloudinary connector in Automate and explains how to set it up to update asset metadata. It is intended for developers and automation builders configuring third-party action steps, and should be used when you need to authorize a Cloudinary account and test an Update Metadata action. ## Cloudinary Cloudinary is an image and video management tool for websites and mobile applications covering everything from uploading, storage, optimization, and delivery. With Automate, you can now easily automate the process of updating the metadata of all the assets present in a cloudinary account. ## Set up Cloudinary Perform the following steps to set up the Cloudinary action connector: - Click **Configure Action Step **from the left navigation panel. - Click **Action Step **to configure third-party services. - Within the **Configure Action Step**, click the **Cloudinary** connector. - Under **Choose an Action** tab, select the **Update Metadata **action. - In the **Configure Action** tab, click **+ Add New Account **to add your Cloudinary account. - In the **Authorize** pop-up window, provide details such as **Cloud Name**, **API Key**, and **API Secret**.To generate Cloud Name, API Key, and API Secret, log in to the Cloudinary dashboard and perform the following steps: Click the **Dashboard** tab in the left navigation. - Under the “Product Environment” section, you will see the **Cloud Name**. Click **Go to API Keys**, and click the **+ Generate New API Key **button to create a new API key.You will see the **API Secret**. Click the **Eye **icon and provide the login password. Click **Approve **to view the API Secret. For more information, refer to the [Admin API reference](https://cloudinary.com/documentation/admin_api) document. - Once done, click **Authorize**. - Select the **MetaData** from the **Lookup** list. Cloudinary structured metadata allows you to define asset fields, populate them with values programmatically or via the Media Library, and perform searches on them. You can also add validation rules, set default values, and define fields as mandatory. - In the **Body** field, enter the metadata field that you want to update. It should be in JSON format. - Click **Proceed**. - To execute and test the configured action, click **Test Action**. - On successful configuration, you can see the below output. Click **Save and Exit**. - Navigate to Cloudinary to check the progress. This output should show the mandatory field disabled. This sets the **Cloudinary** action connector. ## Common questions **How do I get the Cloud Name, API Key, and API Secret?** Log in to the Cloudinary dashboard, find the **Cloud Name** under “Product Environment”, and use **Go to API Keys** and **+ Generate New API Key ** to create a key and view the **API Secret**. **What action should I select for updating asset metadata?** Under **Choose an Action** tab, select the **Update Metadata **action. **What format should the Body field use?** In the **Body** field, enter the metadata field that you want to update. It should be in JSON format. **How do I verify the connector is working?** Click **Test Action**, then click **Save and Exit**, and navigate to Cloudinary to check the progress. --- ## URL: https://www.contentstack.com/docs/agent-os/cloudinary-trigger --- title: Automations guides and connectors - Cloudinary description: Set up the Cloudinary action connector to automate updating metadata for assets in a Cloudinary account. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/cloudinary product: Automate doc_type: connector-guide audience: - developers - automation-builders version: v1 last_updated: 2026-03-26 filename: cloudinary-trigger.md --- # Automations guides and connectors - Cloudinary This page describes the Cloudinary connector in Automate and explains how to set it up to update asset metadata. It is intended for developers and automation builders configuring third-party action steps, and should be used when you need to authorize a Cloudinary account and test an Update Metadata action. ## Cloudinary Cloudinary is an image and video management tool for websites and mobile applications covering everything from uploading, storage, optimization, and delivery. With Automate, you can now easily automate the process of updating the metadata of all the assets present in a cloudinary account. ## Set up Cloudinary Perform the following steps to set up the Cloudinary action connector: - Click **Configure Action Step **from the left navigation panel. - Click **Action Step **to configure third-party services. - Within the **Configure Action Step**, click the **Cloudinary** connector. - Under **Choose an Action** tab, select the **Update Metadata **action. - In the **Configure Action** tab, click **+ Add New Account **to add your Cloudinary account. - In the **Authorize** pop-up window, provide details such as **Cloud Name**, **API Key**, and **API Secret**.To generate Cloud Name, API Key, and API Secret, log in to the Cloudinary dashboard and perform the following steps: Click the **Dashboard** tab in the left navigation. - Under the “Product Environment” section, you will see the **Cloud Name**. Click **Go to API Keys**, and click the **+ Generate New API Key **button to create a new API key.You will see the **API Secret**. Click the **Eye **icon and provide the login password. Click **Approve **to view the API Secret. For more information, refer to the [Admin API reference](https://cloudinary.com/documentation/admin_api) document. - Once done, click **Authorize**. - Select the **MetaData** from the **Lookup** list. Cloudinary structured metadata allows you to define asset fields, populate them with values programmatically or via the Media Library, and perform searches on them. You can also add validation rules, set default values, and define fields as mandatory. - In the **Body** field, enter the metadata field that you want to update. It should be in JSON format. - Click **Proceed**. - To execute and test the configured action, click **Test Action**. - On successful configuration, you can see the below output. Click **Save and Exit**. - Navigate to Cloudinary to check the progress. This output should show the mandatory field disabled. This sets the **Cloudinary** action connector. ## Common questions **How do I get the Cloud Name, API Key, and API Secret?** Log in to the Cloudinary dashboard, find the **Cloud Name** under “Product Environment”, and use **Go to API Keys** and **+ Generate New API Key ** to create a key and view the **API Secret**. **What action should I select for updating asset metadata?** Under **Choose an Action** tab, select the **Update Metadata **action. **What format should the Body field use?** In the **Body** field, enter the metadata field that you want to update. It should be in JSON format. **How do I verify the connector is working?** Click **Test Action**, then click **Save and Exit**, and navigate to Cloudinary to check the progress. --- ## URL: https://www.contentstack.com/docs/agent-os/code-block --- title: "Code Block" description: "The Code Block Connector executes the JavaScript code and returns the expected output." url: "https://www.contentstack.com/docs/agent-os/code-block" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: code-block.md --- # Code Block The Code Block connector lets you execute the JavaScript code and returns the expected output to assist in complex data transformation. It helps developers and software engineers to automate the execution of small code snippets. **Additional Resource**: JavaScript is an advanced programming language. For more information, refer to the [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript) documentation. ## Set up the Code Block Connector Perform the following steps to set up the Code Block action connector: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Code Block** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt346af1457fcb56aa/6684d76162008a267f10c62a/Select_Connector.png) 4. Under **Choose an Action** tab, select the **JavaScript Code** action. ![Select\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc6b4d45a991f298c/6625f55cbb6372773d1ddde7/Select_Action.png) 5. On the **Javascript Code Configure Action** tab, enter the details given below: 1. Under the **Select Account** drop-down, select one of the accounts connected to your project. The sensitive information, such as access code, secret key, API key, etc., is fetched from the selected account. **Note**: _Select Account_ is an optional field. You can still configure the action without selecting an account. ![Select\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt240bb310b9bce0da/6625f55cb0ec770f52d6c630/Select_Account.png) 2. Provide the **Input Name** and **Input Value** you want to use in your JavaScript code. You can get the input data from the previous step. 3. Provide the **JavaScript Code** for execution. You can debug the code at multiple lines using the console.log code. This will help identify the errors or failures at different stages of the code. You can view the console.log in the payload, once you test the action as shown in step 8. ![Code\_Block\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdbb1762e854c2e42/668243a2b6a6c8a2248fa935/Code_Block_Fields.png) **Note:** 1. The automation code uses [Node.js 18.x.x](https://nodejs.org/en/download) version for executions. 2. The console.log output cannot be viewed in the payload if the string exceeds 4 kilobytes in length. 6. Click **Proceed**. 7. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd8a729378083db06/6625f55cc9de461eead47388/Test_Action.png)You will get the response. ![Save\_and\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt28afb7b67c6f2894/6625f54fcac848005f28bd9d/Save_and_Exit.png)For unsuccessful execution, an error message is displayed. This message specifies the type of error and the line number of the error to trace the issue. ![Error\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltba23b821ef8d7639/6625f54eb054410a4399c3b5/Error_output.png) 8. Once set, click **Save and Exit**. ![Save\_Exit\_Codeblock.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt98d84a71f9e9d8f2/668243a2b1132449753a3a5c/Save_Exit_Codeblock.png) This sets the **Code Block** action connector. ## Examples ### Fetching the values of JSON attributes ``` try{ const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); return data; }else{ throw new Error("Network response was not OK"); } }catch(err){ throw new Error(err); } ``` ![Save\_Exit\_Use-Case.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaaf150488f15f979/6625f54fb054416fca99c3bd/Save_Exit_Use-Case.png) **Note**: For such scenarios, using the HTTP Action connector is preferable. For more information, please refer to the [HTTP Action Connector](/docs/agent-os/http-action/) document. ### Using regular expressions to check whether the email is valid ``` const re = /\S+@\S+\.\S+/g; // check if the email is valid let result = re.test(input.email); if (result) { return "The email is valid."; } else { return "The email is not valid."; } ``` ![Valid\_Email\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt942239ccf095b89a/6625f55c85518c6db355605f/Valid_Email_Output.png) ### Comparing the calendar dates ``` let today = new Date(); let customDate = new Date("2019/08/03"); // (YYYY-MM-DD) if (today.getTime() < customDate.getTime()) return "today is lesser than customDate"; else if (today.getTime() > customDate.getTime()) return "today is greater than customDate"; else return "both are equal"; ``` ![CustomDate\_Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcf1af78a79e179d5/6625f54ec7544004b7cebb7b/CustomDate_Save_Exit.png) ### Using Lodash library for sorting the age of users ``` const users = [ { 'user': 'fred', 'age': 48 }, { 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }, { 'user': 'barney', 'age': 34 } ]; // sort by user in descending order return _.orderBy(users, ['user'], ['desc']); ``` ![Save\_Exit\_Loadash.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltecc80ca301ef65ba/6625f54eb05441437a99c3b9/Save_Exit_Loadash.png) ### Generating Random Numbers ``` let min = 20.4; let max = 29.8; let randomNum = Math.random() * (max - min) + min; return randomNum; ``` ![Save\_Exit\_Random\_Numbers.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8f31d08d9bdb2745/6625f54eca88742626ed20fe/Save_Exit_Random_Numbers.png) ## Limitations 1. The execution time limit is **5** seconds only. 2. You can perform up to **10,000** code block executions per month per organization. 3. You are not allowed to use external libraries, or to install or import **npm** **modules**. Only the **standard node.js** library and the fetch and lodash package are available in the Code Block connector. --- ## URL: https://www.contentstack.com/docs/agent-os/components-of-an-agent --- title: "[Automations guides and connectors] - Components of an Agent" description: Components of an Agent in Contentstack Agent OS, including Trigger, Instructions, and Tools. url: https://www.contentstack.com/docs/agent-os/components-of-an-agent product: Contentstack Agent OS doc_type: guide audience: - developers - administrators version: early-access last_updated: 2026-03-25 filename: components-of-an-agent.md --- # [Automations guides and connectors] - Components of an Agent This page explains the three core building blocks used to configure agents in Contentstack Agent OS—Trigger, Instructions, and Tools. It is intended for users setting up or managing agents and should be used when defining when an agent runs, how it behaves, and what actions it is allowed to perform. ## Components of an Agent **Note:** **Agent OS** is currently in **Early Access**. Features may change and limitations may apply. We recommend using it in non-production environments until general availability. For more information, contact [support](mailto:support@contentstack.com). Agents in Contentstack Agent OS are configured using **three building blocks**. Each block answers one simple question: - **Trigger:** When should the agent run? - **Instructions:** What should the agent do, and how should it behave? - **Tools: **What is the agent allowed to use to get work done? ## Trigger Triggers define the starting point. A trigger is the event that causes your agent to run automatically. ### When to use a trigger Use triggers when you want an agent to run: - Whenever a content or system event occurs - On a defined schedule - When an external signal is received (through connected capabilities) ## Instructions The **Instructions** section, the **most crucial aspect**, defines the agent’s persona and domain context, provides detailed rules or guidelines it must follow, and specify exactly how its responses should be structured, formatted, or written (for example, in a particular language or tone). Clear and precise instructions ensure the agent consistently acts in line with your goals and delivers the outputs you expect. Based on the agent description, a brief set of instructions is fetched and displayed. You can edit the details to add or remove those by simply selecting the text. ### What good instructions include - **Role: **What the agent is (e.g., “SEO assistant”, “Release note summarizer”) - **Goal:** What it must accomplish - **Rules: **What it must always do / never do - **Output format: **The structure you want (bullets, table, short paragraph, etc.) ## Tools Tools define the actions an agent is allowed to perform. They are the bridge between an agent’s understanding and real system behavior. An agent does not have unlimited access to the platform. It can only act through the tools you explicitly give it. ### What tools enable Tools allow an agent to **participate in real workflows**, not just generate responses. With tools, an agent can: - Interact with Contentstack data (such as creating or updating entries). - Invoke automations to run predefined workflows. - Communicate with external systems through connectors. - Delegate specialized work to other agents. ## Common questions ### What are the three building blocks of an agent in Agent OS? Agents in Contentstack Agent OS are configured using **three building blocks**: **Trigger**, **Instructions**, and **Tools**. ### When should I use a trigger? Use triggers when you want an agent to run whenever a content or system event occurs, on a defined schedule, or when an external signal is received (through connected capabilities). ### Why are instructions considered the most crucial aspect? The **Instructions** section defines the agent’s persona and domain context, provides detailed rules or guidelines it must follow, and specify exactly how its responses should be structured, formatted, or written. ### What do tools allow an agent to do? Tools define the actions an agent is allowed to perform and allow an agent to participate in real workflows, including interacting with Contentstack data, invoking automations, communicating with external systems through connectors, and delegating specialized work to other agents. --- ## URL: https://www.contentstack.com/docs/agent-os/constructor --- title: "Constructor" description: "Constructor" url: "https://www.contentstack.com/docs/agent-os/constructor" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-24" filename: constructor.md --- # Constructor The Constructor connector in Contentstack's Agent OS enables e-commerce platforms to enhance their product search capabilities. This action connector allows you to store product details of your e-commerce website in an organized manner for faster search results. Additionally, it allows you to delete product details when needed, ensuring efficient data management. ## Prerequisites To use the Constructor connector, you first need to connect your [Constructor account](https://app.constructor.io/users/sign_in) using the following steps: 1. [Log in to your Contentstack account](https://www.contentstack.com/login) and click **Automations** in the top navigation panel. 2. Select your project and then the automation. 3. Click **Configure Action Step** from the left navigation panel and then **Action Step** to configure third-party services. 4. Within the **Choose Connector**, click the **Constructor** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteee801dce07ac524/67ab1582d4104ee37f5d84b6/Select_Connector.png) 5. Under **Choose an Action**, select any one action from the list. Here, we are selecting the **Index an Entry** action.![Index\_an\_Entry\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltec7ad945802aa856/67ab157a286df075a1f3546c/Index_an_Entry_Action.png) 6. In the **Configure Action** section, click **\+ Add New Account** to add your Constructor account.![Add\_Account\_Inde.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9e814db0af53b956/67ab157aefe40ed0ed8f5b4c/Add_Account_Inde.png) 7. In the **Authorize** modal, enter the API Token and Key. To generate the API Token and Key, log in to the Constructor dashboard and perform the following steps: 1. From the left navigation, click the **Integration** tab. 2. Under the **API** **Integration** section, click **New** **Token**. ![API\_Token.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc77fdb7a3ac5b1f5/67ab157ad15087d8a75254b8/API_Token.png) 3. Click the **Workspace** tab in the left navigation. 4. Under the **Indexes** section, copy the **INDEX** **KEY** of the index to which you want to add or delete the data. ![Index\_Key.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7a2fc25d16414bb6/67ab157aefe40e1c258f5b50/Index_Key.png) **Note:** Refer to the [Authentication](https://docs.constructor.com/reference/main-authentication) document for more details. 8. Click the **Authorize** button. ![Authorize\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6152c94924d940d0/67ab157a6a26d6b34f53fe3f/Authorize_Account.png) This sets up your Constructor account for the Constructor connector. ## Set up the Constructor Connector Perform the following steps to set up the Constructor connector: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Constructor** connector. **Note:** You can sort and search the connector(s) based on the filter. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteee801dce07ac524/67ab1582d4104ee37f5d84b6/Select_Connector.png) 4. Under **Choose an Action**, you will see the actions: **Index an Entry** and **Delete an Entry**.![Select\_Actions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0e0c90c264915b85/67ab1581e134772f15ed8a3e/Select_Actions.png) Once done, you can start setting up your Google Vertex connector. ### Index an Entry The **Index an Entry** action in the Constructor connector allows you to add product details in your e-commerce website in an organized manner. This action enhances the overall search experience, making it easier for customers to find relevant products quickly. 1. Under **Choose an Action** tab, select the **Index an Entry** action. 2. On the **Index an Entry Configure Action** page, enter the details given below: * Click **\+ Add New Account** button to connect your Constructor account as shown in the [Prerequisites](#prerequisites) step. * In the **Body** section, add the product details such as **id, name, data, and URL**. **Note:**You must define the mandatory parameters - _id_ and _name_, in your JSON array. Refer to the [Items](https://docs.constructor.com/reference/catalog-management-items) document for more details on the pre-defined parameters. ![Body\_Index.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt63568a1665673e67/67ab157a61b3d26c070ebe64/Body_Index.png) * Optionally, enable the **Show Optional Fields** toggle button to display the **Index Section**, and the **Email** **Address** fields. In the **Index** **Section** field, select the specific section within an index where you want to add the entry item. Additionally, you can specify an **Email** **Address** to notify a user in case the index update fails. **Note:** You can specify any index section and add the data. ![Show\_Optional\_Fields\_Index\_Entry.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt154043388ac6ca4b/67ab1581254c9b6d65ea875d/Show_Optional_Fields_Index_Entry.png) 3. Click the **Proceed** button. 4. Click the **Test Action** button to test the configured action.![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdcc162c524347d5a/67ab15810f97a22d5f33cf04/Test_Action.png) 5. Click the **Save and Exit** button. ![Save\_Exit\_Index.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted1f5226c2624fb2/67ab1581d1508731085254bc/Save_Exit_Index.png) 6. To view the added product details, navigate to the Constructor dashboard and click the **Products** section.![Output\_Index.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8a68405438837f2f/67ab158161b3d2335d0ebe68/Output_Index.png) ### Delete an Entry The **Delete** **an Entry** action in the Constructor connector allows you to remove product details from your e-commerce website's index. This ensures that outdated or irrelevant product information is no longer accessible in search results, keeping your product catalog up to date. By deleting an entry, you maintain accurate and efficient data management for an optimized search experience. 1. Under **Choose an Action** tab, select the **Delete an Entry** action. 2. On the **Delete an Entry Configure Action** page, enter the details given below: * Click **\+ Add New Account** button to connect your Constructor account as shown in the [Prerequisites](#prerequisites) step. * In the **Body** section, add the product details such as id, name, data, and URL that you want to delete from the Constructor index. **Note:** You must define the mandatory parameter - _id_ in your JSON array. Refer to the [Items](https://docs.constructor.com/reference/catalog-management-items) document for more details on the pre-defined parameters. ![Body\_Delete.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt82a48ac201054567/67ab157ad3065668e2464395/Body_Delete.png) * Optionally, enable the **Show Optional Fields** toggle button to display the **Index** **Section**, and the **Email Address** fields. In the **Index** **Section** field, select the specific section within an index from which you want to delete the entry item. Additionally, you can specify an **Email** **Address** to notify a user if the index update fails. ![Show\_Optional\_Fields\_Delete\_Entry.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0e0112b857bb475f/67ab1581890f91161351a66c/Show_Optional_Fields_Delete_Entry.png) 3. Click the **Proceed** button. 4. Click the **Test Action** button to test the configured action.![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdcc162c524347d5a/67ab15810f97a22d5f33cf04/Test_Action.png) 5. Click the **Save and Exit** button. ![Save\_Exit\_Delete.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb8d9ceec5c8cde86/67ab158248089869eccb5769/Save_Exit_Delete.png) 6. To view the deleted product details, navigate to the Constructor dashboard and click the **Products** section. This sets up the **Constructor** connector. --- ## URL: https://www.contentstack.com/docs/agent-os/contentstack-delivery --- title: "Contentstack Delivery" description: "Use the Contentstack Delivery connector to fetch assets and entries." url: "https://www.contentstack.com/docs/agent-os/contentstack-delivery" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: contentstack-delivery.md --- # Contentstack Delivery The Contentstack Delivery Connector lets you fetch entries and assets published in the environment. The Contentstack Delivery connector currently contains four actions: **Get All Assets**, **Get All Entries**, **Get a Single Asset**, and **Get a Single Entry**. **Note:** With the Contentstack Delivery connector, you can **only** fetch the **published** entries/assets. Details of each action are covered in their respective sections. ## Prerequisites To use the Contentstack Delivery connector, you first need to add your [Contentstack account](https://www.contentstack.com/login). To do so, follow the steps given below: ### Connect your Contentstack Account 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Contentstack** connector. ![Contentstack\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6cc49e75a39ae1e2/65fd9dda3caa575b6fcfb6c6/Contentstack_Action.png) 4. Select the **Contentstack Delivery** connector to retrieve published entries and assets. ![Select\_Category.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt22d535d70e6802a5/65fd9ddb6f7fa76e95eac92a/Select_Category.png) 5. Under **Choose an Action** tab, select any one action from the list. Here, we are selecting the **Get All Assets** action. ![Get\_All\_Asset\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt525567dad5e20196/65fd9ddaf6f513062eba182a/Get_All_Asset_Action.png) 6. On the **Configure Action** page, click the **\+ Add New Account** to add your Contentstack account. 7. In the **Authorize** modal, enter a **Title**. Enter the **Delivery** **Token** of your stack. Click the **Authorize** button. ![Authorize\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4df2537033212963/65fd9dda0901368ee0d9672a/Authorize_Button.png) **Additional Resource:** To learn more about Delivery Tokens, refer to the [Working with Delivery Tokens](/docs/headless-cms/overview-of-tokens#work-with-delivery-tokens) guide. Once done, you can go ahead and set up your Contentstack Delivery connector. ## Set up the Contentstack Delivery Connector Perform the following steps to set up the Contentstack Delivery connector: 1. From the left navigation panel, click **Configure Action Step**. 2. Then, click **Action** **Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Contentstack** connector. ![Contentstack\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6cc49e75a39ae1e2/65fd9dda3caa575b6fcfb6c6/Contentstack_Action.png) **Note:** You can sort and search the connector(s) based on the filter. 4. Select the **Contentstack** **Delivery** connector to retrieve published entries and assets. ![Select\_Category.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt22d535d70e6802a5/65fd9ddb6f7fa76e95eac92a/Select_Category.png) 5. Under **Choose an Action**, you will see four actions: **Get All Assets**, **Get All Entries**, **Get a Single Asset**, and **Get a Single Entry**. ![Select\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7aa86ab019083fe5/65fd9ddb8272860db6220f86/Select_Action.png) Let’s look at each of them in detail. ### Action 1: Select the **Get All Assets** action The **Get All Assets** action lets you fetch details of all the published assets in a stack. To use the Get All Assets action, follow the steps below: 1. Under **Choose an Action** tab, select the **Get All Assets** action. 2. On the **Get All Assets Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](#connect-your-contentstack-account) step. 2. Select a **Stack** and an **Environment** from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt707569208af760af/65fdbc428f44444264c3a202/Select_Fields.png) 3. Optionally, enable the **Show Optional Fields** toggle button to display the **Branch**, **Locale**, and **Version** fields. **Note:** By default, the main branch is selected (even if the Branch field is empty). 4. You can also include the count of the assets, metadata details, fallback (to fetch the assets in the defined fallback language), and publish details by clicking the respective checkboxes. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0f6c9cf2ef84828a/65fdbc42bcecd46573f591a8/Show_Optional_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test** **Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4d486181daf89b4f/65c0b582b3cfc0fabde5dd71/Test_Action.png) 5. On successful configuration, you can see the below output. Click **Save and Exit**. ![Save-Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte13bee900ee1f31f/6604283c53e37d261efc3671/Save-Exit.png) ### Action 2: Select the **Get All Entries** action The **Get All Entries** action fetches all the published entries in a stack. To use the Get All Entries action, follow the steps below: 1. Under **Choose an Action** tab, select the **Get All Entries** action. 2. On the **Get All Entries** **Configure** **Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](#connect-your-contentstack-account) step. 2. Select a **Stack**, **Branch**, **Content** **Type**, and **Environment** from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte4df22d3bca6b7bb/65fdbc546f7fa71810eaca71/Select_Fields.png) **Note:** By default, the main branch is selected (even if the Branch field is empty). 3. Optionally, enable the **Show Optional Fields** toggle button to display the **Entry Limit**, **Skip Entry (Pagination)**, **Entry Version**, and **Select Locale** fields. You can also include the count of the entries, fallback (to fetch the assets in the defined fallback language), metadata details, branch, and publish details by clicking the respective checkboxes. 4. Provide your data in the **Customized Data (query)** field to filter the entry. Enter your data in the **Key**, **Operator**, and **Value** fields. In the **Customized Data (query)** field, you can filter the entry based on _Updated At/Created At_ options. For example, you can fetch all the entries updated after a certain time and date as shown below: ![Show\_optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4efa6ffd961ed7c6/65fdbc548272867f4f22109f/Show_optional_Fields.png) **Note:** You can retrieve entries created on a specific date by using the date-specific operators such as "Less than specified number" or "Greater than specified number" for the Created At and Updated At keys. You can view the **Lookup** data for all the fields present in the content type including **Reference**, **Modular** **Blocks** and **Group** fields. Using the **Operator** filter you can sort the data. In the **Reference** field, enter the ID of the reference field of your content type. ![Refeernce.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5aa2fb53b4a3c1c3/65fdbc531741ea599b6507b8/Refeernce.png) 3. Click **Proceed**. 4. Click **Test** **Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0a162e895ff41526/65fdbc533caa57e2a1cfb798/Test_Action.png) 5. The output will be shown as follows. Click the **Save** **and** **Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9c879005e62cfd5e/65fdbc530bda8410db12dae8/Save_Exit.png) ### Action 3: Select the **Get a Single Asset** action The **Get a Single Asset** action lets you fetch details of a single asset published in a stack. To use the Get a Single Asset action, follow the steps below: 1. Under **Choose an Action** tab, select the **Get a Single Asset** action. 2. On the **Get a Single Asset Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](#connect-your-contentstack-account) step. 2. Select a **Stack**, **Environment**, and **Asset** from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt13c02f20e5047fd6/65fdbc638f44445621c3a216/Select_Fields.png) **Note:** By default, the main branch is selected (even if the Branch field is empty). 3. Optionally, enable the **Show Optional Fields** toggle button to display the **Branch** field. You can also include the publish and metadata details by clicking the respective checkboxes. ![Show\_optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt05efb29ff98d48f5/65fdbc63949724279df627d2/Show_optional_Fields.png) 3. Once done, click **Proceed**. 4. Click Test **Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbe3506163cf250d7/65fdbc63f6f5130e37ba1979/Test_Action.png) 5. On successful configuration, you can see the below output. Click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc32908bcf2ad99ae/660428e853e37d0904fc3679/Save_Exit.png) ### Action 4: Select the **Get a Single Entry** action The **Get a Single Entry** action lets you fetch details of a single entry published in a stack. To use the Get a Single Entry action, follow the steps below: 1. Under **Choose an Action** tab, select the **Get a Single Entry** action. 2. On the **Get a Single Entry Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](#connect-your-contentstack-account) step. 2. Select a **Stack**, **Branch**, **Content** **Type**, **Environment**, and **Entry** from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4145836bfa8fe71a/65fdbc72d057558ee30001c9/Select_Fields.png) **Note:** By default, the main branch is selected (even if the Branch field is empty). 3. Optionally, enable the **Show Optional Fields** toggle button to display additional fields. Select the entry **Locale** and **Reference** fields. In the **Reference** field, enter the ID of the reference field of your content type. You can also include the metadata and publish details along with fallback (to fetch an entry defined in a particular fallback) and branch checkboxes to fetch these details in addition to the entry details. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1e79764ca2cec3cf/65fdbc72cddae0f174b008a7/Show_Optional_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfaede93e70ce7bee/65fdbc72df69723fce39c70c/Test_Action.png) 5. On successful configuration, you can see the below output. Click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt29ba086afd560023/65fdbc726f3127430f94e71b/Save_Exit.png) This sets the **Contentstack Delivery** connector. --- ## URL: https://www.contentstack.com/docs/agent-os/contentstack-management-assets-actions --- title: "Contentstack Management - Assets Actions" description: "Use the Contentstack Management Assets actions to automate asset based operations." url: "https://www.contentstack.com/docs/agent-os/contentstack-management-assets-actions" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: contentstack-management-assets-actions.md --- # Contentstack Management - Assets Actions Within Contentstack, all uploaded files such as images, videos, PDFs, audio files, and more are stored in your repository for later access. This repository, where uploaded files reside, is referred to as [Assets](/docs/headless-cms/about-assets/). You can perform asset based operations using the following Contentstack Management Assets actions. ![All\_Assets.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt93274a9342d93f7b/66f287383666b0303abacf4e/All_Assets.png) Let’s look at each of them in detail. ## Create an Asset This action lets you create a new asset in Contentstack. 1. Under **Choose an Action** tab, select the **Create an Asset** action. 2. On the **Create an Asset** Configure Action page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions)step. 2. Select a **Stack** from the **Lookup** list and enter a **Title** for the asset. 3. Specify a **File Name** for the asset, such as ‘NewAsset.png’ or ‘NewAsset.jpeg.’ ![Select\_Fields\_Create\_Asset.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9faeedf8be64ea05/682b0e400cda2652c0fc2a93/Select_Fields_Create_Asset.png) 4. Enter the **Input URL** of the image you want to create and specify a suitable **Description** for the asset. ![Select\_Field2\_Create.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6356760ed385e683/682b0e404d67fa72d0589152/Select_Field2_Create.png) 5. Optionally, enable the **Show Optional Fields** toggle button to display the **Select Folder** field. 6. In the **Select Folder** drop-down, choose a destination folder to store your asset. ![Select\_Folder\_Create.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfcc4354399fd5714/682b0e402b2719150e5e6041/Select_Folder_Create.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. 5. On successful configuration, you can see the below output. Click **Save and Exit**. ![Contentstack\_Action\_Create\_an\_asset\_Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte3a3069dc871a82b/65e06fcceb51e3f0fd11623b/Contentstack_Action_Create_an_asset_Save_Exit.png) ## Delete an Asset This action lets you delete an asset in Contentstack. 1. Under **Choose an Action** tab, select the **Delete an Asset** action. 2. On the **Delete an Asset Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** from the **Lookup** list. 3. In the **Select Asset** drop-down, select the asset you want to delete. If you have assets stored in nested folders within your Contentstack CMS, you can select such assets as well for deletion. ![Select\_Fields\_Delete.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt16b2346144afbbd9/682b0fd6ef59b1550f6b52e4/Select_Fields_Delete.png) 4. Optionally, enable the **Show Optional Fields** toggle button to view the **Branch** field. 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. 5. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt10ed86e48fc19e30/6627bcd8b8b5ce9bd3dc153d/Save_Exit.png) ## Get All Assets This action lets you fetch details of all the assets in your stack. 1. Under **Choose an Action** tab, select the **Get All Assets** action. 2. On the **Get All Assets** Configure Action page, enter the details given below: 1. Click **+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** and **Environment** from the **Lookup** list. ![Select\_Fields\_Get\_All\_Assets.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbe343d6a4d75aa7b/682b1104a14cef5ce6798010/Select_Fields_Get_All_Assets.png) **Note:** By default, the main branch is selected (even if the Branch field is empty). 3. Optionally, enable the **Show Optional Fields** toggle button to display the **Branch**, **Asset Limit**, **Skip Asset (Pagination)** fields. 4. In the **Select Folder** drop-down, select a folder to fetch the details of all the assets present in the folder. Additionally, you can mark the **Include count**, **Include publish details** and **Include metadata** checkboxes to display the count of the total number of assets, publish and metadata details in the output. ![Select\_Field2\_Get\_all\_Assets.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt468d7eddd5d06772/682b1197676bf73580e48714/Select_Field2_Get_all_Assets.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. 5. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_And\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt791a064ab2ad6d94/656dae8cc8f24823d03b76c1/Save_And_Exit.png) ## Get Asset Reference This action lets you fetch details of all entries in which the selected asset is referenced. 1. Under **Choose an Action** tab, select the **Get Asset Reference** action. 2. On the **Get Asset Reference** **Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Asset**, and **Branch** from the **Lookup** list. ![Select\_Get\_Asset\_Reference\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt84685a05486cdf9e/682b132c1d36a1c922b22542/Select_Get_Asset_Reference_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. 5. The output will be shown as follows. Click the **Save and Exit** button.![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc15d574f0defd121/66f28026aa28a8a2cfd2b6c1/Save_Exit.png) ## Get a Single Asset 1. Under **Choose an Action** tab, select the **Get a Single Asset** action. 2. On the **Get a Single Asset** Configure Action page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Branch**, **Asset**, and **Environment** from the **Lookup** list. ![Select\_Fields\_Single\_Asset.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta7042ed50080975d/682b148824eaf7bc97818227/Select_Fields_Single_Asset.png) If you have assets stored in nested folders within your Contentstack CMS, you can also select those assets. **Note:** By default, the main branch is selected (even if the Branch field is empty). ![Select\_Folders\_Single\_Asset.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt91679052074be52c/682b1487655521ba75315b83/Select_Folders_Single_Asset.png) 3. Optionally, enable the **Show Optional Fields** toggle button to display the **Version** field. Here, you can enter the asset [Version](/docs/headless-cms/about-asset-versioning) to fetch the details of the asset. ![Select\_Show\_Optional\_Field\_Single\_Asset.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfb8d1edfe1a54789/682b1487676bf7a53de48738/Select_Show_Optional_Field_Single_Asset.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. 5. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfd993bad6a2a1a7d/656daf7de3d07fa065793f2b/Save_Exit.png) ## Publish an Asset This action lets you publish an asset automatically in your stack. To know more, visit [publish assets](/docs/headless-cms/publish-an-asset). 1. Under **Choose an Action** tab, select the **Publish an Asset** action. 2. On the **Publish an Asset Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Branch**, and an **Asset** from the **Lookup** list. If you have assets stored in nested folders within your Contentstack CMS, you can select such assets as well for publishing. ![Select\_Fields\_Publish.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt21fd8066797fd90a/682b16a06a59be59e1dd4963/Select_Fields_Publish.png)You can fetch the UID for all the previously configured automation steps directly from the **Lookup** list. **Note:** To dynamically fetch assets, configure the Asset Trigger and fetch the asset UID. 3. Select the **Environment(s)** from the **Lookup** list where you want to publish the asset. ![Select\_Environment\_Publish.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte37763782afdcf66/682b169f9883b80a68d8dea1/Select_Environment_Publish.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 4. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Select Locale(s)** and **Publish Schedule** fields. ![Select\_Show\_Optional\_Publish.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt026920bcd6296658/682b169f24eaf7e86881823a/Select_Show_Optional_Publish.png) **Note:** You can select multiple **Environment(s)** and **Locale(s)** to publish the asset. 3. Once done, click **Proceed**.  4. Click **Test Action** to test the configured action. 5. On successful configuration, you can see the below output. Click **Save and Exit**. A publish and unpublish icon will appear for the asset on the entry page. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7b8b3e6cd9843b10/6601a8e8d057556b8a000912/Save_Exit.png) ## Update an Asset This action lets you update an existing asset in Contentstack. 1. Under **Choose an Action** tab, select the **Update an Asset** action. 2. On the **Update an Asset** Configure Action page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** and an **Asset** from the **Lookup** list. If you have assets stored in nested folders within your Contentstack CMS, you can select such assets as well for updating their details. ![Select\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltae33d804096508d6/66bee6e277be396079ea71e6/Select_Field.png) 3. Enter a **Title** and a suitable **Description** for the asset to update. 4. Specify a **File Name** for the asset, such as ‘Travel\_Friendly.png’ or ‘Travel\_Friendly.jpeg.’ Enter the **Input URL** of the image you want to update. ![Select\_Field2\_Update.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt347dce3466975e40/682b188872524195d88cee8d/Select_Field2_Update.png) 5. Optionally, enable the **Show Optional Fields** toggle button to display the **Select Folder** field. 6. In the **Select Folder** drop-down, choose a destination folder to update an asset in it. ![Show\_Optional\_Field\_Update.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6ca38784b1320bd2/682b1888a211e76bbbc7ac01/Show_Optional_Field_Update.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. 5. On successful configuration, you can see the below output. Click **Save and Exit**. ![Contentstack\_Action\_Update\_an\_asset\_Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltab8a162d5bcf773f/65e07293d781fe2777e744df/Contentstack_Action_Update_an_asset_Save_Exit.png) --- ## URL: https://www.contentstack.com/docs/agent-os/contentstack-management-branch-alias-actions --- title: "Contentstack Management - Branch Alias Actions" description: "Use the Contentstack Management Branch Alias actions to manage branch aliases, streamlining branch control for an organized and efficient workflow." url: "https://www.contentstack.com/docs/agent-os/contentstack-management-branch-alias-actions" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: contentstack-management-branch-alias-actions.md --- # Contentstack Management - Branch Alias Actions Contentstack enables the assignment of [aliases](/docs/headless-cms/about-aliases) to any [branch](/docs/headless-cms/about-branches) of your stack, acting as pointers to specific branches. With the Branch Alias actions, you can retrieve details of all branch aliases, assign or reassign aliases to a specific branch, and delete them as required. These actions streamline branch control, ensuring an organized and efficient development process with Contentstack Management Branch Alias. ![Select\_Actions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte082da4ba8854f53/67906e869d626e112e11d616/Select_Actions.png) **Note:** You must have the [Branches](/docs/headless-cms/about-branches/) feature enabled for your stack to use the Branch Alias actions. For more information, please reach out to our [Support Team](mailto:support@contentstack.com). Let’s look at the action in detail. ## Assign/Reassign a Branch Alias This action assigns/reassigns an existing/new alias to a branch in a stack. 1. Under the **Choose an Action** tab, select the **Assign/Reassign a Branch Alias** action. 2. On the **Assign/Reassign a Branch Alias Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions)step. 2. Select a **Stack** from the **Lookup** list. 3. Select an **Action** from the dropdown. You have two options: **Assign** and **Reassign**. * **Assign**: Select this option to assign a new alias name to a branch. * **Reassign**: Select this option to assign an existing alias to a branch. 4. Select or enter a **Branch Alias** from the **Lookup** list. **Note:** If you select the **Assign** action, make sure to manually enter the new alias name before assigning it to the branch to prevent errors. 5. Select the **Target Branch** from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf46aa7b509b3556b/67906fa1ee8f384cd7aa42cb/Select_Fields.png) 3. Click the **Proceed** button. 4. Click the **Test Action** button to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte3d25209fe710a45/67906fa2cc4fb93e1ccecd8b/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltddad16f914468dfb/67906fa13b4213478d05bb61/Save_Exit.png) ## Delete a Branch Alias This action deletes a branch alias from a stack. 1. Under the **Choose an Action** tab, select the **Delete a Branch Alias** action. 2. On the **Delete a Branch Alias Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** and a **Branch Alias** from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2c9bccca01274906/67906f33bc13493863d5bc1c/Select_Fields.png) 3. Click the **Proceed** button. 4. Click the **Test Action** button to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0250045647b27be3/67906f33259b9a3e32266905/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5e6a17b24f510ee5/67906f339d626e20bd11d61a/Save_Exit.png) ## Get All Branch Aliases This action fetches the details of all the branch aliases from a stack. 1. Under the **Choose an Action** tab, select the **Get All Branch Aliases** action. 2. On the **Get All Branch Aliases Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** from the **Lookup** list. 3. **Optionally**, enable the **Show Optional Fields** toggle button to display the **Branch Alias Limit** and **Skip Branch Alias (Pagination)** fields. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0f4e646525b5cea5/67906ead79558d5d724d0943/Select_Fields.png) 3. Click the **Proceed** button. 4. Click the **Test Action** button to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2c9c62fbf9ff6661/67906eacd8a19e70f01b4283/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb67fb1526285c856/67906eace05cbf43a3562152/Save_Exit.png) ## Get a Single Branch Alias This action fetches the details of a single branch alias from a stack. 1. Under the **Choose an Action** tab, select the **Get a Single Branch Alias** action. 2. On the **Get a Single Branch Alias Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** and **Branch Alias** from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltffef3fda9ffdda90/67906ef7a5499b0f2714c989/Select_Fields.png) 3. Click the **Proceed** button. 4. Click the **Test Action** button to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2c9c62fbf9ff6661/67906eacd8a19e70f01b4283/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcb8ac1c494bb8324/67906ef7e92e099530c64bfc/Save_Exit.png) --- ## URL: https://www.contentstack.com/docs/agent-os/contentstack-management-branches-actions --- title: "Contentstack Management - Branches Actions" description: "Use the Contentstack Management Branches actions to automate branch based operations." url: "https://www.contentstack.com/docs/agent-os/contentstack-management-branches-actions" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: contentstack-management-branches-actions.md --- # Contentstack Management - Branches Actions [Branches](/docs/headless-cms/about-branches) offer isolated workspaces for safe, independent development of new features or updates. With branches you can create multiple copies of your stack content. You can perform branch-based operations using the following Contentstack Management Branches actions. ![Select\_Actions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9adf98a7447450af/662a5a54a02ad77f64eea9e0/Select_Actions.png) **Note:** You must have the [Branches](/docs/headless-cms/about-branches/) feature enabled for your stack. For more information, please reach out to our [Support Team](mailto:support@contentstack.com). Let’s look at each of them in detail. ## Create a Branch This action creates a new branch in a stack. 1. Under **Choose an Action** tab, select the **Create a Branch** action. 2. On the **Create a Branch** **Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions)step. 2. Select a **Stack** and **Branch** from the **Lookup** list. The new branch will be a copy of the source branch. **Note:** By default, the **main** branch is selected. 3. Provide a **Branch UID**. The Branch UID must be lowercase, with no spaces, and maximum 15 characters. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta07a84d693b91307/6628a385cac84890bf28d7aa/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3046ad289994d899/65df076172b3870ba422b7ab/Test_Action.png) 5. On successful configuration, you can see the below output. Click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt942b266709cfb3d1/6628a385528fc1dc4655b36a/Save_Exit.png) ## Delete a Branch This action deletes an existing branch in a stack. 1. Under **Choose an Action** tab, select the **Delete a Branch** action. 2. On the **Delete a Branch Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** and **Branch** from the **Lookup** list. The selected branch will be deleted. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta2b10497e8aea9db/6628a391c9de465b73d48dc6/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. **Warning:** This deletes all the content types and assets in the selected branch. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1f01134bb4086947/6628a39145f9899bc3cf572d/Save_Exit.png) ## Get All Branches This action fetches the details of all the branches in a stack. 1. Under **Choose an Action** tab, select the **Get All Branches** action. 2. On the **Get All Branches** **Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** from the **Lookup** list. 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Branch Limit** and **Skip Branch (Pagination)** fields. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7a81ece4a5d8c195/662f634da9b0ab21f6b946bd/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6c88ea1501605b38/6628ad40b8b5ce433adc1e43/Save_Exit.png) ## Get a Single Branch This action fetches the details of a single branch in a stack. 1. Under **Choose an Action** tab, select the **Get a Single Branch** action. 2. On the **Get a Single Branch Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** and **Branch** from the **Lookup** list. The details of the selected branch will be fetched. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt21363845e5cecaea/6628b57551b16f2837c4e019/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6c88ea1501605b38/6628ad40b8b5ce433adc1e43/Save_Exit.png) ## Merge Branch This action lets you merge the content types and global fields from a compare branch into the base branch. 1. Under **Choose an Action** tab, select the **Merge Branch** action. 2. On the **Merge Branch Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Compare Branch**, and **Base Branch** from the **Lookup** list. The content types and global fields are copied from the **Compare** (source) branch into the **Base** (target) branch based on the **Merge Strategy**. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt24890b50c623d9d4/662a59b9b0544170749a0c71/Select_Fields.png) 3. Select a **Merge Strategy** to merge the branch content. Let’s look at each of them in detail: 1. **Merge Prefer Base:** This will merge the changes from the compare branch into the base branch. In case of conflicts, it will retain the base branch changes. 2. **Merge Prefer Compare:** This will merge the changes from the compare branch into the base branch. In case of conflicts, it will retain the compare branch changes. 3. **Overwrite With Compare:** This will overwrite the base branch changes with compare branch changes. 4. **Merge New Only:** This will only merge the new changes in the base branch. 5. **Merge Modified Only Prefer Base:** This will only merge the modified changes from the compare branch into the base branch, and will keep the base branch changes in case of conflicts. 6. **Merge Modified Only Prefer Compare:** This will only merge the modified changes from the compare branch into the base branch, and will keep the compare branch changes in case of conflicts. 7. **Ignore:** This is a default value, which will not merge the branch content. 4. Enter additional descriptive comment(s) for the merge action in the **Merge Comment** field. The specified comments can be fetched via the ‘Get a Single Merge Job’ actions for future reference. ![Merge\_Strategy\_Comments.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt65672cf91a3ab443/662a59b9b8b5ce0b7bdc2e55/Merge_Strategy_Comments.png) 3. Once done, click **Proceed**.  4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. On successful configuration, you can see the below output. Click **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte0b2b7d5dccab5db/662a59b9a02ad71461eea9cd/Save_Exit.png) ## Get a Single Merge Job This action fetches the details of a single merge job in a stack. 1. Under **Choose an Action** tab, select the **Get a Single Merge Job** action. 2. On the **Get a Single Merge Job** **Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** and **Merge Job** from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt424a33befd419ee7/662a59aba02ad73f2aeea9c9/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. On successful configuration, you can see the below output. Click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt87239bea4479f0e7/662a59ab107b28a0f96c7486/Save_Exit.png) --- ## URL: https://www.contentstack.com/docs/agent-os/contentstack-management-content-types-actions --- title: "Contentstack Management - Content Types Actions" description: "Use the Contentstack Management Content Types action to automate fetching all the content types from a stack." url: "https://www.contentstack.com/docs/agent-os/contentstack-management-content-types-actions" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: contentstack-management-content-types-actions.md --- # Contentstack Management - Content Types Actions A [Content Type](/docs/headless-cms/about-content-types) serves as the framework or blueprint for a page or section within your web or mobile platform. It allows you to establish the fundamental structure of this blueprint by incorporating fields and configuring their attributes. By using the Contentstack Management Content Types action, you can fetch all content types from a selected stack. ![Select\_Content\_Type\_Screen.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt089df8650596f528/67446b3020dd4d82e9e8ee1a/Select_Content_Type_Screen.png) Let’s look at the action in detail. ## Get All Content Types This action fetches all the content types present in a stack. 1. Under the **Choose an Action** tab, select the **Get All Content Types** action. 2. On the **Get All Content Types Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, and **Branch** from the **Lookup** list. ![Select\_Fields\_Get\_All.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt834579ce017e7995/682ae84c951e4bbe10042db0/Select_Fields_Get_All.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Content Type Limit**, **Customized Data (query)**, and **Skip Content Type (Pagination)** fields. 4. Provide your data in the **Customized Data (query)** field to filter the retrieval of content types. Enter your data in the **Key**, and **Value** fields. 5. You can also include the total count of the content types, global field schema, and the branch details by clicking the respective checkboxes. **Additional Resource:** Refer to the [Content Delivery API Docs](/docs/developers/apis/content-delivery-api/queries) for more information on Queries. ![Show\_Optional\_Get\_All.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltae714983b22a7e78/682ae84c61e0ea405e9c6ba4/Show_Optional_Get_All.png) **Note:** The **Customized Data (query)** field acts as a filter to fetch the content types that fulfill the specifications provided in the Key-Value fields. 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. 5. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta7ea64f8622dfa61/666686663dcdf6470a2c9e7d/Save_Exit_Button.png) ## Get a Single Content Type This action fetches the details of a specific content type in a stack. 1. Under the **Choose an Action** tab, select the **Get a Single Content Type** action. 2. On the **Get a Single Content Type Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Branch**, and a **Content** **Type** from the **Lookup** list. **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). ![Select\_Fields\_Get\_Single.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte4827b1d6e01fcf2/682ae901a211e78168c7aa41/Select_Fields_Get_Single.png) 3. Optionally, enable the **Show Optional Fields** toggle button to display the optional fields. You can check the **Include global field schema** and **Include branch** boxes to include the details of the branch and the global field(s). ![Show\_Optional\_Fields\_Get\_Single.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb9c68e590f5f94ee/682ae901b728367183403d2b/Show_Optional_Fields_Get_Single.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. 5. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_and\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt49632183cb17c41a/67446b30c21e6028ad26163f/Save_and_Exit.png) --- ## URL: https://www.contentstack.com/docs/agent-os/contentstack-management-entries-actions --- title: "Contentstack Management - Entries Actions" description: "Use the Contentstack Management Entries action to automate entry based operations." url: "https://www.contentstack.com/docs/agent-os/contentstack-management-entries-actions" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: contentstack-management-entries-actions.md --- # Contentstack Management - Entries Actions An [entry](/docs/headless-cms/about-entries) is a specific piece of content that you intend to publish. This could be a blog post, article, product description, or any other type of content that you want to make available to your audience. You can perform entry based operations using the Contentstack Management Entries actions. ![Select\_Actions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8ea393ca5b1f4691/678504f8969dc57ff19da85f/Select_Actions.png) Let’s look at each of these in detail. ## Create an Entry This action lets you create an entry automatically in your stack. To know more, visit [Create entries](/docs/headless-cms/create-an-entry). 1. Under **Choose an Action** tab, select the **Create an Entry** action. 2. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 3. Select a **Stack**, **Branch**, and **Content Type** from the **Lookup** list. Provide your entry data in the **Entry Data** field. You can fetch the UID for all the previously configured automation steps directly from the **Lookup** list as shown below: **Note**: Provide your entry data as per your [content type schema](/docs/headless-cms/json-schema-for-creating-a-content-type/) in JSON format only. ![Suggested\_Data\_Element.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt36024a641268f038/66715d6cfe41c4c0d163ef14/Suggested_Data_Element.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 4. In the **Entry Data** field, you can add a predefined schema template for your entry data. This will add a structure to provide your entry data in a particular format for different fields. **Note:** You must manually configure the entry data for **JSON Rich Text Editor**, **Custom**, and **Experience Container** fields. ![Entry\_Data.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6fd04a2aae390276/66715d6c7a609d8b5ca6ce70/Entry_Data.png) 5. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Locale**. You can also include the branch details by clicking the **Include branch** checkbox. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd98d551d42320afa/66715d6d664d452ca4210ef3/Show_Optional_Fields.png) 6. Once done, click **Proceed**. 7. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt979322d5fd436310/66715d6c4969e4af8f85b53a/Test_Action.png) 8. The output will be shown as follows. Click the **Save and Exit** button to finish setting up the Create Entry action for the Contentstack connector. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt852669a54149d3f0/66715d6cfb43150a2ee64373/Save_Exit.png) ## Delete an Entry This action deletes an entry in a stack. 1. Under **Choose an Action** tab, select the **Delete an Entry** action. 2. On the **Delete an Entry Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Branch**, **Content** **Type**, and **Entry** from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcc3db63b439246a2/66715d7afb43151e07e64377/Select_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Select Locale(s)** field. **Note:** You can select multiple **Locale(s)** to delete the entry saved in that locale. 4. Click the **Delete all the localized entries** checkbox to delete all the localized versions of the entry. **Note:** If you provide the locale and click the **Delete all the localized entries** checkbox, all the localized entries will be deleted along with the fallback language i.e., **English-United States (M)** and the value passed in the locale field will become null. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1fdd39e96770de53/66715d7a7b258db576c8a8b8/Show_Optional_Fields.png) **Note:** If you select the fallback language in the locale field, i.e., **English-United States (M)**, and uncheck the checkbox, the entry in the fallback language will be deleted and localized entries will be preserved. 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfcbb7bd24abca69f/66715d7a3ab7db77bb18c1bf/Test_Action.png) 5. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1b307ffd4e1d1204/66715d7a7b258d0300c8a8bc/Save_Exit.png) ## Get All Entries This action fetches all the entries present in a stack. 1. Under **Choose an Action** tab, select the **Get All Entries** action. 2. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 3. Select a **Stack**, **Branch**, and **Content Type** from the **Lookup** list. You can fetch the UID for all the previously configured automation steps directly from the **Lookup** list as shown below: ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1e0d624b14a43726/66715d872424702c67ac8ffa/Select_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 4. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Entry Limit**, **Skip Entry (Pagination)**, **Entry Version**, and **Select Locale** fields. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4b76faa9f64d4c21/66715d87f17bde91a69911cc/Show_Optional_Fields.png) 5. Provide your data in the **Customized Data (query)** field to filter the entry. Enter your data in the **Key**, **Operator**, and **Value** fields. In the **Customized Data (query)** field, you can filter the entry based on Updated At/Created At options. For example, you can fetch all the entries updated after a certain time and date as shown below: ![Customized\_Data\_Query.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3ee5176aa6cb7f20/667262563ab7db6f4e18cc72/Customized_Data_Query.png) **Note:** You can retrieve entries created on a specific date by using the date-specific operators such as "Less than specified number" or "Greater than specified number" for the Created At and Updated At keys. You can view the **Lookup** data for all the fields present in the content type including **Reference**, **Modular Blocks** and **Group** fields. Using the **Operator** filter you can sort the data. **Additional Resource:** Refer to the [Content Delivery API Docs](/docs/developers/apis/content-delivery-api/queries) for more information on Queries. In the **Reference** field, enter the ID of the reference field of your content type. You can also include the count of the entries, metadata details, workflow, branch and publish details by clicking the respective checkboxes. ![Reference.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt50903d086d7ef78c/667262565cb7a31eedbfdf30/Reference.png) **Note:** The **Reference** and the **Customized Data (query)** fields act as filters to fetch only those entries that fulfill the specifications provided in both the fields. 6. Once done, click **Proceed**. 7. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt603d923c70338b4c/66715d887b258d06f9c8a8c0/Test_Action.png) 8. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0d49c866d94e32af/66715d873641c710b41370c2/Save_Exit_Button.png) ## Get a Single Entry This action lets you fetch details of a single entry in your stack. 1. Under **Choose an Action** tab, select the **Get a Single Entry** action. 2. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 3. Select a **Stack**, **Branch**, **Content Type**, and **Entry** from the **Lookup** list. You can fetch the UID for all the previously configured automation steps directly from the Lookup list as shown below: ![Suggested\_Data\_Elements](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3b9cad8ee5229c68/6499e7747c84d2457cc2990b/Suggested_Data_Elements.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 4. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display additional fields. Select the entry **Version** and **Locale** and check the **Include workflow**, **Include publish details**, and **Include branch** checkboxes to fetch these details in addition to the entry details. ![Show\_Optional\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteca4af9de016cdb1/6499738a94be104d0b893968/Show_Optional_Fields.png) 5. Once done, click **Proceed**. 6. Click **Test Action** to test the configured action. ![Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb153122066b670d4/63d94b5de4e29e75dc5dece2/Test-Action.png) 7. On successful configuration, you can see the below output. Click **Save and Exit**. ![Save\_Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc061e4be82f75969/6499738ae64f41671042d4f4/Save_Exit.png) ## Localize an Entry This action lets you create localized versions of your entries. Here’s a link to know more about [Localization](/docs/headless-cms/about-localization/). 1. Under **Choose an Action** tab, select the **Localize an Entry** action. 2. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 3. Select the **Stack**, **Branch** ,**Content Type**, **Entry**, and **Locale** from the **Lookup** list. You can fetch the UID for all the previously configured automation steps directly from the **Lookup** list as shown below: ![Suggested\_Data\_Elements](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt57cdc87bbde1f471/6499e4a4e64f41f16742d73d/Suggested_Data_Elements.png) **Note:** Locale provides a list of languages present in your stack. ![Select\_Different\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltff839a8ea67e78c0/64996d31fa1835672418c64f/Select_Different_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 4. Provide your entry data in the **Entry Data** field. **Note**: Provide your entry data in JSON format as per your content type schema. 5. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Include branch** checkbox to include the branch details. ![Select\_Entry\_Data](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf03050f5c0b91a04/64996d2fc411216e74a18e13/Select_Entry_Data.png) 6. Click **Proceed**. 7. Click **Test Action** to test the configured action. ![Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4da28daab866fc88/63d94b4ee4e29e75dc5decde/Test-Action.png) 8. The output will be shown as follows. Click the **Save and Exit** button to finish setting up the Localize an Entry action for the Contentstack connector. ![Save\_and\_Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5234beb1bf8ea281/64996d3129ad9810e48256c7/Save_and_Exit.png) ## Get Publish Queue This action fetches all the entries present in the Publish Queue in Contentstack. 1. Under **Choose an Action** tab, select the **Get** **Publish Queue** action. 2. On the **Get Publish Queue Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** and **Branch** from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltab3598262375c030/6785063ec7495f16f6ee992b/Select_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Customized Data (query)**, **Entry Limit**, and **Skip (Pagination)** fields. You can also include the count for the total number of entries by clicking the checkbox. 4. Provide your data in the **Customized Data (query)** field to filter the entry. Enter your data in a key-value pair in JSON format. **Additional Resource:** Refer to the [Content Delivery API](/docs/developers/apis/content-delivery-api/queries) documentation to know more about queries. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte2fd0931c2dc6906/67850de0704a101de8415aae/Show_Optional_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt49cae6b6cb8c6c60/67850ddf49bc8c2edf439e3f/Test_Action.png) 5. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt708ad32b02e6eab7/67850de0704a100ba1415aaa/Save_Exit.png) ## Publish an Entry This action lets you publish an entry automatically in your stack. To know more, visit [publish entries](/docs/headless-cms/publish-an-entry). 1. Under **Choose an Action** tab, select the **Publish an Entry** action. 2. On the **Publish an Entry Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Branch**, **Content Type**, **Entry** from the **Lookup** list. You can fetch the UID for all the previously configured automation steps directly from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltca3bf23ad2a4529e/6601a8f474a5c34dff04a0a6/Select_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 3. Select the **Environment(s)** and **Locale(s)** from the **Lookup** list where you want to publish the entry. ![Select\_Locale\_Environment.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8c5db19280fd6b59/6601a8f42e5b7167ca3eabea/Select_Locale_Environment.png) 4. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Publish Schedule** field. Click the **Nested Reference Publishing** checkbox to publish the entry along with the referenced entries. Learn more about [Nested Reference Publishing](/docs/headless-cms/about-nested-reference-publishing). ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7e5d5e4ee47839cf/6601a8f42531f424bdee4ce9/Show_Optional_Fields.png) **Note:** You can select multiple **Environment(s)** and **Locale(s)** to publish the entry. 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4f44731e7c747a8a/6601a8f4f6f5134d27ba216e/Test_Action.png) 5. On successful configuration, you can see the below output. Click **Save and Exit**. ![Save\_and\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf0b60bd10d9bd616/6601a8f4c19510717adecec3/Save_and_Exit.png) ## Remove Localization This action restores the entry to its initial non-localized state within a stack. For more information, refer to our [Localization](/docs/headless-cms/about-localization/) documentation. 1. Under **Choose an Action** tab, select the **Remove Localization** action. 2. On the **Remove Localization Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Branch**, **Content Type**, **Entry**, and **Locale** from the **Lookup** list. Locale provides a list of languages currently added in your stack for the selected branch. **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt62e725d8882d3ccc/6628c78381c884a44c37fc4a/Select_Fields.png) **Note:** The entry must be already localized in the selected locale to remove the localization. 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb69026247ef74428/63d94b7abbcc27228d8e04a0/Test-Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit\_button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteb85692a24e9af4b/6628c783b0ec77e7f3d6e1ae/Save_Exit_button.png) ## Set Entry Workflow This action lets you set the workflow stage for your entry. Read more about [workflow stages](/docs/headless-cms/about-workflow-stages). 1. Under **Choose an Action** tab, select the **Set Entry Workflow** action. 2. On the **Set Entry Workflow Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Branch**, and **Content Type** from the **Lookup** list. Also, select an **Entry** from the **Lookup** list for which you want to set the workflow stage. 3. Select the **Workflow Stage ID** from the **Lookup** list. **Note**: If you select the Workflow Stage ID as Next Stage, the workflow stage of the selected entry will be updated automatically to the next stage. And, if your entry has reached the last stage of the workflow, a success message will be shown for the completed workflow. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt87360daaac307d13/6601a8c22531f41425ee4ce3/Select_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 4. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Set Due Date**, **Comment**, **Assignee Name(s)**, **Assignee Role(s)**, and **Select Locale** fields. 5. Select the **Assignee Name(s)** and **Assignee Role(s)**. With the **Assignee Name(s)**, you can add the user to review the workflow updates, send an email notification and add comments for the assignee. With the **Assignee Role(s)**, you can add the users with similar roles, such as developers, testers to check the workflow updates. ![Assignee\_Name\_Role.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt427c19cf3b62f83d/6601a8c2df69723e9639cedb/Assignee_Name_Role.png) **Note:** You can select multiple **Assignee Name(s)** and **Assignee Role(s)** to let the users know about the workflow update. 6. Set a **Due Date**. This defines a date for the entry stage to be completed. With **Notify via Email**, you can choose to notify other members in the workflow about the action changes via email. 7. Under **Comment**, add a comment for the next stage user. ![Due\_Date\_Comment.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5972ff9e9252936c/6601a8c2d05755982400090e/Due_Date_Comment.png) 8. Select a **Locale** from the **Lookup** list in which you want to set the workflow stage. ![Locale.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltda07a4fa70e6a8a3/6601a8c1bcecd466a7f59932/Locale.png) 3. Click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1f935f32d755d58c/6601a8c274a5c3564504a09a/Test_Action.png) 5. If the setup is successful, you will see the following output. Click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt19f4325497a89f5b/6601a8c1d9235fdc4bc994b4/Save_Exit.png) ## Unpublish an Entry This action lets you unpublish an entry automatically in your stack. To know more, visit [unpublish entries](/docs/headless-cms/unpublish-an-entry). 1. Under **Choose an Action** tab, select the **Unpublish an Entry** action. 2. On the **Unpublish an Entry Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Branch**, **Content Type**, and **Entry** from the **Lookup** list. You can fetch the UID for all the previously configured automation steps directly from the **Lookup** list. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt33328d6d35e1b605/6601a8b5090136f235d96fb1/Select_Fields.png) 3. Select the **Environment(s)** from where you want to unpublish the entry. ![Select\_Env.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta8192bc4c6b285b9/6601a8b5f6f513ea8aba216a/Select_Env.png) 4. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Select Locale(s)** and **Unpublish Schedule** fields. ![Show\_optional\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd289044a6461dda8/6601a8b574a5c30a6d04a096/Show_optional_Field.png) **Note:** You can select multiple **Environment(s)** and **Locale(s)** to unpublish the entry. 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt508563223056675d/6601a8b46f31274f9494f139/Test_Action.png) 5. On successful configuration, you can see the below output. Click **Save and Exit.**![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8a8473528c6bf84a/6601a8b4d05755705300090a/Save_Exit.png) ## Update an Entry This action lets you update an entry automatically in your stack. 1. Under **Choose an Action** tab, select the **Update an Entry** action. 2. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 3. Select a **Stack**, **Branch**, **Content Type**, **Entry Data**, and **Entry** from the **Lookup** list. You can fetch the UID for all the previously configured automation steps directly from the **Lookup** list as shown below: **Note:** Enter the data in JSON format only. ![Suggested\_Data\_Elements](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt71d1de12d1fa9819/64ba2413bae80f8813d9c4ee/Suggested_Data_Elements.png) **Note:** By default, the main branch is selected (even if the **Branch** field is empty). 4. In the **Entry Data** field, you can add a predefined schema template for your entry data. This will add a structure to provide your entry data in a particular format for different fields. **Note:** You must configure the entry data for **JSON Rich Text Editor**, **Custom**, and **Experience Container** fields manually. ![Select\_Different\_Field\_Entry\_Data](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5134fc362b356a68/64ba24131511258a5835a980/Select_Different_Fields.png) 5. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display additional fields. Select the **Locale** and check the **Include branch** checkbox to fetch these details in addition to the entry details. ![Show\_Optional\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf2d6a1d5dc43cda3/64ba2412d7401adc642b0731/Select_Show_Optional_Field.png) 6. Once done, click **Proceed**. 7. Click **Test Action** to test the configured action. ![Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt75efcbe55f666a46/63d94aef5d9574542d40b53e/Test-Action.png) 8. On successful configuration, you can see the below output. Click **Save and Exit**. ![Save\_and\_Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt389b851578a6889c/64ba2413d85ca631e876ea28/Save_and_Exit.png) --- ## URL: https://www.contentstack.com/docs/agent-os/contentstack-management-global-fields-actions --- title: "Contentstack Management - Global Fields Actions" description: "Use the Contentstack Management Global Fields action to automate fetching a specific or all the global fields from a stack." url: "https://www.contentstack.com/docs/agent-os/contentstack-management-global-fields-actions" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: contentstack-management-global-fields-actions.md --- # Contentstack Management - Global Fields Actions A [Global Field](/docs/headless-cms/about-global-field) is a reusable field (or group of fields) that you can define once and reuse in any content type within your stack. You can perform global field based operations using the following Contentstack Management Global Field actions. ![Select\_an\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7a8636055b819467/6628caf6b8b5cefe28dc1f97/Select_an_Action.png) Let’s look at each of these in detail. ## Get All Global Fields This action fetches the details of all the global fields in a stack. 1. Under **Choose an Action** tab, select the **Get All Global Fields** action. 2. On the **Get All Global Fields Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** and **Branch** from the **Lookup** list. **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 3. Click the **Include branch details** checkbox to include the branch details of the global fields. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4476849f54abb78a/6628cae9528fc1e8b055b524/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1b4a5f5425928dd4/6628cae9b05441da7c99fec9/Save_Exit.png) ## Get a Single Global Field This action fetches the details of a single global field in a stack. 1. Under **Choose an Action** tab, select the **Get a Single Global Field** action. 2. On the **Get a Single Global Field Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Branch**, and **Global Field** from the **Lookup** list. **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 3. Click the **Include branch details** checkbox to include the branch details of the global field. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte1e48d9e29d79faf/6628cadd528fc1d68c55b51b/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd224fdeeb4be0ebe/6628caddbb637257d31dfa6b/Save_Exit.png) --- ## URL: https://www.contentstack.com/docs/agent-os/contentstack-management-languages-actions --- title: "Contentstack Management - Languages Actions" description: "Use the Contentstack Management Languages action to automate fetching all the languages from a stack." url: "https://www.contentstack.com/docs/agent-os/contentstack-management-languages-actions" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: contentstack-management-languages-actions.md --- # Contentstack Management - Languages Actions Contentstack offers advanced [multilingual content](/docs/headless-cms/about-languages) capabilities with over 200 pre-configured locales for creating and publishing entries in multiple languages. You can fetch the details of all the locales in a stack using the Contentstack Management Language action. ![Select\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6b542eb83bf6bc7e/6628d56dfb977c066e36b27a/Select_Action.png) Let’s look at each of these in detail. ## Get All Languages This action fetches the details of all the languages (locales) added in a stack. 1. Under **Choose an Action** tab, select the **Get All Languages** action. 2. On the **Get All Languages Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions#connect-your-contentstack-account) step. 2. Select a **Stack** from the **Lookup** list. ![Select\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd2b883486460f6ca/6628d56da9b0ab22a6b9227f/Select_Field.png) 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Language Limit**, **Skip Language (Pagination)**, and **Branch** fields. 4. Click the checkboxes to include the **count of languages** and **branch details**. ![Show\_Optional\_Fiel.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt42748290546598e9/6628d56d24e181e38eace708/Show_Optional_Fiel.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt223573c3ea899f5a/6628d56da02ad76354ee992a/Save_Exit.png) --- ## URL: https://www.contentstack.com/docs/agent-os/contentstack-management-releases-actions --- title: "Contentstack Management - Releases Actions" description: "Use the Contentstack Management Releases actions to automate releases based operations." url: "https://www.contentstack.com/docs/agent-os/contentstack-management-releases-actions" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: contentstack-management-releases-actions.md --- # Contentstack Management - Releases Actions A [Release](/docs/headless-cms/about-releases) comprises entries and assets that need to be deployed at the same time, either in a published or unpublished state, to a designated environment. You can perform release based operations using the Contentstack Management Releases actions. ![Releasae.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1e9aa6c7ef4f9afe/6601ade2bdfec36625582a85/Releasae.png) Let’s look at each of these in detail. ## Add Items to a Release This action lets you add multiple items to a release. 1. Under **Choose an Action** tab, select the **Add Items to a Release** action. 2. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 3. Select a **Stack**, **Branch**, and **Release** from the **Lookup** list. Provide your item data in the **Release Item Data** field. **Note:** Provide your entry data as per the schema in JSON format only. Both entries and assets can be added to the release. In case of assets, the value for the content\_type\_uid key should be built\_io\_upload. ![Select\_Different\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb61cbe4a8de8b03e/647050de14eef648a3882e0a/Select_Different_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 4. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the branch details by clicking the **Include branch** checkbox. ![Show\_Optional\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdb2b67f6ee7bb7b4/647050ddaeb2dbc55c117be3/Show_Optional_Fields.png) 5. Once done, click **Proceed**. 6. Click **Test Action** to test the configured action. ![Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb69026247ef74428/63d94b7abbcc27228d8e04a0/Test-Action.png) 7. The output will be shown as follows. Click the **Save and Exit** button. ![Clcik\_the\_Save\_And\_Exit\_Button](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf665b043b810f79f/647050ddce9cf9c09a3765d3/Clcik_the_Save_And_Exit_Button.png) ## Clone a Release This action lets you create a copy of a release. 1. Under **Choose an Action** tab, select the **Clone a Release** action. 2. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 3. Select a **Stack**, **Branch**, and **Release** from the **Lookup** list. ![Select\_Different\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte8025ab81a50fe24/647056fece9cf9bedf3765ea/Select_Different_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 4. Provide a **Release** **Name** and a **Release Description** for the release to be created. ![Select\_Release\_Name\_And\_Description](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3c667b4775afa2b6/647056fd14eef6139e882e1e/Select_Release_Name_And_Description.png) 5. **\[Optional\]** Enable the **Show optional fields** toggle button to display the branch details by clicking the **Include branch** checkbox. ![Show\_Optional\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf48d645def024498/6470570a00c0b38678e70166/Show_Optional_Fields.png) 6. Once done, click **Proceed**. 7. Click **Test Action** to test the configured action. ![Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb69026247ef74428/63d94b7abbcc27228d8e04a0/Test-Action.png) 8. The output will be shown as follows. Click the **Save and Exit** button. ![Cliik\_the\_Save\_And\_Exit\_Button](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5129a6f201cd77a0/647056fd3f34da82227b51c9/Clcik_the_Save_And_Exit_Button.png) ## Create a Release This action lets you create a release. 1. Under **Choose an Action** tab, select the **Create a Release** action. 2. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 3. Select a **Stack**, **Release** **Name**, **Release** **Description**, and **Branch** from the **Lookup** list. ![Select\_Different\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt659e9c76874175e3/64705b13fa576bfbf4edfff8/Select_Different_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 4. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the branch details by clicking the **Include branch** checkbox. ![Show\_Optional\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3c9a4b486d3c3a55/64705b13fa576bbe7bedfffc/Show_Optional_Fields.png) 5. Once done, click **Proceed**. 6. Click **Test Action** to test the configured action. ![Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb69026247ef74428/63d94b7abbcc27228d8e04a0/Test-Action.png) 7. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_And\_Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3355fcd3bbf9139b/64705b13ae5aa213b74ca996/Save_And_Exit.png) ## Delete Items from a Release This action lets you delete multiple items from a release. 1. Under **Choose an Action** tab, select the **Delete Items from a Release** action. 2. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 3. Select a **Stack**, **Branch**, and **Release** from the **Lookup** list. Provide your item data in the **Release Item Data** field. **Note:** Provide your entry data as per the schema in JSON format only.  ![Select\_Different\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc71b0e6c303d6359/64705e9873167998db6b4cd6/Select_Different_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 4. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the branch details by clicking the **Include branch** checkbox. ![Show\_Optional\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdee7cb16387296b4/64705e98ce9cf95081376605/Show_Optional_Fields.png) 5. Once done, click **Proceed**. 6. Click **Test Action** to test the configured action. ![Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb69026247ef74428/63d94b7abbcc27228d8e04a0/Test-Action.png) 7. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_And\_Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltebda7a0fea8cd6d3/64705e98f6df4f1cccb4fc3e/Save_And_exit.png) ## Deploy a Release This action lets you deploy a release to an environment. 1. Under **Choose an Action** tab, select the **Deploy a Release** action. 2. On the **Deploy a Release Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Branch**, and **Release** from the **Lookup** list. ![Select\_fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd578a7311906b94e/6601a884cddae062ccb00fbf/Select_fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 3. Select the **Environment(s)** to deploy the release from the **Lookup** list. ![Select\_Environment.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfc121a71a4a5a292/6601a8846f7fa70686ead1b0/Select_Environment.png) 4. **\[Optional\]** Enable the **Show Optional fields** toggle button to display the **Publish Schedule** field to schedule the deployment of the release. **Note:** The release will be published immediately if the Publish Schedule field is empty. ![Publish\_Schedule.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfd87285e10fb725b/6601a884cf50d9844217b9b1/Publish_Schedule.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt20934ae3909b8b48/6601a8846f7fa75ea5ead1ac/Test_Action.png) 5. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdb55a5d4bc8b075b/6601a8840061c731271030d1/Save_Exit.png) ## Get All Items in a Release This action fetches all the items present in a release. 1. Under **Choose an Action** tab, select the **Get All Items in a Release** action. 2. Click **+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 3. Select a **Stack**, **Branch**, and **Release** from the **Lookup** list. ![Select\_Different\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb10930e9720341d8/64707dfcff5607e519dbd8d8/Select_Different_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 4. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Locale**. You can also include the branch details by clicking the **Include** **branch** checkbox. ![Show\_Optional\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltba7bb0c72c0f037d/64707dfd08523cebef2e5bef/Show_Optional_Fields.png) 5. Once done, click **Proceed**. 6. Click **Test Action** to test the configured action. ![Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb69026247ef74428/63d94b7abbcc27228d8e04a0/Test-Action.png) 7. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte2bb16e18066f88c/64707dfd86bda528d852fce8/Save_Exit.png) ## Get All Releases This action fetches all the releases present in a stack. 1. Under **Choose an Action** tab, select the **Get All Releases** action. 2. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 3. Select a **Stack**, and **Branch** from the **Lookup** list. Click the checkboxes for **Include Count** and **Include count of release items** to fetch the release details. ![Select\_Different\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt20930ada722cba55/649964d47ad988eb4531c983/Select_Different_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 4. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Limit Release**, and **Skip Release** fields. You can also include the branch details by clicking the **Include** **branch** checkbox. ![Show\_Optional\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta230189f9fedc736/649964d4fcb6fd0e8e5aba7b/Show_Optional_Fields.png) 5. Once done, click **Proceed**. 6. Click **Test Action** to test the configured action. ![Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb69026247ef74428/63d94b7abbcc27228d8e04a0/Test-Action.png) 7. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4fec92285215f3c3/64707ffadfafe5a4f304991a/Save_Exit.png) ## Get a Single Release This action fetches the details of a single release. 1. Under **Choose an Action** tab, select the **Get a Single Release** action. 2. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 3. Select a **Stack**, **Branch**, and **Release** from the **Lookup** list. ![Select\_Different\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd1d76163bfe8f736/647081d0133eefd177498d2b/Select_Different_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 4. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the branch details by clicking the **Include** **branch** checkbox. ![Show\_Optional\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8e0ac5804f526e98/647081d0ff56077fa1dbd936/Show_Optional_Fields.png) 5. Once done, click **Proceed**. 6. Click **Test Action** to test the configured action. ![Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb69026247ef74428/63d94b7abbcc27228d8e04a0/Test-Action.png) 7. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt830eb57d6dbebdd2/647081d0f6df4fc1dcb4fd95/Save_Exit.png) --- ## URL: https://www.contentstack.com/docs/agent-os/contentstack-management-taxonomy-actions --- title: "Contentstack Management - Taxonomy Actions" description: "Use the Contentstack Management Taxonomy actions to automate taxonomies based operations." url: "https://www.contentstack.com/docs/agent-os/contentstack-management-taxonomy-actions" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: contentstack-management-taxonomy-actions.md --- # Contentstack Management - Taxonomy Actions [Taxonomy](/docs/headless-cms/about-taxonomy/) assists in organizing the content within stack into categories, making it easier to navigate, search, and retrieve information. You can perform taxonomy based operations using the following Contentstack Management Taxonomy actions. * Create a Taxonomy * Create a Term * Delete a Taxonomy * Delete a Term * Export a Taxonomy * Get All Ancestors of a Term * Get All Descendants of a Term * Get All Taxonomies * Get All Terms * Get All Terms across All Taxonomies * Get a Single Taxonomy * Get a Single Term * Import a Taxonomy * Update a Taxonomy * Update a Term Let’s look at each of these in detail. ## Create a Taxonomy This action lets you create a new taxonomy in a stack. 1. Under **Choose an Action** tab, select the **Create a Taxonomy** action. 2. On the **Create a Taxonomy Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** from the **Lookup** list. 3. Enter a suitable **Taxonomy UID** and **Taxonomy Title**. For example, enter _sample\_taxonomy_ in Taxonomy UID and _Sample\_Taxonomy_ in Taxonomy Title. **Note:** The Taxonomy UID must contain **only** alphanumeric values and underscores. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1847053b2c5066a5/6628da3133301d24ea8928ef/Select_Fields.png) 4. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Taxonomy Description** field. 5. In the **Taxonomy Description** field, specify a suitable description for your taxonomy. ![Show\_optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6c2f1e705ce47bdd/6628da32776d0c3abb24df4c/Show_optional_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_and\_-Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1137ba3f733251be/6628da31a02ad77708ee9a04/Save_and_-Exit.png) ## Create a Term This action lets you create a new term within a taxonomy. 1. Under **Choose an Action** tab, select the **Create a Term** action. 2. On the **Create a Term Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** and **Taxonomy** from the **Lookup** list. In this example, we are creating a term for the _Sample\_Taxonomy_ we created in the previous action. 3. Enter a suitable **Term UID**, **Term Title**, and **Term Order** to create a new term. For example, enter _child\_term\_test_ in Term UID and _Child\_Term\_Test_ in Term Title, and _1_ in the Term Order. **Note:** The Term UID must contain **only** alphanumeric values and underscores. 4. In the **Select Parent Term** field, select the parent to create a term. For example, select _Parent\_Test_ term created within _Sample\_Taxonomy_. The new term will become a child element of the _Parent\_Test_ term. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5913b2c38511ccb7/6628da3ec9de4664b2d490a1/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta4946f7169c50827/6628da3e33301d0ee88928f3/Save_Exit.png) ## Delete a Taxonomy This action deletes a taxonomy and all its associated terms from a stack. 1. Under **Choose an Action** tab, select the **Delete a Taxonomy** action. 2. On the **Delete a Taxonomy Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** and **Taxonomy** from the **Lookup** list. For example, select _Test_ stack and _Sample 2_ taxonomy. 3. Click the **Force Delete** checkbox to delete the taxonomy. This will delete the taxonomy even if it is referenced in the entries. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0c4492f4bd25f712/6628da49528fc1d56155b5bc/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta60f8c911af79740/6628da4985518c906c557f06/Save_Exit.png) ## Delete a Term This action deletes a term within a taxonomy. 1. Under **Choose an Action** tab, select the **Delete a Term** action. 2. On the **Delete a Term Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Taxonomy**, and **Term** from the **Lookup** list. For example, select _Test_ stack, _Sample\_Taxonomy_ taxonomy, and _Child\_Term\_Test_ term. 3. Click the **Force Delete** checkbox to delete the term. This will force the term to be deleted even if it is referenced in the entries. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2de6b2596c467686/6628da57210d9032793a4d7a/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte792ccfdb94fbb49/6628da56c9de462aded490a9/Save_Exit.png) ## Export a Taxonomy This action exports a taxonomy and all its associated terms in a stack. 1. Under **Choose an Action** tab, select the **Export a Taxonomy** action. 2. On the **Export a Taxonomy Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** and **Taxonomy** from the **Lookup** list. For example, select _Test_ stack and _Sample\_Taxonomy_ taxonomy. 3. Select a **Format** in which you want to export the taxonomy. You can choose to export the taxonomy in _JSON_ or _CSV_ format. For example, select _JSON_. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt01d5a740da925767/6628da6533301d2f148928f9/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7de4794a4f8b1c22/6628da65b0ec772cced6e2fa/Save_Exit.png) ## Get All Ancestors of a Term This action fetches the details of all the ancestors of a term. 1. Under **Choose an Action** tab, select the **Get All Ancestors of a Term** action. 2. On the **Get All Ancestors of a Term Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Taxonomy**, and **Term** from the **Lookup** list. For example, select _Test_ stack, _Automate_ taxonomy, and _What is Conditional Path_ term. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt93c82ab15c1d510b/6628dc51ca8874940ded3e51/Select_Fields.png) 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Term Limit** and **Skip Term (Pagination)** fields. For example, enter _5_ in Term Limit and _1_ in Skip Term. This will skip the first term and fetch the next 5 terms. 4. Click the checkboxes to include the **count of terms**, **number of child terms**, and **referenced entries count**. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt38795a40cd9e7d74/6628dc5124e1812c41ace79c/Show_Optional_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9d31365e642b950a/6628dc51776d0c3a4824df5c/Save_Exit.png) ## Get All Descendants of a Term This action fetches the details of all the descendants of a term. 1. Under **Choose an Action** tab, select the **Get All Descendants of a Term** action. 2. On the **Get All Descendants of a Term Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Taxonomy**, and **Term** from the **Lookup** list. For example, select _Test_ stack, _Automate_ taxonomy, and _Guides_ term.![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6afa51bf63bc968c/6628dc60528fc1367555b5d8/Select_Fields.png) 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Term Limit**, **Skip Term (Pagination)**, and **Term Hierarchy** fields. For example, enter _5_ in Term Limit, _1_ in Skip Term, and _1_ in Term Hierarchy. This will skip the first term and fetch the next 5 terms. With Term Hierarchy, the first descendant of _Guides_ will be fetched. If you enter Term Hierarchy as 2, then 2 descendants of _Guides_ will be fetched. 4. Click the checkboxes to include the **count of terms**, **number of child terms**, **referenced entries count**, and the **order of the term(s) according to their placement in the taxonomy**. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0af47a61790fb577/6628dc60bb637234781dfbab/Show_Optional_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb98f5cc908d4f017/6628dc6033301d214689290b/Save_Exit.png) ## Get All Taxonomies This action fetches the details of all the taxonomies in a stack. 1. Under **Choose an Action** tab, select the **Get All Taxonomies** action. 2. On the **Get All Taxonomies Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** from the **Lookup** list. For example, select _Test_ stack. ![Select\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbb9b7928475e0631/6628dc7358ce888031c304b3/Select_Field.png) 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Taxonomy Limit**, **Skip Taxonomy (Pagination**), **Search Taxonomy**, and **Select Taxonomies** fields. For example, select _Automate_, _Demo 1_, and _Regions_ in Select Taxonomies. Enter _3_ in Taxonomy Limit and _1_ in Skip Taxonomy. In the **Search Taxonomy** field, enter a UID or name of the taxonomy to search all the taxonomies containing the specified value. For example, enter Auto in Search Taxonomy. **Note:** You can select multiple **Taxonomies** to fetch the details. 4. Click the checkboxes to include the **count of taxonomies**, **count of terms**, **referenced term count**, **referenced entries count**, and **get the deleted taxonomies**. **Note:** If you mark the checkbox for Get deleted taxonomies, the output will only display all the deleted taxonomies in the selected stack. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf6e450b2520bbb2c/663880de4aea13f477967798/Show_Optional_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd8f141b78627bace/6628dc74b8b5ce1914dc209b/Save_Exit.png) ## Get All Terms This action fetches the details of all the terms in a stack. 1. Under **Choose an Action** tab, select the **Get All Terms** action. 2. On the **Get All Terms Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** and **Taxonomy** from the **Lookup** list. For example, select _Test_ stack and _Automate_ taxonomy. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8db28ba61ec9c8a8/6628dc88a9b0ab3604b92341/Select_Fields.png) 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Term Limit**, **Skip Term (Pagination)**, **Search Term(s)**, **Select Terms**, and **Term Hierarchy** fields. For example, enter _5_ in Term Limit, _1_ in Skip Term (Pagination). Enter _Repeat Path_ in Search Term(s). Select _What is Repeat Path_, _Repeat Path Use Case_, and _What is Conditional Path_ in the Search Terms field. Enter _2_ in Term Hierarchy. 4. Click the checkboxes to include the **count of terms**, **number of child terms**, **referenced entries count**, **order of the term(s) according to their placement in the taxonomy**, and **get the deleted terms**. **Note:** If you mark the checkbox for **Get deleted taxonomies**, the output will only display all the deleted terms from the selected taxonomy in the selected stack based on the specified Term Hierarchy. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt48eaacec74ac2271/6628dc8851b16f30f6c4e28b/Show_Optional_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6a258278d6389f21/6628dc88528fc1e96355b5de/Save_Exit.png) ## Get All Terms across All Taxonomies This action fetches the details of all the terms across all the taxonomies in a stack. 1. Under **Choose an Action** tab, select the **Get All Terms across All Taxonomies** action. 2. On the **Get All Terms across All Taxonomies Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** from the **Lookup** list. For example, select _Test_ stack. 3. Enter the **Search Term(s)** to fetch all the term(s). For example, enter _repeat_ in Search Term. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt49aa6a9b796e8820/6628dc96a02ad71e20ee9a13/Select_Fields.png) 4. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Term Limit**, **Skip Term (Pagination)** fields. For example, enter _4_ in Term Limit and _1_ in Skip Term (Pagination). 5. Click the checkboxes to include the **count of terms**, **number of child terms**, and **referenced entries count**. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt502a8685503bb579/6628dc96bb6372c9681dfbb3/Show_Optional_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1ee846b9069ffd7e/6628dc964da2a9a219ff2b4b/Save_Exit.png) ## Get a Single Taxonomy This action fetches the details of a single taxonomy in a stack. 1. Under **Choose an Action** tab, select the **Get a Single Taxonomy** action. 2. On the **Get a Single Taxonomy Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** and **Taxonomy** from the **Lookup** list. For example, select _Test_ stack and _Sample\_Taxonomy_ taxonomy. 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the checkboxes for the **count of terms**, **referenced term count**, and **referenced entries count**. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfb1e67410119a52e/6628dc34b05441619999ffbe/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt17c4f33c96b7cc05/6628dc34bb6372e0351dfba7/Save_Exit.png) ## Get a Single Term This action fetches the details of a single term in a stack. 1. Under **Choose an Action** tab, select the **Get a Single Term** action. 2. On the **Get a Single Term Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Taxonomy**, and **Term** from the **Lookup** list. For example, select _Test_ stack, _Sample\_Taxonomy_ taxonomy, and _Parent\_Test_ term. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt89795e01bdf23991/6628dc41528fc16db555b5d4/Select_Fields.png) 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the checkboxes for the **number of child terms** and **referenced entries count**. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1a9c78cd8645085f/6628dc4085518c1bba557f19/Show_Optional_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt97d9e5311931e934/6628dc4081c88442fa37fdb7/Save_Exit.png) ## Import a Taxonomy This action imports a taxonomy, along with all its associated terms in a stack. 1. Under **Choose an Action** tab, select the **Import a Taxonomy** action. 2. On the **Import a Taxonomy Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** from the **Lookup** list. For example, select _Test_ stack. 3. Select the **Format**, i.e., **CSV** or **JSON** to import the taxonomy. 4. In the **Taxonomy Data** field, enter the data to import. Provide the data in **JSON** or **CSV** format. **Example:** **CSV Format:** ``` Taxonomy Name,Taxonomy Uid,Taxonomy Description,Level 1 Term Name,Level 1 Term Uid,Level 2 Term Name,Level 2 Term Uid,Level 3 Term Name,Level 3 Term Uid Sample Parent Taxonomy,parent_taxonomy,,,,,,, ,,,Sample Child 1,sample_child_1,,,, ,,,,,Sample Grandchild Term 1,sample_grand_child_term_1,, ,,,,,Sample Grandchild Term 2,sample_grand_child_term_2,, ,,,Sample Child 2,sample_child_2,,,, ,,,,,Sample Grandchild Term 3,sample_grand_child_term_3,, ,,,,,,,Sample Great Grandchild Term 1,sample_great_grand_child_term_1 ``` **JSON** ``` {"taxonomy":{"uid":"parent_taxonomy","name":"Sample Parent Taxonomy","description":""},"terms":[{"uid":"sample_child_1","name":"Sample Child 1","parent_uid":null},{"uid":"sample_child_2","name":"Sample Child 2","parent_uid":null},{"uid":"sample_grand_child_term_1","name":"Sample Grandchild Term 1","parent_uid":"sample_child_1"},{"uid":"sample_grand_child_term_3","name":"Sample Grandchild Term 3","parent_uid":"sample_child_2"},{"uid":"sample_grand_child_term_2","name":"Sample Grandchild Term 2","parent_uid":"sample_child_1"},{"uid":"sample_great_grand_child_term_1","name":"Sample Great Grandchild Term 1","parent_uid":"sample_grand_child_term_3"}]} ``` ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8272056ac1576daf/6628dcb0ac4b005361c42d25/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt69737243bd27c675/6628dcb133301d021f89290f/Save_Exit.png) ## Update a Taxonomy This action lets you update the description and title of a taxonomy. 1. Under **Choose an Action** tab, select the **Update a Taxonomy** action. 2. On the **Update a Taxonomy Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** and **Taxonomy** from the **Lookup** list. For example, select _Test_ stack and _Sample\_Taxonomy_ taxonomy. 3. Enter a suitable **Taxonomy Title** and **Taxonomy Description**. For example, enter _Sample\_Taxonomy\_Updated_ in Taxonomy Title and _The Sample\_Taxonomy is updated_ in Taxonomy Description. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt949a9e28e302268f/6628dcbf24e1814840ace7a5/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9998eca0706c5c33/6628dcbfb8b5ced5fadc20a7/Save_Exit.png) ## Update a Term This action lets you update the title of a term. 1. Under **Choose an Action** tab, select the **Update a Term** action. 2. On the **Update a Term Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Taxonomy**, and **Term** from the **Lookup** list. For example, select _Test_ stack, _Sample\_Taxonomy_ taxonomy, and _Parent\_Test_ term. 3. Enter a suitable **Term Title** to update. For example, enter _Parent\_Test \_Updated_ in Term Title. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt00712a2d6ce0ae94/6628dccfb054412b6999ffc9/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadd15580ff3bc08b/6601a8d101e3118155cb0b30/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf92d434505369e57/662a27d9a9b0abdcbeb92e4f/Save_Exit.png) --- ## URL: https://www.contentstack.com/docs/agent-os/contentstack-management-users-actions --- title: "Contentstack Management - Users Actions" description: "Use the Contentstack Management Users action to automate fetching all user info." url: "https://www.contentstack.com/docs/agent-os/contentstack-management-users-actions" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: contentstack-management-users-actions.md --- # Contentstack Management - Users Actions Contentstack, being an Enterprise Content Management (ECM) system, accommodates numerous [users](/docs/headless-cms/about-stack-users) with different permissions collaborating together. In Contentstack, all the member accounts of a stack are referred to as users. By using the Contentstack Management Users action, you can fetch user-related details, such as name, email, and so on. ![User\_Information.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt790fe49aa6552bd0/6601ade20901369680d96fe8/User_Information.png) Let’s look at the action in detail. ## Get User Information This action gets a user's first name, last name and email address based on the user ID. 1. Under **Choose an Action** tab, select the **Get User Information** action. 2. On the **Get User Information Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account to Automate](/docs/agent-os/about-contentstack-management-actions) step. 2. Provide a **User ID** to fetch the user details. **Note:** To fetch the user ID, you need to configure an action and select the dropdown to fetch from the previous step, where user details can be fetched. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc896ef7ecb20da38/66f28a30ee6d37e2aea74767/Select_Fields.png) 3. You can easily select multiple user IDs from the **Suggested Data Elements** drop-down. This will automatically retrieve all the user IDs generated in the previous steps, streamlining the process. ![Select\_Fields\_User\_Profile.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltba274015f55e0c4c/682b22e5725241c7d18ceee4/Select_Fields_User_Profile.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. 5. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6f30aabc225fdc31/66f28a2f8429273a92eed865/Save_Exit.png) --- ## URL: https://www.contentstack.com/docs/agent-os/contentstack-management-variants-actions --- title: "Contentstack Management - Variants Actions" description: "Use the Contentstack Management Variants actions to automate variants based operations." url: "https://www.contentstack.com/docs/agent-os/contentstack-management-variants-actions" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: contentstack-management-variants-actions.md --- # Contentstack Management - Variants Actions [Variants](/docs/personalize/about-variants) are the different variations of an entry displayed to different audiences created within a Personalize project. The Contentstack Management Variant Actions lets you update, publish, and fetch the details of all the variants in a Variant Group. **Note:** You can create an [Entry Variant](/docs/headless-cms/create-an-entry-variant) for Variant Groups via Automations or the CMS. However, audiences for Experiences can be created **only** via the Contentstack Personalize platform. ![image1.jpg](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt91ef7ea1a19cf36c/671901c61491ac32ca4c7794/image1.jpg) Let’s look at each of them in detail. ## Get All Variants of a Content Type This action fetches the details of all the variants for the selected content type. 1. Under **Choose an Action** tab, select the **Get All Variants of a Content Type** action. 2. On the **Get All Variants of a Content Type** **Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack** and **Content** **Type** from the **Lookup** list. ![Select\_Fields\_Get\_All\_Variants\_of\_a\_Content\_Type.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf56f0c26be1e677b/682b052b377d2d7e5723089d/Select_Fields_Get_All_Variants_of_a_Content_Type.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. 5. On successful configuration, you can see the below output. Click **Save and Exit**. ![image3.jpg](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1660b4b08476773e/67190169a8ba14e2346eef94/image3.jpg) ## Get All Variants of an Entry This action fetches the details of all the variants of a specific entry for the selected content type. 1. Under **Choose an Action** tab, select the **Get All Variants of an Entry** action. 2. On the **Get All Variants of an Entry** **Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Content Type**, and **Entry** from the **Lookup** list.![Select\_Fields\_Get\_All\_Variants\_of\_an\_Entry.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted873bcd130b59e6/682b052b64f73f1196901b1d/Select_Fields_Get_All_Variants_of_an_Entry.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. 5. On successful configuration, you can see the below output. Click **Save and Exit**.![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdbfef8846801a1e3/66f417a4f82be113727f7dd2/Save_Exit.png) ## Get a Single Variant This action fetches the details of a single variant from a selected Variant Group. 1. Under **Choose an Action** tab, select the **Get a Single Variant** action. 2. On the **Get a Single Variant Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Variant Group**, and **Variant** from the **Lookup** list. ![Select\_Fields\_Get\_a\_Single\_Variant.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3d3206e0c66a97a1/682b052ba4165a1b24adea32/Select_Fields_Get_a_Single_Variant.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. 5. The output will be shown as follows. Click the **Save and Exit** button.![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9d5f3e689d01ddfe/66f417b21c93ab52fbd54dcd/Save_Exit.png) ## Publish Variant(s) of an Entry This action publishes the entry’s existing variant(s). 1. Under **Choose an Action** tab, select the **Publish Variant(s) of an Entry** action. 2. On the **Publish Variant(s) of an Entry Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Branch**, **Content Type**, **Entry**, **Variant Group**, and **Variant(s)** from the **Lookup** list. ![Select\_Fields\_Publish.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5adbf883c3955585/682b06e6a4165af6c9adea40/Select_Fields_Publish.png) 3. Select the **Locale(s)** and **Environment(s)** to publish the entry’s variant. You can select multiple locales and environments. ![Select\_Field2\_Publish.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3f3bb2826904785a/682b06e5951e4b7605042ef7/Select_Field2_Publish.png) 4. Optionally, enable the **Show Optional Fields** toggle button to schedule the publishing activity. You can mark the checkboxes for **Nested reference publishing**, **Publish latest base**, **Publish latest base conditionally**. **Additional Resource:** Refer to the [Publish an Entry Variant](https://www.contentstack.com/docs/headless-cms/publish-an-entry-variant/) document to learn more. ![Show\_Optional\_Fields\_Publish.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta67f23368b2bffce/682b07347ce594fa5e0c6993/Show_Optional_Fields_Publish.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. 5. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc1a8db4999de08fe/66f417c78a50c0151068fbed/Save_Exit.png) ## Update a Variant of an Entry This action updates the content of an entry’s existing variant in the Variant Group. 1. Under **Choose an Action** tab, select the **Update a Variant of an Entry** action. 2. On the **Update a Variant of an Entry Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](/docs/agent-os/about-contentstack-management-actions) step. 2. Select a **Stack**, **Content Type**, **Entry**, **Variant Group**, and **Variant** from the **Lookup** list. ![Select\_Fields\_Update.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfc3f1dce0f5d297f/682b0812ef59b107cf6b5290/Select_Fields_Update.png) 3. Enter the **Entry Data** to update the variant in JSON format.![Entry\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt803fc691cd009d04/66f417d33816cb0a7ccfec2c/Entry_Field.png) **Sample JSON:** ``` { "entry": { "title": "Sample Title Updated", "name": "Jane Doe", "group": { "multi_line": "This is the updated multi-line field content." }, "global_field": { "single_line": "This is the updated single-line field content." } } } ``` 4. Enter or fetch the **Change** **Set** data to update the variant content in JSON format. Change Set represents a subset of fields and their updated values from the entry data. It indicates that only certain fields are updated, while the rest of the data remains unchanged. ![Change\_Set.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1d7d45123f659a99/6794ebf4a326205e43291f47/Change_Set.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. 5. The output will be shown as follows. Click the **Save and Exit** button.![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8bade2d32b9c9036/66f417d3ee6d374962a759c8/Save_Exit.png) --- ## URL: https://www.contentstack.com/docs/agent-os/contentstack-trigger --- title: "Contentstack Trigger" description: "Contentstack Trigger" url: "https://www.contentstack.com/docs/agent-os/contentstack-trigger" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: contentstack-trigger.md --- # Contentstack Trigger The Contentstack trigger lets you add Contentstack-specific trigger events, such as the creation/updating/publishing/unpublishing/deletion/deployment, etc., of workflows, entries, releases, global fields, assets, branches, and/or content types. With the Entry Comment Trigger, you can trigger an automation when an entry comment is created, updated or deleted. ## Prerequisites To use the Contentstack Management connector, you first need to add your [Contentstack account](https://www.contentstack.com/login). To do so, follow the steps given below: ### Connect your Contentstack Account 1. Click **Configure Trigger** from the left navigation panel. 2. Within the **Configure Trigger**, click the **Contentstack** connector. ![Select\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcd102e7034cb29a0/6683e87a3d793f9f92768f8f/Select_Trigger.png) 3. Under **Choose Trigger** tab, select any one trigger event from the list. Here, we are selecting the **Entry Comment** trigger. ![Select\_Entry\_Comment\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt947af919a8cc9aad/663da06aabb6506fa03bde89/Select_Entry_Comment_Trigger.png) 4. On the **Configure Trigger** page, click the **\+ Add New Account** to add your Contentstack account. ![Add\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt121e93d37ea8568f/6683e87a62008a349910bc50/Add_Account.png) 5. Select a way to add a new account. You can authenticate your account in two ways: **Contentstack OAuth** or **Management Token**. ![Authorize\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6b3e4620943849cf/660a41ca1b5a584959adc9e8/Authorize_Account.png) 1. If you select **Contentstack OAuth** and click **Proceed**, the Manage Permissions modal will open, as shown below. Provide the OAuth permissions for all the values by checking the boxes and click **Authorize**. ![Authorize\_Org.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt29a9f4a3b919e034/6683e87a534bb9b8ac26b131/Authorize_Org.png) **Note:** Contentstack offers support for [Branches](/docs/headless-cms/about-branches/) in Automations. You must authenticate and re-authorize your existing account by checking all the permissions to add your Contentstack account. 2. In the pop-up, select your organization to complete the authorization. ![Select\_Organization.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt96ced61a3a48f48b/656daf7dae62f7796af682fd/Select_Organization.png) 3. In the pop-up that appears, view the module-specific access rights provided to the app. Click **Authorize** to complete authorization. ![Authorize\_Organization.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt58cd95e87f126f3f/6602bc9bdb68ba97b139e838/Authorize_Organization.png) 4. Provide an Account Name and then click **Save**. ![Save\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaa0dd4d11504d599/6601a877c19510f2b7decebe/Save_Account.png) 5. If you select **Management Token** and click **Proceed**, the **Authorize** modal will open. Enter a **Title** and the **Management Token** of your stack and click **Authorize**. Once done, you can go ahead and set up your Contentstack Trigger. ## Set up the Contentstack Trigger Perform the following steps to set up the Contentstack Trigger: 1. From the left navigation panel, click **Configure Trigger**. 2. Within the **Configure Trigger** Step, click the **Contentstack** connector. ![Select\_Contentstack\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc6454fb2a4242c11/66a8c4b62fce4524936fce16/Select_Contentstack_Trigger.png) 3. Under **Choose Trigger**, you will find the following trigger events for the Contentstack trigger: * **Asset Trigger:** Triggered when you create/update/publish/unpublish/delete assets. * **Branch Trigger:** Triggered when you create/delete branch and assign/unassign branch aliases. * **Content Type Trigger:** Triggered when you create/update/delete content types. * **Entry Comment Trigger:** Triggered when you create/update/delete entry comments. * **Entry Trigger:** Triggered whenever you create/update/publish/unpublish/delete entries. * **Global Field Trigger:** Triggered when you create/update/delete global fields. * **Release Trigger:** Triggered when you deploy a release to an environment. * **Workflow Trigger:** Triggered when a workflow stage changes.![Select\_Trigger\_Events.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt99ddca20423a5936/663da06a044f23484d59f37e/Select_Trigger_Events.png) **Note:** After successfully configuring a trigger, if you re-configure any other trigger you will be prompted to revert to the previously configured trigger. You can revert back to the last trigger configurations by clicking the Revert Changes button. Let’s look at each of them in detail. ### Asset Trigger The Asset Trigger event lets you trigger an automation when you create/update/publish/unpublish/delete assets. Let’s look at the steps to set up the trigger event. 1. Under the **Choose Trigger** tab, select **Asset Trigger**. 2. On the **Asset Trigger Configure Trigger** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](#connect-your-contentstack-account) step. 2. Select the trigger event from the dropdown, i.e., **Asset Created** and select a **Stack**, and **Branch** from the **Lookup** dropdown. For Asset Trigger, you will find the following events: * **Asset Created:** When you create a new asset in your stack. * **Asset Updated:** When you update an asset. * **Asset Deleted:** When you delete an asset. * **Asset Published:** When you publish your assets to a publishing environment. * **Asset Publish Failed:** When asset publishing fails due to error. * **Asset Unpublished:** When you unpublish or remove your assets from a publishing environment. * **Asset Unpublish Failed:** When the asset unpublishing activity fails. * **ALL:** When you perform any of the above activities on an asset. ![Asset\_Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcf5f0e8e22d99428/66a8c42aa4a6574b3a1de3c7/Asset_Select_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Environment** field. ![Select\_Environment.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6a2e4ca52e57051e/66a8c42ac10344956206767f/Select_Environment.png) 3. Click **Proceed**. 4. Click **Test Trigger** to execute and test the trigger that you configured. ![Test\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2bfedc823c5ef13f/66a8c42aa4a657a6b81de3cb/Test_Trigger.png) 5. If successful, you will see an output as follows. If it looks appropriate, click **Save and Exit**. ![Save\_Exit\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte8410dde08406a29/66a8c42a2b7be56790a76668/Save_Exit_Button.png) This sets your **Asset** Trigger. ### Branch Trigger The Branch Trigger event lets you trigger an automation when you create or delete a branch. It also invokes the trigger when branch aliases are assigned or unassigned. **Example:** Set up an automation with the Branch Trigger and Slack Action. With this automation, you can send a slack notification to the relevant team members/Slack channel when a new branch is created, informing the users about the purpose of the new branch. **Note:** You must have the [Branches](/docs/headless-cms/about-branches/) feature enabled for your stack. For more information, please reach out to our [Support Team](mailto:support@contentstack.com). Let’s look at the steps to set up the trigger event. 1. Under the **Choose Trigger** tab, select **Branch Trigger**. 2. On the **Branch Trigger Configure Trigger** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](#connect-your-contentstack-account) step. 2. Select the trigger event from the drop-down, i.e, **Branch Created**. Select a **Stack** from the **Lookup** drop-down. For Branch Trigger, you will find the following module-specific sub-events: * **Branch Created**: Triggers when you create a new branch in the selected stack. * **Branch Deleted**: Triggers when you update a branch in the selected stack. * **Branch Alias Assigned**: Triggers when you assign an alias to a branch in the selected stack. * **Branch Alias Unassigned**: Triggers when you unassign an alias from a branch in the selected stack. * **All**: Triggers when you perform any of the above activities on a branch or branch alias in the selected stack. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt58b59cb4c311e248/663dd3b52a72d9c4e617a4c8/Select_Fields.png) 3. Click **Proceed**. 4. Click **Test Trigger** to execute and test the trigger that you configured. **Note:** You can preview the latest data created in Contentstack without performing the trigger event. The latest data will be fetched and displayed to you after you test the trigger. You must click **Retest** to fetch the data you created in Contentstack. ![Test\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt24e8d29ae35d4edc/663dd3b5e7f45d8a038b0889/Test_Trigger.png) 5. When successful, you will see an output as follows. If it looks appropriate, click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltde5c57a395066086/663dd3b5f6a9a3c7cb286b79/Save_Exit.png) This sets your Branch Trigger. ### Content Type Trigger The Content Type Trigger event lets you trigger an automation when you create/update/delete content types. Let’s look at the steps to set up the trigger event. 1. Under the **Choose Trigger** tab, select **Content Type Trigger** . 2. On the **Content Type Trigger Configure Trigger** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](#connect-your-contentstack-account) step. 2. Select the trigger event from the dropdown, i.e., **Content Type Created** and select a **Stack,** and **Branch** from the **Lookup** dropdown For Content Type Trigger, you will find the following events: * **Content Type Created:** When you create a new content type. * **Content Type Updated:** When you update a content type. * **Content Type Deleted:** When you delete a content type. * **ALL:** When you perform any of the above activities on a content type. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt68a8a7f581aea3be/66a8c6d1cfbd234e8d7d780c/Select_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the specific **Content Type.** ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfaea3f83a9644f0b/66a8c6d12fce4547746fce33/Show_Optional_Fields.png) 3. Click **Proceed**. 4. Click **Test Trigger** to execute and test the trigger that you configured. **Note:** You can preview the latest data created in Contentstack without performing the trigger event. The latest data will be fetched and displayed to you after you test the trigger. You must click Retest to fetch the data you created in Contentstack. ![Test\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte1f5a4cabcbbd040/66a8c6d2610c41ad51420395/Test_Trigger.png) 5. If successful, you will see an output as follows. If it looks appropriate, click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt91022d0b2bbd08c8/66a8c6d1a3b12ea8d05f5e13/Save_Exit.png) This sets your **Content Type** trigger. ### Entry Trigger The Entry Trigger event lets you trigger an automation when you create/update/publish/unpublish/delete entries. Let’s look at the steps to set up the trigger event. 1. Under the **Choose Trigger** tab, select **Entry Trigger**. 2. On the **Entry Trigger Configure Trigger** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](#connect-your-contentstack-account) step. 2. Select the trigger event from the dropdown, i.e, **All.** Select a **Stack,** and **Branch** from the **Lookup** dropdown. For Entries, you will find the following module-specific sub-events: * **Entry Created:** Triggers when you create a new entry * **Entry Updated:** Triggers when you update an entry * **Entry Deleted:** Triggers when you delete an entry * **Entry Published:** Triggers when you publish an entry * **Entry Unpublished:** Triggers when you unpublish an entry * **Entry Publish Failed:** Triggers when an entry publish activity fails * **Entry Unpublish Failed:** Triggers when an entry unpublish activity fails * **ALL:** Triggers when you perform any of the above activities on an entry ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt48e7ff07c8e624e8/66a8c762a4a6576d3d1de3e2/Select_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Content Type** and **Environment** fields. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt34fd59d3f677bf5e/66a8c763bb9512d459022a5c/Show_Optional_Fields.png) 3. Click **Proceed**. 4. Click **Test Trigger** to execute and test the trigger that you configured. **Note:** You can preview the latest data created in Contentstack without performing the trigger event. The latest data will be fetched and displayed to you after you test the trigger. You must click Retest to fetch the data you created in Contentstack. ![Test\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5423f11615bd9c50/66a8c763610c41ff4d4203a9/Test_Trigger.png) 5. If successful, you will see an output as follows. If it looks appropriate, click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte25d7f8ba6a86685/66a8c762610c4192cb4203a5/Save_Exit.png) This sets your **Entry** trigger. ### Entry Comment Trigger The Entry Comment Trigger event lets you trigger an automation when a comment is created/updated/deleted for an entry. **Example:** Set up an automation with the Entry Comment Trigger and Slack Action. With this automation, you can send a slack notification to the relevant team members/Slack channel when a user creates, updates or deletes an entry’s comment. Let’s look at the steps to set up the trigger event. 1. Under the **Choose Trigger** tab, select **Entry Comment Trigger**. 2. On the **Entry Comment Trigger Configure Trigger** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](#connect-your-contentstack-account) step. 2. Select the trigger event from the drop-down, i.e, **Entry Comment Created**. Select a **Stack**, and **Branch** from the **Lookup** drop-down. For Entry Comment Trigger, you will find the following module-specific sub-events: * **Entry Comment Created**: Triggers when you create a new entry comment. * **Entry Comment Updated**: Triggers when you update an entry comment. * **Entry Comment Deleted**: Triggers when you delete an entry comment. * **All**: Triggers when you perform any of the above activities on an entry comment. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6916aa80ab5143c6/663d993d1077fa35b2de775c/Select_Fields.png) **Note:** By default, the main branch is selected (even if the **Branch** field is empty). 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Content Type** and **Entry** fields. **Note:** If you do not select any content type or entry, you will be able to invoke the trigger event on all entries or content types within the selected stack. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt005448c74ebcb302/663d993d907afe2ae9af8b0d/Show_Optional_Fields.png) 3. Click **Proceed**. 4. Click **Test Trigger** to execute and test the trigger that you configured. **Note:** You can preview the latest data created in Contentstack without performing the trigger event. The latest data will be fetched and displayed to you after you test the trigger. You must click **Retest** to fetch the data you created in Contentstack. ![Test\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfc5c9c19d0b2d8f1/663d993dd94eaf19afd2b50f/Test_Trigger.png) 5. When successful, you will see an output as follows. If it looks appropriate, click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt90b3ebc958a4cfde/663d993df807b270b8e9c783/Save_Exit.png) This sets your Entry Comment Trigger. ### Entry Variant Trigger The Entry Variant Trigger event lets you trigger an automation when an entry’s variants are created, updated, or deleted. **Note:** The [Entry Variants](/docs/headless-cms/about-entry-variants) feature is currently available as part of an Early Access Program and may not be available to all users. For more information, you can reach out to our [support](mailto:support@contentstack.com) team. **Example** You can set up an automation with the Entry Variant Trigger and Slack Connector to send a Slack notification to the relevant team members or Slack channel when a user creates, updates, or deletes an entry’s variant in the CMS. Let’s look at the steps to set up the trigger event. 1. Under the **Choose Trigger** tab, select **Entry Variant Trigger**. 2. On the **Entry Variant Trigger Configure Trigger** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](#connect-your-contentstack-account) step. 2. Select the trigger event from the dropdown, for example, **All**. Then, select a **Stack** and a **Branch** from the **Lookup** list. For Entry Variant Trigger, you will find the following module-specific sub-events: * **Entry Variant Created**: Triggers when you create a new entry variant. * **Entry Variant Updated**: Triggers when you update an entry’s variant. * **Entry Variant Deleted**: Triggers when you delete an entry’s variant. * **All**: Triggers when you perform any of the above activities (create/update/delete) on an entry variant. **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). ![ConfigureTrigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt69edc54d1522524b/678f78dce698989394282e94/ConfigureTrigger.png) 3. **Optionally**, enable the **Show Optional Fields** toggle button to display the **Content Type**, **Entry**, **Variant Group**, and **Variant** fields. **Note:** If you do not select any of the optional fields, you will be able to invoke the trigger event on **all** entries, content types, and variants within the selected stack. ![ShowOptionalFields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt174c3e2582a4476a/678f78dcee8f383da0aa3858/ShowOptionalFields.png) 3. Click **Proceed**. 4. Click **Test Trigger** to execute and test the trigger that you configured. ![TestTrigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltca4639637c6ae4fc/678f78dcff9d110e7b7d9f08/TestTrigger.png) **Note:** You can preview the latest data created in Contentstack without performing the trigger event. The latest data will be fetched and displayed to you after you test the trigger. You must click **Retest** to fetch the data you created in Contentstack. 5. When successful, you will see an output as follows. If it looks appropriate, click **Save and Exit**. ![SaveandExit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltedaad628d6cb4908/678f78dc4a780327276c05da/SaveandExit.png) This sets your Entry Variant Trigger. ### Global Field Trigger The Global Field Trigger event lets you trigger an automation when you create/update/delete global fields. Let’s look at the steps to set up the trigger event. 1. Under the **Choose Trigger** tab, select **Global Field Trigger** . 2. On the **Global Field Trigger Configure Trigger** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](#connect-your-contentstack-account) step. 2. Select the trigger event from the dropdown, i.e., **Global Field Created** and select a **Stack**, and **Branch** from the **Lookup** dropdown. For Global Field, you will find the following events: * **Global Field Created:** When you create a global field. * **Global Field Updated:** When you update a global field. * **Global Field Deleted:** When you delete a global field. * **ALL:** When you perform any of the above activities on a global field. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6cffde88d5783c4b/66a8c89590e89a563a2900bc/Select_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the specific **Global Field**. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfa2dc451a42560aa/66a8c8952b7be565f8a766ab/Show_Optional_Fields.png) 3. Click **Proceed**. 4. Click **Test Trigger** to execute and test the trigger that you configured. **Note:** You can preview the latest data created in Contentstack without performing the trigger event. The latest data will be fetched and displayed to you after you test the trigger. You must click Retest to fetch the data you created in Contentstack. ![Test\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt166006749e78202d/66a8c895adec83574f2d0cd8/Test_Trigger.png) 5. If successful, you will see an output as follows. If it looks appropriate, click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9410922cf0c39ae2/66a8c89555b2352912e7ad99/Save_Exit.png) This sets your **Global Field** trigger. ### Job Trigger The Job Trigger event lets you trigger an automation when you publish or unpublish a job. A job refers to any **bulk action** you perform, such as publishing or unpublishing entries, assets, and releases. Each job can include multiple related items that require a specific action. For example, publishing an entry along with all the assets and entries it references would be considered a single job. **Note:** You must have the [Nested Reference Publishing](/docs/headless-cms/about-nested-reference-publishing) feature enabled for your organization. For more information, please reach out to our [Support Team](mailto:support@contentstack.com). Let’s look at the steps to set up the trigger event. 1. Under the **Choose Trigger** tab, select **Job Trigger**. 2. On the **Job Trigger Configure Trigger** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](#connect-your-contentstack-account) step. 2. Select the trigger event from the drop-down, i.e, **Job Published**. Select a **Stack** from the **Lookup** drop-down. For Job Trigger, you will find the following module-specific sub-events: * **Job Published:** Triggers when you bulk publish entries/assets/releases. * **Job Unpublished:** Triggers when you bulk unpublish entries/assets/releases. * **All:** Triggers when you perform any of the above activities. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdbc91ed50a333fc2/668250fcc66c88b5da69e196/Select_Fields.png) 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Environment** field. **Note:** If you do not select any environment, the trigger event will be invoked across all environments within the selected stack. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltad794c28b9e351b2/668250fbc8ca77feb1cdf564/Show_Optional_Fields.png) 3. Click **Proceed**. 4. Click **Test Trigger** to execute and test the trigger that you configured. **Note:** You can preview the latest data created in Contentstack without performing the trigger event. The latest data will be fetched and displayed to you after you test the trigger. You must click **Retest** to fetch the data you created in Contentstack. ![Test\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt24e8d29ae35d4edc/663dd3b5e7f45d8a038b0889/Test_Trigger.png) 5. When successful, you will see an output as follows. If it looks appropriate, click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd06831c4cbb3eda4/668250fbe31634667871db05/Save_Exit.png) This sets your Job Trigger. ### Release Trigger The Release Trigger event lets you trigger an automation when you deploy a release in an environment. Let’s look at the steps to set up the trigger event. 1. Under the **Choose Trigger** tab, select **Release Trigger** . 2. On the **Release Trigger Configure Trigger** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](#connect-your-contentstack-account) step. 2. Select the trigger event from the dropdown, i.e., **Release Deployed** and select a **Stack** , and **Branch** from the **Lookup** dropdown. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcd2d73781b037895/66a8c94f2fce4526b16fce6b/Select_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Release** , and **Environment** fields. ![Show\_optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc6afa0993379c16c/66a8c94fcfbd230c247d7834/Show_optional_Fields.png) 3. Click **Proceed**. 4. Click **Test Trigger** to execute and test the trigger that you configured. **Note:** You can preview the latest data created in Contentstack without performing the trigger event. The latest data will be fetched and displayed to you after you test the trigger. You must click Retest to fetch the data you created in Contentstack. ![Test\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7e6568105f8940ba/66a8c94feb20b470672cfa00/Test_Trigger.png) 5. If successful, you will see an output as follows. If it looks appropriate, click **Save and Exit** . ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt20d0138139860a4a/66a8c94fc56a10408b3c10e7/Save_Exit.png) This sets your **Release** trigger. ### Workflow Trigger The Workflow Trigger event lets you trigger an automation when a workflow stage changes. Let’s look at the steps to set up the trigger event. 1. Under the **Choose Trigger** tab, select **Workflow Trigger**. 2. On the **Workflow Trigger Configure Trigger** page, enter the details given below: Click **+ Add New Account** button to connect your Contentstack account as shown in the [Connect your Contentstack Account](#connect-your-contentstack-account) step.3. Select the trigger event from the dropdown, i.e., **Workflow Stage Changed** .![Select\_Workflow\_Event.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta3482c4a3e8c104f/66a8c9bfcfbd235e847d7838/Select_Workflow_Event.png) 4. Select a **Stack** , **Branch, Content Type** , and **Workflow** from the **Lookup** dropdown. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt27669a98fa4488dc/66a8c9bf2fce458c486fce86/Select_Fields.png) **Note:** By default, the **main** branch is selected (even if the **Branch** field is empty). 5. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Workflow Stage** field. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte31c8fc9e43b6272/66a8c9bfadec834cf42d0d03/Show_Optional_Fields.png) 3. Click **Proceed**. 4. Click **Test Trigger** to execute and test the trigger that you configured. ![Test\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5423f11615bd9c50/66a8c763610c41ff4d4203a9/Test_Trigger.png) 5. If successful, you will see an output as follows. If it looks appropriate, click **Save and Exit** . ![Save-Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt19fe29b63b0f6970/66a8c9bf7f0b6778c3fd1be3/Save-Exit.png) This sets your **Workflow** trigger. --- ## URL: https://www.contentstack.com/docs/agent-os/coveo --- title: "Coveo" description: "Learn to use the Coveo Automate connector to efficiently push and delete items from your website to Coveo." url: "https://www.contentstack.com/docs/agent-os/coveo" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: coveo.md --- # Coveo The Coveo connector allows you to efficiently push new items from your website or remove outdated ones, ensuring your content stays up-to-date and relevant in your search experiences. This guide offers a step-by-step approach to using the Coveo connector to manage content on the Coveo platform. You will learn how to use the connector into your workflow and perform essential content management tasks such as pushing and deleting items, making it easier to maintain and optimize your website's search content on Coveo. **Example** Set up an automation using Contentstack Entry Publish Trigger and Coveo Push Content action. When a user publishes an entry in a specific environment, the entry URL is fetched, and the content is pushed to the selected Coveo Source. ## Prerequisites * [Coveo account](https://platform.cloud.coveo.com/login) * [Contentstack account](https://www.contentstack.com/login/) * Access to organization that has Agent OS enabled ## Retrieve the Coveo API Key and Organization ID To use the Coveo Connector, you need the API Key and Organization ID. To fetch these details, follow the steps given below: 1. Log in to your [Coveo](https://platform.cloud.coveo.com/login) account. 2. From the top navigation, click **Contentstack**. You will see four regions listed (**US EU AU CA**). 1. Click **Create a test organization**. ![Select\_Org.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt38c178e4c6641cd4/6709235a4eae35ae17b43fd4/Select_Org.png) 2. On the **Create a Test Organization** page, enter a name for your organization in the **Organization** **name** field. 3. Select your preferred region for the available options and click the **Create** button. ![Create a Test Organization.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5eae164f1216ab04/67092200698556397c5be423/Create_a_Test_Organization.png) 3. Your Organization ID will be displayed. Please note or copy the Organization ID as (shown below). We will need this ID while setting up the connector. ![Select\_your\_org.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9b03c1b54feb590d/670924147d4fe4fd5d6622f6/Select_your_org.png) 4. Now, we need to obtain the API Key. To do this, follow the steps given below: 1. From the left navigation panel, click **Organization**, and then go to the **API** **Keys** tab. 2. On the **API** **Keys** page, click the **Add** **key** button to create a new API key. ![API Keys.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdacd946eb6beedab/670924daef76892cf0567c94/API_Keys.png) 3. You will be navigated to the **Add an API key** screen. By default, the **Configuration** tab will be selected. Enter a name for the key inside the **Key** **name** field and an optional description. 4. In the **Privileges** tab, select **Admin** from the **Preset** drop-down. ![Admin Selection.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc7e8ed5c6f701f97/67092200ff6476145d2192d5/Admin_Selection.png) 5. Click the **Add** **key** button, copy the API key, and then click the **Ok** button. You will see the API key. ![Add an API Key.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfdcf5194032dbd3d/67092200b0b1531757951da0/Add_an_API_Key.png) **Note:** Please ensure you copy the API key to your clipboard. You will not be able to view it again. 6. To push (add) or delete items, you must create a source. To do so, follow the steps below: 1. From the left navigation, under **Content**, click **Sources**. Click the **Get** **started** button. If you are added to an existing Coveo organization, you will see the **Add** **source** button. Else, you will see the Get started button where you can start setting up the source. **Additional Resource:** Refer to the [Manage your sources](https://docs.coveo.com/en/3390/index-content/manage-your-sources) document to learn more. 2. In the **Add a source of content** window, click the **Push** tab and click the **Push** card. 3. In the **Add a Push Source** screen, enter a name for the source in the **Source** **name** field and then, click **Add** **source** button. Read the terms, check the 'I understand' box, and click the **Continue** button. Your source will be created. **Note:** Make note of the API key and the Organization ID that we have fetched, we will need this while setting up the account. ## Connect your Coveo Account Perform the following steps to set up the Coveo account: 1. Click **Configure** **Action** **Step** from the left navigation panel. 2. Click **Action** **Step** to configure third-party services. 3. Within the **Configure** **Action** **Step**, click the **Coveo** connector. ![Select\_Coveo\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb1e953420ebbda78/6709220169c48a420583ba47/Select_Coveo_Connector.png) 4. Under **Choose an Action** tab, select any one action from the list. Here, we are selecting the **Delete** **Content** action. ![Select\_Delete\_Content\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7901ab6090347296/670922018307678618c33a7c/Select_Delete_Content_Action.png) 5. On the **Configure** **Action** page, click the **\+ Add New Account** to add your Coveo account. ![Add\_an\_Account\_Delete.jpeg](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf9e3e5df7094c7e4/6718f59443c85447bb668c80/Add_an_Account_Delete.jpeg) 6. In the **Authorize** modal, enter the following: 1. **Title (required)** 2. **API Key (required):** Enter the API key that we retrieved from the [above step](#retrieve-the-coveo-api-key-and-organization-id). 3. **Organization ID (required):** Enter the Organization ID retrieved from the [above step](#retrieve-the-coveo-api-key-and-organization-id). 4. **Select Region (required):** Select the region as shown in the [above step](#retrieve-the-coveo-api-key-and-organization-id). 7. Once done, click **Authorize**. ![Authorize\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt51f54af972adb32f/6709220081159a45f49e6409/Authorize_Button.png) This sets up your Coveo account for the Coveo connector. ## Set up the Coveo Connector Perform the following steps to set up the Coveo action connector: 1. From the left navigation panel, click **Configure Action** Step. 2. Then, click **Action** **Step** to configure third-party services. 3. Within the **Configure** **Action** **Step**, click the **Coveo** connector. ![Select\_Coveo\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb1e953420ebbda78/6709220169c48a420583ba47/Select_Coveo_Connector.png) 4. Under **Choose an Action**, you will see these actions: **Delete** **Content** and **Push** **Content**. ![Select\_Coveo\_Actions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt49aab55d9ae13b6f/670922013104e8fe6690f6af/Select_Coveo_Actions.png) Once done, you can go ahead and set up your Coveo connector. ### Action 1: Select the Delete Content action: 1. Under **Choose an Action** tab, select the **Delete Content** action. 2. On the **Delete** **Content Configure** **Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Coveo account as shown in the [Connect your Coveo Account](#connect-your-coveo-account) step. 2. Select a **Source** to delete the content from. 3. In the **Document** **ID** field, enter the website URL or a file URI you wish to delete. The example below includes a website URL, followed by the file URI fetched from the previous step. ![Delete\_Content\_Fields.jpeg](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt91b5f7f3ecfef809/6718f594f79414637658d21d/Delete_Content_Fields.jpeg) 4. Optionally, enable the **Show Optional Fields** toggle button to check the **Remove all child elements from the document** box, which will delete all items and references. **Additional Resource:** Refer to the [deleteChildren](https://docs.coveo.com/en/search/#q=what%20is%20deleteChildren) documentation to learn more. ![Show\_Optional\_Fields.jpeg](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf8e93524ac3fc476/6718f594e409e1154a047206/Show_Optional_Fields.jpeg) 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test Action**. ![Test\_Action.jpeg](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd46343166941e123/67092218ff6476633a2192e4/Test_Action.jpeg) 5. Once set, click **Save and Exit**. ![Save\_Exit.jpeg](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteadb927e9fc92d6d/6709221878f0165ab75462b8/Save_Exit.jpeg) ### Action 2: Select the Push Content action: 1. Under **Choose** **an Action** tab, select the **Push** **Content** action. 2. On the **Push Content Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Coveo account as shown in the [Connect your Coveo Account](#connect-your-coveo-account) step. 2. Select a **Source** to delete the content to. 3. In the **Document** **ID** field, enter the website URL or a file URI you wish to push. The example below includes a website URL, followed by the file URI fetched from the previous step. **Additional Resource:** Refer to the [Swagger UI](https://platform.cloud.coveo.com/docs?urls.primaryName=PushAPI#/Item/put_organizations__organizationId__sources__sourceId__documents) documentation to learn more. ![Select\_Fields\_Push\_Content.jpeg](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9a26fef6618f0654/6718f59421e431d62c373269/Select_Fields_Push_Content.jpeg) 4. In the **Document Body** field, enter the content items you want to add. You **must** define “data” and “title” as keys and pass strings as values for both, as shown below: ![Document\_Body\_Push\_Content.jpeg](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb8e26e0a127d9d06/6718f5940cb3eca62bc6bf76/Document_Body_Push_Content.jpeg) 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test** **Action**. ![Test\_Action.jpeg](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltacfde54f46025dbc/6709222351c0066c3c802c81/Test_Action.jpeg) 5. Once set, click **Save** **and** **Exit**. ![Save\_Exit.jpeg](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3c591369fe20e2b6/67092223ff647684662192ec/Save_Exit.jpeg) This sets the **Coveo** connector. --- ## URL: https://www.contentstack.com/docs/agent-os/create-an-agent --- title: [Automations guides and connectors] - Create an Agent description: Learn how to build agents to streamline workflows and automate tasks efficiently. url: https://www.contentstack.com/docs/agent-os/create-an-agent product: Automations doc_type: documentation audience: - developers version: v1 last_updated: 2026-02-19 filename: create-an-agent.md --- # [Automations guides and connectors] - Create an Agent This page explains [Automations guides and connectors] - Create an Agent for Automations. It is intended for developers who need to understand or implement this topic. Use it when you are setting up, configuring, or troubleshooting this feature. ## Create an Agent **Note:** **Agent OS** is currently in **Early Access**. Features may change and limitations may apply. We recommend using it in non-production environments until general availability. For more information, contact [support](mailto:support@contentstack.com). An Agent is an intelligent system that blends AI understanding with the right context, instructions, and tools. It acts on behalf of users to perform tasks efficiently and autonomously. To create an agent, follow the below steps: 1. Log into the [Contentstack account](https://www.contentstack.com/login/). 2. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list.![App_Switcher_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta53cf8e3d81561ac/6996d4c2ca1be7000834d2c5/App_Switcher_Icon.png) 3. Open your project or [create](/docs/agent-os/managing-projects#create-a-project) a new one. 4. From the **Agent OS Dashboard** screen, click **+ New Agent**.![New_Agent_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7f37e708e7779bb3/6996d413ca1be7000834d2b9/New_Agent_Button.png) 5. In the **Create Agent** modal, click **Manual Setup**. Enter a suitable Title and a **Description** for your agent. Click the **Create Agent** button.![Create_Agent_Modal.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt00ffd2b99855d2c8/6996d4137dd2cc0008d23e12/Create_Agent_Modal.png) **Note:** You can also create an agent using the **Automated Setup**, where you provide a description and the system automatically configures the trigger, tools, and instructions. 6. You are redirected to the **Agent Builder** page, where you can add the **Trigger**, **Tools**, and **Instructions**.![Agent_Builder_Screen.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt95405d744f240a92/6996d88d2ed19a0008bc0fb5/Agent_Builder_Screen.png) ## Common questions ### What is covered in [Automations guides and connectors] - Create an Agent? This page covers the topic described in the title and provides the steps, options, and examples needed to use it. ### Who should read [Automations guides and connectors] - Create an Agent? Anyone responsible for configuring, implementing, or maintaining this capability should use this page as a reference. ### When should I use this page? Use it when you are setting up this feature, troubleshooting issues, or validating expected behavior. --- ## URL: https://www.contentstack.com/docs/agent-os/create-an-algolia-object-using-entry-uid --- title: "Create an Algolia Object using Entry UID" description: "Create an Algolia Object using Entry UID" url: "https://www.contentstack.com/docs/agent-os/create-an-algolia-object-using-entry-uid" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: create-an-algolia-object-using-entry-uid.md --- # Create an Algolia Object using Entry UID This use case covers a scenario where Automations should be able to retrieve an entry's UID when a user creates/deletes/updates/publishes/unpublishes an entry in Contentstack. The entry UID is then passed as an object ID to the Transform connector, which creates an object with the same UID in the Algolia index once the transformation is complete. Let's break this scenario to see what must be the trigger event and the consequent action required to execute the Automation: * **Set up the Contentstack All'' Entry Trigger Event:** This trigger event is activated whenever a user performs an entry event such as create/delete/update etc., and in turn it activates the Automation. * **Set up the Transform Action:** Once the above event triggers the Automation, you can fetch the entry UID and pass this value as an object in the transform field. * **Set up the Algolia Index Entries Action:** Once the Transform action is completed, you can post the entry UID to the Algolia index as an object. Lets look at the setup in detail. 1. ## Create an Automation To create an automation, perform the steps given below: 1. Log in to your [Contentstack account](https://app.contentstack.com/#!/login) and click the **Automate** icon. 2. Click **\+ New Project** and provide the required details to create a new project. 3. Click **\+ New Automation** to add the steps required to configure automation. Next, lets look at the steps to set up the trigger event. 2. ## Set up the Contentstack Trigger Event 1. Click **Configure Trigger** from the left navigation panel. 2. Within the **Configure Trigger** step, click the **Contentstack** connector. ![Select\_the\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte418388e5e9a3bf8/651ba176375d9846069cdad3/Select_the_Trigger.png) 3. Add your [Contentstack account](https://app.contentstack.com/#!/login). For more information, refer to the [Contentstack Trigger](https://www.contentstack.com/docs/agent-os/contentstack-trigger/) documentation. 4. Once done, select **All**from the list of trigger events and define the rest of the steps needed to set up the trigger (refer **steps 3 to 12** in [Contentstack Trigger](https://www.contentstack.com/docs/agent-os/contentstack-trigger/)). ![Select-Trigger-Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc95ffb1423832b42/63d90ec35e9f5911307af08c/Select-Trigger-Fields.png) 5. Click**Test Trigger** to execute and test the trigger that you configured. 6. Click **Save and Exit**. 3. ## Set up your Transform Action Connector Lets configure the Transform action connector. 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Transform** connector. ![Select\_the\_Transform\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf55d96898cac9d8c/651ba1760a5da820aaabe3f1/Select_the_Transform_Connector.png) 4. Under **Choose an Action**, select the **Transform** action. ![Select-Transform-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4351ec015afdd66e/63d90ea52d94ad4c89edc324/Select-Transform-Action.png) 5. Click **Add Input**, and enter a variable name for the **Input Name** (say, uid) and an Input Value configured in the previous step (entry UID) (see the screenshot in next step). ![Transform-Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb60de52500beb3bc/63d90ec4071fae111ebfd8be/Transform-Input.png) 6. Enter the JSON code to fetch the UID value from the **Input Value** field in a variable. You can use the following code: {objectId: {uid}} ![Transformation-Box.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb94c202186a225c8/63d90ec3e7a6981129095925/Transformation-Box.png) 7. Click**Proceed**. 8. Click **Test Action** to test the configured action. ![Test-Action-Transform.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdae350c383247bbe/63d90ec327e8ed165f5ac24c/Test-Action-Transform.png) 9. After successful configuration, you should see the output shown below. Click **Save and Exit**. ![Save-Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta27bbb128aea7672/63d90ea4ddb7a921030a774d/Save-Exit.png) This sets the **Transform** action connector. 4. ## Test the Automation Now, lets see how you can test out your Automation. To do so, perform the steps given below: 1. Click **\+ Add New Step**. Click **Action Step** to configure third-party services. 2. Within the **Configure Action Step**, click the **Algolia** connector. ![Select\_the\_Algolia\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd4f5b8ba5f2fd264/651ba176964d9b5c31c312de/Select_the_Algolia_Connector.png) 3. Under **Choose an Action**, select the **Index Entries** action. ![Select-Index-Entries-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd6815d61361a5bd6/63d90ea417b06010cf2e2f42/Select-Index-Entries-Action.png) 4. In the **Configure Action** tab, click **\+ Add New Account** to add your Algolia account. ![Add-New-Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf54cd9d37048dead/63d90ea4771d7f10c63c2a7d/Add-New-Account.png) 5. To add your Algolia account, refer to the [Algolia Connector](/docs/agent-os/algolia/) document. 6. Select the **Index Name** where you want to send data in the form of a list of objects. You can also select the value from the previous step. 7. In the **Entries** field, enter the data to be added in the Algolia index. Pass the data configured in the previous step i.e., output from the Transform action. **Note:** You must provide your index data in JSON format and based on your object schema. ![Select-Algolia-Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta9a4955707b2e67e/63d90ea59d7bcb5422351209/Select-Algolia-Fields.png) 8. Click **Proceed**. 9. Click **Test Action** to test the configured action. ![Test-Action-Algolia.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6774d5c8cbd9a7f8/63d90ec3e4e29e75dc5deb49/Test-Action-Algolia.png) 10. After successful configuration, you should see the output shown below. Click **Save and Exit**. ![Save-Exit-Algolia.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt20f45d13338797a0/63d90ea49d7bcb5422351205/Save-Exit-Algolia.png) 11. Navigate to the Algolia Index section and check the latest index entry with the data we passed as objects within the connector configurations. You will be able to see the data added in the object. ![Algolia-Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfe05328836d2f517/63d90ea4ddb7a921030a7749/Algolia-Output.png) **Note:** You need to enable automation in order to test it. This sets the **Algolia** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/data-store --- title: "Data Store" description: "Learn how to use the Data Store connector in Automation Hub to store and retrieve key-value pairs." url: "https://www.contentstack.com/docs/agent-os/data-store" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: data-store.md --- # Data Store The Data Store connector helps you store keys and their corresponding values within a database, that you can retrieve later. With the Data Store connector, you can also store and fetch the data stored in the instance of an execution. **Note:** The limit for the key value pair is 5 KB. ## Set up the Data Store Perform the following steps to set up the Data Store action connector: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Data Store** connector. ![Select\_the\_Connector\_Datastore.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt52e76662b115407f/6527d139ff3bbd7e69ad0827/Select_the_Connector_Datastore.png) 4. Under **Choose an Action** tab, you will see three actions: **Get Data** (retrieve data stored in Data Store) and **Set Data** (add data into Data Store), **Append Data** (append new data to an existing data in the form of an array), and **Clear Data**. ### **Action 1:** Select the **Append Data** action: ![Append\_Data\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc49df42f0003ae57/6793cd506a4ee834e6ad8dc0/Append_Data_Action.png) 1. On the **Append Data** **Configure Action** page, you need to provide at what level you need to store your data, i.e., at **Automation Level**, **Organizational Level**, and **Execution Level.** Lets see their difference: 1. **Automation Level**: Data set at this level can be retrieved when working only on the current automation you are setting it for. 2. **Organizational Level**: Data set at this level can be retrieved when working with any automation within the organization. 3. **Execution Level**: Data set at this level can be retrieved when working for one completed execution of an automation. Even with parallel executions of an automation, the data is tightly coupled to an individual execution. Once you select the **Store At** value, enter the **Data** values, i.e., **Key** and corresponding **Value** for the same. ![Append\_Data\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf918efcf2ce6636c/6793cd50e05cbf295c564565/Append_Data_Fields.png) 5. Click the **Proceed** button. 6. Check if the details are correct. If yes, click the **Test Action** button. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2d104d50b5075416/6793cd50a057852df77747a0/Test_Action.png) 7. Once set, click the **Save and Exit** button. ![Save\_Exit\_Append.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf6a6a0ca817e041f/6793cd50d8a19ec1521b6682/Save_Exit_Append.png) Append action will create an array with the provided value. Let’s see a simple use-case of Append Data action using Repeat Path. Append Data action is helpful while working with bulk data. In this example, we are sending bulk data through Postman. You can use any other trigger or third-party source to send your data. We are sending two arrays via Postman which will append and form a single array. For example: {"array1":\["start"\], "array2":\[1,2,3\]}. 1. Configure the **HTTP Trigger** connector. For more details, refer to the [HTTP Trigger](/docs/agent-os/http-trigger/) connector documentation. **Note:** Send a request to the HTTP trigger URL via Postman to send bulk data and test the trigger. Once you click **Test Trigger**, you can see the data sent via Postman in the output. 2. Once the trigger is configured, configure an **Action Step** and click the **Data Store** connector. 3. Under **Choose an Action** step, select the **Set Data** action. In the **Store At** dropdown, select **Automation** Level. 4. In the **Set Data** action, set the **Key** and **Value**. Fetch the array data coming from the previous step. Select the value of array1 in the **Value** field. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0155f1a8a78c4388/6794a0b15169f21e54a23ea8/Select_Fields.png) 5. Click the **Proceed** button. 6. Click the **Test Action** button to test the configured action. 7. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbae2c106e2d812a0/6794a0a5fe452967305cc60e/Save_Exit.png) Once the data is fetched and stored, use the Repeat Path step to fetch the array of numbers from the HTTP trigger, i.e., array2. To do so, follow the steps below: 1. Click **\+ Add New Step** to add a new step. 2. Click **Configure Action Step** from the left navigation panel. 3. Click **Repeat Path** to configure repeat path. ![Select\_Repeat\_Path\_Step](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2b75203a2038ceca/6442e15a717a360937d75d22/Select-Repeat-Path-Step.png) 4. In the Repeat Path configuration, select the **Data source** to fetch the array of numbers configured previously. ![Select\_Repeat\_Path\_Second\_Array](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt493e9188ad252409/6442e19210882b4f2385c2c7/Select-Repeat-Path-Second-Array.png) We have set the value of the first array in the Set Data action, and now, we are fetching the array of numbers (array 2) using the Repeat Path, to append both arrays. **Note:** Repeat Path will iterate through the number of items in the array. 5. Click **Save Configuration** to save the Repeat Path configuration. ![Save\_Repeat\_Configuration](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltda39f882a1149929/6442e1c1d57e320df0d8064a/Save-Repeat-Configuration.png) On successful completion, use the Append Data action inside Repeat Path. Follow the steps below: 1. Click **\+ Add Step**. ![Repeat\_Path\_Add\_Step](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7561cac75862e701/6442e1f47f34014b36bee157/Repeat-Path-Add-Step.png) 2. In the **Configure Action Step**, click the **Data Store** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd7630d1bb1eadb0d/6793cd50b042f5b3a820b757/Select_Connector.png) 3. Under **Choose an Action** step, select the **Append Data** action. ![Append\_Data\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc49df42f0003ae57/6793cd506a4ee834e6ad8dc0/Append_Data_Action.png) 4. In the **Store At** field dropdown, select **Automation** Level. **Note:** You can use organization or execution level from the dropdown. 5. In the **Append Data** action, set the **Key** and **Value**. Provide the **Key** value specified in the **Set Data** action and fetch the current\_item data from the Repeat Path step in the Value field. The current\_item data will fetch the data iterated using the Repeat Path for the array of numbers and append it to the first array. ![Repeat\_path.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltedd5329368a1cb60/6794a0a52108d897bb7fd002/Repeat_path.png) 6. Click the **Proceed** button. 7. Click the **Test Action** button to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2d104d50b5075416/6793cd50a057852df77747a0/Test_Action.png) 8. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbae2c106e2d812a0/6794a0a5fe452967305cc60e/Save_Exit.png) Now, to fetch the data outside of the Repeat Path, follow the steps below: 1. Click **\+ Add New Step**. ![Get\_Data\_New\_Step](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta378c11a6f5e1641/6442e3461d4d37184e1cda1a/Get-Data-New-Step.png) 2. Click **Configure Action Step** from the left navigation panel. 3. Click **Action Step** to configure third-party services. 4. Within the **Configure Action Step**, click the **Data Store** connector. Select the **Get Data** action. 5. In the **Get Value At** field, select **Automation** **Level**. In the **Keys** field, provide the name of the key in which the data is stored in the previous step. ![Get\_Data.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3c453cf159e06630/6794a0a54cebb24a5815dc24/Get_Data.png) 6. Click the **Proceed** button. 7. Click the **Test Action** button to test the configured action. 8. Click the **Save and Exit** button. You will be able to see the appended data in the key. To check the output, we will configure the **Response** action connector. 1. In the **Configure Action Step**, select the **Response** connector. 2. In the **Choose an Action** step, select the **Response** action. 3. Provide a **Response Status**, and in the **Response Body**, choose the data fetched in the previous step (Get Data). ![Response\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6e131044f5c1d614/6794a0a5d83ec1545100d207/Response_Fields.png) 4. Click the **Proceed** button. 5. Click the **Test Action** button to test the configured action. 6. Once done, click the **Save and Exit** button. To view the data, activate the automation and hit the trigger URL in Postman. You will see data combined in one single array. This sets the **Data Store** action connector. Let’s understand more about the Execution Level storage with a simple example: With Execution Level, the data is stored in the instance of execution of an automation i.e., the access to the data is limited only in the instance in which the automation is executed. Even if there are parallel executions of an automation, the values are not overridden with multiple executions. Let’s set up our automation by following these simple steps: 1. Configure the **HTTP Trigger** connector. For more details, refer to the [HTTP Trigger](/docs/agent-os/http-trigger/) connector documentation. 2. Once the trigger is configured, click the **Data Store** connector. 3. Under **Choose an Action** step, select the **Set Data** action. In the dropdown, select **Execution Level** to store the data at execution level. 4. Enter the **Data** values, i.e., **Key** and corresponding **Value** for the same. 5. Click **Proceed**. 6. Click **Test Action** to test the configured action. 7. The output will be shown as follows. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbae2c106e2d812a0/6794a0a5fe452967305cc60e/Save_Exit.png) 8. In the **Configure Action** Step, click the **Data Store** connector and select the **Get Data** action. 9. In the **Get Value At** field, select **Execution Level** from the dropdown. 10. Enter the key data in the **Keys** field i.e., **Key**. ![Get\_Data\_Execution\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8d4826755e42f8c7/6794a0a54cebb23e1815dc26/Get_Data_Execution_Fields.png) **Note:** If you are using the Pause action, you can only get the data which you have set before configuring the Pause connector. You can preserve the data in the Pause connector and retrieve the preserved value afterwards. This is applicable only when you select Execution Level storage. 11. Click **Proceed**. 12. Click **Test Action** to test the configured action. 13. The output will be shown as follows. Click the **Save and Exit** button. **Note:** While testing the automation, you will get null value but the data will be available at the time of execution. To see the output data, we will configure the Response connector. Perform the following steps to set up the Response action connector: 1. Click **Configure Action** **Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Response** connector. ![Select\_Connector\_Response.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt989a3de697b52177/6527d3ec3347f3071d027a01/Select_Connector_Response.png) 4. Under **Choose an Action** tab, select the **Response** action. ![Select\_Response\_Aciton.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfdecb64cabe09b09/6794a0b17cdcd34b205c399e/Select_Response_Aciton.png) 5. Based on the results of your configured action, enter the **Response Status**. 6. In the **Response Body** field, you can add the data that you want to send as the response. You can also fetch the output from the previous step i.e. Get Data action. ![Response\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6e131044f5c1d614/6794a0a5d83ec1545100d207/Response_Fields.png) 7. Click **Proceed**. 8. Click **Test Action** to test the configured action. 9. You will see the below output. Click **Save and Exit**. ![Save\_Exit\_Response.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8a90b60713a6529f/6794a0b1937ff07df22fc475/Save_Exit_Response.png) Now, to view the output, activate the automation and hit the HTTP trigger URL. You will see the key:value pair as provided in the Data Store connector. ![Final\_Output](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4e582eb51d9321cb/64211dc5975dc8118cb373fd/Final-Output.png) ### **Action 2:** Select the **Clear Data** action: ![Clear\_Data\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt422bb4a140969734/6793cd50bf520497ff7d3008/Clear_Data_Action.png) 1. On the **Clear Data** **Configure Action** page, you need to provide at what level you need to store your data, i.e., at **Automation Level**, **Organizational Level**, and **Execution Level.** **Note**: * Clear Data requires manual configuration to initiate the data deletion. * Clear Data can delete the data both from Set Data and Append Data actions. 2. In the **Enter** **Key** field, enter the data key to clear. Click the **+ Add Key(s)** button to add multiple keys you want to clear. ![Clear\_Data\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt149bbee41ef93942/6793cd50259b9a1aea273d54/Clear_Data_Fields.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test** **Action**. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2d104d50b5075416/6793cd50a057852df77747a0/Test_Action.png) 5. Once set, click **Save and Exit**.![Save\_Exit\_Clear.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta596b7cc06311b91/6793cd509d626e52d611f930/Save_Exit_Clear.png) ### **Action 3:** Select the **Get Data** action ![Get\_Data\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt94ff3b4a09763763/6793ce87e05cbf96a2564588/Get_Data_Action.png) 1. On the **Get Data** **Configure Action** page, you need to provide at what level you need to get/retrieve your data, i.e., at **Automation Level**, **Organizational Level**, and **Execution Level**. Lets see their difference: 1. **Automation Level:** This will retrieve data stored at Automation Level. 2. **Organization Level:** This will retrieve data stored at Organization Level. 3. **Execution Level:** This will retrieve data stored at Execution Level. Once you select the **Get Value At** value in the **Keys** field, you need to enter the keys you want to retrieve. For the Execution Level, the data will be retrieved only at the time of execution and not at the time of configuration of automation. **Note:** For retrieving multiple values, enter the keys in a comma-separated manner. ![Get\_Data.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3c453cf159e06630/6794a0a54cebb24a5815dc24/Get_Data.png) 2. Click **Proceed**. 3. Check if the details are correct. If yes, click **Test Action**. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2d104d50b5075416/6793cd50a057852df77747a0/Test_Action.png) 4. Once set, click **Save and Exit**. ![Save\_Exit\_Get.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5b7804f4ff4e9dcc/6794a0a572b169d552d9b684/Save_Exit_Get.png) ### **Action 4:** Select the **Set Data** action: ![Set\_Data\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta945c613e470eada/6793cd50a05785b40e7747a4/Set_Data_Action.png) 1. On the **Set Data** **Configure Action** page, you need to provide at what level you need to store your data, i.e., at **Automation Level**, **Organizational Level**, and **Execution Level.** Lets see their difference: 1. **Automation Level**: Data set at this level can be retrieved when working only on the current automation you are setting it for. 2. **Organizational Level**: Data set at this level can be retrieved when working with any automation within the organization. 3. **Execution Level**: Data set at this level can be retrieved when working for one completed execution of an automation. Even with parallel executions of an automation, the data is tightly coupled to an individual execution. **Note:** You can store the data inside the steps of the Conditional Path statement and access the data outside of it, as the output data for the conditional path steps is not accessible otherwise. This is applicable for all the storage levels. Once you select the **Store At** value, enter the **Data** values, i.e., **Key** and corresponding **Value** for the same. 2. Optionally, enable the **Show Optional Fields** setting to display the **Data** **Expiration** **Time** field. This field allows you to specify the expiration time for the data in minutes. This is the duration after which the data will no longer be valid. ![Set\_Data\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt51fc60ee9fa6aaaf/6793cfb1a5499b54b314ec82/Set_Data_Fields.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test Action**. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2d104d50b5075416/6793cd50a057852df77747a0/Test_Action.png) 5. Once set, click **Save and Exit**. ![Save\_Exit\_Set\_Data.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt95a98bd995792641/6794a0b16202a13f8910d72f/Save_Exit_Set_Data.png) This sets the **Data Store** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/delete-an-agent --- title: [Automations guides and connectors] - Delete an Agent description: Learn how to delete agents in Agent OS to manage workflows efficiently in Contentstack. url: https://www.contentstack.com/docs/agent-os/delete-an-agent product: Automations doc_type: documentation audience: - developers version: v1 last_updated: 2026-02-19 filename: delete-an-agent.md --- # [Automations guides and connectors] - Delete an Agent This page explains [Automations guides and connectors] - Delete an Agent for Automations. It is intended for developers who need to understand or implement this topic. Use it when you are setting up, configuring, or troubleshooting this feature. ## Delete an Agent **Note:** **Agent OS** is currently in **Early Access**. Features may change and limitations may apply. We recommend using it in non-production environments until general availability. For more information, contact [support](mailto:support@contentstack.com). To manage your workflows effectively in Agent OS, you may need to delete an Agent. To delete an agent, follow the below steps: 1. Log into the [Contentstack account](https://www.contentstack.com/login/). 2. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list.![App_Switcher_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta53cf8e3d81561ac/6996d4c2ca1be7000834d2c5/App_Switcher_Icon.png) 3. Navigate to your project. 4. In the top navigation panel, select **Agents**. On the agents listing page, click the vertical ellipses, then click **Delete** from the dropdown.![Delete_Agent_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte447cb654baaee64/6996d4c2cf7e250008e68024/Delete_Agent_Icon.png) 5. In the **Delete Agent** pop-up, type **DELETE** and click the **Delete** button.![Delete_Agent_Popup.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3b04936414e8ddf5/6996d4c2db043d0008253472/Delete_Agent_Popup.png) **Note:** Active agents **cannot** be deleted. First, deactivate the agent to delete it. ## Common questions ### What is covered in [Automations guides and connectors] - Delete an Agent? This page covers the topic described in the title and provides the steps, options, and examples needed to use it. ### Who should read [Automations guides and connectors] - Delete an Agent? Anyone responsible for configuring, implementing, or maintaining this capability should use this page as a reference. ### When should I use this page? Use it when you are setting up this feature, troubleshooting issues, or validating expected behavior. --- ## URL: https://www.contentstack.com/docs/agent-os/difference-between-agents-and-automations --- title: "[Automations guides and connectors] - Difference Between Agents and Automations" description: Key differences between Agents and Automations in Contentstack Agent OS. url: https://www.contentstack.com/docs/agent-os/difference-between-agents-and-automations product: Contentstack Agent OS doc_type: concept audience: - developers - administrators version: early-access last_updated: 2026-03-25 filename: difference-between-agents-and-automations.md --- # [Automations guides and connectors] - Difference Between Agents and Automations This page explains how Agents and Automations differ in Contentstack Agent OS, outlining their roles in intelligent workflows. It is intended for users designing or operating Agent OS workflows who need to decide when to use an agent versus an automation. ## Difference Between Agents and Automations **Note:** **Agent OS** is currently in **Early Access**. Features may change and limitations may apply. We recommend using it in non-production environments until general availability. For more information, contact [support](mailto:support@contentstack.com). The table below highlights the key differences between Agents and Automations in Contentstack Agent OS. Both are core building blocks, but they serve distinct roles in how intelligent workflows are designed and executed. **Note**: - An **agent decides what should happen and when** - An **automation executes how it happens** | Aspect | Agents | Automations | |---|---|---| | Primary role | Reasoning and decision-making

**Example:** An agent reads a user’s request like *“Summarize this doc and extract action items.”* | Workflow execution

**Example:** An automation publishes an entry at 2:00 AM and sends a Slack notification. | | Core purpose | Understand context, interpret intent, and decide what should happen

**Example:** Determines whether content needs translation, review, or scheduling based on context. | Carry out predefined steps reliably and at scale

**Example:** Executes translation, assigns reviewers, or schedules publishing once the path is defined. | | Nature | Adaptive and context-aware

**Example: **Adjusts behavior if required metadata is missing or if brand rules differ by region. | Deterministic and rule-based

**Example:** Always runs the same steps when a “Content Approved” event occurs. | | Input type | Unstructured or semi-structured input (natural language, context, signals)

**Example: **Processes natural language or contextual requests like “Prepare this blog for EMEA launch next week. | Structured events, triggers, or schedules

**Example: **Triggered by explicit signals such as events, schedules, or defined inputs. | | Decision-making | Yes. Evaluates options, goals, and constraints

**Example: **Chooses between multiple automations: “Should I schedule publishing or trigger an urgent release?” | No. Follows defined logic and steps

**Example: **Executes whichever path the agent (or rules) selected. | | Handling ambiguity | Can handle ambiguity and incomplete information

**Example:** Interprets “soon” or “high-priority” and resolves it into concrete actions. | Requires clearly defined conditions

**Example: **Fails or pauses if required fields or conditions are not explicitly defined. | | Execution style | Chooses actions and coordinates tasks

**Example: **Coordinates multiple automations, approval, localization, publishing, based on context. | Executes tasks exactly as configured

**Example: **Runs steps in a fixed order: validate → publish → notify. | | User interaction | Conversational (via Polaris or Digital Concierge)

**Example:** A user chats with Polaris: “What’s blocking this release?” | Non-conversational, system-driven

**Example: **Runs silently in the background after a trigger fires. | | Interfaces | Custom Agents, Polaris, and Digital Concierge

**Example:** Can also be used through Polaris or Digital Concierge to guide users. | Automations, event triggers, schedules

**Example:** Configured via Automations with triggers and actions. | | Reusability | Reused across interfaces and workflows as shared intelligence

**Example:** Coordinates and sequences actions or automations based on context. | Reused as execution blocks across workflows

**Example: **Executes a defined sequence of steps exactly as configured. | | Governance | Governed by Brand Kit and Knowledge Vault for reasoning, interpretation, and decision-making.

**Example:** An agent decides how to respond to a user request while aligning with brand tone and approved terminology. | Governed by workflow controls, audit logs, and Brand Kit where applicable for content generation or transformation.

**Example:** An automation generates or reformats content using Brand Kit rules but does not decide whether or why to do so. | | Best used when | Judgment, flexibility, or reasoning is required

**Example:** When judgment, prioritization, or interpretation is required. | Reliability, consistency, and scale are required

**Example:** When steps must be executed consistently, reliably, and at scale. | ## Common questions ### When should I use an agent instead of an automation? Use an agent when judgment, flexibility, or reasoning is required. ### When should I use an automation instead of an agent? Use an automation when reliability, consistency, and scale are required. ### Can an agent trigger or coordinate automations? Yes. An agent chooses actions and coordinates tasks, including coordinating multiple automations based on context. ### Do automations make decisions about what should happen? No. Automations follow defined logic and steps and execute whichever path the agent (or rules) selected. --- ## URL: https://www.contentstack.com/docs/agent-os/difference-between-agents-and-polaris --- title: "[Automations guides and connectors] - Difference Between Agents and Polaris" description: Difference Between Agents and Polaris in Contentstack Agent OS. url: https://www.contentstack.com/docs/agent-os/difference-between-agents-and-polaris product: Contentstack Agent OS doc_type: guide audience: - developers - content-managers version: early-access last_updated: 2026-03-25 filename: difference-between-agents-and-polaris.md --- # [Automations guides and connectors] - Difference Between Agents and Polaris This page explains how Agents and Polaris differ within Contentstack Agent OS, clarifying what each component does, where it operates, and when to use one versus the other. It is intended for users evaluating or implementing Agent OS workflows inside the Contentstack CMS. ## Difference Between Agents and Polaris **Note:** **Agent OS** is currently in **Early Access**. Features may change and limitations may apply. We recommend using it in non-production environments until general availability. For more information, contact [support](mailto:support@contentstack.com). Polaris and Agents are both core parts of **Contentstack Agent OS**, but they serve very different purposes. While **Agents** provide the intelligence and decision-making, **Polaris** provides a safe, in context execution experience inside the CMS. The table below highlights their differences across key aspects, with examples embedded for clarity. | Aspect | Agents | Polaris | |---|---|---| | **Definition** | Core intelligence layer of Agent OS, it acts as the “brain” across CMS, automations, and interfaces. | Embedded inside the CMS, it appears as a side panel within the Contentstack CMS UI. | | **Operational scope** | Context-aware across systems, it uses content data, brand rules, and signals together. | Works on **Entries**, **Assets**, and **Visual Editor** elements, limited to the currently selected CMS object. | | **Decision-making** | Reasons and decides. Determines the best publish time based on traffic. | No independent reasoning, does not decide when to publish. | | **Execution behavior** | Adaptive behavior, adjusts actions if data or conditions change. | Deterministic execution. Follows validate → preview → execute. | | **Handling ambiguity** | Interprets vague intent like “urgent” or “soon”. | Requires clear, explicit user intent. | | **System integration** | Uses tools and abilities, can invoke CMS actions, automations, or integrations. | Uses existing CMS APIs only, same APIs as the CMS UI. | | **State and learning** | Learns and adapts, improves decisions as context evolves. | Stateless execution, does not remember previous interactions. | | **Governance and control** | Governed intelligence. Follows Brand Kit and Knowledge Vault rules. | Strict permission enforcement. Honors role-based and field-level access. | | **Best suited for** | Judgment & orchestration. “Should this content be reviewed, translated, or published?” | Guided CMS actions. “Update this entry and show me the preview.” | ## Common questions ### When should I use Agents instead of Polaris? Use Agents for judgment & orchestration, such as deciding whether content should be reviewed, translated, or published. ### When should I use Polaris instead of Agents? Use Polaris for guided CMS actions inside the CMS, such as updating an entry and showing a preview. ### Can Polaris make independent decisions like publish timing? No. Polaris has no independent reasoning and does not decide when to publish. ### Does Polaris remember previous interactions? No. Polaris is stateless execution and does not remember previous interactions. --- ## URL: https://www.contentstack.com/docs/agent-os/draft-vs-live-automation-mode --- title: "Draft vs. Live Automation Mode" description: "With the Draft mode, you can update automation configuration, while with the Live mode you can only view the automation." url: "https://www.contentstack.com/docs/agent-os/draft-vs-live-automation-mode" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: draft-vs-live-automation-mode.md --- # Draft vs. Live Automation Mode Agent OS has introduced a new way to view and update your existing or new automation(s) in two different ways. You can see how the user interactivity changes when the automation is toggled between Draft and Live mode. ## Why Draft and Live Mode? Suppose there is an active automation to publish entries to the Algolia dashboard. Edits to the automation by a different user could hamper the ongoing execution. In order to maintain the uninterrupted operation of live automation, it will be safeguarded against any modifications or adjustments. This means that you will **not** be able to make edits or changes to it. If you wish to make alterations to a live automation, you have two options. First, you can disable it, which will unlock it for editing. Alternatively, you can create a [clone of the automation](/docs/agent-os/clone-an-automation), make your desired changes to the clone, and when you're ready, you can activate the clone (while deactivating the previous version). ![Draft\_Mode.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt046a99caf5f8816b/65408cb1588560001b273ebf/Draft_Mode.png) ![Live\_Mode.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt12a7c4cb29224f98/65408cb12797e3040709c5ad/Live_Mode.png) You can view the automation in Live mode. The status of the automation is notified on the automation builder page. Let’s look at each of them in detail: ## Draft Mode 1. Draft mode is when an automation is **deactivated**. 2. You can update the automation configuration in draft mode **only**. ## Benefits of Draft Mode 1. You can only edit, update, and configure automation steps in the Draft mode. This allows to configure an automation without hampering the ongoing execution. 2. You can add new steps or edit/delete trigger and action steps while working in Draft mode. ## Live Mode 1. Live mode is when an automation is **active**. 2. You can view automation configuration in Live mode. 3. You cannot add new steps or delete automation steps in the Live mode. 4. You can **only** [Clone an Automation](/docs/agent-os/clone-an-automation)or [Throttle Execution](/docs/agent-os/throttle-execution) in Live mode. 5. All the trigger and action steps are locked. 6. You cannot [edit](/docs/agent-os/managing-automations#edit-automation-details) the Automation Title and Description. 7. You cannot [delete an automation](/docs/agent-os/managing-automations#delete-an-automation). 8. You cannot add a new step between existing automation steps. 9. The Delete Trigger and Delete Action icons will not be visible on hover. ## Benefits of Live Mode 1. You can execute an automation in Live mode. You can check the status of the automation on the Automations listing page. ![Automation\_listing\_poage.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt48a16700cf5f888e/699bcd9f73e3df0008d2e6b4/Automation_listing_poage.png) --- ## URL: https://www.contentstack.com/docs/agent-os/edit-an-agent --- title: [Automations guides and connectors] - Edit an Agent description: Learn how to edit or modify agents in Agent OS using the Agent Builder. url: https://www.contentstack.com/docs/agent-os/edit-an-agent product: Automations doc_type: documentation audience: - developers version: v1 last_updated: 2026-02-19 filename: edit-an-agent.md --- # [Automations guides and connectors] - Edit an Agent This page explains [Automations guides and connectors] - Edit an Agent for Automations. It is intended for developers who need to understand or implement this topic. Use it when you are setting up, configuring, or troubleshooting this feature. ## Edit an Agent **Note:** **Agent OS** is currently in **Early Access**. Features may change and limitations may apply. We recommend using it in non-production environments until general availability. For more information, contact [support](mailto:support@contentstack.com). Editing an agent in Agent OS allows you to update and manage configurations using the Agent Builder. To edit an agent, follow the below steps: 1. Log into the [Contentstack account](https://www.contentstack.com/login/). 2. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list.![App_Switcher_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta53cf8e3d81561ac/6996d4c2ca1be7000834d2c5/App_Switcher_Icon.png) 3. Navigate to your project. 4. In the top navigation panel, select **Agents**. On the agents listing page, click the vertical ellipses, then click **Edit** from the dropdown.![Edit_Agent_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt46614249a7e70c27/6996d4c3db043d0008253476/Edit_Agent_Icon.png) 5. Once done, you are redirected to the Agent builder screen to edit the agent. **Note:** Active agents **cannot** be edited. First, deactivate the agent to edit it. ## Common questions ### What is covered in [Automations guides and connectors] - Edit an Agent? This page covers the topic described in the title and provides the steps, options, and examples needed to use it. ### Who should read [Automations guides and connectors] - Edit an Agent? Anyone responsible for configuring, implementing, or maintaining this capability should use this page as a reference. ### When should I use this page? Use it when you are setting up this feature, troubleshooting issues, or validating expected behavior. --- ## URL: https://www.contentstack.com/docs/agent-os/elasticsearch --- title: "Elasticsearch" description: "Elasticsearch" url: "https://www.contentstack.com/docs/agent-os/elasticsearch" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: elasticsearch.md --- # Elasticsearch Elasticsearch is an open-source search-based platform for storing and retrieving valuable data. In order to store and search the data, you will need to create a deployment in Elasticsearch. ## Set up the Elasticsearch connector Perform the following steps to set up the Elasticsearch action connector: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Elasticsearch** connector. ![Elasticsearch.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt43f17505e3a72d3f/6527f8c87986d4db4d8f396d/Elasticsearch.png) 4. Under **Choose an Action** tab, select the **Index an Entry** action. ![Elasticsearch-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta54c6fe9221540b0/63dc0cc73aa4a610530ba044/Elasticsearch-Action.png) 5. Click the **\+ Add New Account** button to set up your Elasticsearch account (see screenshot in next step). ![Elasticsearch-Add-New-Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta68440647a557822/63dc0cc7f613db4bc7cb8be6/Elasticsearch-Add-New-Account.png) 6. In the **Authorize** modal, enter the **Node URL**, **Username**, and **Password**. To generate Node URL, Username, and Password, log in to the Elasticsearch dashboard and perform the following steps: 1. Navigate to your deployment page. 2. Under **Applications**, copy the endpoint for the Elasticsearch section. The copied endpoint is the **Node URL**.. 3. You will get a **Username** and **Password** once you create a deployment. 4. ![Elasticseacrh-Dashboard.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blte8582a7adc8be117/6305f68cc2bcbf7e723275dc/Elasticseacrh-Dashboard.png) Then, click **Authorize**. 9. ![Elasticsearch-Authorize.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt68802a8ee917b4ad/63dc0cc70b6c394fa26b88a1/Elasticsearch-Authorize.png) 7. On the **Configure Action** page, enter an **Index name** in which you want to store the data and provide the details in the **Body** field in JSON format. ![Elasticsearch-Configure-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8b90d996c981caab/63dc0cc7cdef8636cd80b9dc/Elasticsearch-Configure-Action.png) 8. Click **Proceed**. 9. You will see the input values which you have configured in the **Configure Action** modal. ![Elasticsearch-Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbab3f3a17bada606/63dc0cc7409fb73889c0e22b/Elasticsearch-Input.png) 10. Check if the details are correct. If yes, click **Test Action**. ![Elasticsearch-Test-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfc8ccde1bccbbbfc/63dc0cc78c69354d3e055194/Elasticsearch-Test-Action.png) 11. Once set, click **Save and Exit**. ![Elasticsearch-Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaaa5e818aadbd926/63dc0cc7cdbe917d7abd8f3b/Elasticsearch-Output.png) 12. Navigate to the Elasticsearch dashboard. You will see the output if you search the index name in the API console section. ![Elastic-Output.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt7d5bedf27f4334bb/6305f68c27ca1b5cd53ec07b/Elastic-Output.png) This sets up the **Elasticsearch** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/email --- title: "Email" description: "Simplify email automation with Contentstack's Email connector." url: "https://www.contentstack.com/docs/agent-os/email" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: email.md --- # Email The “Email” action connector is used to send emails from the Automations app. ## Set up the Email Perform the following steps to set up the Email action connector: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Email** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt88ca939bcb7867ba/668c1e90534bb9122b26e736/Select_Connector.png) 4. Under **Choose an Action** tab, select the **Email** action. ![Select\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd37cc61af25f594b/668c1e9094a8168f2607e24f/Select_Action.png) 5. On the **Configure Action** tab, enter the **To** email address, the **Subject line**, the **Body type**, and the **Body** of the email. The **Show optional fields** toggle switch allows you to enter the “CC” and “BCC” email addresses. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt82e310b8bf33b778/668c1e90a4dbaefd854dadd8/Select_Fields.png) 6. Click **Proceed** after entering the details. 7. Click **Test Action** to test if the email sending was a success or not. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt992883b12543055d/668c1e9050a8ec8df4b67fab/Test_Action.png) 8. The email is queued and sent to the receiver’s email address. Click **Save and Exit** to save and close the window. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9c88e0bb20fcf54e/668c1e90534a9d128bae111c/Save_Exit.png) 9. You can check the receiver’s email address for the email sent from “Contentstack Automations.” ![Email.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt66692f55cd1deb11/668c1e90fb3792ce4868a24a/Email.png) This sets the **Email** action connector. **Note**: You can send up to 10,000 emails per month for an organization. --- ## URL: https://www.contentstack.com/docs/agent-os/error-management-for-action-steps --- title: "Error Management for Action Steps" description: "Handle errors in Contentstack Automate workflows by stopping execution or skipping failed steps." url: "https://www.contentstack.com/docs/agent-os/error-management-for-action-steps" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: error-management-for-action-steps.md --- # Error Management for Action Steps The **Error Management for Action Steps** feature provides users with flexibility in managing automation workflows when an action step encounters an error. With this enhancement, you can handle errors seamlessly, ensuring that your workflows remain efficient and robust, even when issues arise. ### Key Benefits and Advantages * **Uninterrupted workflow execution:** This feature ensures that minor issues do not disrupt the entire workflow by allowing you to skip failed steps. Example: If a non-critical Slack notification fails, the automation continues executing other critical tasks, such as data transformation or API calls. * **Greater control over execution:** You can choose to either halt the workflow entirely or proceed with the remaining steps, depending on the importance of the failed step. This provides greater flexibility in managing automation outcomes. * **Customizable error handling:** Tailored error-handling options enable you to build dynamic workflows that adapt to various business scenarios, ensuring that automation aligns with evolving business needs. ### How does it work? When an action step fails, you can choose one of the following options: 1. **Stop Automation:** * Halts the entire execution immediately upon encountering an error. * Best suited for critical steps where failure impacts the overall integrity of the automation. 2. **Ignore and Skip Step, Continue Execution:** * Allows the execution to continue, bypassing the failed step. * Ideal for non-critical steps that do not affect subsequent actions. **Note:** This functionality is supported in [Repeat Path](/docs/agent-os#repeat-paths-within-automate) and [Conditional Path](/docs/agent-os#conditional-paths-within-automate) configurations, giving you precise control over automation execution. Additionally, the error screen will not be displayed in the [Response](/docs/agent-os/response/) Connector. ### How to Use Error Handling for Action Steps Here’s an example scenario that outlines a process for setting up and testing an automated workflow with error handling that involves three components: an [HTTP Trigger](/docs/agent-os/http-trigger), a [Transform](/docs/agent-os/transform) Connector, and a [Slack](/docs/agent-os/slack) Connector. #### Example Scenario: 1. **Configuration:** Set up an HTTP Trigger, a Transform Connector, and a Slack Connector. 2. **Testing:** * Test the HTTP Trigger and Transform Connector. Ensure these are functional. * Leave the Slack Connector untested to simulate a failure. 3. **Execution:** If the Slack Connector fails: * Select **Ignore and Skip Step, Continue Execution** to bypass the failure and allow the other actions to execute. * Alternatively, select **Stop Automation** to terminate the execution immediately. * You can view the history of the execution in the [Execution Log](/docs/agent-os/view-execution-log-of-agent-os) section. ![Error\_Seetings.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt516d3f9123428488/6793a6d858fb6d7e7b813578/Error_Seetings.png) --- ## URL: https://www.contentstack.com/docs/agent-os/error-notification --- title: "Error Notification" description: "Learn how to configure Agent OS error notifications for alerts on failed automations via execution logs and email." url: "https://www.contentstack.com/docs/agent-os/error-notification" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: error-notification.md --- # Error Notification The Error Notification feature warns users when they encounter an error during automation configuration. Execution log records this error, and the recipient is notified via email. Follow the steps below to configure the error notification settings for your automation: 1. Log in to your [Contentstack account](https://www.contentstack.com/login/). 2. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list.![App\_switcher\_icon](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6290d7afc992eda9/6998761148bd410008f0963f/App_switcher_icon.png) 3. On the **Projects** page, click the **Settings** icon in the top-left corner.![Project\_Settings\_Icon](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc4b6d05a6971768b/6998738cead2f50008c95ec3/Project_Settings_Icon.png) 4. Within the Settings page, enable the **Email Notifications** toggle button to send an email notification to the recipients. You can select multiple users to send emails at once. Choose the **Primary Recipient(s)** from the dropdown, i.e., **Automation Creator**, **Org Owner**, or **Org Admins**. You can also select other users who can access Agent OS and the respective Project from the **Add Other Recipients(s)** dropdown. After adding recipients, click **Save** to save your settings. If you select the recipient as Automation Creator, Org Owner, or Org Admins, then the email notification will be sent to the creator of that automation, owner, or admins of the organization. **Note**: By default, the setting is disabled. You can enable it from the Projects landing page. 5. By setting the **Frequency of Notifications**, you can send email notifications to the recipients **Immediately**, **Daily**, and on a **Weekly** basis. **Note:** A report will be generated if you select **Daily** or **Weekly** frequency to send the notifications. ![Email\_configuration](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0b46eb865a167656/6998738c2b6dd50008a89a19/Email_configuration.png) 6. Select the number of execution(s) per second for the **Throttle Frequency** to enable throttling for the organization. You can define the frequency of executing an automation if the throttling feature is enabled on a specific automation. Suppose you select three executions per second; then, three requests will be executed in one second, which increases the speed of execution. **Note:** You **must** enable the _Throttle Execution_ toggle button that is available in the Settings of your automation to activate it. ![Throttle\_Frequency](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4f7d51905f79ecc6/6998738c5a4f770008232368/Throttle_Frequency.png) Let’s understand how a recipient is notified via email through a simple use case. Create a new automation and follow the steps given below: 1. ## Configure Trigger 1. In the **Configure Trigger** section, click **HTTP**. 2. Select **HTTP Request Trigger** and click **Proceed**. **Note:** You can add security to the HTTP trigger using an API key. To do so, enable the toggle button. ![HTTP\_trigger](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt30852df541facc87/6998738de8917700087c2194/HTTP_trigger.png) 3. Send a request to the URL mentioned. Once done, click **Test Trigger**. 4. Click **Save and Exit**. 2. ## Configure Action Select the **Transform** connector and the **Transform** action. 1. In the Transformation box, input the data as for ex: {'name': 'Error Notification'}. The JSON syntax for the transformation box data is incorrect. It is kept so to check if the user gets error notification for the same. Click **Proceed**. 2. Click **Test Action**. You will get an error message. Click **Save and Exit**.![Save\_exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt882e2cc76e7731f5/6998738d8b33e4000870c1b4/Save_exit.png) 3. Once done, enable the automation and navigate to the **Execution Log** section. 4. Send the request to the URL mentioned in the **HTTP Trigger** to execute the automation. 5. You will see a failed execution in **Execution Log**. 6. Navigate to the email client to check the email received for this error.![Test\_automation](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt75122fc8847509ac/6998738c3f35720008e044e3/Test_automation.png) With **Error Notification**, you can get an instant response for your failed or unsuccessful automations. --- ## URL: https://www.contentstack.com/docs/agent-os/executing-an-automation --- title: "Executing an Automation" description: "Learn to execute automations in Contentstack's Automate with this step-by-step guide." url: "https://www.contentstack.com/docs/agent-os/executing-an-automation" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: executing-an-automation.md --- # Executing an Automation In this use case, we will cover a scenario where, if a user publishes an entry in Contentstack, Automations should be able to deploy the selected GitHub repository on Netlify immediately. And, every time you update an entry, the Automation will redeploy the repository on Netlify. Let's break this scenario to see what must be the trigger event and the consequent action required to execute the Automation: 1. **Set up the Contentstack Entry Publish Trigger Event:** This trigger event is activated whenever a Contentstack entry of a particular stack is published, and in turn it activates the Automation. 2. **Set up the Netlify Deploy Site Action:** Once the above event triggers the Automation, it will deploy your set GitHub repository (for e.g., a starter app website) to Netlify. Further, any updates to the entry content will invoke the Entry Publish trigger event and automatically redeploy your website on Netlify. The steps to set up the Automation are as follows: 1. [Create an Automation](#create-an-automation) 2. [Set up the Contentstack Trigger Event](#set-up-the-contentstack-trigger-event) 3. [Set up your Netlify Action Connector](#set-up-your-netlify-action-connector) 4. [Test out the Automation](#test-out-the-automation) Lets look at the setup in detail. ## Create an Automation To create an Automation, perform the steps given below: 1. Log in to your [Contentstack account](https://app.contentstack.com/#!/login) and click the Automate icon. 2. Click**\+ New Project** and provide the required details to create a new project. 3. Click**\+ New Automation** to add the steps required to configure automations. **Note:** You can now throttle the execution for your automations to avoid rate limit. For more information, refer to the [Throttle Execution](/docs/agent-os/throttle-execution) document. Next, lets look at the steps to set up the trigger event. ## Set up the Contentstack Trigger Event 1. Click **Configure Trigger** from the left navigation panel. ![Configure\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted6dd5580f67cb7d/659aaf5d3ea361a444577a75/Configure_Trigger.png) 2. Within the **Configure Trigger** step, click the **Contentstack** connector. ![Select\_Contentstack\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdec7eb472bf3be40/659aaf5db0fbcb6997628faa/Select_Contentstack_Trigger.png) 3. Add your Contentstack account. For more information, refer to the [Contentstack Trigger](/docs/agent-os/contentstack-trigger/) documentation. 4. Once done, select **Entry Published** from the list of trigger events and define the rest of the steps needed to set up the trigger (refer steps **2 to 11** in [Entry Trigger](/docs/agent-os/contentstack-trigger/#entry-trigger)) under the Contentstack Trigger section. ![Select\_Trigger\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6b039e98b5591986/659aaf5d0543c5066a8f372c/Select_Trigger_Fields.png) 5. Once done, click **Proceed**. 6. Click **Test Trigger** to execute and test the trigger that you configured. ## Set up your Netlify Action Connector Lets configure the Netlify Action connector. 1. Click **Configure Action Step** from the left navigation panel. ![Configure\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2f14b253bfa8db98/659aaf5dc11c0f7d0ecf917e/Configure_Action.png) 2. Within the **Configure Action Step**, click the **Netlify** connector. **Note:** You can sort and search the connector(s) based on the filter. ![Select\_the\_Netlify\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9b7121a099ef4a7a/659aaf5d1c5d7c64bd0f3ea1/Select_the_Netlify_Connector.png) 3. Select the **Deploy Site** action. ![Select\_Netlify\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt07d5ce25517630e7/659aaf5e2f46f72bd7825ab3/Select_Netlify_Action.png) 4. In the **Configure Action** tab, click**\+ Add New Account** to add your Netlify account. ![Add\_New\_Netlify\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfb654d9f249c0917/659aaf5dbe5d269fdc65ab69/Add_New_Netlify_Account.png) 5. To add your Netlify account, refer to the [Netlify Connector](/docs/agent-os/netlify/) document. 6. Click the **Site ID** text box and select an ID from the **Lookup** drop-down. The Site ID is a unique identifier given to a project configured in Netlify. You can choose the desired project for which you want to configure the Netlify connector. ![Select\_Different\_Netlify\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt037091f8b0bb0909/659aaf5dbe5d2623fe65ab6d/Select_Different_Netlify_Fields.png) 7. Once done, click **Proceed**. 8. Click the **Test Action** button to test the configured action connector. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt12466dc6904609ee/659aaf5edd0067ed70207fe3/Test_Action.png) 9. Once the execution is successful, you will get the final output as seen in the screenshot in step 11. This should initiate the build in your Netlify console. Navigate to your Netlify console and verify it. If you see the build initiated, that means the automation works successfully. 10. Navigate back to your automation set up page, and click **Save and Exit** to finish setting up the action. ![Save\_Exit\_Netlify.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc3bdad0c8b3adbf6/659ab0a87d6d2e6b41b8ebab/Save_Exit_Netlify.png) This sets up the **Netlify** action connector. Also, you can now automate performing different actions based on certain set conditions using the Conditional Path feature. Configure your condition and set up an action step based on this condition. For more information, refer to the [What is Conditional Path](/docs/agent-os/what-is-a-conditional-path/) document. **Additional Resource:** For a real world use case, refer to the [Using Conditional Paths to Customize Automations](/docs/agent-os/using-conditional-paths-to-customize-automations/) document. ## Test out the Automation Now, its time to test out your automation. To do so, perform the steps given below: 1. Go to Contentstack and [create an entry](/docs/headless-cms/create-an-entry/) for the content type that you selected in your trigger event in [Step 2](#set-up-the-contentstack-trigger-event). 2. Once done, [publish the entry](/docs/headless-cms/publish-an-entry/). This should trigger your Automation. 3. Now, navigate to Netlify and log in to your Netlify console. 4. Check the **Deploy log** window to see whether Automation has initiated the build. You should see the following output: ![Deploy\_Log.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt4873529f7a9484c0/6370ca900c4e3510952432d6/Deploy_Log.jpg) --- ## URL: https://www.contentstack.com/docs/agent-os/executions-in-agent-os --- title: "Executions in Agent OS" description: "Track and debug execution logs in Agent OS with performance metrics and statuses for better workflow visibility." url: "https://www.contentstack.com/docs/agent-os/executions-in-agent-os" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: executions-in-agent-os.md --- # Executions in Agent OS Each time an automation or agent task is completed, regardless of whether it succeeds or fails, it counts as an execution. To run an automation, you must configure the trigger and action connector, then enable the automation. Even if the automation includes multiple steps, it is still counted as a single execution. For agent tasks, each operation initiated by the agent, such as data processing or a service request, also counts as one execution, regardless of the number of internal steps involved. **Additional Resource:** In the [Execution Log](/docs/agent-os/view-execution-log-of-agent-os) section, you will find details about each execution. ## How are executions calculated? The following event counts as an execution: 1. Once the Automation is configured and invoked via an event. The following events do not count as an execution: 1. Testing of any individual trigger and action steps. 2. Successful configuration of the trigger and action steps. 3. If the trigger conditions are **not** met. For example, consider automating a Slack message whenever a new entry is created in Contentstack. Each trigger of the automation will be counted as an execution. The different statuses of an execution visible in the Execution Log are as follows: 1. **Success:** When an automation or agent task completes successfully. 2. **Failed:** When any step in an automation or agent task is unsuccessful. 3. **Pending:** When the execution is yet to be picked up for processing, or when the throttle automation toggle is disabled. 4. **Running:** When an execution is in progress. 5. **Rejected:** When the execution exceeds the allocated time. 6. **Paused:** When an execution is paused and resumed at a later stage. 7. **Partially Executed**: When an execution is partially completed as it has reached the maximum limit of sending emails. ## Use Cases for Automations ### Retry Execution for Failed Automation Certain API errors, or missing configuration of an action step in Automate can cause the entire automation to fail. If you encounter this issue, you can use the **Retry Execution** feature to troubleshoot the automation. With this feature, you can retry the execution up to **2** times using the following steps: 1. Suppose you have an automation with an unconfigured action step, as shown below: ![Action\_Step.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb52be81d17888070/66a2809e5c5264826526ff95/Action_Step.png) 2. Activate the automation and test the configured trigger. For example, test the **HTTP** trigger. 3. Go to the **Execution Log** section. The status of the automation will show as **Failed**. An **Info** icon appears beside the **Failed** status. Click it to open a pop-up. ![Failed\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt87ffe2f65d662117/66a2809e02bf2773893ba2ef/Failed_Icon.png) 4. Click the **Retry Execution** button to retry the execution. ![Retry\_Execution.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt06f7f50a0c528b01/66a280a60570204bcbcace9f/Retry_Execution.png) **Note:** The first attempt occurs when you activate and execute the automation. In the Retry Execution pop-up, you can retry the execution up to **2** more times. 5. Click the **Code** icon for the failed step to view the **Input**/**Output** payload for the action step. For a trigger, you can specifically view the **Input** option. Additionally, you can click the **Copy** icon to copy and debug the code. ![Code\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt929a0b6db7d4748b/66a2809e85d5053f8e3fc111/Code_Icon.png) Let’s explore a few use cases to understand the Retry Execution feature better. ### Use Case 1 If an automation fails in the first attempt due to any technical issue or server error at the exact time of execution, follow these steps: 1. In the **Failed** Execution, click the **Retry Execution** button and close the window. ![Failed\_Status\_For\_Troubleshootin.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3134ebf305b30d72/66a2809d9cd6fd744ff25091/Failed_Status_For_Troubleshootin.png) 2. In the **Execution Log**, you will see a **Success** status for that execution. ![Success\_Status\_Troubleshooting.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt907016678124599f/66a280a64252d50aa4eba91e/Success_Status_Troubleshooting.png) ### Use Case 2 If an automation fails even after retrying, follow these steps: 1. Go to the automation and deactivate it. 2. Reconfigure the failing step. 3. Once successful, activate the automation again. 4. Return to **Execution Log** and click the failed execution. If the action step was previously configured with invalid or incorrect values, the execution will show a **Failed** status. In the **Retry Execution** pop-up, you can retry the execution up to 2 times. You can debug the code by checking the payload. If the error is due to a third-party API or within Automate, please contact our [support](mailto:support@contentstack.com) team for assistance. ### Use Case 3 If an automation fails and you reconfigure a new trigger, retrying the same execution will result in an error message: ![Error\_Message.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt987329a45ecaede4/66a2809e4a36013ff67c0dba/Error_Message.png) This happens because the execution still has the payload data for the previously configured trigger. You must initiate a new execution to validate the changes. ### Use Case 4 If an automation runs successfully on the first attempt, you will see a success message as shown below: ![Success\_Status.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5cb25e1e89cb772e/66a280a61cbda85f6086896f/Success_Status.png) ### Limitations * If an automation has a [**Response**](/docs/agent-os/response) connector, you will not be able to retry the execution for that automation. * The Info icon disappears once the retry limit is exceeded. You must start a new execution. ![Execution\_Limit\_Exceeded.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt58d34759aa0cee3b/66a2809efef3eafc53007fb2/Execution_Limit_Exceeded.png) --- ## URL: https://www.contentstack.com/docs/agent-os/export-and-import-an-automation --- title: "Export and Import an Automation" description: "Streamline deployment with Import and Export to migrate automation workflows as JSON files, ensuring consistent configurations across projects and environments." url: "https://www.contentstack.com/docs/agent-os/export-and-import-an-automation" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: export-and-import-an-automation.md --- # Export and Import an Automation To streamline deployment and maintain consistency across projects, the Import and Export feature enables seamless migration and configuration management of automation workflows across different projects and organizations. For example, this feature can be used to migrate automations within the same environment for testing or to ensure consistent configurations across multiple projects within that environment. You can export and back up complete automation configurations as JSON files, including details such as trigger definitions, conditions, action sequences, and associated data. Let’s see the steps to Export and Import an automation. ### Export an Automation To export an automation, perform the steps given below: 1. On the Automations listing page, in the **Actions** column, click the vertical three dots. 2. Select the **Export** **Automation** option. A JSON file is downloaded in your local system.![Export\_automation\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltad3a740af575820b/699bd52a48bd410008f09bd0/Export_automation_Icon.png) You can also export the automation by navigating to the **Settings** page inside your automation and then clicking the **Export Automation** button as shown below: ![Export\_Automation\_From\_Settings\_Page.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf6989fd48cba8f8a/6797993117131c48b0b1fec9/Export_Automation_From_Settings_Page.png) ### Import an Automation To import an automation, perform the steps given below: 1. On the Automations listing page, click the **+ New Automation** button. From the dropdown, select the **Import** option.![Import\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt62e5e87ec7c02943/699bd52ae8917700087c275a/Import_Icon.png) 2. In the **Import** **Automation** modal, choose the automation’s JSON file you want to import. 3. Click the **Import** **Automation** button.![Import\_Automation\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9833f6193a151ea9/67979931e76cc64d14eed193/Import_Automation_Button.png) **Note**: * You can import automation only into the Projects and Organizations you have access to. Importing into different environments is not supported. * The JSON file must include all the required fields present in the automation. Missing fields or data types will trigger an error message, preventing the automation from being imported. --- ## URL: https://www.contentstack.com/docs/agent-os/faqs --- title: "Agent OS FAQs" description: "Learn more about Contentstack Agent OS, including workflows, triggers, actions, connectors, and automating tasks across your stack." url: "https://www.contentstack.com/docs/agent-os/faqs" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: faqs.md --- # Agent OS FAQs ### What is Contentstack Agent OS? **Agent OS** is Contentstack’s adaptive intelligence framework that unifies **Agents**, **Automations**, and **Polaris** to deliver intelligent, context-aware, and governed digital operations. It blends deterministic workflows with LLM-powered reasoning to help enterprises operate faster and more intelligently. ### What are the components of Agent OS? **Agent OS** is made up of four main components: 1. **Agents**: The intelligent reasoning layer that understands context, makes decisions, and performs actions using instructions, tools, and brand governance. 2. **Automations**: The workflow engine that runs event-driven and scheduled tasks with reliability and governance. 3. **Polaris**: The in-app conversational assistant that provides contextual guidance and interacts with agents and automations. ### Is Agent OS only for technical users? No, it's designed for business and technical teams with a no-code interface. ### Does Agent OS replace existing Automations? No, it enhances them. Agents and Automations work together seamlessly. ### Does Agent OS support third-party integrations? Absolutely. It connects via connectors and MCP for external systems like Slack, Jira, Notion, and others. ### What is an Agent? An **Agent** is an intelligent, AI-powered system within Contentstack Agent OS that can understand context, reason, make decisions, and take actions on behalf of users. Unlike traditional automations that follow fixed, rule-based steps, agents use a combination of: * **Model:** LLM for reasoning and language understanding * **Instructions:** Persona, guidelines, goals, boundaries * **Context:** Situational data and enterprise knowledge for adaptive decisions**Tools/Abilities:** Actions, automations, and other agents they can call ### Do I need to know how to code to use Agents? No. Agents can be fully created and configured using a no-code interface. ### How do you ensure data privacy and security with Agents? Agents run within governed enterprise controls, use secure authentication, and follow brand and compliance rules. ### How do I measure the success of an Agent deployment? You can review execution logs, adjust instructions or abilities, and refine behavior. Brand Kit and Knowledge Vault minimize errors. ### What is Polaris? **Polaris** is Contentstack’s **in-app conversational assistant** that provides intelligent, context-aware help across the CMS. It allows users to interact with the platform through natural language, asking questions, generating content, running tasks, or triggering agents and automations. Polaris also uses brand context and system knowledge to deliver accurate, on-brand responses. ### Is Polaris available everywhere in the CMS? Yes. Polaris is accessible across the platform. ### Who can access Polaris by default? By default, only users with the Admin or Owner role in Administration have access to Polaris. Members do not see the Polaris icon unless an admin explicitly grants them access via a Custom Role. ### Why can't I see the Polaris icon even though I'm logged in? Your account likely has a **Member** role, which does not include Polaris access by default. Contact your organization admin and ask them to assign you a Custom Role with Polaris Read access. If your admin has already updated your role, try refreshing your browser, the Polaris icon should appear after a refresh. ### How does an admin grant Polaris access to a member? 1. Go to **Administration** > **Roles** 2. Click **Create Custom Role** and give it a name (e.g., "Polaris Viewer") 3. Enable **Read** access under the **Polaris** section and saveGo to the user's profile, assign the new Custom Role, and save The user will see the Polaris icon after refreshing their browser. ### Does the user need to log out and back in after the role is updated? No. A simple browser refresh is enough. Access changes take effect immediately, no re-login required. ### Can I assign the same Custom Role to multiple users? Yes. Once the Custom Role with Polaris Read access is created, you can assign it to as many users as needed, no need to create a separate role for each user. ### I updated the user's role but they still can't see Polaris. What should I check? * Confirm the Custom Role has Polaris Read access enabled, not just created with empty permissions * Confirm the Custom Role is actually assigned to the correct user * Ask the user to do a hard refresh (Ctrl+Shift+R on Windows/Linux, Cmd+Shift+R on Mac) * If the issue persists, ask the user to log out and log back inIf still unresolved, contact Contentstack [Support ](mailto:support@contentstack.com) ### Can I grant Write or Edit access to Polaris for a member? The current documented flow covers Read access. If you need to explore additional permission levels, check the available options when creating your Custom Role, or reach out to Contentstack [Support](mailto:support@contentstack.com). ### What are Automations? Automations help you to perform repetitive tasks without human intervention. You can set up an automation using various third party applications. For example, you can notify your team via an email whenever an entry is created in your stack. ### How do you set up an automation? To set up an automation, you need to configure your trigger and action connectors. To learn more, refer to the [Create Automation](/docs/agent-os/get-started-with-automations#create-automation) step in the [Get Started with Automations](/docs/agent-os/get-started-with-automations) document. ### What are connectors? Connectors are a combination of Triggers and Actions events. When a trigger event is executed, the action connector performs the defined steps. Refer to [Connectors](/docs/agent-os) to get started. ### What is the difference between trigger and action connectors? Trigger connectors are conditions that help set off an automation whenever the selected event is executed. Action connectors is the action performed when a trigger event is executed. For example, an automation is set up to send a slack message (action event) whenever an entry is created (trigger event) in Contentstack. ### Can we add multiple triggers and actions in a single automation? You can configure only one trigger event in a particular automation. You can configure multiple actions for a single automation. For example, you can set up an automation to perform end to end translation when an entry is created/updated in Contentstack. For this, you need to configure different action connectors to carry out the translation process. To learn more, refer to our [End to End Translation using Smartling](/docs/agent-os/translate-data-using-smartling) example. ### Where can I view logs for my automations? You can view the logs for your automation in the **Execution Log** section. This is useful for checking the status of your automations. To learn more, refer to our documentation on [Execution Log](/docs/agent-os/view-execution-log-of-agent-os). You can also monitor the acitvities performed in a particular project via the [Audit Log](/docs/agent-os/monitor-agent-os-activities-in-audit-log). ### Where can I view all apps connected within a project? You can view all the connected apps for your project in the **Connected Apps** section. You can check the authentication status of an app or re-authorize an app. To learn more, refer to our documentation on [Connected Apps](/docs/agent-os/view-list-of-connected-apps-in-automations). ### How do I edit an existing Automation? Once you create an Automation, the list of existing automations appears in the Automations listing page. In the **Actions** column, click the three ellipses icon, and then click the **Edit** icon that you see for editing the automation. Refer to our documentation on [Edit Automation Details](/docs/agent-os/managing-automations#edit-automation-details). ### How do I delete an existing Automation? On the Automations listing page, click the three ellipses icon, and then click the **Delete** icon that you see for deleting the automation. Refer to our documentation on [Delete Automation](/docs/agent-os/managing-automations#delete-an-automation). ### How do I customize the name of the configured step? In the automation, click the edit icon visible on the action header to rename the step. Add a suitable name for the step and save it. Refer to our documentation on [Rename Step](/docs/agent-os/managing-automations#rename-a-step). ### How do I re-authorize a connected app? To re-authorize a connected app, follow the steps given below: 1. In the **Connected Apps** section, select the app that you want to re-authorize. 2. Click over the connection and click the **Reauthorize** icon. 3. Change necessary permissions and click the **Authorize** button. --- ## URL: https://www.contentstack.com/docs/agent-os/files-by-agent-os --- title: "Files by Agent OS" description: "Use the Files by Agent OS connector to export stack content into a downloadable file and deliver it via any third party application." url: "https://www.contentstack.com/docs/agent-os/files-by-agent-os" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-24" filename: files-by-agent-os.md --- # Files by Agent OS Agents and automations often need to hand back more than a short message: a list of low-stock inventory, a summary report, a set of records pulled from a system. Instead of sending that data as a message, the **Files by Agent OS** connector lets an agent or automation export it, whether that's content from your stack or any data produced during its run, into a proper file (CSV, JSON, TXT, or Markdown) and share a secure download link instead. The link only works for people signed in to your organization, and it's automatically cleaned up after a set period of time. With the **Files by Agent OS** connector, you can: * Export content (for example, all content types in a stack, or any other data produced during an automation/agent run) into a file. * Automatically deliver the file via email, Mailgun, or as a Contentstack asset, with a downloadable link. * Control how long the generated file remains available for download. **Note:** The **Files by Agent OS** connector currently supports **export** **only**. Importing data through this connector is not supported. ## Before You Begin * Create a File is **opt-in**. It only works for agents or automations where it has been explicitly added as a tool/connector; it is not included by default. * The person setting up the agent or automation decides when a file should be created, based on what the agent or automation is doing. ## Set Up the Files by Agent OS Connector Perform the following steps to set up the **Files by Agent OS** connector in an automation: 1. Click **Configure Action Step** in the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Files by Agent OS** connector.![Files\_Connector\_in\_Automations.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am7d71480d09e44a74/ad953bc62e4ed126ecc73cbb/Files_Connector_in_Automations.png?locale=en-us) 4. Under **Choose an Action**, select the **Create a File** action.![Create\_a\_File\_Action.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am5a27c39ecefb1a9d/0a6dbd728d9bad875c4a352b/Create_a_File_Action.png?locale=en-us) 5. On the **Configure Action** page, enter the following details: 1. **Data (required):** Enter or map the data you want written to the file (for example, the output of a previous step, such as all content types fetched for a stack). 2. **File name (required)**: Enter a name for the generated file, including its extension (for example, export.md). The extension determines the file format (CSV, JSON, TXT, or MD). **Note:** The **Create a File action** only generates the file and its download link. To deliver the file to a user, add a follow-up step using a delivery connector, for example, Email (to send the file or link by email) and reference the URL (or other fields) from the output of the previous **Create a File** step. ![Create\_A\_File\_Fields.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am07ee9c576a5b476e/e72a42c62e39a9f5e9b72925/Create_A_File_Fields.png?locale=en-us) 1. Once done, click **Proceed**. 2. Click **Test Action** to test the configured action. 3. On successful configuration, you see the output, which includes a download link for the generated file. Click **Save and Exit**.![Save\_Exit\_Button.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amd97c6a4e1a310387/0f4b7163bcb88dcdbca653fc/Save_Exit_Button.png?locale=en-us) ## Set Up the Files by Agent Tools in Agents Follow the steps to add the tool: 1. Open the agent you want to add file creation to, in the builder. 2. In the **Tools** section, click **Add Tool**. ![Files\_Tool\_in\_Agent.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amc5dd280414c9842a/92a19f0ef308c9c5452c63e7/Files_Tool_in_Agent.png?locale=en-us) 3. From the list, click **Files**, enter the **Data** and the **File name** similar to automation. 4. Save your changes.![Save\_Exit\_Button.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amd97c6a4e1a310387/0f4b7163bcb88dcdbca653fc/Save_Exit_Button.png?locale=en-us) Once added, the agent can generate a file as part of its response, any time it runs. ## Supported File Formats File extension Format .csv Comma-separated values (spreadsheet-style data) .json JSON .txt Plain text .md Markdown **Note:** If the data does not match the requested format (for example, plain text data is passed in but the filename ends in .csv), the file is not created and the agent/automation reports that the export failed. Every time the agent or automation runs and creates a file, it is a brand-new file: nothing is ever overwritten. Each run has its own file, tied to that specific execution. ## Sharing the File Create a File itself only creates the file and a download link; it doesn't send the file anywhere on its own. To actually deliver it to people, pair it with a delivery step using an **"Attach File / Image by URL"** field to pass the file along: **Examples**: * **Email**: attach the file to an email sent through the built-in Email connector. * **Mailgun**: attach the file to an email sent through a connected Mailgun account. * **Contentstack**: use the file to create a new asset, or update an existing one, in your Contentstack organization. **Note:** **Sending** files through **Slack** is **not yet** available for everyone. ## Viewing and Downloading Files from Execution Log Every time an agent or automation runs and creates a file, you can find that file from the **execution details** view for that run. Look for the **File** step in the execution details. Instead of raw output, you'll see a **file card** with the file's information. **While the file is still available**, the card shows: * The file name and its format (CSV, JSON, TXT, or Markdown) * The file size * How much time is left before the file expires (for example, "Expires in 23h 41m") * A **Download** button * A **Copy link** button, to copy the download link Clicking **Download** saves the file directly to your device, using its original file name. **Once the file has expired**, the card instead shows: * The file name, struck through * A **Link expired** label * Disabled Download and Copy link buttons * A note letting you know the export has expired, the file and download link are no longer available, and you'll need to re-run the agent or automation to generate a fresh one **Note:** The download link only works for people who are signed in to the same organization the file belongs to. It isn't a public link. ## File Retention * **Default:** 1 day. * **Editable by:** Super Admins only. This window can be extended for enterprise customers depending on your organization's plan; there's currently no option to set a custom expiry time yourself. * **Expiry shown in:** the expiry field in the Create a File action's output. * **Download link access:** restricted to users with access to the automation/agent that generated it, not a public link. * Once a file has expired, simply re-run the agent or automation to generate a new one. ## Good to Know * **One file per run:** Every time an agent or automation creates a file, it's a brand-new file tied to that run; nothing gets overwritten. * **Files have a size limit:** By default, files can be up to **5 MB**; this can be raised for enterprise customers. If the data is too large to fit within the limit, the export fails and the agent lets you know. * **Downloads only, no in-app preview:** You can view a file's details (name, format, size) from the execution details view, but to see its contents you must download it. * **Export only:** There is currently no option to import data using this connector. * **Not yet supported:** Exporting to Excel/XLSX or PDF format, setting a custom expiry time, previewing files without downloading, and a dedicated file browser across all your exports. These may be added in future updates. --- ## URL: https://www.contentstack.com/docs/agent-os/get-started-with-agents --- title: "Get Started with Agents" description: "Learn how to get started with agents in Agent OS to automate workflows, manage tasks, and build intelligent agents using Contentstack." url: "https://www.contentstack.com/docs/agent-os/get-started-with-agents" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: get-started-with-agents.md --- # Get Started with Agents **Note:** For access, please talk to our [Support](mailto:support@contentstack.com) team. Agents in Agent OS are intelligent tools designed to execute complex, multi-step workflows that go beyond traditional, linear automation. They leverage AI models and connectors to perform dynamic tasks, reasoning, and decision-making. This guide provides a hands-on introduction by walking you through the creation of an AI-powered agent. This agent automatically discovers, analyzes, and publishes breaking news, demonstrating an end-to-end automation cycle. The agent you build performs the following complex workflow: 1. **Trigger:** Activates the process via a simple HTTP URL call. 2. **Discovery and analysis:** Searches for the top three breaking AI news items, generates a summary of each, and analyzes its potential impact on the IT industry. 3. **Content automation:** Creates a separate content entry in your Contentstack CMS for each news item. 4. **Notification:** Sends a Slack notification with the compiled summaries and impact analysis to a designated channel. ## Prerequisites 1. [Contentstack account](https://www.contentstack.com/login) 2. Agent plan for your organization 3. [Admin](/docs/headless-cms/types-of-roles#admin)/[Owner](/docs/headless-cms/types-of-roles#owner) access for the Contentstack stack Let's start by logging into the [Contentstack account](https://www.contentstack.com/login/) and following the steps given below: 1. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list.![App\_Switcher\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt72031a63ce1512b9/6996d58073e3df0008d2d8de/App_Switcher_Icon.png) Let’s see the two ways to create an agent: 1. Create an agent in a new project. 2. Create an agent in an existing project. ### Create an agent in a **new project** 1. On the **Agent OS** projects page, click **\+ New Project**. 2. Enter a **Name** and an optional **Description**, then click **\+ Create Project**. 3. From the **Agent OS Dashboard** page, click **\+ New Agent**. 4. In the **Create Agent** modal, click **Skip, I'll create manually**. Enter a suitable **Title** and a **Description** for your agent. Click the **Create Agent** button.![Create\_agent\_modal.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta911d7762344a3e0/6996d5971eaffc0008e45b79/Create_agent_modal.png) **Note:** You can also create an agent using the **Automated Setup**, where you provide a description and the system automatically configures the trigger, tools, and instructions. 5. You are redirected to the **Agent Builder** page, where you can add the **Trigger**, **Tools**, and **Instructions**.![Agent\_Builder\_Screen\_Updated.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb1b643fff1205313/6997f2a6da5d88000881e6fc/Agent_Builder_Screen_Updated.png) ### Create an agent in an **existing project** 1. Navigate to your project. 2. From the **Dashboard** page, click the **Create** drop-down.![Create\_agent\_from\_dashboard.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcc08570e112f5efe/6996d58099cddc000822abf6/Create_agent_from_dashboard.png) 3. From the dropdown, select **\+ New Agent** button.![New\_agent\_dashboard.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcc561af22c64cb94/6996d598618a670008b887e8/New_agent_dashboard.png) 4. In the **Create Agent** modal, click **Skip, I'll create manually**. Enter a suitable **Title** and a **Description** for your agent. Click the **Create Agent** button.![Create\_agent\_modal.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta911d7762344a3e0/6996d5971eaffc0008e45b79/Create_agent_modal.png) **Note:** You can also create an agent using the **Automated Setup**, where you provide a description and the system automatically configures the trigger, tools, and instructions. 5. You are redirected to the **Agent Builder** page, where you can add the **Trigger**, **Tools**, and **Instructions**.![Agent\_Builder\_Screen\_Updated.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb1b643fff1205313/6997f2a6da5d88000881e6fc/Agent_Builder_Screen_Updated.png) Let’s see how to configure the **Trigger**, **Tools**, and **Instructions** for the agent. ## Agent Builder The Agent Builder comprises three sections: **Trigger**, **Tools**, and **Instructions**. ### Trigger **Trigger** defines the events that start your agent’s workflow, allowing it to run automatically. 1. In the **Triggers** section, click **+** to add the trigger. A side panel opens. **Additional Resource:** Refer to the [Triggers](/docs/agent-os#triggers) documentation to learn more. ![Add\_Trigger\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf256c59911b330a3/6996d58080879200082ead1a/Add_Trigger_Icon.png) 2. Select the **HTTP Trigger** and click **Save**. Once done, you are ready to use the trigger. **Additional Resource:** Refer to the [HTTP Trigger](/docs/agent-os/http-trigger) documentation to learn more. 3. Click the vertical ellipsis to edit the configuration or replace the trigger. Selecting either option opens a side panel where you can modify the existing trigger configuration or replace it with a new trigger.![Edit\_replace\_trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt493a9886398d9578/6996d598b13d650008b4f278/Edit_replace_trigger.png) ### Tools The **Tools** section lets you define what your agent can do by selecting the tools, automations, and agents it can use to perform tasks. For our use case, we will select the three tools: **Create an Entry** action, **Slack** connector, and **ChatGPT: Web Search**. Let’s see how to add all three tools: 1. In the **Tools** section, click **\+ Add** to add the tools.![Add\_Tools.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteb7702a4c253a04c/6996d57f8d3a6a0008c5a3b9/Add_Tools.png) **ChatGPT: Web Search** 1. A side panel opens. Under the **Tools** category, select **ChatGPT: Web Search**. Authenticate your ChatGPT account, then select a **Model**. For the remaining fields, let AI select the values. Click **Save**. **When you select a tool:** 1. A modal opens with two configuration options: 1. **Let AI select data:** The agent automatically extracts the values for the action fields from the prompt. For example, Agent Prompt: Retrieve values from the **Sample Stack** and choose the **AI Intelligence** entry. These values are selected dynamically at runtime. 2. **Add custom data:** You can manually select predefined values using the **Lookup** drop-down. **Note:** All actions are shown in unselected mode by default, and you can choose any available connector as needed. ![ChatGPT\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltce9e0263ad52c5f7/6996d58036d8d5000862c86e/ChatGPT_Action.png) **Additional Resource:** For more information, refer to the [ChatGPT connector](/docs/agent-os/chatgpt) documentation. **CMS: Create an Entry action** 1. Click **\+ Add** to add the **Create an Entry** action. 2. In the side panel, under the **Tools** category, select **CMS**. 3. In the **Entry** category, select the **Create an Entry** action. 4. On the **Create an Entry** configuration screen, authenticate your Contentstack account. 5. From the **Select Stack** drop-down, select **Add custom data**, then select a stack from the **Lookup** drop-down. 6. For the remaining fields, let AI select the values. Once complete, click **Save**.![Create\_an\_entry\_action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0c6ec466dc875ca5/6996d5980f938800084cf886/Create_an_entry_action.png) **Slack Connector:** 1. Click **\+ Add** to add the **Slack** connector.![Select\_Slack\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2dfae0a98140509e/6996d5e0b13d650008b4f27c/Select_Slack_Connector.png) 2. Select the **Send a Message** action. 3. Add your **Slack** account. 4. From the **Channel** drop-down, select **Add custom data**, then choose a channel from the **Lookup** drop-down. 5. For the rest of the fields, let AI select the values. Click the **Save** button.![Slack\_Configuration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt539e58740bba060f/6996d5e08d3a6a0008c5a3bd/Slack_Configuration.png) 2. Once done, you see all the added tools.![Added\_tools.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9f0d6858b716813a/6996d57fcf7e250008e68028/Added_tools.png) **Additional Resource:** Refer to the [Connectors](/docs/agent-os) documentation to learn more. ### Instructions Instructions, the most important component, define the agent’s role and rules. It controls how the agent behaves and what “good output” looks like. 1. Navigate to the **Instructions** section. 2. Add the instructions required for agent execution, as shown below: 3. Use **/** to add tools to your set of instructions.![Agent\_instructions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt47edc923eb684a1d/6996d5801eaffc0008e45b75/Agent_instructions.png) ### Save agent Once the agent configurations are set, click the **Save** button from the top-right navigation to save the agent. ![Save\_button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3c942b22f05f084d/6996d5e0ab60c900082f24e2/Save_button.png) ### Publish an agent To publish the agent, follow the steps below: 1. Click the **Publish** button from the top-right navigation panel.![Publish\_button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfd264c93d1e6b257/6996d5e0ca1be7000834d2c9/Publish_button.png) 2. In the **Publish Agent** pop-up, click the **Publish** button.![publish\_agent-Updated.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltba95a4a33fe8b17e/6997ff3fc9b89800084dd436/publish_agent-Updated.png) Once the agent is published, hit the HTTP URL. You see three entries created in the CMS. ### Edit an agent To edit the agent, follow the steps below: 1. To edit the agent configurations, click the **Edit** button.![Edit\_Agent.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1e9c210bfb8ae619/6996d59860af9b0008db5fa4/Edit_Agent.png) 2. Once you click the **Edit** button, the agent is available in the **Draft** mode to edit. ### Unpublish an agent Unpublishing an agent revokes the latest changes. To unpublish the agent, follow the steps below: 1. Click the **Unpublish** button from the top-right navigation panel.![Unpublish\_button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt54b60bfc8222cb0a/6996d5e18d3a6a0008c5a3c5/Unpublish_button.png) 2. In the **Unpublish Agent** pop-up, click the **Unpublish** button.![UNPUBLISH\_AGENT-Updated.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt98b54be6848cb062/6997ff3f624a07000845f620/UNPUBLISH_AGENT-Updated.png) **Note:** You can view the agent versions by clicking the **Version** icon. ### Clone an agent To clone an agent, follow the steps below: 1. From the top-right navigation panel, click the **horizontal ellipsis** and select **Clone Agent.**![Clone\_horizontal\_ellipses.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amc85ec158f4f5132f/37ccca1864aca9ab6cffecef/Clone_horizontal_ellipses.png?locale=en-us) 2. In the **Clone Agent** modal, update the name if required. 3. In the **Clone to Project** drop-down, select the project you want to clone the agent into. The current project is selected by default.![Clone\_Popup.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am21e3f13c49e6e3e0/62ec82cbc0e59cca61d55ab8/Clone_Popup.png?locale=en-us) 4. Click the **Clone Agent** button. ![Clone\_agent\_button.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am240691f4f8aa4e51/5007f1b1d5fdb8e02e0168d8/Clone_agent_button.png?locale=en-us) ### Export an agent To export an agent as a JSON file, follow the steps below: 1. From the top-right navigation panel, click the **horizontal ellipsis** and select **Export as JSON**. ![Export\_horizonatal\_ellipses.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/ama9dfc5b4d89914f2/f74602e0667f04150349531c/Export_horizonatal_ellipses.png?locale=en-us) 2. In the **Export Agent As JSON** modal, click the **Export Agent** button. The agent's configuration is downloaded as a JSON file.![Agent\_Export.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amfe688eb98d52fbc6/3000aa57ff0dc910d359ac8b/Agent_Export.png?locale=en-us) **Note:** Authentication details and credentials are not included in the export and must be set up again after import. ### Import an agent To import an agent, follow the steps below: 1. On the **Agent OS Dashboard**, click the **Create Agent** drop-down and select Import. ![Import\_dropdown.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am10b4b84b89b022fa/ae21311cff8f2d6a8843808d/Import_dropdown.png?locale=en-us) 2. In the **Import Agent** modal, click **Import JSON File** and select the JSON file from your system. The file size limit is **10 MB**.![Import\_Agent\_Button.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am56aa284f5f302e95/38dce0098f9d4a354fffb906/Import_Agent_Button.png?locale=en-us) 3. Click the **Import Agent** button. **Note**: * Only tool and trigger definitions are imported; configurations must be set up separately. * Agents and Sub Automations added as tools are excluded from import. ## Agent Creation Using Template Let’s see the steps to create an agent using a predefined template: 1. In the **Create Agent** modal, click the **Browse Template** button.![Browse\_Template\_button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0deee16a6f5c14f1/6996d580618a670008b887e4/Browse_Template_button.png) 2. In the **Browse Templates** pop-up, select a template to get started. You can hover over any template and click the **View template** link to view its configuration.![Template\_selected.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltec7c6c53898fd3b5/6996d5e08d3a6a0008c5a3c1/Template_selected.png) 3. Click **Use Template** to use an existing template. You are redirected to the **Agent Builder** screen.![Use\_this\_template\_button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2fa86e11f601517c/6996d5e0b13d650008b4f280/Use_this_template_button.png) 4. You are redirected to the **Agent Builder** page, where you can see the **Trigger**, **Tools**, and **Instructions** configured for your template.![Agent\_Builder\_Screen\_Updated.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb1b643fff1205313/6997f2a6da5d88000881e6fc/Agent_Builder_Screen_Updated.png) ## Executions The **Executions** view provides a complete and transparent breakdown of how an automation or agent run performed from start to finish, helping users understand outcomes, performance, and resource usage. **Includes:** * **Status**: Displays a clear execution status (for example, _Success_). * **Started At:** Indicates the start time of the execution. * **Total Duration:** Displays the total duration of the run. * **Tools Used:** External tools or capabilities the agent invoked during an execution. **On clicking an individual execution** **Execution steps** The **Execution Steps** timeline shows every action performed during the run in chronological order, making it easy to trace agent behavior and identify performance bottlenecks. **Includes:** * Step-by-step execution flow (for example, web search, content creation, message delivery) * **Metrics:** * **Started At:** Shows the exact date and time when the execution began. * **Duration:** Indicates how long the execution took to complete from start to finish. * **Total Tokens:** Represents the total number of tokens consumed during the run, helping track usage and cost. * **Model:** Identifies the AI model used to execute the task. * **Input and Output:** * **Input:** * Displays the exact prompt or instructions provided to the agent. * Shown in JSON format for reproducibility. * **Output:** * Displays structured execution results in JSON format. ![Execution\_log.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte3518418210b0ccd/6996d59899cddc000822abfa/Execution_log.png) ### **Troubleshooting tips** * **Success but no result**: Check output data. * **Link check errors (405/403)**: Ensure fallback from HEAD to GET. * **Intermittent failures**: Compare timestamps with rate limits or API issues. ## Settings ### General The **General** section lets you define your agent’s identity with a title and description, so its purpose is clear from the start. 1. You see a **Title (required)** and an optional **Description** for the agent’s purpose. The app automatically picks a name and description for your agent based on what you entered in the **Create Agent** step. If you want, you can edit the name or update the description. 2. Click the **Save** button.![Manual\_Setup\_Title\_Description.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3a207ec0e2f337a3/6996d59880879200082ead1e/Manual_Setup_Title_Description.png) ### AI Model The **AI Model** screen is where you choose and connect the underlying model that powers your agent, ensuring it can reason and respond effectively. You see Contentstack Managed (Organization Default). ![AI\_model\_Contentstack\_managed.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc5c8ab21373cd615/6996d580a9de3800086c71fa/AI_model_Contentstack_managed.png) By clicking the **Change** link, you see two configurations: **Organization Default** and **Custom Configuration**. **Custom Configuration**: 1. In the **Select Model Provider** (required) drop-down , select the LLM provider for your agent. Currently supported providers include: * Azure OpenAI * Gemini * OpenAI * Google Vertex * Anthropic For our use case, we used **OpenAI**. 2. In the **Agent Authentication** field, add or select an account to authenticate the agent. To create a new key, click **\+ Add API Key** and sign in with your model provider’s API Key and Organization ID (for OpenAI). If you select **Gemini**, you see Google Vertex authentication options; if you select **OpenAI**, you see ChatGPT authentication options. 3. In the **Select AI Model** field, select which underlying AI model the agent should use to run tasks or generate responses. 4. Click the **Save** button to save the configuration.![Custom\_Configuration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt163e788aa0ff2a41/6996d598676f8800085bfc13/Custom_Configuration.png) ### Delete an agent To delete an agent, click the **Delete Agent** button. A pop-up appears. Enter **DELETE** in the input field and click the **Delete Agent** button.![Delete\_Agent.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcde9771e8c55711f/6996d598ce3ab300088bdce9/Delete_Agent.png) --- ## URL: https://www.contentstack.com/docs/agent-os/get-started-with-automations --- title: "Get Started with Automations" description: "Manage and monitor your agents, automations, and executions in one place with the Dashboard for smarter, scalable workflows." url: "https://www.contentstack.com/docs/agent-os/get-started-with-automations" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: get-started-with-automations.md --- # Get Started with Automations This guide will walk you through the essentials of getting started with automations. Whether you are looking to integrate multiple tools, automate routine operations, or design custom workflows, Automate offers a user-friendly, visual interface to help you achieve these goals without requiring programming expertise. With built-in security and seamless integration capabilities, Automate empowers both technical and non-technical team members to build workflows that meet evolving business needs. Let’s dive in and start automating! ## Prerequisites: 1. [Contentstack account](https://www.contentstack.com/login) 2. [Admin](/docs/headless-cms/types-of-roles#admin)/[Owner](/docs/headless-cms/types-of-roles#owner) access for the Contentstack stack The basic steps of the workflow can be broadly classified into the following: 1. [Create Project](#create-project) 2. [Create Automation](#create-automation) 3. [Test Automation](#test-automation) 4. [Activate Automation](#activate-automation) Let’s look at the steps in detail. ## Create Project To get started with automations, you need to [create](/docs/agent-os/managing-projects#create-a-project) a project. Projects help you keep everything related to your automations, agents, executions, and audit log set up under one location in an organized manner. To create a project, perform the steps given below: 1. Log in to your [Contentstack account](https://www.contentstack.com/login/). 2. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list.![App\_Switcher\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt18dc201cc44f2470/699bdcf2da5d88000881eee1/App_Switcher_Icon.png) 3. Click **\+ New Project**. 4. In the **Create New Project** modal, enter the **Project Name** (for example, Slack-automation), an optional **Description**, and click **Create**. You can also add Tags for your project as shown below. ![Create\_Project.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd628baded5169da9/651ba2c1375d982bd89cdada/Create_Project.png) The above steps open the Agent OS Dashboard page. ## Create an Automation Automation is the process of creating a workflow that sets up a connection between two or more web apps or services, including Contentstack. Automations help you set up specific steps that will perform based on the specified conditions. Once you define these steps, Contentstack Automations will automate the executions of the steps. First, perform the following steps to create an Automation: 1. In the top navigation panel, click **Automations**. 2. On the **Automations** listing page, click **\+ New Automation**. From the dropdown, select **Create New.** 3. In the **Create Automation** modal, provide an **Automation Name** and an optional **Description**. Click **Create**.![Create\_New\_automation.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteba2954e341f49a3/67c8092a39a3ca8277112357/Create_New_automation.png) 4. After entering the basic details of the automation in the above step, the next set of actions can be broadly classified into the following two main steps: 1. [Configure Trigger](#configure-trigger) 2. [Configure Action Step](#configure-action-step) **Note:** You can now throttle the execution for your automations to avoid rate limit. For more information, refer to the [Throttle Execution](/docs/agent-os/throttle-execution) document. Let’s look at the above steps ‌in the next section. ### Configure Trigger Triggers are conditions or invocation points that fire off an Automation when an event occurs in Contentstack or an external app or service. They help automate a business workflow to accomplish required tasks. **Note:** You can click the **Add any additional context or notes relevant to this section** text to add additional details about the trigger step. Configuring a trigger can be broken into the following steps: 1. Click **Configure Trigger** from the left navigation panel. 2. **Choose Connector**: Here, you can select Contentstack or an available third-party app or service which will serve as the trigger connector. For example, click **HTTP**. **Note:** For more details on the “HTTP” Connector and other available connectors, refer to [Automate Connectors](/docs/agent-os/). 3. **Choose Trigger**: Select the Trigger or the webhook event listed under the selected connector. In our case, you will select the **HTTP Request Trigger.** This trigger will be activated whenever you make an HTTP GET/POST request to a specific webhook URL. ![Choose\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt90416d94f2f39023/659a7c21254eff8a34747e5a/Choose_Trigger.png) 4. **Configure Trigger**: Here, you need to provide additional details with respect to the trigger you selected in the above step. This section will differ for each trigger. For our example, click the displayed **Method**, i.e., **GET/POST**. You can also enable the **Secure HTTP Trigger** using the toggle to add security to the HTTP trigger and click **Proceed**. **Note:** For more information, refer to the [HTTP Trigger](/docs/agent-os/http-trigger/) documentation. ![Select\_Method\_Secure\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb02aa49bd9060ed5/659a7c50d082f77c7f261447/Select_Method_Secure_Trigger.png) You will find the applicable **Input methods** and an **Input URL** in the **Test Trigger** section. **Note:** You will see a similar URL, even If you update the configuration before testing the trigger. 5. **Test Trigger**: The final step is to test the trigger you created. The Input URL you find here will be the webhook URL that you can use to see the automation working. Click **Test Trigger**. ![Test\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4e820136b9d81f43/659a7c6b0543c568898f3719/Test_Trigger.png) You should be able to see the output as follow: ![Output\_Error.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt48150a59ba6e55b9/659a7c2fb05b9eb40ed73f9e/Output_Error.png) **Note:** The output doesn’t appear because we haven’t tested the Trigger URL yet. Next, to try if the trigger is working real-time, perform the following steps: 1. Copy the **Input URL** that you see above and paste it on a new browser tab. 2. Pass a query parameter to the Input URL, for example, https://trigger\_input\_URL?**name="john"** and hit enter. You should see an output similar to the following: {"result":"The automation is currently being tested or not activated","rule\_id":"1111ababa11111","trigger\_id":"1111ab1c1ab11111ca11b111111ca1bc"} 3. Return to your **Test Trigger** setup page and click **Restest**. In the output, you will see your query parameter as follows: query: name:"john" Here’s what you see ![Save\_and\_Exit-trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2c1446aedacd91de/659a7e68be5d266ae365ab5b/Save_and_Exit-trigger.png) 4. The **Apply Trigger Conditions** section lets you filter the data displayed in the output. For example, if you want your trigger to proceed further with the configured actions, under the condition that the name parameter (the one you passed in the above step) is “scott” in the output result, click **\+ Add Trigger Condition** and pass the following filter condition: query.name | Matches (Text) | scott 5. Lastly, you can either pass a new query parameter and **Retest** the trigger or hit **Save and Exit** (see screenshot in **step 3**). 6. This completes your step of configuring your HTTP trigger. 7. **Note:** You will find more details on how to [rename a trigger](/docs/agent-os/managing-triggers#rename-a-trigger/) and [delete a trigger](/docs/agent-os/managing-triggers#delete-a-trigger/) in the "[Working with Automate](https://www.contentstack.com/docs/agent-os#working-with-automate)" section. ### Configure Action Step Action is the event that happens as a result of a triggered event. To understand the concept of Actions, let’s consider the above example where you set an **HTTP Request** trigger that is activated when a user fires a GET/POST request. And, you can set up an action that will notify a particular **Slack** channel when such an event occurs. After configuring the Trigger, click **Configure Action** **Step** and perform the following steps to set up the corresponding action: **Note:** You can click the **Add any additional context or notes relevant to this section** text to add any additional details about the action step. 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. **Choose Connector**: Click the connector (Contentstack or a third-party app or service) where you want your workflow to perform the next set of actions. In our case, click **Slack**. ![Select\_Slack\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4d4add08399df588/659a7c6bbb2e10197d012258/Select_Slack_Connector.png) 4. **Choose an Action**: Select the action listed under the selected connector, Slack. In our case, select **Send Message** that will send a message to a specific Slack channel that you choose. ![Select\_Slack\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt85675cfa86286269/659a7c5c14672fb5be6fadea/Select_Slack_Action.png) 5. **Configure Action**: Here, you need to provide additional details for the action you selected in the above step. This section will differ for each action. For our example, we will add the Slack account. 1. Click **\+ Add New Account** (add Slack account). 2. You will see a list of permissions that you can choose to **Authorize**. **Additional Resource:** Refer to the Slack connector documentation to know more about the permissions. 3. Next, you will see a window open with access requests from the app. Click **Allow** to proceed further. ![Allow-Access-Slack](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfd2cde0a08775432/63d8afda5b2c1e6188c567cc/Allow-Access-Slack.png) 4. Enter a **Title** for this account, say “Allow-Slack-access” and click **Save**. ![Save\_an\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8751777c2ada6000/659a7c2e0543c560408f3711/Save_an_Account.png) 5. Next, click the **Channel** textbox. It displays a **Lookup list** containing all the channels in your Slack account. Click **Load More** until you locate your channel. For our example, select the **sample** channel, and its name is displayed in the entry box. ![Select\_Slack\_Channel.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteb1ecc953f705ff1/67c8092a21a60e396ea4829b/Select_Slack_Channel.png) 6. Click the **Message** textbox. You will see all the values related to the “1.HTTP Request trigger” you set up earlier. Click a parameter, say query.name, that you want to send as a message to the selected Slack channel.![Query\_Name.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7d70071a6e0d526f/659a7c2fa8ee43b6ee19aaf0/Query_Name.png) For example, if you want to send the name param, select query.name and type ahead a message if needed, say “1.query.name has sent a GET/POST request”. ![Slack\_Message.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt057ad2174e54fd21/67c809e4d1b1de1796ca9427/Slack_Message.png) 7. Once done, click **Proceed**. 6. **Test Action**: Finally, you can test the configuration you have set up by clicking on the **Test Action** button. The output shows the message that will be sent on the linked Slack channel. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd20c72e21cd5f07d/659a7c2f0543c534458f3715/Save_Exit.png) Check your Slack channel. You will see the message delivered to the Slack channel as below: ![Slack\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta59c965b8bfc3895/659a7c5dc3fb27daf919ef42/Slack_App.png) Once it works as expected, click **Save and Exit**. The action is now tested. If you hover over the number (2), the message “Tested” will be displayed. ![Tested\_Step.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6645e822438c28dc/659a7c6c1c5d7c75050f3e83/Tested_Step.png) 5. You can add multiple actions in an automation if needed. To do so, click the **\+ Add New Step** icon below the added action. 6. ![Add\_New\_Step.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd98f313fe5db3f21/659a7c212d26123e5de763e3/Add_New_Step.png) Then, perform all the steps similar to steps that were covered in the Step 2.2 - [Configure Action](#configure-action) section. Once done, on the left panel of the page, you will see the Automation Steps summarizing the trigger and actions used in the automation. ![Automation\_Steps.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdfb7ceaa414b486f/659a7c2190dcf2e17f648592/Automation_Steps.png) **Note:** You will find more details on how to [edit automation details](/docs/agent-os/managing-automations#edit-automation-details/), how to [delete an automation](/docs/agent-os/managing-automations#delete-an-automation/), and other actions in the [Additional functions on Triggers and Actions](/docs/agent-os/) section. You can add a new step in between the configured automation steps. Suppose, you want a add a new action step in between two configured actions, then hover over the line between the two steps and click the **+** sign as shown below: ![Add\_Step\_Between.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb49c418872da1471/659a7c21dc766222487ec073/Add_Step_Between.png) You can perform the following actions in configured steps: * **Copy Step:** Copy and paste the step anywhere in the automation. * **Clone Step:** Duplicate and add the step immediately below the existing step. * **Delete Step:** Remove the existing step. * **Paste Step:** After copying, use the Paste icon to insert it after a preferred step. ![Copy\_Steps.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd8653c31e318cc62/67bc09a956adc477e293b3b0/Copy_Steps.png) Additionally, you can also use **Control + C** and **Control + V** to copy and paste the step. **Note:** If your automation has an unconfigured step, you can override it and configure a new one. ## Test Automation Now that you have tested and verified that the automation is working as expected, test out its working in the respective connector you have added as trigger or action. If you see the changes you incorporated in the above processes are working fine. You are ready to activate the automation for use. If not, revisit all the above steps. ## Activate Automation Once your automation is ready for use, you need to activate it to use it in your projects. To do this, click the toggle button at the top-left corner: ![Activate\_Automation\_Toggle.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb906db736d86a173/659a7c21be5d2668e365ab53/Activate_Automation_Toggle.png) You can also configure another Action Step, Repeat Path or a Conditional Path quickly and easily. The quick select screen appears after each trigger and action step. **Note:** You cannot view the quick select screen if you configure the Response action connector. ![Special\_Actions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt11ad82e47b759305/659a7c6bc4b620562dfb8b5f/Special_Actions.png) You can also activate an automation on the **Automations** homepage as follows: ![Draft\_Mode.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt07b56765ee4c76c2/659a7c2fd082f7b79e261443/Draft_Mode.png) ## Notes: * **Usage Throttling:** For large-scale automations, use the throttling feature to prevent rate limits and avoid system overloads. ## Additional Resources and Warnings: * **Documentation for Connectors:** Refer to Contentstack’s [documentation](/docs/agent-os/) on available connectors (e.g., HTTP Trigger, Slack) for in-depth details on setup and customization. * **Rate Limits and API Quotas:** Be aware of rate limits, especially when using third-party APIs or high-volume automations. Monitor usage to avoid interruptions. * **Security Warnings:** Always configure secure triggers (e.g., Secure HTTP Trigger) when handling sensitive data or user-specific workflows. --- ## URL: https://www.contentstack.com/docs/agent-os/get-started-with-polaris --- title: "Get Started with Polaris" description: "Learn how to get started with Polaris, the AI-powered co-pilot in Contentstack CMS, to create, update, and manage content using natural language prompts." url: "https://www.contentstack.com/docs/agent-os/get-started-with-polaris" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: get-started-with-polaris.md --- # Get Started with Polaris **Note:** For access, please talk to our [Support](mailto:support@contentstack.com) team. Polaris is an AI-powered co-pilot embedded directly within the Contentstack CMS. It allows you to use natural language prompts to perform real CMS actions, such as creating or updating [entries](/docs/headless-cms/about-entries) and [assets](/docs/headless-cms/about-assets), all while staying fully within the CMS interface and permission model. This guide shows how to get started with Polaris across three common CMS contexts. For each context, we will detail how Polaris works, the types of prompts you can use, and how it safely executes actions using previews and confirmations. * Entry Editor * Assets Editor * Visual Editor ## Prerequisites 1. [Contentstack account](https://www.contentstack.com/login) 2. [Admin](/docs/headless-cms/types-of-roles#admin)/[Owner](/docs/headless-cms/types-of-roles#owner) access for the Contentstack stack 3. Polaris plan for your organization ## Accessing Polaris Let's start by logging into the [Contentstack account](https://www.contentstack.com/login/) and following the steps given below: 1. Open the stack. 2. Navigate to an [Entry](/docs/headless-cms/about-entries), or [Asset](/docs/headless-cms/about-assets), or [Visual Editor](/docs/headless-cms/about-visual-editor) page. 3. Click the **Polaris** icon to open the **Polaris** **panel** within the CMS interface. The Polaris panel opens as a side panel within the CMS UI. This panel is where you enter prompts and review planned actions and results. ![Entry\_Page.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3a965efbde2aeda0/69a163888c618d824cbf756a/Entry_Page.png) ## Using Polaris in the Entry Editor This section shows how Polaris works when you are inside an **Entry Editor** page. ### Step 1: Open an entry context 1. Navigate to your stack. 2. Open a content type. 3. Open an existing entry or create a new one. Once the Entry Editor is open, Polaris automatically receives the entry context, including the content type schema and fields. ### Step 2: Enter a prompt In the Polaris panel, enter a prompt related to the open entry. **Prompt example:** _Improve the tone and clarity of this entry to make it more engaging._ This prompt is interpreted by Polaris using: * The currently open entry * The existing field content * The content type structure ![Polaris\_Entry\_Prompt.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1f0e6c6c77bcdfa0/69a16388b488fe51d7d15bce/Polaris_Entry_Prompt.png) ### Step 3: Review planned actions After you submit the prompt, Polaris enters a planning state and analyzes the request. * Identifies the relevant entry fields * Determines that the request requires updating content * Prepares a write action for review At this stage, no changes are made to the entry. ![Polaris\_entry\_next\_move.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb9f1c77e2cabc95b/6996dd54c9b89800084dcd93/Polaris_entry_next_move.png) ### Step 4: Review the preview Because this is a write operation, Polaris displays a preview showing: * The current content * The proposed improved version of the content This preview allows you to clearly see what will change before anything is applied. **Note:** If a prompt is identified as a **read-only operation** (for example, asking for explanations, summaries, or insights without requesting updates), Polaris: * Executes the request immediately * Does **not** display a preview step * Does **not** require confirmation * Does **not** modify entries, assets, or pages The result is shown directly in the Polaris panel. ### Step 5: Confirm the update To proceed: 1. Review the proposed changes. 2. Click **Update** to apply the update. If you click **Cancel**, Polaris stops execution and the entry remains unchanged. ![Entry\_Confirmation.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2ae72d71e0a90e2d/69a16383ed0eb0a3b95d1617/Entry_Confirmation.png) ### Step 6: Review the result Once confirmed: * The entry fields are updated with the improved content. * The entry remains in draft state unless otherwise modified. * Polaris displays a confirmation message in the panel. You can continue working on the entry or enter additional prompts to refine the content further. ![Entry\_Updated.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt678d086f49fae5d8/69a163822f1cb9d6b662e387/Entry_Updated.png) ## Using Polaris in the Assets Editor This section explains how Polaris works in the **Assets Editor**. ### Step 1: Open an asset context 1. Navigate to your stack. 2. Go to the **Assets** section. 3. Open an existing asset in the Assets Editor. Once the asset is open, Polaris automatically receives the asset context, including available metadata fields. ![Asset\_Page.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3368e1e5143cf1a7/69a16388716ab84e4d441f94/Asset_Page.png) ### Step 2: Enter a prompt In the Polaris panel, enter the following prompt: **Prompt example:** _Update metadata for this image to include SEO-friendly tags and publish the image to the development environment._ This prompt is interpreted by Polaris using: * The currently open asset * Existing asset metadata * The user’s permissions for asset updates ![Assets\_Prompt.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9fe6e623b03eac99/69a164f5c10aad3e4ac829b5/Assets_Prompt.png) ### Step 3: Polaris plans the action After submitting the prompt, Polaris enters a planning state. In the panel, Polaris: * Identifies editable asset metadata fields * Determines that the request requires updating metadata * Prepares a write action for review At this stage, no changes are applied. ![Asset\_Planning.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt93966f7b8926333d/69a16382e0cee6f947390662/Asset_Planning.png) ### Step 4: Review the preview Because this is a write operation, Polaris displays a preview showing: * Existing asset metadata * The proposed SEO-friendly tags to be added or updated This preview allows you to verify the changes before execution. **Note:** If a prompt is identified as a **read-only operation** (for example, asking for explanations, summaries, or insights without requesting updates), Polaris: * Executes the request immediately * Does **not** display a preview step * Does **not** require confirmation * Does **not** modify entries, assets, or pages The result is shown directly in the Polaris panel. ![Asset Update.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltde345417edbd0e69/69a16383914d592219788f5f/Asset_Update.png) ### Step 5: Confirm the update To apply the changes: 1. Review the proposed metadata updates. 2. Click **Publish** to proceed. If you click **Cancel**, Polaris stops execution and the asset metadata remains unchanged. ![Asset\_Environment\_Update.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt791c5eb347b64771/69a165e0fbdb4df8df774dac/Asset_Environment_Update.png) ### Step 6: Review the result Once confirmed: * Polaris displays a confirmation message in the panel. * The asset metadata is updated successfully. * The updated values are visible in the Assets Editor. You can continue refining the asset or enter additional prompts to improve metadata or accessibility. ![Asset\_Updated.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5555e462d68759e5/69a16383716ab84089441f90/Asset_Updated.png) ## Using Polaris in the Visual Editor This section shows how Polaris works within Visual Editor. ### Step 1: Open Visual Editor context 1. Navigate to your stack. 2. Open Visual Editor. 3. Load a page or experience in preview mode. ![Visual\_Editor.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd8c8d38b8205a3a5/69a16388c461db85626a238f/Visual_Editor.png) Once the page loads, Polaris operates within the Visual Editor context. ### Step 2: Select a page element In the Visual Editor canvas, click a content element on the page (for example, a text block or section). Polaris identifies: * The selected visual element * The underlying entry and mapped field(s) ### Step 3: Enter a prompt In the Polaris panel, enter the following prompt: Prompt example: Shorten and sharpen the content on this page to improve readability. Polaris interprets this prompt using: * The selected Visual Editor element * The mapped entry fields * The existing content structure ![Visual\_Editor\_Prompt.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt568ecf93588e5bb4/69a1638348e3e8b6920ba667/Visual_Editor_Prompt.png) ### Step 4: Polaris plans the action After submitting the prompt, Polaris enters a planning state. In the panel, Polaris: * Determines which entry fields are associated with the selected element * Plans content updates scoped only to those fields * Prepares a write action for review No updates are applied at this stage. ![Visual\_Editor\_Planning.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf521d42e731fb584/69a163828dcc72421a0581db/Visual_Editor_Planning.png) ### Step 5: Review the preview Because this is a write operation, Polaris displays a preview showing: * The current content * The proposed shortened and refined version This preview allows you to clearly compare changes before execution. **Note:** If a prompt is identified as a read-only operation (for example, asking for explanations, summaries, or insights without requesting updates), Polaris: * Executes the request immediately * Does **not** display a preview step * Does **not** require confirmation * Does **not** modify entries, assets, or pages The result is shown directly in the Polaris panel. ### Step 6: Confirm the update To apply the changes: 1. Review the proposed updates. 2. Click **Update** to proceed. If you click **Cancel**, Polaris stops execution and no changes are applied. ### Step 7: Review the result Once confirmed: * The underlying entry fields are updated. * The Visual Editor preview reflects the updated content. * Polaris displays a confirmation message in the panel. You can continue refining the page or select another element and enter additional prompts. ![Visual\_Editor\_Updated.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd69ce5cb132092fc/69a16383c10aad5a9fc829a9/Visual_Editor_Updated.png) --- ## URL: https://www.contentstack.com/docs/agent-os/google-ai-studio-gemini --- title: "Google AI Studio (Gemini)" description: "Use the Google AI Studio (Gemini) connector to generate responses for text and images using the Google AI Studio (Gemini) AI models." url: "https://www.contentstack.com/docs/agent-os/google-ai-studio-gemini" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: google-ai-studio-gemini.md --- # Google AI Studio (Gemini) The **Google AI Studio (Gemini)** connector enables you to generate content through chat responses using the Google AI Studio (Gemini) model. You can also translate the entry data using the Translate an Entry action. With the **Generate Image via Nano Banana** action, you can generate multiple images based on the prompt. The Google AI Studio (Gemini) connector currently contains three actions: **Chat**, **Generate Image via Nano Banana**, and **Translate an Entry**. ## Prerequisites To use the Google AI Studio (Gemini) connector, you first need to connect your [Google AI Studio](https://aistudio.google.com/app/apikey) using the following steps: 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list. 3. Click **\+ New Project** or create a new one. 4. In the top navigation panel, click **Automations**. 5. Click **Configure Action Step** from the left navigation panel and then **Action Step** to configure third-party services. 6. Within the **Choose Connector**, click the **Google AI Studio (Gemini)** connector.//ss 7. Under **Choose an Action**, select the **Chat** action.//ss 8. In the **Configure Action** section, click **\+ Add New Account** to add your Google AI Studio account.//ss 9. In the **Authorize** modal, provide details such as **Title**, and **API Key** from the Google AI Studio. To generate an API key in Google AI Studio, follow the steps below: 1. Go to the [Google AI Studio](https://aistudio.google.com/app/apikey). 2. Click the **Get API key** option in the top navigation and then click the **+ Create API key** button. 3. From the **Search Google Cloud projects** drop-down, select an existing Google Cloud project. 4. Once done, click **Create API key in existing project** button.![Create\_API\_Key.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0434bd761987f5ae/67e11383efd8a912214c0dd7/Create_API_Key.png) 5. In the **API key generated** popup, click **Copy** to to copy the key. 10. Click the **Authorize** button.//ss This sets up your Google AI Studio account for the Google AI Studio (Gemini) connector. ## Set up the Google AI Studio (Gemini) Connector Perform the following steps to set up the Google AI Studio (Gemini) connector: 1. From the left navigation panel, click **Configure Action Step**. 2. Then, click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Google AI Studio (Gemini)** connector.//ss 4. Under **Choose an Action**, you will see the **Chat** action. //ss ### Chat The Chat action returns the chat response(s) from the Gemini model. To use the Chat action, follow the steps below: 1. Under **Choose an Action** tab, select the **Chat** action. 2. On the **Chat Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Gemini account as shown in the [Prerequisites](#prerequisites) step. 2. Select the **Model** from the dropdown list to generate content for the chat responses. **Note:** Different models are available to different users, based on the account the user holds such as paid accounts. You must check your account access before selecting the model. 3. Click the **\+ Add System Instruction Text** button to provide specific guidance or directives to the model to help it understand the context and generate an appropriate response based on the provided prompt text.![Select\_Model\_Instruction\_Text.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf5d04ff1fa5c23c1/67e4e8a6f483927e901580a4/Select_Model_Instruction_Text.png) 4. Select a **User Prompt** (text or image) to generate response(s). Click **+ Add User Prompt** to enter multiple prompts. When **Text** prompt is selected: 1. From the **Select Message Type** drop-down, select the **Text** type. 2. In the **Input Text** field, enter the input text to generate a response. ![Messgae\_Type\_Text.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5ebb0762749761f0/67e11231bbf93e13605879c5/Messgae_Type_Text.png) When **Image** is selected: 1. From the **Select Message Type** drop-down, select the Image type. 2. In the **Image URL** field, enter the URL of the image. 3. Select the **MIME** **Type** for the image. ![Message\_Type\_Image.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd0d5f8656e178be6/67e112312d0b988b56fd1155/Message_Type_Image.png) 5. Click the **Show Optional Fields** toggle button to use these optional fields: 1. Select the **Response Type** as either Text, **JSON** or **Structured Output**. For the **Response Type** as **JSON** or **Structured Output**, the output is produced in a valid JSON format. When selecting **Structured Output** as the Response **Type**, you must provide a valid JSON-formatted structured schema to ensure a properly formatted response. **Note**: * To use [Structured Outputs](https://ai.google.dev/gemini-api/docs/structured-output), all fields or function parameters **must** be marked as required. * A schema can include up to **100 object properties** in total, with a maximum of **5** levels of nesting. * Structured Output generates only the specified keys and values. To enable this, you must set additionalProperties: false. **Additional Resource:** See the [JSON Schema](https://json-schema.org/) documentation for more details. 2. Enter the **Number of Tokens** to generate the content. 3. Enter a value for the **Randomness of Responses** of the generated content. 0 being the most precise and 2 being the most random content predictions. This must be within the range of **0 to 2**. 4. Enter the **Top-P** value to define how the model selects tokens for output. For instance, if tokens A, B, and C have probabilities of 0.3, 0.2, and 0.1; then entering a Top-P value as 0.5, the model chooses either A or B as the next token using temperature and excludes C. This must be within the range of **0 to 1**. 5. Enter the **Top-K** value to define how the model selects tokens for output. Entering a Top-K value of 1 implies that the next chosen token is the most likely among all tokens in the model's vocabulary. Top-K value of 3 means that the next token is selected from the three most probable tokens using temperature. This must be within the range of **1 to 40**. 6. Enter the **Count of Response** to fetch the desired number of responses for the user prompt. If you enter **5**, then **5 responses** will be displayed in the output. 7. You can mark the **Sanitize text** checkbox to remove special characters or spaces from the chat response. Enabling this checkbox, eliminates any special characters or spaces in the chat response, resulting in a clean and compatible text.![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt37d8ff7f2b452b35/67e112310c6f55535a1fda95/Show_Optional_Fields.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, then click **Test Action**. 5. You will get the response(s). Once set, click **Save and Exit**.![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt53551746c09b308b/67e11231c566eed0c95e0c70/Save_Exit.png) ### Generate Image via Nano Banana The Generate Image via Nano Banana action returns the image URL from the Nana Banana model. To use the Generate Image via Nano Banana action, follow the steps below: 1. Under **Choose an Action** tab, select the **Generate Image via Nano Banana** action. 2. On the **Generate Image via Nano Banana Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Google AI Studio (Gemini) account as shown in the [Prerequisites](#prerequisites) step. 2. Select the **Model** from the dropdown list to generate content for the chat responses. **Note:** Different models are available to different users, based on the account the user holds such as paid accounts. You must check your account access before selecting the model. 3. Click the **\+ Add System Instruction Text** button to provide specific guidance or directives to the model to help it understand the context and generate an appropriate response based on the provided prompt text.![Select\_Model\_Instruction\_Text.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf5d04ff1fa5c23c1/67e4e8a6f483927e901580a4/Select_Model_Instruction_Text.png) 4. Select a **User Prompt** (text or image) to generate response(s). Click **+ Add User Prompt** to enter multiple prompts. When **Text** prompt is selected: 1. From the **Select Message Type** drop-down, select the **Text** type. 2. In the **Input Text** field, enter the input text to generate the image URL //ss When **Image** is selected: 1. From the **Select Message Type** drop-down, select the Image type. 2. In the **Image URL** field, enter the URL of the image. 3. Select the **MIME** **Type** for the image.//ss 3. Click **Proceed**. 4. Check if the details are correct. If yes, then click **Test Action**. 5. You will get the response(s). Once set, click **Save and Exit**.![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt53551746c09b308b/67e11231c566eed0c95e0c70/Save_Exit.png) ### **Translate an Entry** The Translate an Entry action returns the translated entry data in the response. To use this action, follow the steps below: 1. Under **Choose an Action** tab, select the **Translate an Entry** action. 2. On the **Translate an Entry Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Gemini account as shown in the [Prerequisites](#prerequisites) step. 2. Select the **Model** from the dropdown list for response predictions. 3. In the **Entry** **Data** field, enter the entry data to translate. 4. In the **Content** **Type** **Schema** field, enter the content type schema for translating the entry data. You can fetch the **Entry** **Data** and **Content** **Type** **Schema** from the previous step using the [Get a Single Content Type](/docs/agent-os/contentstack-management-content-types-actions#get-a-single-content-type) and [Get a Single Entry](/docs/agent-os/contentstack-management-entries-actions#get-a-single-entry) actions. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb716f6d5e1aaaa4c/681858e78850e6674d277e01/Select_Fields.png) 5. In the **Select** **Language** drop-down, select the language in which you want to translate the entry data. 6. Click the **Show Optional Fields** toggle button to use these optional fields: 1. Provide the **Prompt** **Text** to generate the response. This offers additional capabilities to customize the translated entry data. 2. Enter the **Number** **of** **Tokens** to generate the content. By default, the token limit is **2000**. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltec4add34d2922f74/681858e7ae96e74921d389ad/Show_Optional_Fields.png) 7. Click **Proceed**. 8. Check if the details are correct. If yes, then click **Test Action**. 9. You will get the response(s). Once set, click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcb381f5251eadf86/681858e779652b727a649223/Save_Exit.png) This completes the **Google AI Studio (Gemini)** connector’s setup. --- ## URL: https://www.contentstack.com/docs/agent-os/google-pubsub --- title: "[Automations guides and connectors] - Google PubSub" description: Set up the Google PubSub action connector to publish data to a topic. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/google-pubsub product: Automation Hub doc_type: connector-guide audience: - developers - automation-builders version: v1 last_updated: 2026-03-26 filename: google-pubsub.md --- # [Automations guides and connectors] - Google PubSub This page explains what the Google PubSub connector is and how to configure the Google PubSub action connector to publish data to a topic. It is intended for developers and automation builders setting up third-party service integrations in Automation Hub. ## Google PubSub Google PubSub is a messaging service provided by Google Cloud Platform that enables communication between independent applications. [Google PubSub](https://cloud.google.com/pubsub?hl=en) connector follows the publish-subscribe model, where applications can publish messages to topics, and others can subscribe to receive those messages. This enables asynchronous communication, allowing components to operate independently. ## Set Up Google PubSub Perform the following steps to set up the Google PubSub action connector: - Click **Configure Action Step** from the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the **Google PubSub **connector. - Under **Choose an Action** tab, select the** Publish Data to Topic** action. **Note:** You can sort and search the connector(s) based on the filter. - Click the **+ Add New Account **button to add your Google PubSub account. - In the Authorize modal, provide details such as **Title**, and **Service ****Account ****Key**. To create a service account key, follow the steps below: Go to the **Google Cloud Platform**. - Navigate to the **APIs & Services** page. - Under the **Credentials **section, click **+ CREATE CREDENTIALS** and select the **Service account **option to create a new service account. - Navigate to the service account you created and under the **KEYS **tab, click **ADD ****KEY **-> **Create new key**. - In the pop-up, select **JSON** and click **CREATE**. A file will be downloaded, and you will see the service account key details in JSON format. - Click the **Authorize **button. - In the **Select Topic **dropdown, select a topic to publish the data. **Note:** A [topic](https://cloud.google.com/pubsub/docs/create-topic) is a resource to which publishers can send messages. Publishers are applications or processes that generate and send messages to a topic. Subscribers then subscribe to these topics to receive the messages. - In the **Message ****Body **field, enter the data you want to publish. - Click **Proceed**. - Click the **Test Action** button to test the configured action. - Once set, click the **Save and Exit** button. The message will be published to a topic in Google PubSub, and relevant subscribers will receive the message. This sets the **Google PubSub ** action connector. ## Common questions ### What action does the Google PubSub connector support here? Under **Choose an Action** tab, select the** Publish Data to Topic** action. ### What credentials are required to authorize the connector? In the Authorize modal, provide details such as **Title**, and **Service ****Account ****Key**. ### What is a topic in Google PubSub? A [topic](https://cloud.google.com/pubsub/docs/create-topic) is a resource to which publishers can send messages. Publishers are applications or processes that generate and send messages to a topic. Subscribers then subscribe to these topics to receive the messages. ### How do I verify the action is configured correctly? Click the **Test Action** button to test the configured action. --- ## URL: https://www.contentstack.com/docs/agent-os/google-vertex --- title: "Google Vertex" description: "Use the Google Vertex connector to generate responses from the Gemini API model based on user prompts." url: "https://www.contentstack.com/docs/agent-os/google-vertex" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: google-vertex.md --- # Google Vertex The Google Vertex connector leverages Vertex’s [Gemini API model](https://docs.cloud.google.com/gemini-enterprise-agent-platform/reference/models/inference) to generate responses based on user prompts within your automation. Gemini models are advanced machine learning models offered by Google Vertex AI, designed to handle complex natural language tasks with high accuracy and efficiency. These models utilize sophisticated deep learning and natural language understanding techniques for tasks such as text generation, comprehension, summarization, and more. With the [Google Vertex AI Search for commerce](https://cloud.google.com/gemini-enterprise-cx/commerce?hl=en) platform, you can manage (create or delete) the products in the Catalog. This helps to improve product discoverability on the e-commerce site. ## Prerequisites To use the Google Vertex connector, you first need to connect your [Google Vertex service account](https://console.cloud.google.com/welcome?project=research-sandbox-1) using the following steps: 1. [Log in to your Contentstack account](https://www.contentstack.com/login) and click **Automations**in the top navigation panel. 2. Select your project and then the automation. 3. Click **Configure Action Step** from the left navigation panel and then **Action Step** to configure third-party services. 4. Within the **Choose Connector**, click the **Google Vertex** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt017fedf663917734/66a8a34590e89a730628fed3/Select_Connector.png) 5. Under **Choose an Action**, select any one action from the list. Here, we are selecting the **Send Prompt** action. ![Select\_Send\_Prompt\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt096ca93344062f83/678e10b7a5499b0d4d14b32f/Select_Send_Prompt_Action.png) **Note:** The Function Calling (Beta) and Function Calling Response (Beta) actions are currently in the **Beta phase** due to Google Gemini services. This status may change in the future. 6. In the **Configure Action** section, click **\+ Add New Account** to add your Google Vertex service account. ![Add\_Acount\_Send\_Prompt.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt89b1954bc2bde95d/66a8a3447f0b67822dfd1942/Add_Acount_Send_Prompt.png) 7. In the **Authorize** modal, provide details such as **Title**, and **Service Account Key**. To create a service account key, follow the steps below: 1. Go to the **Google Cloud Platform**. 2. Navigate to the **IAM & Admin** page. Select the **Service Accounts** section in the left navigation. You can use a pre-existing account or create a new Service Account to get the Service Account Key. **Additional Resource:** For more information on getting the Service Account Key, refer to the [Create Service Account](https://docs.cloud.google.com/iam/docs/keys-list-get) documentation. 3. Once done, provide the permission to access the Vertex API. 8. Click the **Authorize** button. ![Authorize\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6c9c54de169bf575/65c27809e7bf98d67a6d1ef3/Authorize_Button.png) This sets up your Google Vertex service account for the Google Vertex connector. ## Set up the Google Vertex Connector Perform the following steps to set up the Google Vertex connector: 1. From the left navigation panel, click **Configure Action Step**. 2. Then, click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Google Vertex** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt017fedf663917734/66a8a34590e89a730628fed3/Select_Connector.png) 4. Under **Choose an Action**, you will see the actions: **Function Calling (Beta)**, **Function Calling Response (Beta)**, **Send Prompt**, **Create or Update a Product**, and **Delete** **a** **Product**. ![Select\_Actions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9d385a314a1cff37/678e10b7a949fd6890edd578/Select_Actions.png) Once done, you can start setting up your Google Vertex connector. ### Function Calling (Beta) The Function Calling (Beta) action allows you to generate the responses based on a configured Sub Automation. Within the Function Calling (Beta) action, you can include various sub automations, which the Gemini model will analyze to generate and return responses accordingly. To use the Function Calling (Beta) action, follow the steps below: 1. Under **Choose an Action** tab, select the **Function Calling (Beta)** action. 2. On the **Function Calling (Beta) Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Google Vertex service account as shown in the [Prerequisites](#prerequisites) step. 2. In the **Select Project** drop-down, select a project to use the Vertex API. 3. In the **Select Model** drop-down, select a Gemini model to generate a response. Currently, the models available are: **gemini-1.0-pro**, **gemini-1.0-pro-001**, **gemini-1.0-pro-002**, **gemini-1.5-flash-001**, **gemini-1.5-pro-001**. **Additional Resource:** For more information, refer to the [Google AI Gemini](https://ai.google.dev/gemini-api/docs/models?hl=pt-br) documentation. 4. Provide the **Prompt Text** to generate response(s). ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbc65899770d000d4/66a8a3a259c15c5d214320c3/Select_Fields.png) 5. Click the **\+ Add Sub Automation** button to add multiple sub automations. ![Sub Automation.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltde781c9d2c8431b5/66a8a3a2d141063a7f555b6b/Sub_Automation.png) **Note:** You must create a [Sub Automation](/docs/agent-os/sub-automation-action) to use it in the Function Calling (Beta) action. 6. Click the **Show Optional Fields** toggle button to use the optional field. 7. You can mark the **Sanitize text** checkbox to remove special characters or spaces from the chat response. Enabling this checkbox, eliminates any special characters or spaces in the chat response, resulting in a clean and compatible text. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8d9f8b84c3ee2cde/66a8a3a2c1034431a60674ad/Show_Optional_Fields.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, then click **Test Action**. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1b62e8769d9efb93/66a8a3a27f0b6709e2fd194c/Test_Action.png) 5. You will get the response(s). Once set, click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt47cc8d35c10b6dff/66a8a3a2bc6ec2afa9f98e64/Save_Exit.png) **Note:** The Function Calling (Beta) feature selects which Sub Automation to run from a list of multiple options and generates the input for it. In the [Sub Automation](/docs/agent-os/sub-automation-action) action, the Sub Automation determined by the Function Calling (Beta) action is executed. ### Function Calling Response (Beta) With the **Function Calling Response (Beta)** action, you can format the output from the **Function Calling (Beta)** action and the **Sub Automation**. To use the Function Calling Response (Beta) action, follow the steps below: 1. Under **Choose an Action** tab, select the **Function Calling Response (Beta)** action. 2. On the **Function Calling Response (Beta) Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Google Vertex service account as shown in the [Prerequisites](#prerequisites) step. 2. In the **Select Project** drop-down, select a project to use the Vertex API. 3. In the **Select Model** drop-down, select a Gemini model to generate a response. Currently, the models available are: **gemini-1.0-pro**, **gemini-1.0-pro-001**, **gemini-1.0-pro-002**, **gemini-1.5-flash-001**, **gemini-1.5-pro-001**. **Additional Resource:** For more information, refer to the [Google AI Gemini](https://ai.google.dev/gemini-api/docs/models?hl=pt-br) documentation. 4. In the **Function Calling Response** field, select the output from the previous Function Calling action step. 5. In the **Sub Automation Response** field, select the output from the sub automation. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdcbc942325edd575/66a8a39559c15c70654320bf/Select_Fields.png) 6. Click the **Show Optional Fields** toggle button to use the optional field. You can mark the **Sanitize text** checkbox to remove special characters or spaces from the chat response. Enabling this checkbox eliminates any special characters or spaces in the chat response, resulting in a clean and compatible text. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8ee91b977d54814f/66a8a395a4a6574ae01de22e/Show_Optional_Fields.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, then click **Test Action**. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta262d2bf72e7d319/66a8a395a3b12e71895f5ce4/Test_Action.png) 5. You will get the response(s). Once set, click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7a4c141801022f3b/66a8a395c103446b470674a9/Save_Exit.png) **Additional Resource:** Refer to the [ChatGPT Use Cases](/docs/agent-os/chatgpt-use-cases/) to learn more about the Sub Automation action. ### Send Prompt This action returns the generated response from the Gemini API model. 1. Under **Choose an Action** tab, select the **Send Prompt** action. 2. On the **Send Prompt Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Google Vertex service account as shown in the [Prerequisites](#prerequisites) step. 2. In the **Select Project** drop-down, select a project to use the Vertex API. 3. In the **Select Model** drop-down, select a Gemini model to generate a response. Currently, the models available are: **Gemini 1.5 Pro**, **Gemini 1.5 Flash**, and **Gemini 1.0 Pro**. **Additional Resource:** For more information, refer to the [Google AI Gemini](https://ai.google.dev/gemini-api/docs/models?hl=pt-br) documentation. 4. In the **Prompt Text** field, enter a text to generate a response. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt425d7bcc9e5ac3b2/66a8a38b2fce458ad96fcc42/Select_Fields.png) 5. Optionally, enable the **Show Optional Fields** toggle to view the optional fields. 6. Enter the **System Instruction Text** to provide specific guidance or directives to the model to help it understand the context and generate an appropriate response based on the provided prompt text. For example, enter _What is Metaverse?_ in Prompt Text and _Respond in Shakespeare language_ in System Instruction Text. ![System\_Instruction\_Text.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4ff62f1a174e23c0/66a8a38bbc6ec26854f98e5f/System_Instruction_Text.png) 7. Enter the **Number of Tokens** to generate the content. This must be within the range of **1 to 8192**. 8. Enter a value for the **Randomness of Responses** of the generated content. 0 being the most precise and 1 being the most random content predictions. This must be within the range of **0 to 1**. 9. Enter the **Top-K** value to define how the model selects tokens for output. Entering a Top-K value of 1 implies that the next chosen token is the most likely among all tokens in the model's vocabulary. Top-K value of 3 means that the next token is selected from the three most probable tokens using temperature. This must be within the range of **1 to 40**. 10. Enter the **Top-P** value to define how the model selects tokens for output. For instance, if tokens A, B, and C have probabilities of 0.3, 0.2, and 0.1; then entering a Top-P value as 0.5, the model chooses either A or B as the next token using temperature and excludes C. This must be within the range of **0 to 1**. 11. Additionally, mark the **Sanitize text** checkbox to remove special characters or spaces from the chat response. By enabling this checkbox, any special characters or spaces in the chat response will be eliminated, resulting in a clean and compatible text. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltae613c4cc56295a8/66a8a38b0ccb2f2ce27ffece/Show_Optional_Fields.png) 3. Click the **Proceed** button. 4. Click the **Test Action** button to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2abef2ba43c2909f/66a8a38ba4a6570d2c1de229/Test_Action.png) 5. Once set, click the **Save and Exit** button. You will see a response generated for your prompt. ![Save\_Exit\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9e6a453ef2dd284a/66a8a38bc3ff6aeb9609c718/Save_Exit_Button.png) ### Create or Update a Product This action lets you create/update a new/existing product in the Google Vertex AI Search for the commerce catalog. 1. Under **Choose an Action** tab, select the **Create or Update a Product** action. 2. On the **Create or Update a Product Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Google Vertex service account as shown in the [Prerequisites](#prerequisites) step. 2. In the **Select** **Catalog** drop-down, select a catalog to create a new product. A **Catalog** represents a collection of all products. It acts as the master database for search, recommendations, and product organization. **Additional Resources:** Refer to the [About catalogs and products](https://docs.cloud.google.com/retail/docs/catalog?utm_source=chatgpt.com&hl=es-419) documentation to learn more. 3. In the **Select** **Branch** drop-down, select the branch to create a new product. A **Branch** is a specific version of the catalog used for different purposes. For example, testing on staging, development or production environments. Products created in the catalog can be added, modified, or tested within specific branches before they are published live. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaf30f7b0d03698ab/678e0d21d46d452bdacdadb8/Select_Fields.png) 4. Enter the **Product Name/ID** for the product you want to create. In the **Product** **Data** field, define attributes such as, title, categories, and other details. You can also fetch a predefined schema template to structure your entry data. You can either manually enter the **Product Name/ID** or retrieve it from the previous step. **Note:** Ensure that the title and categories keys are included in your JSON. 5. Optionally, enable the **Show Optional Fields** toggle to view the optional field. Mark the checkbox to create a new product if it does not already exist. ![Select\_Other\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd4e7e7a6ead321d5/678e0d21cc4fb9c311ceb6ce/Select_Other_Fields.png) 3. Click the **Proceed** button. 4. Click the **Test Action** button to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2abef2ba43c2909f/66a8a38ba4a6570d2c1de229/Test_Action.png) 5. Once set, click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltabd215581d2d2c41/678e11bf5b4b8a845b68c0f6/Save_Exit.png) ### Delete a Product This action lets you delete an existing product in the Google Vertex AI Search for the commerce catalog. 1. Under **Choose an Action** tab, select the **Delete a Product** action. 2. On the **Delete a Product Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Google Vertex service account as shown in the [Prerequisites](#prerequisites) step. 2. In the **Select** **Catalog** drop-down, select a catalog to delete an existing product. **Additional Resources:** Refer to the [About catalogs and products](https://docs.cloud.google.com/retail/docs/catalog?utm_source=chatgpt.com&hl=es-419) documentation to learn more. 3. In the **Select Branch** drop-down, select the branch to delete an existing product. 4. Enter the **Product Name/ID** for the product you want to delete. You can either manually enter the **Product Name/ID** or retrieve it from the previous step. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfe951682f10e616f/678e0d337a4b630cc8fad2e3/Select_Fields.png) 3. Click the **Proceed** button. 4. Click the **Test Action** button to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2abef2ba43c2909f/66a8a38ba4a6570d2c1de229/Test_Action.png) 5. Once set, click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt818bf9a11ef5b4f3/678e13fe5a5c630b50c0e610/Save_Exit.png) This completes the **Google Vertex** connector’s setup. --- ## URL: https://www.contentstack.com/docs/agent-os/heroku --- title: "Heroku" description: "Heroku" url: "https://www.contentstack.com/docs/agent-os/heroku" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-13" filename: heroku.md --- # Heroku The Heroku Action connector will trigger a build of your Heroku app. ## Set up the Heroku Connector Perform the following steps to set up the Heroku action connector: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Heroku** connector. ![Heroku.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfcefc402864f80a8/6527f8c86f293946ac191330/Heroku.png) 4. Under **Choose an Action** tab, select the **Trigger a Build** action. ![Select\_An\_Action.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/blt403d654434c0a7c0/639d6d9272cb3955c5f0deed/Select_An_Action.png?locale=en-us) 5. Click the **\+ Add New Account** button to select your Heroku account. 6. Now, add a suitable **Title** and the **API Key** of your Heroku app to connect your Heroku account with Contentstack. ![Authorize.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/blt972c4577c928de02/639d6d95489faa12a1b2a236/Authorize.png?locale=en-us) To get your Heroku app's API Key, log in to the Heroku dashboard, and perform the following steps: 1. Click **Account Settings** under the user profile. 2. Click the **Account** tab, and you will find your API Key. ![Heroku\_Dashboard.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/blt3610ba592f1f715d/639d6d9fb45dfc12cdadbfa7/Heroku_Dashboard.png?locale=en-us) **Additional Resource:** For more information, refer to the [How to generate an API Key](https://help.heroku.com/PBGP6IDE/how-should-i-generate-an-api-key-that-allows-me-to-use-the-heroku-platform-api/) document. 7. Once done, click **Authorize**. 8. Under the **Source-blob url** section, add the url where the source code of your build is present. **Note:** If you are using a public GitHub repo for your source code then the url will be in the following format: https://api.github.com/repos///tarball// **Example:** https://api.github.com/repos/username/samplename/tarball/master/ **For a private GitHub repo use the following format:** https://:@api.github.com/repos///tarball// **Example:** https://username:sampletoken@api.github.com/repos/username/samplename/tarball/master/ 9. Under the **App name/ id section**, select the app that you have created in Heroku. 10. You can mention a **Version** for your build. This is an optional step which will help you keep track of the latest version for your build. 11. Finally, click on the toggle button if you want to **Hide optional fields** and then click **Proceed**. ![Click\_On\_Proceed.jpg](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/blt167a77860a593db3/639d682f097e0f59cca5e078/Click_On_Proceed.jpg?locale=en-us) 12. Click **Test Action** to test if a build is created in Heroku. In the output section, you can view the status of your build. 13. Once set, click **Save and Exit**. ![Save\_And\_Exit.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/bltf5be9bf032633879/639d6d917a935f12e7788f5c/Save_And_Exit.png?locale=en-us) The action will deploy a build in your Heroku project. You can check the build and open the respective app you deployed using the Heroku connector.![Final\_Output](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt6550c8b1a59d1554/6346f79738b64110d92e9e7f/Final-Output.png) This sets up the **Heroku** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/how-conditional-paths-work --- title: "[Automations guides and connectors] - How Conditional Paths Work" description: How Conditional Paths Work in Automation Hub guides and connectors. url: https://www.contentstack.com/docs/developers/automation-hub-guides/how-conditional-paths-work product: Agent OS doc_type: guide audience: - developers - automation-builders version: v1 last_updated: 2026-03-25 filename: how-conditional-paths-work.md --- # [Automations guides and connectors] - How Conditional Paths Work This page explains how Conditional Paths work in automations, including how to configure triggers, action steps, and the If/Else branches. It is intended for developers and automation builders who need to route automation flows based on conditions that evaluate to true or false. ## How Conditional Paths Work? Conditional Path is a part of setting up the automations by providing logical expressions that resolve to either true or false. Based on this, different actions can be executed for different paths. It adds flexibility and adaptability in automation. Here are the steps to configure Conditional Path in your automation. - Configure Trigger - Configure Action Step Select Conditional Path If - Add Step - Else - Add Step ## Configure Trigger Triggers are invocation events that happen whenever an event is triggered. Agent OS provides different triggers to invoke an event based on certain conditions. For example, Contentstack Trigger provides different events to configure the trigger connector, such as executing an action when an entry is created in Contentstack. **Note:** If the trigger conditions do not satisfy the conditions, then the automation will not be executed. To go ahead in the conditional path block, the configuration in the Trigger Conditions (if provided) must match. ## Configure Action Step Configure Action Step executes when the trigger event is fired. For example, when an entry is created/updated/deleted in Contentstack, a slack message is sent to the channel to notify the team members of the ongoing updates. Contentstack provides a variety of connectors or third-party applications that can be used based on the requirements. This allows you to connect your Contentstack application to a third-party application by simply authenticating your account. **Note: **Pause and Response action connectors cannot be used inside Conditional Path. In the Conditional Path configuration, provide the conditions you want to set up in the input box. Suppose you want to execute the If block only when an entry is created in a specific content type. You can provide the content type UID and match it with the content type. ## 2-1 If (Configure Action Step) In the Configure Action Step section, provide the action you want to perform if the conditions provided in the Conditional Path configuration resolves to true, then the If block will get executed. You can check the success message for the execution of the automation in the Execution Log section. Similarly, you can add multiple steps in the If statement for execution. See the screenshot below. ## 2-2 Else (Configure Action) The basic formula of the Conditional Path is to execute a specific action. Check for the configuration; if the conditions match, execute IF; otherwise, execute ELSE block. So, if the condition resolves to false, then execute the Else block. You can set up any action connector in the Else block. Once the Else block is executed, you can check the success message for the execution in the Execution Log section. In detail , you can see the name of the steps that are executed and number of steps configured (2-3 and 3-2) **Note: **The naming for steps 2-1, 2-3, 4-3 depends on the number of actions configured in the conditional path. ## Common questions ### What does a Conditional Path evaluate to? A Conditional Path uses logical expressions that resolve to either true or false. ### Can I use any connector inside a Conditional Path? No. **Pause and Response action connectors cannot be used inside Conditional Path.** ### What happens if the trigger conditions do not match? If the trigger conditions do not satisfy the conditions, then the automation will not be executed. ### Where can I verify whether the If/Else steps executed successfully? You can check the success message for the execution of the automation in the Execution Log section. --- ## URL: https://www.contentstack.com/docs/agent-os/how-repeat-paths-work --- title: "How Repeat Paths Work?" description: "Discover how Repeat Path in Agent OS helps you loop through data to automate repetitive tasks and streamline bulk operations efficiently." url: "https://www.contentstack.com/docs/agent-os/how-repeat-paths-work" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: how-repeat-paths-work.md --- # How Repeat Paths Work? Repeat Path is used in automations to perform actions on bulk data. It allows you to repeat steps based on a data source or a specified count, adding efficiency, consistency, and scalability. Here are the steps to configure a Repeat Path in your automation. 1. Configure Trigger 2. Configure Action Step * Select Repeat Path * Data source * Number of times 1. ## Configure Trigger Triggers are invocation events that happen whenever an event is triggered. Agent OS provides different triggers to invoke an event based on certain conditions. ![Configure\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbe2b30e26284f928/699bfe01da5d88000881ef57/Configure_Trigger.png) For example, HTTP Trigger provides a webhook URL to perform HTTP requests. So, when a user makes an HTTP request to the configured webhook URL, the associated action is performed. You can send bulk data to the HTTP webhook URL. ![HTTP\_trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9e51ccbcb28e65de/699bfe0068c24300082b2b20/HTTP_trigger.png) 2. ## Configure Action Step (Repeat Path) Configure Action Step executes when the trigger event is fired. For example, when an entry is created/updated/deleted in Contentstack, a Slack message is sent to the channel to notify the team members of the ongoing updates. ![Configure\_action\_step.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7f548e7d2224dec8/699bfe0036d8d5000862d6f5/Configure_action_step.png) Contentstack provides a variety of connectors or third-party applications that can be used based on your requirements. This allows you to connect your Contentstack application to a third-party application by simply authenticating your account. ![Action\_Steps.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte555738275bdb0d4/699bfe008b33e4000870c6fb/Action_Steps.png) Select the Repeat Type for your action step in the Repeat Path configuration. If you want to create multiple entries from an array of data in Contentstack, select the Data source or the Number of times as a count to iterate the loop. 1. **Data source:** In the Data source field, select the source in which you are sending bulk data so that the Repeat Path can iterate the action step inside it, till the length of the array. Suppose you are fetching your data in the HTTP trigger; you can select output from the previous automation step in this field. ![Data\_source.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt894b69acee54f45d/699bfe018923a00008498af5/Data_source.png) 2. **Number of times:** In the Number of times field, you must enter the count/number to iterate the Repeat Path. ![Number\_repeat.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt66a703b5bdb9a53f/699bfe01676f8800085c0a66/Number_repeat.png) **Note:** In the Number of times field, you can also select the output from a previous automation step. ### Some points to remember: 1. The default limit for executing Repeat Path is 100. Although, it can be increased by customizing your plan key. Please contact the [support team](mailto:support@contentstack.com) to customize your plan. 2. Based on the plan limit, if the repeat count exceeds, the automation fails. You can view the details in the [Execution Log](/docs/agent-os/view-execution-log-of-agent-os/) section. 3. ## 2-1 Configure Action Step In the Repeat Path Step section, provide the action which will iterate based on the Repeat Path configuration. ![Add\_Step\_Repeat\_Path.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt73726d4b853eab74/699bfe007603c100089f21a8/Add_Step_Repeat_Path.png) You can see the status of the Repeat Path in the [Execution Log](/docs/agent-os/view-execution-log-of-agent-os/) section. Similarly, you can add multiple steps in the Repeat Path as seen in the screenshot below: ![Add\_multiple\_Steps.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt11aefd1690c6fd66/699bfe0063bcae0008910a13/Add_multiple_Steps.png) **Note:** Currently, when previewing a JSON payload object within Automate, only the first **3** nodes of an array (such as those used in loops) are displayed in the _Design_ mode. This limitation is intended to optimize performance and ensure efficient data rendering in the browser. --- ## URL: https://www.contentstack.com/docs/agent-os/how-to-grant-polaris-access-to-users-in-contentstack --- title: "How to Grant Polaris Access to Users in Contentstack" description: "Learn how to enable Polaris for your users in Contentstack by creating a Custom Role with Polaris Read access and assigning it to the right users." url: "https://www.contentstack.com/docs/agent-os/how-to-grant-polaris-access-to-users-in-contentstack" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-16" filename: how-to-grant-polaris-access-to-users-in-contentstack.md --- # How to Grant Polaris Access to Users in Contentstack **Note:** For access, talk to our [Support](mailto:support@contentstack.com) team. [Polaris](https://www.contentstack.com/docs/agent-os/what-is-polaris) is Contentstack's in-app conversational assistant that provides intelligent, context-aware help across the CMS. It allows users to interact with the platform through natural language, asking questions, generating content, or running tasks. **Note:** Only users with the **Admin** or **Owner** role have access to **Polaris**. Users with a **Member** role do not see the Polaris icon in the top navigation unless an admin explicitly grants them access through a [Custom Role](https://www.contentstack.com/docs/administration/about-product-roles#custom-product-roles). This guide walks Organization [Owners](https://www.contentstack.com/docs/administration/about-administration-roles#organization-owner) and [Admins](https://www.contentstack.com/docs/administration/about-administration-roles#organization-admin) through the complete setup, from enabling Polaris at the organization level to assigning the correct role to your users. ## Step 1: Enable Polaris at the Organization Level Before assigning Polaris access to any user, an administrator must first enable Polaris at the organization level. To do so, follow these steps: 1. Log in to your [Contentstack account](https://www.contentstack.com/login/). 2. After logging in, click the **App Switcher** icon, then select **Administration** from the list.![Administration\_Icon.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am46492f4f8016e569/8cdefab39d8e9e09a4261abf/Administration_Icon.png?locale=en-us) 3. In the top navigation panel, click **AI Settings**. 4. In the **Global AI Settings**, locate the **Polaris** toggle and turn it **on**.![Enable\_Polaris\_In\_AI\_Settings.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am38f7d65f755dedcc/9a682e904cea6150ac664577/Enable_Polaris_In_AI_Settings.png?locale=en-us) 5. Click **Save**. **Note:** If you do not see the **AI Settings** option or the **Polaris** toggle, contact [Contentstack Support](mailto:support@contentstack.com) to confirm Polaris is available on your plan. ## Step 2: Navigate to Roles Navigate to the Roles section in Administration. 1. In the top navigation panel, click **Roles**. ![Select\_Roles.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am6c0e43cbe31ffbc3/b003cf979f26410059c765c2/Select_Roles.png?locale=en-us) A list of existing roles appears in your organization, typically **Owner**, **Admin**, and **Member** by default. ## Step 3: Create a Custom Role with Polaris Access The default Member role does not include Polaris permissions. You need to create a Custom Role that explicitly grants Polaris Read access. 1. On the **Roles** page, click **\+ New Role**.![New\_Role.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am10d0e7c49f3e8623/a7960ef3ce7d5a3ae1d46c8e/New_Role.png?locale=en-us) 2. Enter a **Name** for the role. For example, **Polaris Viewer**. 3. Enter a **Description** for the role. For example, _"Custom role that grants Read access to Polaris for team members."_![Create\_Role\_Popup.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am2e7747c7564852f9/7d6b055411ff9bf93e5449d4/Create_Role_Popup.png?locale=en-us) 4. Under **Select a Product**, click **Administration**. 5. Scroll down and locate **Polaris**. Click **\+ Select Permissions**. ![Polaris\_Select\_Permission.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amf07f1c25d668a646/1add9ad58e191b2e092e44fd/Polaris_Select_Permission.png?locale=en-us) 6. Enable **Read** access, then click **Save**. 7. Click **Create Role**. **Note:** You **only** need to create this Custom Role **once**. The same role can be assigned to multiple users, you do not need a separate role per user. ## Step 4: Assign the Custom Role to a User Once the Custom Role is created, assign it to the users who need Polaris access. **For New Users:** 1. In the top navigation, click **Users**.![Users\_Tab.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/ama5821dd0e56b9bfb/d5975c7905f6c795f69df9f6/Users_Tab.png?locale=en-us) 2. Click **\+ Invite User**.![Invite\_User.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/ama3d2938157d99a8e/cd9a6528683d695d4a4d3f51/Invite_User.png?locale=en-us) 3. Enter comma-separated emails of the users you want to grant access to. 4. Under **Assign Product Roles**, click **Administration**. The **Select Roles** side panel opens. 5. Under **Product Roles**, select the custom role you created. For example, **Polaris Viewer**.![User\_Assigned.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am248a29d41cc91597/581837d778a46ca5302ec981/User_Assigned.png?locale=en-us) 6. Click **Save** and then click **Invite**. **For Existing Users:** 1. In the top navigation, click **Users**. 2. Under the **Actions** column, click the vertical ellipses and then click **Edit**.![Edit\_User.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amd5b517e60cb7f1b0/0f11d13f316909569dac0f6d/Edit_User.png?locale=en-us) 3. Under **Manage Product Roles**, you can assign any product roles to the user. In our case, **Polaris Viewer** role.![Existing\_User\_Role.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am40dfe2a5dc63f1ea/568bffeecceef5b00f66189f/Existing_User_Role.png?locale=en-us) 4. Click **Save** and then click **Update**. Repeat this for each user who needs access. There is no limit on how many users can be assigned the same Custom Role. **Tip:** The user does not need to log out and log back in. A simple browser refresh is enough. The Polaris icon appears in the top navigation automatically. If the icon does not appear after a refresh, ask the user to do a hard refresh: **Ctrl+Shift+R** on Windows/Linux or **Cmd+Shift+R** on Mac. ## Troubleshooting User still cannot see the Polaris icon after role assignment: * Confirm the Custom Role has Polaris Read access enabled. Empty permissions are not sufficient. * Confirm the Custom Role is **actually assigned** to the correct user and saved. * Ask the user to do a hard refresh (Ctrl+Shift+R / Cmd+Shift+R). * If the issue persists, ask the user to log out and log back in. * If still unresolved, contact **Contentstack** [Support](mailto:support@contentstack.com). --- ## URL: https://www.contentstack.com/docs/agent-os/http-action --- title: "[Automations guides and connectors] - HTTP" description: HTTP Action connector setup for making an HTTP call when a trigger event occurs. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/http-action product: Automation Hub doc_type: connector-guide audience: - developers - automation-builders version: unknown last_updated: 2026-03-26 filename: http-action.md --- # [Automations guides and connectors] - HTTP This page explains how to configure the HTTP Action connector to make an HTTP call whenever a trigger event occurs. It is intended for developers and automation builders setting up action steps in Automation Hub, and should be used when you need to call an external HTTP endpoint as part of an automation workflow. ## HTTP The HTTP Action lets you make an HTTP call whenever a trigger event occurs. ## Set up the HTTP Action Perform the following steps to set up the HTTP action connector: - Click **Configure Action Step** from the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the **HTTP **connector. - Under **Choose an Action** tab, select the **HTTP Request** action. - On the **HTTP Request Configure Action** page, enter the details given below:Under the **Select Account** drop-down, select one of the accounts connected to your project. The sensitive information, such as access code, secret key, API key, etc., can be fetched from the selected account.**Note: ***Select Account *is an optional field. You can still configure the action without selecting an account. - Enter the **URL **and select any HTTP methods: GET, POST, PUT, DELETE, or PATCH. For this example, we are choosing the **GET **HTTP method. - Optionally, enable the **Show Optional Fields** toggle button to enter the respective names and values for **Headers** and **Query Parameters**. - Provide a **Header Name** and a **Value** fetched from the **Account Data** drop-down. The **Account data** drop-down contains all the sensitive masked data retrieved from the selected account. - Click the **Throw error status** checkbox to throw an error in case the error status codes are between 4**-5**. **Note: **Throw an error will display an error message in the **Trigger output** and the **Execution Log** section. - Click **Proceed**. - Check if the details are correct. If yes, click **Test Action**. - Once set, click **Save and Exit.** Hit the URL to find the header value in the output. This sets the **HTTP** action connector. ## Common questions **How do I choose which HTTP method to use (GET, POST, PUT, DELETE, PATCH)?** Select the method based on the endpoint you are calling and what the API expects; the connector supports GET, POST, PUT, DELETE, or PATCH. **Do I have to select an account in the Select Account drop-down?** No. **Select Account** is an optional field. You can still configure the action without selecting an account. **Where do header values come from when using Account Data?** The **Account data** drop-down contains all the sensitive masked data retrieved from the selected account. **What happens if I enable Throw error status?** Throw an error will display an error message in the **Trigger output** and the **Execution Log** section when the error status codes are between 4**-5**. --- ## URL: https://www.contentstack.com/docs/agent-os/http-trigger --- title: "[Automations guides and connectors] - HTTP Trigger" description: Create a webhook URL to perform HTTP GET/POST requests and trigger associated actions. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/http-trigger product: Automation Hub doc_type: connector-guide audience: - developers - automation-builders version: v1 last_updated: 2026-03-26 filename: http-trigger.md --- # [Automations guides and connectors] - HTTP Trigger This page explains how to configure the HTTP Trigger connector to generate a webhook URL that activates an automation when an HTTP GET/POST request is made. It is intended for developers and automation builders setting up webhook-based triggers and testing them in real time. ## HTTP Trigger The HTTP Trigger connector lets you create a webhook URL to perform hypertext transfer protocol (HTTP) GET/POST requests. So, when a user makes an HTTP GET/POST request to the configured webhook URL, the associated action is performed. ## Set up the HTTP Trigger Perform the following steps to configure the HTTP Trigger Connector: - Click **Configure Trigger** from the left navigation panel. - Within the **Configure Trigger **step, click the **HTTP** connector. - Select **HTTP Request Trigger**. This trigger will be activated whenever you make an HTTP GET/POST request to a specific webhook URL. - Select a **Method**, i.e., **GET/POST**. - Enable the **Secure HTTP Trigger** to add security to the HTTP trigger. The Secret value is automatically assigned once the setting is enabled. You can also set the Secret as per the criteria. Click **Proceed**.**Note:** When Secure HTTP trigger is enabled, you can only execute URLs with the key secret pair. - You will find the applicable input “URL.” This URL will be the webhook URL that you can use to see the automation working. Click **Test Trigger**. **Note:** You can update the configuration of a configured HTTP Trigger with the same URL. You should be able to see the output as follows: **Note**: The output doesn’t appear because we haven’t tested the Trigger URL yet. Next, to try if the trigger is working real-time, perform the following steps: - Copy the Input URL that you see above and paste it on a new browser tab. - Pass the key and secret pair parameter configured previously to the Input URL, for example, `https://trigger_input_URL?ah-http-key=U2>ggyhbsogvlps `and hit enter. You should see an output similar to the following: `{"result": "The rule is currently being tested or not activated","trigger_id":"1111ab1c1ab11111ca11b111111ca1bc"}` - Return to your Test Trigger setup page and click Test Trigger again. In the output, you will see your query parameter as follows: `query: ah-http-key:"U2>ggyhbsogvlps"` Here’s what you see: **Note:** You can also test the trigger in HTTP client by passing the key: secret pair in the Header section. - Lastly, you can either pass a new query parameter and **Retest** the trigger or hit **Save and Continue** (see screenshot in **step 3**). **Note:** After successfully configuring a trigger, if you re-configure any other trigger you will be prompted to revert to the previously configured trigger. You can revert back to the last trigger configurations by clicking the **Revert ****Changes **button. This completes your step of configuring your **HTTP** trigger. ## Common questions ### What HTTP methods does the HTTP Request Trigger support? It supports **GET/POST**. ### What happens when Secure HTTP Trigger is enabled? **Note:** When Secure HTTP trigger is enabled, you can only execute URLs with the key secret pair. ### How do I test the trigger in real time? Copy the Input URL, open it in a new browser tab, and pass the key and secret pair parameter configured previously to the Input URL. ### Can I update the configuration after it’s set? **Note:** You can update the configuration of a configured HTTP Trigger with the same URL. --- ## URL: https://www.contentstack.com/docs/agent-os/jira --- title: "[Automations guides and connectors] - JIRA" description: Set up and use the JIRA action connector to create a task, create an issue, and update an issue in JIRA. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/jira product: Automation Hub doc_type: connector-guide audience: - developers - automation-builders version: v1 last_updated: 2026-03-26 filename: jira.md --- # [Automations guides and connectors] - JIRA This page explains how to set up and use the JIRA action connector in Automation Hub. It is intended for developers and automation builders who need to configure Jira account authorization and run actions to create tasks, create issues, or update issues in JIRA. ## JIRA The JIRA action connector lets you create a task, create an issue, and update an issue in JIRA. ## Set up JIRA Perform the following steps to set up JIRA action connector: - Click **Configure Action Step** from the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the **Jira **connector. - Under **Choose an Action** tab, you will see three actions: **Create a Task** (creating a ticket in Jira), **Create an Issue** (creating an issue in Jira) , and **Update an Issue** (updating an issue in Jira). Let’s look at each of them in detail. Action 1: Select the** Create a Task** action: - Click the **+ Add New Account **button to set up your Jira account (see screenshot in next step). - In the **Authorize modal**, enter a **Title**, an **Email**, an** API Token** and a **Cloud Instance URL**, and then click** Authorize**. To generate the API Token and Cloud Instance URL, log in to the JIRA dashboard and perform the following steps: Log in to JIRA using your authorized email address and go to your **Account Settings**. - In the **Security** section, click **Create and manage API tokens**. - Click **Create API token**. - Provide a **Label** for the token and click **Create**. - **Copy** this token and save it somewhere as you won’t be available to view it once you close the modal. **Note:** For more information on API Tokens, refer to the How to create API Tokens in JIRA document. - Your **Cloud Instance URL** is the custom URL that you provide while creating a project, say `https://domain_name.atlassian.net/`. Additional Resource: Read more on [Create a Project | Customize your project](https://support.atlassian.com/jira-work-management/docs/create-a-project/#Createaproject-Customizeyourprojectstage2). - On the **Create a Task** **Configure Action** page, enter the details given below:Select the **Assignee ID** of the user to whom you want to assign the ticket from the Lookup list. - Select **Project Key** of the project in which you want to create the ticket from the Lookup list. - Provide a suitable **Title **for the task. Click the **Show optional fields** toggle button to provide the **Description** and **Labels.** - Click **Proceed**. - You will see the input values which you have configured in the **Configure Action** modal. - Check if the details are correct. If yes, click **Test Action**. - Once set, click **Save and Exit**. - Navigate to your JIRA Project. You should see that the ticket has been generated and is placed under **Backlog. ** Action 2: Select the** Create an Issue** action: - Click the **+ Add New Account **button to set up your Jira account (see screenshot in next step). - In the **Authorize modal**, enter a **Title**, an **Email**, an** API Token** and a **Cloud Instance URL**, and then click** Authorize**. To generate the API Token and Cloud Instance URL, log in to the JIRA dashboard and perform the following steps: Log in to JIRA using your authorized email address and go to your **Account Settings**. - In the **Security** section, click **Create and manage API tokens**. - Click **Create API token**. - Provide a **Label** for the token and click **Create**. - **Copy** this token and save it somewhere as you won’t be available to view it once you close the modal. **Note:** For more information on API Tokens, refer to the How to create API Tokens in JIRA document. - Your **Cloud Instance URL** is the custom URL that you provide while creating a project, say `https://domain_name.atlassian.net/`. Additional Resource: Read more on [Create a Project | Customize your project](https://support.atlassian.com/jira-work-management/docs/create-a-project/#Createaproject-Customizeyourprojectstage2). - On the **Create an Issue ****Configure Action** page, enter the details given below:Select a **Project Key **of the project in which you want to create an issue from the Lookup list. - Select an **Issue Type** from the Lookup list. **Note: **It is mandatory to select a **Parent Issue** if you choose the issue type as a sub-task. - Select the **Assignee ID** from the Lookup list. - Provide a suitable **Title **for the issue. Click the **Show optional fields** toggle button to provide the **Description** and **Labels.** - Click **Proceed**. - You will see the input values which you have configured in the **Configure Action** modal. - Check if the details are correct. If yes, click **Test Action**. - Once set, click **Save and Exit**. - Navigate to your JIRA Project. You should see that the ticket has been generated and is placed under **Backlog. ** Action 3: Select the** Update an Issue** action: - Click the **+ Add New Account **button to set up your Jira account (see screenshot in next step). - In the **Authorize modal**, enter a **Title**, an **Email**, an** API Token** and a **Cloud Instance URL**, and then click** Authorize**. To generate the API Token and Cloud Instance URL, log in to the JIRA dashboard and perform the following steps: Log in to JIRA using your authorized email address and go to your **Account Settings**. - In the **Security** section, click **Create and manage API tokens**. - Click **Create API token**. - Provide a **Label** for the token and click **Create**. - **Copy** this token and save it somewhere as you won’t be available to view it once you close the modal. **Note:** For more information on API Tokens, refer to the How to create API Tokens in JIRA document. - Your **Cloud Instance URL** is the custom URL that you provide while creating a project, say `https://domain_name.atlassian.net/`. Additional Resource: Read more on [Create a Project | Customize your project](https://support.atlassian.com/jira-work-management/docs/create-a-project/#Createaproject-Customizeyourprojectstage2). - On the **Update an Issue** **Configure Action** page, enter the details given below:Select a **Project Key **of the project in which you want to update an issue from the Lookup list. - Select an **Issue **(of which you want to update the status) from the Lookup list. - Select the **Status** from the Lookup list. - Click **Proceed**. - You will see the input values which you have configured in the **Configure Action** modal. - Check if the details are correct. If yes, click **Test Action**. - Once set, click **Save and Exit**. - Navigate to your JIRA Project. You should see that the ticket has been generated and is placed under **Backlog. ** This sets your **JIRA** action connector. ## Common questions ### Do I need an API Token to use the JIRA action connector? Yes. In the **Authorize modal**, you must enter an **API Token** along with **Title**, **Email**, and **Cloud Instance URL**. ### Where do I find the Cloud Instance URL? Your **Cloud Instance URL** is the custom URL that you provide while creating a project, say `https://domain_name.atlassian.net/`. ### What actions are available in the JIRA connector? Under **Choose an Action** tab, you will see three actions: **Create a Task**, **Create an Issue**, and **Update an Issue**. ### What should I do after testing an action? After you click **Test Action** and confirm the details are correct, click **Save and Exit**. --- ## URL: https://www.contentstack.com/docs/agent-os/launch --- title: Automations guides and connectors - Launch description: Set up the Launch connector in Automate to trigger deployments and revalidate CDN cache for Contentstack Launch projects. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/launch product: Contentstack doc_type: connector-guide audience: - developers - admins version: unknown last_updated: 2026-03-25 filename: launch.md --- # Automations guides and connectors - Launch This page explains how to use the Launch connector in Contentstack Automate to trigger deployments and revalidate CDN cache for Contentstack Launch projects. It is intended for developers or admins configuring Automate action steps, and should be used when you want to deploy builds or refresh cached content without rebuilding and redeploying your entire site. ## Launch Launch is a deployment platform that enables you to host your Contentstack-powered website instantly. To get started, create a new project in Launch and link it with your GitHub repository. The Launch connector in Automate lets you trigger deployments of projects created in the Contentstack Launch platform. With the **Revalidate CDN Cache** action, you can revalidate the CDN cache of your Launch environment by providing a revalidation path. Using the Revalidate CDN Cache Action will allow you to refresh the cache of specific site URLs and show new content where previously cached content was published. This is especially useful where you do not want to rebuild and redeploy your entire website to make minor content changes. Follow these steps to set up your Launch Connector, set up a Deployment Action, and set up automatic cache revalidation. ## Prerequisites - Contentstack [account](https://www.contentstack.com/login) - Access to organization that has Automate enabled To use the Launch connector, you must first add your Launch account. To do so, follow the steps given below: ### Connect your Launch Account to Automate - Click **Configure Action Step **in the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the **Launch** connector. - Under the **Choose an Action t**ab, select any one action from the list. Here, we are selecting the **Deploy a Build** action. - On the **Configure Action **page, click the **+ Add New Account** to add your Launch account. - In the pop-up window, mark the checkboxes for all the OAuth permissions and then click the **Authorize** button. - In the pop-up that appears, select your organization to complete the authorization. - Enter an **Account Name** and then click **Save**. Once done, you can go ahead and set up your Launch connector. ## Set up the Launch Connector Perform the following steps to set up the Launch action connector: - Click **Configure Action Step** from the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the **Launch** connector.**Note:** You can sort and search the connector(s) based on the filter. - Under the **Choose an Action **tab, you will see these actions: **Deploy a Build **and **Revalidate CDN Cache**. Let’s look at each of them in detail. ### Deploy a Build This action triggers a deployment in Contentstack Launch when specific events occur (e.g., publish/unpublish of content). - Under **Choose an Action **tab, select the **Deploy a Build** action. - On the **Deploy a Build Configure Action** page, enter the details given below: Click **+ Add New Account** to connect your Launch account as shown in the [Connect your Launch Account to Automate](#connect-your-launch-account-to-automate) step. - Select a **Project** created in the Launch platform from the **Lookup** list. - Select an **Environment** where you want to deploy your build from the **Lookup** list. - Click **Proceed**. - Click **Test Action **to test the configured action.**Note:** If a deployment is ongoing and you trigger a new one in the same instance, then the previous deployment will show as “Failed” in Launch. - Once set, click **Save and Exit**. - Navigate to the Launch platform to view the deployment status of your project in the Deployments tab. ### Revalidate CDN Cache - Under **Choose an Action** tab, select the **Revalidate CDN Cache **action. - On the **Revalidate CDN Cache Configure Action **page, enter the details given below: Click** + Add New Account **to connect your Launch account as shown in the [Connect your Launch Account to Automate](#connect-your-launch-account-to-automate) step. - Select a **Project** created in the Launch platform from the **Lookup** list. - Select an **Environment **where you want to revalidate the cache from the **Lookup **list. - Select the Revalidate Type, i.e., **Path**, **Cache Tags**, or **Hostnames** from the dropdown.If **Path** is selected: In the **Revalidation Path** field, enter the URL to revalidate the CDN cache. - You can optionally mark the **Is Prefix - Include all the nested URLs under the revalidation path** checkbox to revalidate all the nested URLs under the revalidation path. If **Cache** **Tags** is selected: - In the **Cache Tags** field, enter the cache tags you want the system to invalidate when the action runs.The **Cache Tags **option is used to invalidate or purge specific cached content from the CDN based on assigned tags, rather than clearing the entire cache. When an entry or asset is published or unpublished, the action targets only the cache entries associated with its tags (e.g., entry ID, content type, or custom labels). This ensures that only the affected content is refreshed, while other cached content remains intact and continues to be served quickly. If **Hostnames** is selected: - In the **Hostnames** field, enter the domain or subdomain that you want to target when the action runs.The **Hostnames** option purges cached content only for the specified **domains** or **subdomains**, rather than all domains in the environment. This ensures that cache invalidation is limited to the selected hostnames (for example, www.example.com, staging.example.com), giving you precise control over which audiences see refreshed content without affecting other mapped domains. - Click **Proceed**. - Click **Test Action **to test the configured action. - Once set, click **Save and Exit**. - Navigate to your website and reload the page to see the updated content. This sets the **Launch** action connector. ## Common questions ### Do I need a Launch account before using the Launch connector in Automate? Yes. To use the Launch connector, you must first add your Launch account by using **+ Add New Account** and completing the OAuth authorization steps. ### What actions are available in the Launch connector? Under the **Choose an Action** tab, you will see these actions: **Deploy a Build** and **Revalidate CDN Cache**. ### When should I use Revalidate CDN Cache instead of deploying a build? Use **Revalidate CDN Cache** when you want to refresh cached content for specific URLs (or by cache tags/hostnames) without rebuilding and redeploying your entire website. ### Where can I verify whether a deployment ran successfully? Navigate to the Launch platform to view the deployment status of your project in the Deployments tab. --- ## URL: https://www.contentstack.com/docs/agent-os/launch-trigger --- title: "Launch Trigger" description: "Launch Trigger" url: "https://www.contentstack.com/docs/agent-os/launch-trigger" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: launch-trigger.md --- # Launch Trigger The Launch trigger lets you add Deployment and Environment based trigger events, such as create/update/delete/start/fail/complete, etc., for your [Contentstack Launch](/docs/launch) projects. With the Launch trigger, you can create trigger events when a deployment has started/failed/completed. Similarly, you can create trigger events when an environment is created/updated/deleted in the Contentstack Launch. ## Set up Launch You will find the following trigger events for the Launch connector: * [**Deployment Trigger**](#deployment-trigger)**:** Triggered whenever a deployment is started/completed/failed in the Contentstack Launch. * [**Environment Trigger**](#environment-trigger)**:** Triggered whenever an environment is created/deleted/updated in the Contentstack Launch. Let’s look at each of them in detail. ### Deployment Trigger The Deployment trigger event lets you trigger an automation whenever a deployment is modified. Let’s look at the steps to set up the trigger event. 1. Click **Configure Trigger** from the left navigation panel. 2. Within the **Configure Trigger** step, click the **Launch** connector. ![Select\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt832e09bd54a49834/667142a96e8ad04f3d1bbe64/Select_Trigger.png) 3. Under the **Choose Trigger** tab, select **Deployment** Trigger. ![Select\_Deployment\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt111c99a01a9b1020/667142987b258d189ec8a7b5/Select_Deployment_Trigger.png) 4. In the **Configure Trigger** tab, click **+ Add New Account** to add your Launch account. ![Add\_Account\_Deployment.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt292478e6254dacc6/667142984969e4ba1885b414/Add_Account_Deployment.png) 5. In the pop-up window, mark the checkbox for all the OAuth permissions and then click the **Authorize** button. ![Authorize](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltefd741e3039e446e/64252a3bba298210fbb60042/Authorize.png) 6. In the pop-up that appears, select your organization to complete the authorization. ![Organization-Access](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt38b4d047eb7c7b15/64252a3c961eef10e9c7bf71/Organization-Access.png) 7. Enter an **Account Name** and then click the **Save** button. ![Save-Account](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta901d2e426ce6a6f/64252a3b2cf9c710750b3c05/Save-Account.png) 8. Select the trigger event from the dropdown, i.e, **All**. For Deployment, you will find the following sub-events: * **Deployment Started:** Triggers when a new deployment is initiated. * **Deployment Failed:** Triggers when a deployment fails. * **Deployment Completed:** Triggers when a deployment is completed. * **All:** Triggers when any of the above events is performed on a deployment. 9. Select a Launch **Project** from the **Lookup** dropdown. ![Select\_Fields\_Deployment.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt94e2d8634dc98a53/667142991774d27261a16ac5/Select_Fields_Deployment.png) 10. Click **Proceed**. 11. Click **Test Trigger** to execute and test the trigger that you configured. ![Test\_Trigger\_Deployment.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt51a36249c0908c22/667142a97b258d6ea0c8a7b9/Test_Trigger_Deployment.png) 12. If successful, you will see an output as follows. If it looks appropriate, click **Save and Exit**. ![Save\_Exit\_Deployment.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3afb53a3a9a14d8b/667142982424700722ac8eec/Save_Exit_Deployment.png) **Note:** In the Contentstack Launch, you can either [import your project](/docs/launch/import-project-using-github/) from a GitHub repository or [upload a zip file from your system](/docs/launch/import-project-using-file-upload/). This sets your **Deployment** trigger. ### Environment Trigger The Environment trigger event lets you trigger an automation whenever an environment is modified. Let’s look at the steps to set up the trigger event. 1. Click **Configure Trigger** from the left navigation panel. 2. Within the **Configure Trigger** step, click the **Launch** trigger. ![Select\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt832e09bd54a49834/667142a96e8ad04f3d1bbe64/Select_Trigger.png) 3. Under the **Choose Trigger** tab, select **Environment** Trigger. ![Select\_Environment\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4d0ec4f4d2d03cac/66714298d3f1302c4c3dbabd/Select_Environment_Trigger.png) 4. In the **Configure Trigger** tab, click **\+ Add New Account** to add your Launch account. ![Add\_Account\_Environment.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8bce217f378c4509/667142987b258df33fc8a7b1/Add_Account_Environment.png) 5. In the pop-up window, mark the checkbox for all the OAuth permissions and then click the **Authorize** button. ![Authorize](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltefd741e3039e446e/64252a3bba298210fbb60042/Authorize.png) 6. In the pop-up that appears, select your organization to complete the authorization. ![Organization-Access](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt38b4d047eb7c7b15/64252a3c961eef10e9c7bf71/Organization-Access.png) 7. Enter an **Account Name** and then click the **Save** button. ![Save-Account](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta901d2e426ce6a6f/64252a3b2cf9c710750b3c05/Save-Account.png) 8. Select the trigger event from the dropdown, i.e, **All**. For Environment, you will find the following sub-events: * **Environment Created:** Triggers when a new environment is created. * **Environment Deleted:** Triggers when an environment is deleted. * **Environment Updated:** Triggers when an environment is updated. * **All:** Triggers when any of the above events is performed on an environment. 9. Select a Launch **Project** from the **Lookup** dropdown. ![Select\_Fields\_Environment.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8f1a4e749c09a0dc/6671429946a037c935a29524/Select_Fields_Environment.png) 10. Click **Proceed**. 11. Click **Test Trigger** to execute and test the trigger that you configured. ![Test\_Trigger\_Deployment.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt51a36249c0908c22/667142a97b258d6ea0c8a7b9/Test_Trigger_Deployment.png) **Note:** While creating a new [environment](/docs/launch/environments/) for a Launch project, you must [upload a zip file of your project](/docs/launch/import-project-using-file-upload/). For projects deployed on GitHub, you must select a branch to fetch the project and create a new environment. 12. If successful, you will see an output as follows. If it looks appropriate, click **Save and Exit**. ![Save\_Exit\_Environment.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7228778dc451beef/6671429876906d78ff9ee66d/Save_Exit_Environment.png) **Note:** After successfully configuring a trigger, if you re-configure any other trigger you will be prompted to revert to the previously configured trigger. You can revert back to the last trigger configurations by clicking the **Revert** **Changes** button. This sets your Environment trigger. --- ## URL: https://www.contentstack.com/docs/agent-os/mailgun --- title: Automations guides and connectors - Mailgun description: Set up the Mailgun action connector to send emails using your own Mailgun account. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/mailgun product: Automation Hub doc_type: connector-guide audience: - developers - automation-builders version: v1 last_updated: 2026-03-26 filename: mailgun.md --- # Automations guides and connectors - Mailgun This page explains how to configure the Mailgun action connector in Automation Hub to send emails through your own Mailgun account. It is intended for developers and automation builders who need to connect Mailgun as a third-party service in an action step. ## Mailgun The **Mailgun** action connector lets you send emails using your own Mailgun account. ## Set Up Mailgun Perform the following steps to set up the Mailgun action connector: - Click **Configure Action Step **from the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the **Mailgun** connector. - Under **Choose an Action** tab, select the **Send Email** action. - Click the **+ Add New Account** button to connect to your Mailgun account. - In the **Authorize** modal, enter your Account API Key and click **Authorize**. To get your Mailgun account **API Key**, open Mailgun, log in and click your user profile, and click **API Keys**. Under the **API security** tab, you will see the following details. We will use the **Private API Key**: **Additional Resource:** Text For more information, refer to the [Mailgun - Where Can I Find My API Key and SMTP Credentials?](https://help.mailgun.com/hc/en-us/articles/203380100-Where-can-I-find-my-API-key-and-SMTP-credentials-) document. - Enter the **Domain** (registered domain in Mailgun account), **From** (sender email ID), **To** (receiver email ID; you can add multiple email IDs separated by a comma), **Subject** (subject of the email), and **Message** (message body to be sent in the email). Once done, click **Proceed**. - Click **Test Action** to send the email using the Mailgun account. Check the output. - Once set, click **Save and Exit**. You can check the email in the receiver’s email account sent by your Mailgun email address. This sets up the **Mailgun action** connector. ## Common questions **Q: Which Mailgun API key should I use when authorizing the connector?** A: Use the **Private API Key** under the **API security** tab. **Q: Can I send to multiple recipients?** A: Yes, in **To** you can add multiple email IDs separated by a comma. **Q: How do I verify the connector is working?** A: Click **Test Action** to send the email using the Mailgun account and check the output. **Q: Where do I find Mailgun API key details?** A: In Mailgun, log in, click your user profile, click **API Keys**, and look under the **API security** tab. --- ## URL: https://www.contentstack.com/docs/agent-os/managing-automations --- title: "Managing Automations" description: "Learn how to create, edit, and delete automations and steps within Contentstack’s Agent OS." url: "https://www.contentstack.com/docs/agent-os/managing-automations" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: managing-automations.md --- # Managing Automations ## Create an Automation Automations helps you efficiently manage workflows by setting up step-by-step executions triggered by specific conditions. With Automations, you can easily create, edit, and delete automation sequences directly within the Agent OS interface. This guide walks you through managing automations to streamline your tasks. To create an automation, perform the following steps: 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list.![App\_Switcher\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1fdcbdc45f5b75e7/699bc0d1ead2f50008c963a1/App_Switcher_Icon.png) 3. Click **\+ New Project** or create a new one. 4. In the top navigation panel, click **Automations**. ![Automations\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt820ca908806084ce/699bc07fa6967e0008df4d58/Automations_Icon.png) 5. Click **\+ New Automation**. From the dropdown, select **Create New**. ![Create\_New\_Automation\_button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt094d50c316ed4d3d/699bc08045700700085f5a77/Create_New_Automation_button.png) 6. In the **Create New Automation** modal, provide an **Automation Name** and an optional **Description**. Click **Create**. ![Create\_Automation.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4988549bcba86d73/699bc07f624a07000845fd57/Create_Automation.png) **Additional Resource:** Refer to the [Get Started with Automations](< /docs/agent-os/get-started-with-automations>) documentation to learn the automation configuration. ## Edit Automation Details You can edit the primary details of an automation, i.e., its **Name** and **Description**. To do so, perform the steps given below: 1. Navigate to the Automations listing page, click the vertical ellipses, then click **Edit**. ![Edit\_Automation.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0ebd0b7a76f144f2/699bc080370b580008b41ced/Edit_Automation.png) 2. In the **Edit Automation** modal, provide the new **Name** and **Description** of the automation. Once you have updated the details, click **Update**. ![Update\_Automation.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaf428d9c5aadfbff/699bc0805a4f77000823282d/Update_Automation.png) ## Delete an Automation To delete an automation, perform the steps given below: 1. Navigate to the Automations listing page, click the vertical ellipses, then click **Delete**. ![Delete\_Automation.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt10a5796798765d31/699bc0803f35720008e049a2/Delete_Automation.png) 2. In the **Delete Automation** modal, verify and click **Delete** again to delete the automation permanently. ![Delete\_Automation\_Modal.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf3c12eaec9124cdb/699bc07f2b6dd50008a89f03/Delete_Automation_Modal.png) ## Delete a Step To delete a step, perform the steps given below: 1. Click the **Configure Action Step** tab (in our case, Transform). ![Delete\_Transform\_Step.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7c3bfe899ea893fb/699bc0867603c100089f20e7/Delete_Transform_Step.png) 2. Click the vertical ellipses, then click the **Delete Step** icon. ![Delete\_Step.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt60a628b9ccdbf717/699bc0808b33e4000870c689/Delete_Step.png) 3. Confirm your action by clicking the **Delete** button.![Delete\_Step\_Modal.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbd4ab4fbbe7b4a2d/699bc085da5d88000881eea7/Delete_Step_Modal.png) 4. You can also delete the step from the configured action as shown below:![Delete\_Step\_from\_Configuration\_Step.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltccb94a3533ce7962/699bc08531a5c5000890e902/Delete_Step_from_Configuration_Step.png) ## Rename a Step To rename a step, perform the steps given below: 1. Click the action tab (in our case, **Transform**).![Edit\_Automation.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0ebd0b7a76f144f2/699bc080370b580008b41ced/Edit_Automation.png) 2. Click the edit icon visible on the action header to rename the step.![Edit\_Step\_Name\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt88bcb452c7b6e41c/699bc086db043d0008254232/Edit_Step_Name_Icon.png) 3. The **Transform** field becomes editable. You can update the name of the action as required and click the “✔” check mark.![Tick\_step.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfe783f4aa3163d06/699bc086676f8800085c09d5/Tick_step.png) --- ## URL: https://www.contentstack.com/docs/agent-os/managing-projects --- title: [Automations guides and connectors] - Managing Projects description: Create, edit, favorite, and delete projects in Agent OS to streamline your automation and agent management. url: https://www.contentstack.com/docs/agent-os/managing-projects product: Automations doc_type: documentation audience: - developers version: v1 last_updated: 2026-02-20 filename: managing-projects.md --- # [Automations guides and connectors] - Managing Projects This page explains [Automations guides and connectors] - Managing Projects for Automations. It is intended for developers who need to understand or implement this topic. Use it when you are setting up, configuring, or troubleshooting this feature. ## Managing Projects In Agent OS, **Projects** help you manage and organize automations and agents efficiently. Learn how to create, edit, delete, and favorite projects to optimize workflow and team productivity within Agent OS. ### Create a Project To create a project, perform the steps given below: 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list.![App_switcher_icon](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6290d7afc992eda9/6998761148bd410008f0963f/App_switcher_icon.png) 3. Click **+ New Project**.![New_Project_Button](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt83eea2f9db677727/699873ab5a4f77000823236c/New_Project_Button.png) 4. In the **New project** modal, enter the **Project Name** (for example, Slack-automation), an optional **Description**, add **Tags**, and click **Create**.![Create_Project](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt87d0a64434602114/699873abc9b89800084dd6a5/Create_Project.png) 5. After successfully creating the project, you can start building different automations and agents.![Explore_agents_automations](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8290993a60317e8b/69988edd3f35720008e045e1/Explore_agents_automations.png) **Note:** The maximum number of projects allowed per organization is **50**. ### Edit a Project You can edit the primary details of a Project, that is, its **Project Name** and **Description**, from the Agent OS settings page. To edit a project, perform the steps given below: 1. Navigate inside a project and from the top navigation panel, click **Settings**. ![Edit_project_in_settings](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltba53662eadadcbcd/699873ab8b33e4000870c1b8/Edit_project_in_settings.png) 2. Enter the **Project Name** and **Description** that you want to edit and then click the **Save Changes** button.![Save_Project](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt799c17a7f0157305/699873ab3f35720008e044e7/Save_Project.png) **Note:** An organization owner and admin can **edit and view all projects** within Agent OS, while organization members can only **view and edit their projects**. ### Delete a Project You can delete a project, its agents, automations, connected apps, and logs from Agent OS. **Note:** Only organization owner, admin, and the project owner can delete a project. To delete a project, perform the steps given below: 1. Navigate inside a project. From the top navigation panel, click **Settings**.![Edit_project_in_settings](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltba53662eadadcbcd/699873ab8b33e4000870c1b8/Edit_project_in_settings.png) 2. Click **General**. Under the **Advanced Settings** section, click the **Delete Project** button to delete the project. **Note:** The Delete button is disabled if there are any active automations and connected apps for the project. All the automations and agents **must be deactivated or deleted** to enable the Delete button. ![Delete_Project_Button](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltafca838303b4410b/699873abead2f50008c95ec7/Delete_Project_Button.png) 3. In the **Delete Project** modal, enter the **Project Name** and click the **Delete Project** button to delete the project permanently. **Warning:** Clicking the Delete button **permanently deletes** the project, including all the agents, automations, connected apps, and logs. You **cannot recover** a deleted project. ![Delete_Project_Modal](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb73f7d309634ac15/699873ab63bcae00089104a4/Delete_Project_Modal.png) You will get a notification after the project is deleted. ![Project_deleted_successfully](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4917d58a143f2a09/699873ab7603c100089f1c3a/Project_deleted_successfully.png) **Note:** No email notification is triggered after deleting the project. ### Mark a Project as Favorite You can pin your preferred project at the top by marking it as your favorite project. To mark a project as a favorite, follow the steps below: 1. Navigate to the **Projects** landing page. 2. Click the **star icon** present in the top right corner of your project card to mark it as favorite.![Mark_icon](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt60e96e6630b0dc96/699873aba6967e0008df4849/Mark_icon.png) You can also filter projects using tags. These filters help narrow down the project list in search results. If you use both; a tag filter and the Project Search, then it gives a consolidated list of projects based on the search and tags. ![Tags](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0f933046784dbc60/699873ab8923a00008498566/Tags.png) 3. Refresh the page to view your favorite project(s) at the top.![Favorite_project_on_top](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2851463bec47d4fd/699873ab2b6dd50008a89a21/Favorite_project_on_top.png) ## Common questions ### What is covered in [Automations guides and connectors] - Managing Projects? This page covers the topic described in the title and provides the steps, options, and examples needed to use it. ### Who should read [Automations guides and connectors] - Managing Projects? Anyone responsible for configuring, implementing, or maintaining this capability should use this page as a reference. ### When should I use this page? Use it when you are setting up this feature, troubleshooting issues, or validating expected behavior. --- ## URL: https://www.contentstack.com/docs/agent-os/managing-triggers --- title: "[Automations guides and connectors] - Managing Triggers" description: How to rename and delete a trigger in an automation. url: https://www.contentstack.com/docs/agent-os/managing-triggers product: Agent OS doc_type: guide audience: - developers - administrators version: v1 last_updated: 2026-03-25 filename: managing-triggers.md --- # [Automations guides and connectors] - Managing Triggers This page explains how to manage triggers within an automation, specifically how to rename or delete a trigger. It is intended for users configuring or maintaining automations and should be used when updating trigger settings in an existing automation. ## Managing Triggers ## Rename a Trigger To rename a trigger in the automation, perform the steps given below: - Click the trigger tab (in our case, **HTTP Request Trigger**). - Click the edit icon visible on the trigger header to rename trigger. - The **HTTP Request Trigger** field becomes editable. Update the name as required and click the “✔” check mark. ## Delete a Trigger To delete a trigger in the automation, perform the steps given below: - Click the trigger tab (in our case, **HTTP Request Trigger**). - Click the delete icon visible on the trigger header to delete the trigger. - Confirm your action by clicking **Delete** again. - You can also delete the trigger from the configured trigger as shown below: This will remove the trigger from the **automations** configuration page. ## Common questions ### Can I rename any trigger type, or only HTTP Request Trigger? You can rename a trigger by selecting its trigger tab and using the edit icon on the trigger header. ### What happens after I delete a trigger? Deleting a trigger removes the trigger from the **automations** configuration page. ### Is there more than one way to delete a trigger? Yes. You can delete the trigger from the trigger tab header, and you can also delete the trigger from the configured trigger. --- ## URL: https://www.contentstack.com/docs/agent-os/mcp-client-connect-remote-tools --- title: "MCP Client: Connect Remote Tools" description: "Learn how to connect any remote MCP server to your Agent using the MCP Client tool, covering header-based authentication, OAuth setup, tool selection, troubleshooting, and real-world use cases." url: "https://www.contentstack.com/docs/agent-os/mcp-client-connect-remote-tools" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-28" filename: mcp-client-connect-remote-tools.md --- # MCP Client: Connect Remote Tools A complete guide for connecting a remote MCP server to your [Agent](https://www.contentstack.com/docs/agent-os/what-is-an-agent) and letting it use that server's tools automatically. ## What is MCP Client? The **Model Context Protocol (MCP)** is an open standard that lets AI applications talk to external "tool servers," with a growing number of services, such as Atlassian, Notion, Vercel, and Zapier, publishing an MCP server that exposes their capabilities as callable tools. ### What this tool does The **MCP Client** is a tool you add to an **Agent OS** agent that connects it to any remote MCP server. Once connected: * Your agent discovers the tools the server offers. * The agent's AI model can call those tools directly during a conversation or run, using the live data and actions the server provides. * You stay in control of which tools the agent is allowed to use. You configure one MCP Client connection and your agent gains access to all of its tools or the subset you approve. ### How this differs from the Contentstack MCP Server It is easy to confuse this with the Contentstack MCP Server. For more information, refer to the [Contentstack MCP Server](/docs/developers/contentstack-mcp-server) documentation. They use the same protocol but in opposite directions: * **Contentstack MCP Server** lets _external_ AI tools (Claude Desktop, Cursor, etc.) connect into Contentstack and control it, such as creating entries, managing assets, and so on. * **MCP Client** lets an agent _inside_ Agent OS reach out to control other external services, such as Jira, Notion, Slack, or any other MCP-compatible provider. ### Who is it for * Agent builders who want their agent to take action in external tools (Jira, Notion, Slack, etc.) without writing custom integration code. * Automation teams connecting Agent OS workflows to existing tool ecosystems. * Teams standardizing on MCP as their integration layer across multiple AI products. ## Prerequisites 1. **The MCP server URL**: HTTPS endpoint of the remote server (for example, https://mcp.example.com/mcp). Your provider's documentation lists this. 2. **A way to authenticate with that server:** MCP servers use one of two approaches and the server's documentation tells you which: * **Header-based authentication**: Pass an API key or token in a request header. * **OAuth**: You sign in through the provider's consent screen and grant access. 3. **Appropriate permissions** in your Contentstack organization for Agent OS. **Note:** The MCP server must be reachable over the public internet using https:// (or http:// for non-production servers). Internal or private network addresses are not allowed for security reasons. ## Connect an MCP Server Log in to your [Contentstack account](https://www.contentstack.com/login/), then follow these steps: 1. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list.![Agent\_OS\_Icon.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amfbc07952da5c12a7/d9486ee0037fcf72f7fc2de7/Agent_OS_Icon.png?locale=en-us) 2. Open your project, or [create](https://www.contentstack.com/docs/agent-os/managing-projects#create-a-project) a new one. **Additional Resource:** For more information, refer to the [Managing Projects](https://www.contentstack.com/docs/agent-os/managing-projects) documentation. 3. From the **Agent OS Dashboard** screen, do one of the following: 1. To use an existing agent, select it from the **Agents** list. 2. To create a new one, click **\+ New Agent**, then in the **Create Agent** modal, click **Skip, I'll create manually**. Enter a suitable **Title** and **Description** for your agent, then click the **Create Agent** button.![Create\_Agent.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am632e49abd133aa43/0caf241d048f7c14cada0581/Create_Agent.png?locale=en-us) 4. You are redirected to the **Agent Builder** page, where you can add the **Trigger**, **Tools**, and **Instructions**. ### Add the MCP Client tool to your agent 1. On the **Agent Builder** page, in the **Tools** section, click **\+ Add** to add the **MCP** client tool to your agent. Select the **MCP** client connector from the list. ![MCP\_Tool\_Selection.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am1389d1949c01952b/ba2f41771ad2a7027f9d50e0/MCP_Tool_Selection.png?locale=en-us) 2. Click **\+ Add Account** to authenticate the external servers. 3. In the **Authorize Account** modal, you see two options: Authentication method Choose this when Header-based authentication The server expects an API key, personal access token, or other secret passed in a request header. OAuth The server uses OAuth 2.1 and you want to sign in through the provider's consent screen. ![Authorization\_Modal.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amf2ba2efa921b4791/fb9c1e889e601a8229e0f07d/Authorization_Modal.png?locale=en-us) ### Header-based authentication Use this method when your MCP server authenticates with an **API key** or **token** passed in a header. 1. Select **Header-based** authentication. Click **Proceed**. 2. In the **Authorize** modal, enter a **Title** and your **MCP Server URL**. 3. Click **\+ Add Headers** to add one or more headers. For each header, provide: * **Header Name**: For example, Authorization or X-API-Key. * **Value**: Token or Key value. For bearer tokens, the value is usually Bearer . 4. Click **Authorize**. ![Header-based\_authentication.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amc4a55ce93e7d3b26/67a6b4c47f8979900f3cfe60/Header-based_authentication.png?locale=en-us) Contentstack opens a live connection to your MCP server to confirm the credentials work. If the connection succeeds, the credentials are saved securely and the connection is ready. If it fails, the system displays an error describing what went wrong. Double-check the URL and header values and try again. **Example:** Many servers expect a header named Authorization with the value Bearer sk-abc123.Check your provider's documentation for the exact header name and token format. ### OAuth authentication Use this method when your MCP server supports **OAuth 2.1**. OAuth lets you grant access by signing in to the provider rather than copying a long-lived token. When you choose OAuth, you decide how the OAuth app is set up using the **Use dynamic client registration** checkbox. #### Option A: Automatic setup (dynamic client registration on) This is the simplest path and is selected by **default**. When selected, Contentstack automatically discovers the server's OAuth settings and registers itself as a client. You do not need to create anything in the provider's developer console. 1. Select **OAuth** as the authentication method. 2. Enter the **MCP Server URL**. 3. _(Optional)_ Enter **Scopes**, a space-separated list of OAuth scopes to request. Leave this blank to use the scopes the server recommends by default. 4. Keep **Use dynamic client registration** selected. 5. Click **Authorize**. A sign-in window opens. Sign in to the provider and approve the requested access. Once you approve, the connection is saved and ready. **Note:** Not every provider supports automatic registration. If you see an error stating the server does not allow automatic app registration (or you receive an HTTP 403 during registration), switch to manual setup below. ![Manage\_Permissions.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am9d1a7737fcdc3631/88b1f35b3135de3de0c2e84c/Manage_Permissions.png?locale=en-us) #### Option B: Manual setup (dynamic client registration off) Use this when the provider requires you to register your own OAuth application, or when automatic registration is not supported. First, register an OAuth app with your provider: 1. In the provider's developer console, create a new OAuth application. 2. When asked for a redirect URL (also called a callback URL), use the redirect URL shown in the Contentstack authorization window. Copy it with the copy button next to the field and paste it into the provider's app settings. **Note:** Note the **Client ID** and **Client Secret** the provider gives you, along with the provider's **Authorization URL** and **Access Token URL** (these are listed in the provider's OAuth documentation). 4. Select **OAuth** as the authentication method. 5. Enter the **MCP Server URL**. 6. _(Optional)_ Enter **Scopes**. 7. Clear **Use dynamic client registration**. Additional fields appear: * **Authorization URL**: The provider's OAuth authorization endpoint. * **Access Token URL**: The provider's OAuth token endpoint. * **Client ID**: From the app you registered. * **Client Secret**: The secret that pairs with the Client ID. 8. Click **Authorize**, sign in to the provider, and approve access. **Note:** The redirect URL shown in the authorization window must be added to your OAuth app's list of allowed redirect URLs at the provider. If it is not, the provider will reject the sign-in. ![Manage\_Permissions\_Unchecked.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am3ce9bf5aa02f8885/faa22f323bf651b0038d1a49/Manage_Permissions_Unchecked.png?locale=en-us)* After the connection is authenticated, enter a **Title**. The **Allowed Tools** field loads the list of tools the server offers. You can: **Let AI select tools**: allow the agent to choose from all available tools based on the conversation. Best when you want maximum flexibility.**Select specific tools**: restrict the agent to only the tools you pick. Best when you want tight control over what the agent can do.Once done, click **Save**.4. ![Save\_MCP.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am0fac361d073cd6d8/0dd326788df89946f681508b/Save_MCP.png?locale=en-us) **Tip:** Tool names from some servers appear in a technical format (for example, add\_reply\_to\_pull\_request\_comment). Contentstack automatically formats these into a readable form (for example, "Add Reply To Pull Request Comment") so they are easy to identify in the picker. ### Add trigger and instructions A tool alone does not make the agent do anything, it still needs a trigger to decide when it runs, and instructions telling it when and how to use the tool. In the **Trigger** panel, click **+** and select a trigger type. Here, we are selecting **HTTP** trigger.In the **Instructions** field, describe what the agent should do and when it should use the MCP Client tool. **For example:**You are a test agent connected to Jira via MCP. When asked about issues, use the available tools to search, view, or update Jira issues as requested. Use / inside the Instructions field to reference a specific tool directly.![Added\_Fields.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am7226a2e4b484f299/6681ef2cc45bc3a4fb73de49/Added_Fields.png?locale=en-us) ### Save and publish agent Click **Save** to lock in the **Trigger**, **Instructions**, and **MCP Client** tool together.Click **Publish** to make the agent live. A trigger does not fire on an unpublished (Draft) agent.![Publish\_Agent.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/ambde18f450e6b914a/7edc7ed6b51f37161bf24078/Publish_Agent.png?locale=en-us) ## How Your Agent Uses MCP Tools Once configured, the MCP server's tools become available to your agent automatically at run time: When the agent runs, it connects to your MCP server and retrieves the current list of tools.The tools you approved are offered to the agent's model.As the agent works through a request, it calls the appropriate tools, passes the required inputs, and uses the results to continue. You do not need to script these calls, the model decides when to use each tool based on the conversation and the tool descriptions provided by the server. **Example prompt:** With an Atlassian MCP server connected, you could ask your agent, _"Find all open Jira issues assigned to me in the Mobile project and summarize them."_ The agent calls the relevant tools to search issues and returns a summary. ## Choosing a Trigger The MCP Client tool gives your agent the _ability_ to call external tools but a trigger decides _when_ the agent runs in the first place. Pick the trigger that matches how you intend to use the agent. Following are some examples: **Note:** The trigger types listed are examples. For a complete list of trigger types and configuration details, refer to the [Triggers](https://www.contentstack.com/docs/agent-os/http-trigger) documentation. Trigger type Best for Example use case HTTP Another system or app calling the agent programmatically An internal tool or webpage calls the agent's webhook URL whenever a user clicks "Check ticket status," passing the ticket ID in the request Scheduler Running automatically on a fixed timer Every Monday morning, the agent pulls all open bugs from Jira and posts a digest to Slack CS Trigger Event Reacting to something happening elsewhere, rather than a fixed schedule or manual ask Whenever a new Jira issue is created, the agent automatically triages it, adds labels, or notifies someone **Note:** If your agent uses an HTTP trigger, there is no live chat window to watch responses in. Each run creates an **execution record** instead. Check the [**Executions**](https://www.contentstack.com/docs/agent-os/view-execution-log-of-agent-os) tab in the agent builder to see the agent's status and output for every run. ## Testing Your Connection (HTTP Trigger) Follow these steps: **Publish the agent.** A trigger only fires once the agent is published; a Draft agent will return a TRIGGER\_NOT\_ACTIVE error if called.**Copy the webhook URL** shown in the **HTTP** trigger configuration panel.**Send a POST request** to that URL with a JSON body containing your prompt, for example: ``` [ { "content": "Find open issues in project ABC", "role": "user" } ] ``` * **Check the response.** A successful call returns an executionId and a status of processing. * **Open the Executions tab** in the agent builder and select the matching execution to see the full result, including: * **Execution Steps**: each MCP tool the agent called, in order * **Metrics**: start time, duration, AI provider * **Input**: the exact payload that was sent * **Output**: the agent's final response **Note:** A simple GET request to the webhook URL (with no body) triggers the agent with a generic default message rather than your intended prompt, use a **POST** request with a JSON body to send a specific request. ![Execution.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am50f8286411c2b098/5640617d6e3dbcdfcb4d976b/Execution.png?locale=en-us) ## Security and Privacy * **Credentials are encrypted:** API keys, tokens, and OAuth secrets are encrypted at rest and are only used at run time to connect to your server. They are never exposed in the agent's configuration or log. * **You control tool access:** The agent can only use the tools you approved. This restriction is enforced on the server side, not just hidden in the interface. * **URLs are validated:** Server URLs are checked to ensure they point to legitimate public endpoints, protecting against requests to internal or private systems. * **OAuth follows modern standards:** OAuth connections use PKCE and bind each token to the specific server, following current OAuth 2.1 security practices. ## Troubleshooting Symptom Likely cause and fix "Invalid credentials" when authorizing a header-based connection The token or header value is wrong, or the server rejected it. Verify the header name and value against the provider's documentation. OAuth automatic registration fails (HTTP 403 / "does not allow automatic app registration") The provider does not support dynamic client registration. Clear **Use dynamic client registration** and enter the Authorization URL, Access Token URL, Client ID, and Client Secret manually. "Could not discover OAuth metadata" The server URL is incorrect, or the server does not publish OAuth discovery information. Confirm the exact MCP endpoint URL with your provider, or use manual setup. Sign-in is rejected during manual OAuth The redirect URL in your provider's OAuth app does not match the one Contentstack uses. Copy the redirect URL from the authorization window into your provider's app settings. Agent connects but a tool returns a permission error The signed-in account or OAuth scopes do not grant access to that action. Re-authorize with the correct account, or add the required scopes in the Scopes field. No tools appear in the Allowed Tools list The connection could not reach the server or returned no tools. Recheck the URL and credentials, then reopen the tool selector. A tool stops working during a very long agent run OAuth access tokens are refreshed when the agent connects. An exceptionally long-running session may outlast the token's lifetime; start a new run to refresh access. TRIGGER\_NOT\_ACTIVE error when calling an HTTP trigger URL The agent is still in the Draft. Click **Publish**, then retry the request. Agent responds with "Insufficient Information" / asks for a concrete request The trigger fired with a generic default message instead of a real prompt (common with a plain GET request). Send a POST request with a JSON body containing a specific ask, such as {"content": "Find open issues in project ABC", "role": "user"}. ## Frequently Asked Questions 1. **Which MCP servers can I connect to?** Any remote MCP server that is reachable over HTTPS and supports header-based authentication or **OAuth 2.1**. This includes hosted services and self-hosted servers. 2. **Do I need to add each tool manually?** No. You configure one connection per server, and the agent gains access to all the tools you allow. 3. **Can I limit which tools the agent uses?** Yes. In **Allowed Tools**, select only the specific tools you want, or let the AI choose from all available tools. 4. **Can I reuse a connection across multiple agents?** Yes. Saved connections appear on the [Connected Apps](https://www.contentstack.com/docs/agent-os/view-list-of-connected-apps-in-automations) page and can be attached to multiple agents. 5. **What's the difference between Dynamic client registration on and off?** With Dynamic client registration on, Contentstack registers itself with the provider automatically. You only supply the server URL. With it clear, you register your own OAuth app with the provider and supply its Authorization URL, Access Token URL, Client ID, and Client Secret. 6. **What's the difference between OAuth and Header-based authentication?** Header-based authentication means you manually fetch a secret (API key or token) from the provider and paste it in; the same secret is used every time. OAuth means you sign in directly to the provider and approve access; no secret is copied or handled manually, and the provider can revoke or expire access from its own side. 7. **Does the MCP Client overlap with existing connectors (e.g. a Jira or Notion connector)?** Possibly, for the specific actions both expose. Pre-built connectors (like a dedicated [Jira](https://www.contentstack.com/docs/agent-os/jira) or [Notion](https://www.contentstack.com/docs/agent-os/notion) connector) are a curated, hand-built set of actions chosen by Contentstack. An MCP Client connection to that provider's own MCP server instead exposes whatever tools the provider itself has published, often a broader set, and one that updates automatically as the provider adds new tools, without waiting on a Contentstack release. Check each provider's own tool list to confirm exact overlap for your use case. 8. **Can I use the MCP Client to create, update, or delete an Agent OS agent?** No. The MCP Client lets an existing agent control _other_ external tools (Jira, Notion, etc.). It does not provide a way to create or manage Agent OS agents themselves, that still requires the Agent OS UI directly. 9. **Is my data sent anywhere unexpected?** No. Your agent connects directly to the [MCP server](/docs/developers/contentstack-mcp-server) you configured. Credentials stay encrypted and are used only to authenticate that connection. --- ## URL: https://www.contentstack.com/docs/agent-os/microsoft-teams --- title: Automations guides and connectors - Microsoft Teams description: Setup and use the Microsoft Teams action connector to send automated messages in channels or chats via Automate. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/microsoft-teams product: Automate doc_type: connector-guide audience: - developers - automation-builders version: unknown last_updated: 2026-03-25 filename: microsoft-teams.md --- # Automations guides and connectors - Microsoft Teams This page explains how to set up and use the Microsoft Teams action connector in Automate to send automated messages to Microsoft Teams channels or chats. It is intended for developers and automation builders configuring third-party service actions within an automation workflow. ## Microsoft Teams Microsoft Teams is a cloud-based chat software that allows you to collaborate, communicate, and share content across organizations. The Microsoft Teams connector allows you to integrate [Microsoft Teams](https://www.microsoft.com/en-in/microsoft-teams/group-chat-software/) and send automated messages across your organization via Automate. ## Set up the Microsoft Teams Perform the following steps to set up the Microsoft Teams action connector: - Click **Configure Action Step **from the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the **Microsoft Teams** connector.**Note: **You can sort and search the connector(s) based on the filter. - You will see two actions under the **Choose an Action** tab: **Send Message in Channel** and **Send Message in Chat**.Let’s look at each of them in detail. ### Send Message in Channel - Under **Choose an Action** tab, select the **Send Message in Channel** action. - Click the **+ Add New Account** button to add your **Microsoft ****Teams **account. - In the pop-up window, provide OAuth permissions for all the values by checking the boxes and click **Authorize**. - In the pop-up that appears, log in to your Microsoft Teams account. - Provide an **Account ****Name **and click **Save**. - Select a **Team **and a **Channel **from the dropdown options to send a message.**Note:** A team has multiple channels. - Select a **Message ****Type **to send a message in Text or HTML format. - Enter the message in the **Message ****Body**. - Click the **Proceed **button. - To test the configured action, click the **Test ****Action **button. - Navigate to the Microsoft Teams platform to view the message. Once done, click the **Save ****and ****Exit **button. ### Send Message in Chat - Under **Choose an Action** tab, select the **Send Message in Chat** action. - Click the **+ Add New Account** button to add your Microsoft Teams account. - In the pop-up window, provide OAuth permissions for all the values by checking the boxes and click **Authorize**. - In the pop-up that appears, log in to your Microsoft Teams account. - Provide an **Account ****Name **and click **Save**. - Select a **Chat ****Name **from the dropdown to send an in-person message. - Enter the message in the **Message ****Body**. - Click the **Proceed **button. - To test the configured action, click the **Test ****Action **button. - Navigate to the Microsoft Teams platform to view the message. Once done, click the **Save ****and ****Exit **button. This sets up the **Microsoft Teams action** connector. ## Common questions **Q: What actions are available in the Microsoft Teams connector?** A: **Send Message in Channel** and **Send Message in Chat**. **Q: Do I need to authorize Microsoft Teams to use this connector?** A: Yes, you must provide OAuth permissions and click **Authorize** when adding a new account. **Q: How do I verify that the action is working?** A: Click the **Test ****Action **button, then navigate to the Microsoft Teams platform to view the message. **Q: Can I send messages in different formats?** A: Yes, for **Send Message in Channel**, you can select a **Message ****Type **to send a message in Text or HTML format. --- ## URL: https://www.contentstack.com/docs/agent-os/monitor-agent-os-activities-in-audit-log --- title: "Monitor Agent OS Activities in Audit Log" description: "Monitor Agents, Automations, Connected Apps, etc., activities using the Audit Log to track edits, updates, and events across your Agent OS project." url: "https://www.contentstack.com/docs/agent-os/monitor-agent-os-activities-in-audit-log" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: monitor-agent-os-activities-in-audit-log.md --- # Monitor Agent OS Activities in Audit Log The **Audit Log** section helps you monitor the activities performed in a particular [project](/docs/agent-os/managing-projects#create-a-project). To access the Audit Log, follow the below steps: 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list.![App\_switcher\_icon](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6290d7afc992eda9/6998761148bd410008f0963f/App_switcher_icon.png) 3. Go to your project or [create](/docs/agent-os/managing-projects#create-a-project#create-a-project) a new one. 4. From the top navigation panel, click **Settings**. Click the **Audit Log** tab to see all the details of the project.![Audit\_log\_tab](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt45be97e35fc777d6/6998741b36d8d5000862d105/Audit_log_tab.png) The following details are displayed under Audit Log when an event occurs: * **Date:** Specifies the date when the event occurred. Additionally, it displays the user's name. * **Module:** Specifies the components of Agent OS such as Agents, Projects, Automations, Connected Apps, and Project Variables on which the event was performed. * **Action:** Specifies the type of action, such as create, update, delete, enable, and disable, etc. * **Title:** Specifies the title of a particular module such as Automations, Connected Apps etc. You can filter the audit log by date to view only specific logs. ![Audit\_log\_filter](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt74e1a2824294cc7f/6998741bb13d650008b4fc1a/Audit_log_filter.png) ## Types of Audit Log Events Audit Log tracks and displays actions or events performed in a particular project. For your reference, we have provided a comprehensive list of all the events. The following table displays the various events visible in Audit Log: **Modules** **Events** Project Project is edited Project is created Agents Created Deleted Enabled Disabled Automation Created Enabled Disabled Deleted Updated Import Export Connected Apps App is connected The App is edited/re-authorized The App is deleted Project Variables Delete Update --- ## URL: https://www.contentstack.com/docs/agent-os/netlify --- title: "Netlify" description: "Use this connector to deploy the frontend changes of your web applications." url: "https://www.contentstack.com/docs/agent-os/netlify" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: netlify.md --- # Netlify The Netlify connector helps you build, deploy, and host the frontend of your web applications via Contentstack. For instance, consider a scenario where you update some content in Contentstack. This update triggers a webhook that notifies the Netlify connector to create a production build and deploy the frontend changes. ## Set Up Netlify Perform the following steps to set up the Netlify action connector: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Netlify** connector. ![Netlify.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1ea726a444daf83e/6527f8d631e1fab8cb2acb6d/Netlify.png) 4. Under **Choose an Action** tab, select the **Deploy Site** action. ![Netlify-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd45365b3ceab24ad/63dc0d06c28ed80d991c978e/Netlify-Action.png) 5. Click the **\+ Add New Account** button to set up your Netlify account (see screenshot in next step). ![Netlify-Configue-Action-Add-New-Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt574767dc5cf1d3da/63dc0d060b15864e35bdeea1/Netlify-Configue-Action-Add-New-Account.png) 6. In the **Authorize** modal, enter a **Title** and a **Token**. 7. You can generate a new token from the **Personal access token** section in your Netlify console. Navigate to **User settings** > **Applications** \> **New access token** > **Generate token**. ![Netlify\_Dashboard.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt84c7f1e40ca0e970/639d6d8c04ce585b97424850/Netlify_Dashboard.png) **Additional Resource:** For more information, refer to the [Obtain a token in Netlify UI](https://docs.netlify.com/api-and-cli-guides/cli-guides/get-started-with-cli/) document. Then click **Authorize.** ![Netlify-Configue-Action-Authorize.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcf515f72f17c89b2/63dc0d0690f21f67c8779a59/Netlify-Configue-Action-Authorize.png) 8. On the **Configure Action** page, click the **Site ID** textbox and select an ID from the Lookup drop-down. The Site ID is a unique identification given to a project configured in Netlify. You can select the desired project for which you want to configure the Netlify connector. ![Netlify-Configue-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0df81bc0ced35aa8/63dc0d064af9a97be711cc8f/Netlify-Configue-Action.png) 9. Click **Proceed**. 10. You will see the input values which you have configured in the **Configure Action** modal. ![Netlify-Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8c1fa67251310a31/63dc0d069fc1e60f1a99de81/Netlify-Input.png) 11. Check if the details are correct. If yes, click **Test Action**.  ![Netlify-Test-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte6ab7abe3a258464/63dc0d06040e3e388a964a86/Netlify-Test-Action.png) 12. Once the action is successfully executed, you will get the final output, and the build gets initiated in your Netlify console. Click **Save and Exit**.![Netlify-Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc3e2eb9cb26520f2/63dc0d06ef38d05093a9a04e/Netlify-Output.png) 13. Log in to your Netlify console and navigate to the **Deploy log** window to check whether the build has been initiated or not. ![Deploy\_Log.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt9e2e47a6e5c602a9/6370caf14005df1070afaa5f/Deploy_Log.jpg) This sets up the **Netlify** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/netlify-trigger --- title: "[Automations guides and connectors] - Netlify Trigger" description: Netlify Trigger url: https://www.contentstack.com/docs/agent-os/netlify-trigger product: Contentstack doc_type: automations-guide audience: - developers - administrators version: unknown last_updated: 2026-05-12 filename: netlify-trigger.md --- # [Automations guides and connectors] - Netlify Trigger This page explains how to configure the Netlify Trigger connector in Automations to start workflows based on Netlify deployment and form submission events. It is intended for users setting up Automations integrations and should be used when connecting a Netlify account and configuring trigger events. ## Netlify Trigger The Netlify trigger allows you to kickstart seamless workflows based on real-time events in your hosting environment. It automates tasks triggered by deployment status changes or new form submissions, streamlining the connection between your content and live site deployments. ## Prerequisites Start with adding your Netlify account by following the steps given below: ### Connect your Netlify Account - Navigate to your project and click **Automations** in the top navigation panel. - Click **+ New Automation** and from the dropdown options, click **Create New**. Enter a **Name** and an optional **Description**. Click **Create**. - Click **Configure Trigger **from the left navigation panel. - Within the **Configure** **Trigger**, click the **Netlify** connector. - Under **Choose Trigger** tab, select the **Netlify Trigger**. - On the **Configure Trigger** page, click the **+ Add New Account** to add your Netlify account. - In the **Authorize **modal, enter a **Title** and a **Token**. - You can generate a new token from the **Personal access token** section in your Netlify console. Navigate to **User settings** > **Applications **> **New access token** > **Generate token**.**Additional Resource:** For more information, refer to the [Obtain a token in Netlify UI](https://docs.netlify.com/cli/get-started/#obtain-a-token-in-the-netlify-ui/) document. Then click** Authorize.** ## Set up the Netlify Trigger Perform the following steps to set up the Netlify trigger connector: - From the left navigation panel, click **Configure** **Trigger**. - Within the **Configure Trigger**, click the **Netlify** connector. - Under the **Choose Trigger** section, select **Netlify** Trigger. **Note:** After successfully configuring a trigger, if you re-configure any other trigger you will be prompted to revert to the previously configured trigger. You can revert back to the last trigger configurations by clicking the Revert Changes button. - Let’s look at it in detail. ### Netlify Trigger The Netlify Trigger event lets you trigger an automation when you perform deployment related activities in your Netlify account. Let’s look at the steps to set up the trigger event. - Under the** Choose Trigger** tab, select **Netlify** Trigger. - On the **Netlify Trigger Configure Trigger** page, enter the details given below:Click **+ Add New Account **button to connect your Netlify account as shown in the [Connect your Netlify Account](#connect-your-netlify-account) step. - Select the** Site ID **from the **Lookup** drop-down.The** Site ID** is a unique identification given to a project configured in Netlify. You can select the desired project for which you want to configure the Netlify connector. - Select the trigger event from the drop-down, i.e., **Deployment Started**.For **Netlify** Trigger, you will find the following events: **Deployment started:** Triggered when Netlify begins building a new deployment. - **Deployment succeeded:** Triggered when a deployment completes successfully and goes live. - **Deployment failed: **Triggered when a deployment fails during the build or publish process. - **Deployment locked: **Triggered when deployments are temporarily disabled for a site. - **Deployment unlocked:** Triggered when deployments are re-enabled for a site. - **Form submission received: **Triggered when a new form submission is captured by Netlify. - Click **Proceed**. - Click **Test Trigger** to execute and test the trigger that you configured. - If successful, you will see an output as follows. If it looks appropriate, click **Save and Exit**. This sets up the **Netlify** trigger connector. ## Common questions ### What events can the Netlify Trigger listen for? For **Netlify** Trigger, you will find the following events: **Deployment started**, **Deployment succeeded**, **Deployment failed**, **Deployment locked**, **Deployment unlocked**, and **Form submission received**. ### Where do I get the Netlify token needed to authorize the account? You can generate a new token from the **Personal access token** section in your Netlify console. Navigate to **User settings** > **Applications **> **New access token** > **Generate token**. ### What should I do if I re-configure another trigger after configuring Netlify Trigger? After successfully configuring a trigger, if you re-configure any other trigger you will be prompted to revert to the previously configured trigger. You can revert back to the last trigger configurations by clicking the Revert Changes button. ### How do I validate that the trigger is working? Click **Test Trigger** to execute and test the trigger that you configured. If successful, you will see an output as follows. If it looks appropriate, click **Save and Exit**. --- ## URL: https://www.contentstack.com/docs/agent-os/notion --- title: [Automations guides and connectors] - Notion description: Connect Notion with your favorite apps. Automate tasks, streamline workflows, and boost productivity seamlessly. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/notion product: Automations doc_type: documentation audience: - developers version: v1 last_updated: 2024-11-08 filename: notion.md --- # [Automations guides and connectors] - Notion This page explains [Automations guides and connectors] - Notion for Automations. It is intended for developers who need to understand or implement this topic. Use it when you are setting up, configuring, or troubleshooting this feature. ## Notion [Notion](https://www.notion.so/) is an all-in-one productivity and collaboration platform, combining note-taking, task management, databases, and project organization in a single, customizable space – ideal for both individual and team workflows. The Notion connector enhances your Notion experience by enabling automated content management through creation, deletion, addition, and retrieval of data in your workspace via Automate. By integrating multiple tools in one space, it streamlines workflows for optimized productivity, seamless collaboration, and efficient knowledge management. This guide provides step-by-step instructions for using the Notion Automate connector. For instance, you can set up automation with a Contentstack Entry Trigger and Notion’s "[Create a Page](#action-2-select-the-create-a-page-action)" action. When a user publishes an entry in a selected environment, a new page with entry details is automatically generated in your Notion workspace. ### Prerequisites * [Notion account](https://www.notion.so/) * [Contentstack account](https://www.contentstack.com/login/) * Access to an organization that has Automate enabled ### Connect your Notion Account to Automate Perform the following steps to set up the Notion account: 1. Click **Configure** **Action** **Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure** **Action** **Step**, click the **Notion** connector.![Select_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt79d9d2a4baa50b62/672dccb453e3c4d184b3abf9/Select_Connector.png) 4. Under **Choose an Action** tab, select any one action from the list. Here, we are selecting the **Create a Page** action.![Create_Page_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt75277a4fd240c0f8/672dccb490cfa340ddfd9278/Create_Page_Action.png) 5. On the **Configure Action** page, click the **+ Add New Account** button to add your Notion account.![Create_Page_Add_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt66a092b6a1ea6b05/672dccb4af37292240038f98/Create_Page_Add_Account.png) 6. Select the permission level needed to access your pages in Notion, then click the **Authorize** button. ![Authorize_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt42455480073aeefd/672dccb4a3eb8e8fcd3e10fc/Authorize_Button.png) 7. Log in to your Notion workspace using your email ID. You can also opt for Single Sign-On if preferred.![Login_Notion.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt081bcb2e4d53fdc4/672dccb48a441809a92d9526/Login_Notion.png) 8. In the pop-up, go to the top-right corner, select your workspace, and click the **Select** **Pages** button.![Select_Pages.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbe833a4252b5daf8/672dccb4ed5a1d19bce33c93/Select_Pages.png) 9. Pick the specific pages to grant Automate access to in your Notion workspace.![Allow_Access.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4729a741691aeabf/672dccb453e3c4adafb3abf5/Allow_Access.png) 10. Provide an Account Name and then click **Save**. This sets up your Notion account for the Notion connector. ### Set up the Notion Connector Perform the following steps to set up the Notion action connector: 1. From the left navigation panel, click **Configure** **Action** **Step**. 2. Then, click **Action** **Step** to configure third-party services. 3. Within the **Configure** **Action** **Step**, click the **Notion** connector.![Select_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt79d9d2a4baa50b62/672dccb453e3c4d184b3abf9/Select_Connector.png) 4. Under **Choose an Action**, you will see these actions: **Add Content to a Page**, **Create a Page**, **Delete a Database**, **Delete a Page**, and **Get Page Details**.![Select_Actions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6020140901ba819c/672dccb43dfab3236af56fa0/Select_Actions.png) Once done, you can go ahead and set up your Notion connector. #### Action 1: Select the Add Content to a Page action 1. Under **Choose an Action** tab, select the **Add Content to a Page** action. 2. On the **Add Content to a Page Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Notion account as shown in the [Connect your Notion Account to Automate](#connect-your-notion-account-to-automate) step. 2. Select a parent **Page** **Name** where you wish to add the content. 3. In the **Select Content Schema Type** field, select the format for the content either **Text** or **JSON**. 4. In the **Text/JSON Content Type** field, enter the content to be added. If you select **JSON** as the **Content** **Schema** **Type**, you can click the **Template** icon to fetch the predefined schema template for your page. **Note:** The **Content Schema Type** has a maximum character limit of **2000** characters. ![Select_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt98c86730056c87ad/672e114b170171421df00745/Select_Fields.png) 5. Optionally, enable the **Show Optional Fields** toggle button to select the **Block** **Name**. This ensures that the content is added to your page after the selected block.![Select_Block.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2e727541ef66af04/672e114b4c9c316cff018160/Select_Block.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test** **Action**.![Test_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt610e91e0ddd74a2e/672dce0494fe5a6060b81a1d/Test_Action.png) 5. Once set, click **Save and Exit**.![Save_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt49bd2a9e3721e836/672dce0497ce065a88478099/Save_Exit.png) #### **Action 2: Select the Create a Page action** 1. Under **Choose an Action** tab, select the **Create a Page** action. 2. On the **Create a Page Content Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Notion account as shown in the [Connect your Notion Account to Automate step](#connect-your-notion-account-to-automate-step). 2. Select the **Parent** **Type** for the new page. You can create the page within an existing parent page or database.![Select_page_Database.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt292814bfefc0186b/672e115bc741490f9cc2ff5c/Select_page_Database.png) **When Selecting Parent as Page** 1. In the **Select Page Name** field, select a parent page where the new page will be created. Enter a page title for the new page in the **Page** **Title** field. ![Select_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt72fb48cb61501eb4/672e115bc09b5d862ac4bbe2/Select_Fields.png) 2. Optionally, enable the **Show Optional Fields** toggle button to view the following fields: 1. In the **Select Content Schema Type** field, select the content format as either **Text** or **JSON** format. 2. In the **Text/JSON** **Content** **Type** field, enter the content you wish to add. If you select **JSON** as the **Content Schema Type**, you can click the **Template** icon to fetch the predefined schema template for your page. **Note:** The **Content Schema Type** has a maximum character limit of **2000** characters. 3. Enter the URLs for the **Page Icon** and **Cover Image**. ![Show_Optional_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf372dc53c4321038/672e115c20ed6c548fa50d7c/Show_Optional_Fields.png) **When Selecting Parent as Database** 1. In the **Select Database Name** field, select an existing database where the new page is created. 2. In the **Database** **Properties** field, enter the content for the appropriate database columns. Ensure the data is in **JSON** format or use the predefined template for your database. ![Select_Fields_Database.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt945ab1660bfd8725/672e115b09c2c0122461dce8/Select_Fields_Database.png) 3. Optionally, enable the **Show Optional Fields** toggle button to view the following fields: 1. In the **Select Content Schema Type** field, select the content format as either **Text** or **JSON**. 2. In the **Text/JSON Content Type** field, enter the content you wish to add. 3. If you select **JSON** as the **Content Schema Type**, you can click the **Template** icon to fetch the predefined schema template for your database. **Note:** The **Content Schema Type** has a maximum character limit of **2000** characters. 4. Enter the URLs for the **Page Icon** and **Cover Image**. ![Show_Optional_Fields_Database.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3a64380e6b7c6941/672e115bcc42510b19a23035/Show_Optional_Fields_Database.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test Action**. ![Test_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5f6274352ba7c748/672dce0f97ce064a5447809d/Test_Action.png) 5. Once set, click **Save and Exit**. ![Save_Exit_dATABASE.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt774835c629815a75/672dce0f1701715532f00583/Save_Exit_dATABASE.png) #### Action 3: Select the Delete a Database action 1. Under **Choose an Action** tab, select the **Delete a Database** action. 2. On the **Delete a Database Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Notion account as shown in the [Connect your Notion Account to Automate](#connect-your-notion-account-to-automate) step. 2. Select a **Database** **Name** to delete. **Warning:** This action will permanently remove all the content within the database. ![Select_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt78d859391e55b027/672e116a188be38b5bf06972/Select_Fields.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test** **Action**. ![Test_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0bc0654596acfc9f/672dce1ae9a3c65f03f51e84/Test_Action.png) 5. Once set, click **Save and Exit**. ![Save_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt99d0dd929058113d/672dce1a15798d966801d248/Save_Exit.png) #### Action 4: Select the Delete a Page action 1. Under **Choose an Action** tab, select the **Delete a Page** action. 2. On the **Delete a Page Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Notion account as shown in the [Connect your Notion Account to Automate](#connect-your-notion-account-to-automate) step. 2. Select a **Page** **Name** to delete. **Warning:** This action will permanently remove all the content within the selected page. ![Select_Page_Name.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt03e9a0cfc0bdad8e/672e1178e5b8c50980a8293c/Select_Page_Name.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test Action**. ![Test_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8c1544bab56bdb49/672dce239f35ca8556c83190/Test_Action.png) 5. Once set, click **Save and Exit**.![Save_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt79dc5f86709ab1e8/672dce234c9c3141a5017fdf/Save_Exit.png) #### Action 5: Select the Get Page Details action 1. Under **Choose an Action** tab, select the **Get Page Details** action. 2. On the **Get Page Details Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Notion account as shown in the [Connect your Notion Account to Automate](#connect-your-notion-account-to-automate) step. 2. Select a **Page** **Name** to fetch its details. 3. Optionally, enable the **Show Optional Fields** toggle button to check the Include page content box. This retrieves details of all the child elements within the page. ![Select_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfe1bdf4e826c13a5/672e1184252d980b97a07567/Select_Fields.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test** **Action**. ![Test_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf631bb3952581a9c/672dce344b9fed04e92c1bfa/Test_Action.png) 5. Once set, click **Save and Exit**. ![Save_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8d6c66dc36954802/672dce2caf37290ea3038f9d/Save_Exit.png) This sets the **Notion** connector. ## Common questions ### What is covered in [Automations guides and connectors] - Notion? This page covers the topic described in the title and provides the steps, options, and examples needed to use it. ### Who should read [Automations guides and connectors] - Notion? Anyone responsible for configuring, implementing, or maintaining this capability should use this page as a reference. ### When should I use this page? Use it when you are setting up this feature, troubleshooting issues, or validating expected behavior. --- ## URL: https://www.contentstack.com/docs/agent-os/on-demand-automation-app --- title: "On-Demand Automation App" description: "Learn how to use the On-Demand Automation App to integrate Agent OS within your entry editor." url: "https://www.contentstack.com/docs/agent-os/on-demand-automation-app" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: on-demand-automation-app.md --- # On-Demand Automation App The On-Demand Automation App provides functionalities to integrate Agent OS into your stack. With the On-Demand Automation App, you can bring all the capabilities of Agent OS to your entry editor in the CMS. Let’s see how you can use and install the On-Demand Automation App via the Marketplace to get started. ## Prerequisites 1. [Contentstack Account](https://www.contentstack.com/login) 2. Access to the Contentstack Organization/Stack as the Owner/Admin ## Steps for Execution 1. [Install On-Demand Automation App](#install-on-demand-automation-app) 2. [Create an Automation](#create-an-automation) 3. [Execute the Automation via On-Demand Automation App](#execute-the-automation-via-on-demand-automation-app) ## Install On-Demand Automation App Follow the steps to install the On-Demand Automation App in Contentstack. 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. After logging in, click the **App Switcher** icon, then select **Marketplace** from the list. ![App\_Switcher\_Marketplace\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt405217a82de7e11a/6998693fa9de3800086c78f1/App_Switcher_Marketplace_Icon.png) 3. Click **Apps** from the left panel. 4. Within the Marketplace, you can see all the available apps. Hover over the **On-Demand Automation** app and click **Install**. ![Install\_App\_From\_Marketplace.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt731613d6f0ea17c0/665d5bf5dbfae9ffbe0f8c13/Install_App_From_Marketplace.png) 5. In the pop-up window, select the stack where you want to install the On-Demand Automation app, accept the terms and conditions, and click the **Install** button. ![Install\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted945708d8b6891b/668386429b2b7a520ad983ca/Install_App.png) 6. On the configuration screen, you will see the Entry Sidebar Rail UI location and the Asset Sidebar Rail UI location enabled for the On-Demand Automation app. Click the **Open Stack** button, which will redirect you to your stack. **Note:** The Entry Sidebar Rail and the Asset Sidebar UI locations are enabled **only** for the On-Demand Automation app. ![UI\_Locations\_Configuration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf27895b4cd19c052/6684fcf8fda39284cb662dfb/UI_Locations_Configuration.png) You can view the On-Demand Automation app on the **Entry** and **Asset** editor page in the Entry Sidebar and the Asset Sidebar Rail UI Locations. ## Entry Editor Page To view the On-Demand Automation app in the Entry Editor page, follow the steps below: 1. Go to your stack, click the **Content Models** icon in the left navigation panel, and click the **\+ New Content Type** button. In the drop-down, select **Create New** or **Use Prebuilt** options. 2. Create a [content type](/docs/headless-cms/create-a-content-type/) by adding relevant details and click the **Save and proceed** button. 3. From the left navigation panel, navigate to the [Entries](/docs/headless-cms/create-an-entry/) page, click **\+ New Entry** to create a new entry for the above content type, and then click **Proceed**. 4. In the right navigation panel, you will see the **On-Demand Automation app** icon. Click to view the On-Demand Automation App. ![Automate\_App\_Asset\_Sidebar.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbe3f33c2eeeecbf8/66838642c8ca7733c1ce006c/Automate_App_Asset_Sidebar.png) 5. You will see two icons: **View Recipes** and **Manage Automations**. Click **Manage Automations** to create a new automation. On clicking the **View Recipes** icon, you can see the recipes list. **Note:** **View Recipes** and **Manage Automations** icons are only visible to an organization’s [Admin(s)](/docs/administration/about-administration-roles#organization-admin)/[Owner(s)](/docs/administration/about-administration-roles#organization-owner). Standard users can **only execute** the automation that is visible via the On-Demand Automation App in the Entry Sidebar location. ### Create an Automation To start executing the automation via the On-Demand Automation App, you first need to create an automation. To do so, follow the steps below: 1. From the left navigation panel, click **Agent OS**. 2. On the Automations project page, click the **On-demand Automation** project. 3. On the Automations page, click **\+ New Automation**. 4. Provide an **Automation Name** and an optional **Description**. Click **Create**. 5. After entering the basic details of the automation in the above step, the next set of actions can be broadly classified into the following two main steps: 1. Configure Trigger 2. Configure Action Step ![Configure\_Action\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltda2435f1803be46a/664b00861c913512ff13d320/Configure_Action_Trigger.png) 6. Let’s look at the above steps ‌in the next section. #### Configure Trigger Configuring a trigger can be broken into the following steps: 1. From the left navigation panel, click **Configure Trigger**. 2. Within the **Configure Trigger** step, click the **On-Demand Automation** trigger. 3. Under the **Choose Trigger** section, select the **Entry Sidebar** trigger. ![Select\_Actions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt576fcfb7d87de84e/6683864282ce1d020a3151aa/Select_Actions.png) 4. On the **Entry Sidebar Configure Trigger** page, enter the details given below: 1. Select a **Stack** and **Branch** from the **Lookup** list. **Note:** You **cannot** configure a [Response](/docs/agent-os/response) connector with the On-Demand Agent OS trigger. 2. Optionally, enable the **Show Optional Fields** toggle button to display the **Select** **Content** **Type** and **Input** **Options** fields. 1. Click the **\+ Input Options** button to view an Additional Information modal in the Entry Sidebar. 2. In the **Input** **Label** field, enter the content to display as a label in the Additional Information modal. 3. From the **Input Type** drop-down, select the type of input you want to provide in the Additional Information modal. 4. In the **Input** **Description** field, enter a suitable instruction text for the input type field. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt42ce7d735e622c14/675fdb09680101d5a756d23a/Show_Optional_Fields.png) 5. Click the **Proceed** button. 6. Click the **Test Trigger** button to test the configured trigger. 7. Click the **Save and Exit** button. ![Save\_And\_Exit\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt170e65d58f593d1d/675fdb854657c83a79d1f81c/Save_And_Exit_Button.png) **Note:** After successfully configuring a trigger, if you re-configure any other trigger, you will be prompted to revert to the previously configured trigger. You can revert back to the last trigger configurations by clicking the **Revert Changes** button. This completes the configuration of your **On-Demand Agent OS** trigger. #### Configure Action Step You can configure any action connector based on your configuration. For this guide, we are selecting **Email by Agent OS** connector. To configure an action step follow the steps below: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Email by Agent OS** connector. ![Select\_Email\_by\_Automate\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfee36c27f4d2dbd7/6694cf3cfbce3125fd239b30/Select_Email_by_Automate_Connector.png) 4. Under **Choose an Action** tab, select the **Email by Agent OS** action. ![Email\_By\_Automate.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8d13f479ac6c0b4e/664b00866d70555f6b4d94ff/Email_By_Automate.png) 5. On the **Configure Action** page, enter the **To** email address, the **Subject** line, the **Body Type**, and the **Body** of the email. The **Show Optional Fields** toggle button allows you to enter the “CC” and “BCC” email addresses. ![Select\_Email\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4ccec17f18110c60/664b008fb2e85241ba451c9e/Select_Email_Fields.png) 6. Click **Proceed** after entering the details. 7. Click **Test Action** to test if the email sending was a success or not. 8. The email is queued and sent to the receiver’s email address. Click **Save and Exit**. ![Save\_Exit\_Actin.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2cdd949469706f4e/664b008fb2e852313c451c9a/Save_Exit_Actin.png) Activate the automation by clicking the **Activate Automation** toggle button. ### Execute the Automation via On-Demand Automation App Once the automation is activated, you can check all the active automations in the On-Demand Automation App. To do so, follow the steps below: 1. Navigate to the On-Demand Automation App in the entries page. 2. You will see a list of all the active automations. Click the “Execute icon” to execute the automation. ![Automation\_Visible\_in\_Asset\_Sidebar.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd8622fb88e1e1eb7/6694cc69d0c0ef2480c54a30/Automation_Visible_in_Asset_Sidebar.png) 3. Once the automation is executed successfully, you can check the receiver’s email address for the email sent via Agent OS. ![Email.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt35789911df3ce82c/664b0086dda14b614edffa19/Email.png) ## Use Case Additional Information Modal Let’s see a use case to understand how the users can view and interact with the Additional Information modal. In this use case, we will cover a scenario where, if a user adds the Input Options in the Entry Sidebar, the ChatGPT Connector processes the request and provides a prompt. The On-Demand Agent OS Connector displays the response in the Results modal. Let's break this scenario to see what must be the trigger event and the consequent action required to execute the Automation: 1. **Set up the On-Demand Agent OS “Entry Sidebar” Trigger Event:** This trigger event is activated whenever a user runs the automation via the On-Demand Automation App in the Entry Sidebar. 2. **Set up the ChatGPT “Chat” Action:** Once the above event triggers the automation, the Chat action will provide a response based on the request. 3. **Set up the On-Demand Agent OS “Summary Overlay” Action:** Once the above action is executed, the Summary Overlay action displays the response in the Results modal in the Entry Sidebar. The steps to set up the Automation are as follows: 1. [Set up the On-Demand Agent OS Trigger](#set-up-the-on-demand-agent-os-trigger) 2. [Set up the ChatGPT Connector](#set-up-the-chatgpt-connector) 3. [Set up the On-Demand Agent OS Connector](#set-up-the-on-demand-agent-os-connector) 4. [Execute the Automation via On-Demand Automation App](#execute-the-automation-via-on-demand-automation-app) Let’s look at the setup in detail. ### Set up the On-Demand Agent OS Trigger 1. From the left navigation panel, click **Configure** Trigger. 2. Within the **Configure** **Trigger** step, click the **On-Demand Agent OS** trigger. ![On-Demand\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8f42b93e90a40c16/675fdb09e720114e8602f9ed/On-Demand_Trigger.png) 3. Under the **Choose Trigger** section, select the **Entry** **Sidebar** trigger. ![Select\_Actions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt576fcfb7d87de84e/6683864282ce1d020a3151aa/Select_Actions.png) 4. On the **Entry Sidebar Configure Trigger** page, enter the details given below: 1. Select a **Stack** and **Branch** from the **Lookup** list. **Note:** You cannot configure a [Response](/docs/agent-os/response) connector with the On-Demand Agent OS trigger. ![Select\_Trigger\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt927aa8ca49db7332/675fdacc1cd21e548cc25d96/Select_Trigger_Fields.png) 2. Optionally, enable the **Show Optional Fields** toggle button to display the **Select** **Content** **Type** and **Input** **Options** fields. 1. Click the **\+ Input Options** button to view an Additional Information modal in the Entry Sidebar. 2. In the **Input** **Label** field, enter the content to display as a label in the Additional Information modal. For example, enter _Ask Something!._ 3. From the **Input** **Type** drop-down, select the type of input you want to provide. For example, select _String_. 4. In the **Input** **Description** field, enter a suitable instruction text for the input type field. For example, _Enter the content to generate the response_. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc2c07671e689c62e/675fdad3f56c138249bd9691/Show_Optional_Fields.png) 5. Click the **Proceed** button. 6. Click the **Test** **Trigger** button to test the configured trigger. 7. Click the **Save and Exit** button. ![Save\_And\_Exit\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt170e65d58f593d1d/675fdb854657c83a79d1f81c/Save_And_Exit_Button.png) ### Set up the ChatGPT Connector 1. From the left navigation panel, click **Configure** **Action** Step. 2. Within the **Configure** **Action** **Step**, click the **ChatGPT** Connector. 3. Under the **Choose an Action** tab, select the **Chat** action. 4. On the **Chat Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your ChatGPT account as shown in the [Connect your ChatGPT Account](/docs/agent-os/chatgpt#connect-your-chatgpt-account-to-automate) step. 2. Select the **API** **Model** from the dropdown list to generate content for the chat responses. **Note:** Different models are available to different users based on the account the user holds such as paid accounts. You must check the account access before selecting the model. 3. Provide the **Prompt** Text to generate response(s). Click **\+ Add Prompt Text** to enter multiple prompts. 4. Select the **Role** from the dropdown options to send to the API model request. By default, the role is set to the user. **Additional Resource:** There are three different types of roles provided by the OpenAI platform. The **system** role sets the response context, the **assistant** role provides the response content, and the **user** role asks the prompt. 5. Enter the value in the **Input** **Query** field. For example, _Give me description for the {{1.body.entry.title}}. Provide output in HTML format_. This provides a description about the entry in the Results modal. ![Chat\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdea4ef133b72678e/675fdacb216a9cad62314a0e/Chat_Fields.png) 6. Click the **Show Optional Fields** toggle button to use the optional fields. **Additional Resource:** Refer to the [ChatGPT](/docs/agent-os/chatgpt) Connector. 5. Click the **Proceed** button. 6. Click the **Test Action** button to test the configured action. 7. Click the **Save and Exit** button. ![Save\_Exit\_Chat.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1d2b134736d0aff1/675fdacc21e066b2b8411519/Save_Exit_Chat.png) ### Set up the On-Demand Agent OS Connector 1. From the left navigation panel, click **Configure** **Action** **Step**. 2. Within the **Configure** **Action** **Step**, click the **On-Demand Agent OS** Connector. 3. Under the **Choose an Action** tab, select the **Summary** **Overlay** action. ![Summary\_Overlay\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb399ef5a7bc36e67/6794bd5139726f01ebf85333/Summary_Overlay_Action.png) 4. In the **Response** **Body** field, enter the content to be displayed in the Results modal. Fetch the response from the Chat action, i.e., _2.message.0.message.content_ as shown below: ![Response\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8353831e5e5a6734/675fdacbbbb2f6cf2f39d248/Response_Fields.png) 5. Click the **Proceed** button. 6. Click the **Test** **Action** button to test the configured action. 7. Click the **Save and Exit** button. ![Save\_Exit\_Response.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt469644d8abad8d1d/675fdacb19cfd535b5f0c9a8/Save_Exit_Response.png) ### Execute the Automation via On-Demand Automation App Once the automation is activated, you can check all the active automations in the On-Demand Automation App. To do so, follow the steps below: 1. Navigate to the On-Demand Automation App in the entries page. 2. You will see a list of all the active automations. Click the “Execute icon (|>)” to execute the automation. ![Execut\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt85edcb3f9d95f1b0/67e26efc914c247ae84978a9/Execut_Icon.png) 3. A pop-up window will appear. Enter a prompt in the input field as shown below: ![Additional\_Information.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf4c1fc219836fb89/675fdacba766310092a0a1f5/Additional_Information.png) 4. You will get the response on the Results modal as shown below: ## Use Case for the Pause On-Demand The Pause On-Demand action, available in the On-Demand Automation app within the Entry Sidebar, allows you to decide whether to continue or pause an automation execution. It adds an extra layer of confirmation to ensure you want to proceed. When an automation involves multiple action steps but only a limited set of values is needed, **Pause On-Demand** helps preserve specific properties from previous steps. These retained values can then be used in subsequent steps, ensuring a controlled and efficient execution process. **Note:** You can configure the Pause On-Demand action **only once** in an automation. **What Happens in the Pause Modal?** * If the user chooses to proceed, the automation continues as planned. * If the user clicks the **close** button (either the button or the modal’s close icon), the remaining automation steps will not be executed. * If execution is stopped, the user must initiate a **new execution** by clicking **'Run'** again. Here’s a use case demonstrating how users can update an entry in real time by pausing the automation for confirmation. In this scenario, when a user triggers an automation via the **Agent OS**app in the **Entry Sidebar**, the entry **title** and **body** will be updated automatically: but only after the user confirms the execution. Let's break this scenario to identify the trigger event and the necessary actions required to execute the automation. 1. **Set up the On-Demand Agent OS “Entry Sidebar” Trigger Event:** This trigger event is activated whenever a user runs the automation via the On-Demand Automation app in the Entry Sidebar. 2. **Set up the On-Demand Agent OS “Pause On-Demand” Action:** Once the above action is executed, the Pause On-Demand action lets you preserve the values from the previous step and execute the automation. 3. **Set up the On-Demand Agent OS “Update an Entry” Action:** Once the above action is executed, the Update an Entry action displays the updated entry title and body. The steps to set up the automation are as follows: 1. [Set up the Entry Sidebar Trigger](#set-up-the-entry-sidebar-trigger) 2. [Set up the Pause On-Demand Action Connector](#set-up-the-pause-on-demand-action-connector) 3. [Set up the Update an Entry Action](#set-up-the-update-an-entry-action) 4. [Execute the Automation via On-Demand Automation App](#execute-the-automation-via-on-demand-automation-app) Let’s look at the setup in detail. ### Set up the Entry Sidebar Trigger 1. From the left navigation panel, click **Configure** **Trigger**. 2. Within the **Configure** **Trigger** step, click the **On-Demand Agent OS** trigger. ![On-Demand\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8f42b93e90a40c16/675fdb09e720114e8602f9ed/On-Demand_Trigger.png) 3. Under the **Choose Trigger** section, select the **Entry** **Sidebar** trigger. 4. On the **Entry Sidebar Configure Trigger** page, enter the details given below: 1. Select a **Stack** and **Branch** from the **Lookup** list. **Note:** You cannot configure a [Response](/docs/agent-os/response) connector with the On-Demand Agent OS trigger. ![Select\_Fields\_Entry\_Sidebat.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt814cedd00ef30b0a/67e26ab929f30c0055f8e51a/Select_Fields_Entry_Sidebat.png) 2. Optionally, enable the **Show Optional Fields** toggle button to display the **Select** **Content** **Type** and **Input** **Options** fields. 1. Click the **\+ Add Input Options** button to view an Additional Information modal in the Entry Sidebar. 2. In the **Input** **Label** field, enter the content to display as a label in the Additional Information modal. For example, enter _User Prompt!._ 3. From the **Input** **Type** drop-down, select the type of input you want to provide. For example, select _String_. 4. In the **Input** **Description** field, enter a suitable instruction text for the input type field. For example, _Enter the request._![Select\_Other\_Fields\_Entry\_Sidebar.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt15af4f991d92985c/67e26aba6678fd1c69aeadc7/Select_Other_Fields_Entry_Sidebar.png) 5. Click the **Proceed** button. 6. Click the **Test** **Trigger** button to test the configured trigger. 7. Click the **Save and Exit** button. ![Save\_and\_Exit\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4745168d2f5783fd/67e26ab9362ee360e855cfe5/Save_and_Exit_Trigger.png) ### Set up the Pause On-Demand Action Connector 1. From the left navigation panel, click **Configure Action Step**. 2. Within the **Configure Action Step**, click the **On-Demand Agent OS** Connector. 3. Under the **Choose an Action** tab, select the **Pause On-Demand** action. 4. In the **Preserve Previous Step Properties** field, select the values you want to retain from the previous step. Click the **\+ Add Preserve Previous Step Properties** button, then enter the **Property Name** and **Property Value**. In this example, we are selecting **Entry Title** and **Entry** **Content** to update the Title and Body content. 5. In the **Select Body Type** drop-down, select a format for the output. Then, in the **Body** **Content** field, enter the content based on the selected type. The **Body Type** and **Body Content** define the message displayed in the **Pause** modal during execution. In this example, we are selecting **Text** as the **Body Type** and **"Do you want to update the entry?"** as the **Body** **Content**. ![Select\_Pause\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9a0895a9a874faef/682b2aebc665719819be519f/Select_Pause_Field.png) 6. Optionally, enable the **Show Optional Fields** toggle button to display the Pause modal title . You can enter a custom name for the **Pause Modal Title**. ![Show\_Optional\_Fiels.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8c4939461df0a7a7/67e26ac103068dd66fa1fbdb/Show_Optional_Fiels.png) 7. Click the **Proceed** button. 8. Click the **Test Action** button to test the configured action. 9. Click the **Save and Exit** button. ![Save\_Exit\_Pause.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8893f9608613db39/67e26ab90b0fc55740b4b5d1/Save_Exit_Pause.png) ### Set up the Update an Entry Action 1. From the left navigation panel, click **Configure Action Step**. 2. Within the **Configure Action Step**, click the **Contentstack** Connector and then select the **Contentstack Management** connector. 3. Under the **Choose an Action** tab, select the **Update an Entry** action. 4. Select a **Stack**, **Branch**, **Content Type**, and **Entry** from the **Lookup** list. ![Update\_Entry\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt338d293730a5c4c3/67e26ac2b32319b090990269/Update_Entry_Fields.png) 5. In the **Entry Data** field, fetch the title and body values from the previous step as shown below: ![Select\_Entry\_Data.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltacac954f9e92c644/682b2aeb80d2d1182299863b/Select_Entry_Data.png) 6. Optionally, enable the **Show Optional Fields** toggle button to display the optional fields. 7. Click the **Proceed** button. 8. Click the **Test Action** button to test the configured action. 9. Click the **Save and Exit** button. ![Save\_Exit\_Update.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltab9c92c0bb4a07dd/67e26ab92fdf5e120806a412/Save_Exit_Update.png) ### Execute the Automation via the On-Demand Automation App Once the automation is activated, you can check all the active automations in the On-Demand Automation app. To do so, follow the steps below: 1. Navigate to the On-Demand Automation app in the entries page. 2. You will see a list of all the active automations. Click the “Execute icon (|>)” to execute the automation. ![Execut\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt85edcb3f9d95f1b0/67e26efc914c247ae84978a9/Execut_Icon.png) 3. A pop-up window will appear. Enter a prompt in the input field as shown below: ![Additional\_Information.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9d4cc6eb41795de4/67e26ab929f30c283df8e516/Additional_Information.png) 4. Once you enter the prompt, the **Pause** modal appears. Click **Confirm** to proceed with the execution. If you want to stop the execution of the subsequent step(s), click **Close**. **Note:** To execute the automation, you must run it again. ![Pause\_Preview.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7409e483d56b69a5/67e26ab9848c634bb7cfdb8c/Pause_Preview.png) 5. Once confirmed, you will see the updated entry. ## Use Case for the User Draft Update Here is a use case to understand how the users can update an entry in real-time with the User Draft action. We will cover a scenario where, if a user executes an automation via the On-Demand Automation app in the Entry Sidebar, the entry title is updated automatically. Let's break this scenario to identify the trigger event and the necessary actions required to execute the automation. 1. **Set up the On-Demand Agent OS “Entry Sidebar” Trigger Event:** This trigger event is activated whenever a user runs the automation via the On-Demand Automation app in the Entry Sidebar. 2. **Set up the On-Demand Agent OS “User Draft Update” Action:** Once the above action is executed, the User Draft Update action dynamically displays the updated entry title. The steps to set up the Automation are as follows: 1. [Set up the On-Demand Agent OS Entry Sidebar Trigger](#set-up-the-on-demand-agent-os-entry-sidebar-trigger) 2. [Set up the On-Demand Agent OS User Draft Update Action](#set-up-the-on-demand-agent-os-user-draft-update-action) 3. [Execute the Automation via On-Demand Automation App in Entry Sidebar](#execute-the-automation-via-agent-os-app-in-entry-sidebar) Let’s look at the setup in detail. ### Set up the On-Demand Agent OS Entry Sidebar Trigger 1. From the left navigation panel, click **Configure** Trigger. 2. Within the **Configure** **Trigger** step, click the **On-Demand Agent OS** trigger. ![On-Demand\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8f42b93e90a40c16/675fdb09e720114e8602f9ed/On-Demand_Trigger.png) 3. Under the **Choose Trigger** section, select the **Entry** **Sidebar** trigger. 4. On the **Entry Sidebar Configure Trigger** page, enter the details given below: 1. Select a **Stack** and **Branch** from the **Lookup** list. **Note:** You cannot configure a [Response](/docs/agent-os/response) connector with the On-Demand Automate trigger. ![Select\_Trigger\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt927aa8ca49db7332/675fdacc1cd21e548cc25d96/Select_Trigger_Fields.png) 2. Optionally, enable the **Show Optional Fields** toggle button to display the **Select** **Content** **Type** and **Input** **Options** fields. 1. Click the **\+ Input Options** button to view an Additional Information modal in the Entry Sidebar. 2. In the **Input** **Label** field, enter the content to display as a label in the Additional Information modal. For example, enter _Ask Something!._ 3. From the **Input** **Type** drop-down, select the type of input you want to provide. For example, select _String_. 4. In the **Input** **Description** field, enter a suitable instruction text for the input type field. For example, _Enter the entry title to update._![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt95753f529964c2da/6794bd51b085b1371773ad57/Show_Optional_Fields.png) 5. Click the **Proceed** button. 6. Click the **Test** **Trigger** button to test the configured trigger. 7. Click the **Save and Exit** button. ![Save\_Exit\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta92b96382b38bd90/6794bd512108d8bc947fd032/Save_Exit_Button.png) ### Set up the On-Demand Agent OS User Draft Update Action 1. From the left navigation panel, click **Configure** **Action** **Step**. 2. Within the **Configure** **Action** **Step**, click the **On-Demand Agent OS** Connector. 3. Under the **Choose an Action** tab, select the **User Draft Update** action. ![User\_Draft\_Update\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt425951dd7c9f6f57/6794bd59b3cc47859c90da02/User_Draft_Update_Action.png) 4. Select a **Stack** and a **Content** Type from the **Lookup** list. 5. In the **Response** **Body** field, enter the content to be updated in the entry as shown below: ![User\_Draft\_Update\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3e604f32936364ac/6794bd5916946945a1974fe2/User_Draft_Update_Field.png) 6. Click the **Proceed** button. 7. Click the **Test** **Action** button to test the configured action. 8. Click the **Save and Exit** button. ![Save\_ExitUserDraft.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2e1e8057a4295488/6794bd51a326206e70291eec/Save_ExitUserDraft.png) ### Execute the Automation via On-Demand Automation App in Entry Sidebar Once the automation is activated, you can check all the active automations in the On-Demand Automation App. To do so, follow the steps below: 1. Navigate to the On-Demand Automation App in the entries page. 2. You will see a list of all the active automations. Click the “Execute icon (|>)” to execute the automation. ![Execut\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt85edcb3f9d95f1b0/67e26efc914c247ae84978a9/Execut_Icon.png) 3. A pop-up window will appear. Enter a prompt in the input field as shown below: ![Pop-up\_Automation.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaa53b67b0b80a931/6794bd5153ace65c822b4616/Pop-up_Automation.png) 4. You will see the updated entry title in the entry view. ## Asset Editor Page To view the On-Demand Automation App in the Asset Editor page, follow the steps below: 1. Go to your stack, in the left navigation panel click the **Assets** icon, and then click the **\+ New Asset** button. 2. In the **Upload Asset(s)** modal, click the **\+ New Folder** field, enter the **Folder Name**, and click the **Mark** icon to save the folder. 3. Click the **Choose files** button to start adding assets in the folder created in the previous step. 4. Once done, select the folder and the asset. Click the asset to navigate to the Asset Editor page. 5. In the right navigation panel, you will see the **On-Demand Automation App** icon. Click to view the On-Demand Automation App. ![Automate\_App\_Asset\_Sidebar.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbe3f33c2eeeecbf8/66838642c8ca7733c1ce006c/Automate_App_Asset_Sidebar.png) 6. You will see two icons: View Recipes and Manage Automations. Click **Manage Automations** to create a new automation. On clicking the **View Recipes** icon, you can see the Recipes list. **Note:** View Recipes and Manage Automations icons are only visible to an organization’s [Admin(s)](/docs/administration/about-administration-roles#organization-admin)/[Owner(s)](/docs/administration/about-administration-roles#organization-owner). Standard users can **only execute** the automation that is visible via the On-Demand Automation App in the Asset Sidebar location. ### Create an Automation To start executing the automation via the On-Demand Automation App, you first need to create an automation. To do so, follow the steps below: 1. From the left navigation panel, click **Agent OS**. 2. On the Automations project page, click the **On-demand Automation** project. 3. On the Automations page, click **\+ New Automation**. 4. Provide an **Automation Name** and an optional **Description**. Click **Create**. 5. After entering the basic details of the automation in the above step, the next set of actions can be broadly classified into the following two main steps: 1. Configure Trigger 2. Configure Action Step ![Configure\_Action\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltda2435f1803be46a/664b00861c913512ff13d320/Configure_Action_Trigger.png) 6. Let’s look at the above steps ‌in the next section. #### Configure Trigger Configuring a trigger can be broken into the following steps: 1. From the left navigation panel, click **Configure Trigger**. 2. Within the **Configure Trigger** step, click the **On-Demand Agent OS** trigger. 3. Under the **Choose Trigger** section, select the **Asset Sidebar** trigger. ![Asset\_Sidebar\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt59956035f8c992e9/668386420b1faa286adc03f6/Asset_Sidebar_Action.png) 4. On the **Asset Sidebar Configure Trigger** page, enter the details given below: 1. Select a **Stack** and **Branch** from the **Lookup** list. **Note:** You **cannot** configure a [Response](/docs/agent-os/response) connector with the On-Demand Agent OS trigger. ![Select\_Fields\_Asset\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt45ce36c4b58e913d/66838652b1132466c53a45c3/Select_Fields_Asset_Trigger.png) 2. Optionally, enable the **Show Optional Fields** toggle button to display the **Select Asset Type** field. You can select the type of asset (Image, Video, Audio, PDF, Plain Text, Document, Presentation, Spreadsheet) on which the On-Demand Automation App will appear. ![Select\_Asset\_Type\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt54096a2ceec9c0aa/6686788350a8ec5f52b665c6/Select_Asset_Type_Fields.png) 5. Click the **Proceed** button. 6. Click the **Test Trigger** button to test the configured trigger. 7. Click the **Save and Exit** button. ![Save\_Exit\_Asset\_Sidebar.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbdb8eddcaedebeb4/66838642b11324a6473a45bf/Save_Exit_Asset_Sidebar.png) **Note:** After successfully configuring a trigger, if you re-configure any other trigger, you will be prompted to revert to the previously configured trigger. You can revert back to the last trigger configurations by clicking the **Revert Changes** button. This completes the configuration of your **Asset Sidebar** trigger. #### Configure Action Step You can configure any action connector based on your configuration. For this guide, we are selecting **AWS S3** connector to create an object in the AWS bucket, when an automation is executed in the Asset Sidebar via the On-Demand Automation App. To configure an action step follow the steps below: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **AWS S3** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt53f9612683efc20e/6683898b5e288d95fca23b47/Select_Connector.png) 4. Under **Choose an Action** tab, select the **Create a New Object** action. ![Select\_Create\_an\_Object\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt649389ebc3748700/6683898be316342cb371e66b/Select_Create_an_Object_Action.png) 5. Click the **\+ Add New Account** button to add your AWS account. Refer to the [AWS S3 documentation](/docs/agent-os/aws-s3) to add a new account. 6. On the **Create a New Object Configure Action** page, you need to enter the following details: 1. Select the AWS **Bucket Name** from the **Lookup** list that appears when you click the textbox. The lookup drop-down loads the buckets already defined and present in your AWS account. 2. Enter the **File Name** (for example, File01) or/and any value from the values list. For this example, select the asset name fetched from the Asset Sidebar trigger. ![File\_Name.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc1078f564ad79d65/66866c0f62008a525310d474/File_Name.png) 3. In the **Source** dropdown, select the **Source** of the upload (Content or File URL) and the **Input Value** for each source. For this example, select the **Source** as **File URL** and select the file URL fetched from the Asset Sidebar trigger in the **Input URL** field. ![File\_URL.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta100a033fba6db66/66866c0fa4dbae118a4d91c8/File_URL.png) 4. Click the **Show Optional Fields** toggle button to enter the text for the **Tags** and **Metadata** optional fields. ![Show\_Optional\_Fields\_Create.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7cf3d005eddaf0ba/6683898bbbfa856f3ff86801/Show_Optional_Fields_Create.png) 7. Click **Proceed** after entering the details. 8. Click **Test Action** to test if the email sending was a success or not. 9. The email is queued and sent to the receiver’s email address. Click **Save and Exit**. ![Save\_Exit\_Create.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8b1c5656f21775a7/6683898a8887dcf65bd95ea8/Save_Exit_Create.png) Activate the automation by clicking the **Activate Automation** toggle button. ### Execute the Automation via On-Demand Automation App Once the automation is activated, you can check all the active automations in the On-Demand Automation App. To do so, follow the steps below: 1. Navigate to the On-Demand Automation App in the Assets page. 2. You will see a list of all the active automations. Click the “Execute icon” to execute the automation. ![Execut\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt85edcb3f9d95f1b0/67e26efc914c247ae84978a9/Execut_Icon.png) 3. Log into your AWS S3 account and see the list of files in the bucket. In the AWS account’s bucket, you can see the created file. ![AWS-Image.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt03586e2d5b45348e/66866c0f5a7e763dd51cd170/AWS-Image.png) --- ## URL: https://www.contentstack.com/docs/agent-os/pause --- title: "[Automations guides and connectors] - Pause" description: The Pause action connector lets you pause an existing automation. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/pause product: Automation Hub doc_type: connector-guide audience: - developers version: unknown last_updated: 2026-03-25 filename: pause.md --- # [Automations guides and connectors] - Pause This page explains how to use and configure the Pause action connector in Automation Hub. It is intended for developers setting up automation workflows and should be used when you need to pause an existing automation and optionally preserve properties from previous steps. ## Pause The Pause action connector lets you pause an existing automation. ## Set up the Pause Connector Perform the following steps to set up the Pause action connector: - Click **Configure Action Step** from the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the** Pause **connector. - Under **Choose an Action** tab, select the **Pause an Automation** action. - On the **Configure Action** page, simply click the **Proceed **button to pause an automation. - Click the **Show optional fields** toggle button to choose to **Preserve Properties Previous Steps** (i.e., use the previous step’s properties). You need to enter a **Property Name** for the trigger event and select a trigger **Value** from the output dropdown. Also, you can provide the **Sample of HTTP payload from Automation resume request** by entering the values in the **Query** and **Body** textboxes in JSON format only.**Note: **The **Pause** action can stop the workflow, but resuming it requires support from an external system. Because of this dependency, it is not well-suited for time-based triggers, as it introduces unnecessary complexity. - Click **Proceed**. - Check if the details are correct. If yes, click **Test Action**. - Once set, click **Save and Exit**. **Note**: You need to add a new action that will resume the automation by following the steps described in the respective action connector document. This sets up the **Pause** action connector. ## Common questions ### Does the Pause action resume the automation automatically? No. **Note: **The **Pause** action can stop the workflow, but resuming it requires support from an external system. ### Can I use Pause for time-based triggers? It is not well-suited for time-based triggers, as it introduces unnecessary complexity. ### Can I preserve properties from previous steps when pausing? Yes. Use the **Show optional fields** toggle button to choose to **Preserve Properties Previous Steps** (i.e., use the previous step’s properties). --- ## URL: https://www.contentstack.com/docs/agent-os/personalize --- title: "Personalize Connector" description: "Use the Personalize connector to automate the retrieval of audiences and experiences from Contentstack’s Personalize platform." url: "https://www.contentstack.com/docs/agent-os/personalize" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-27" filename: personalize.md --- # Personalize Connector Contentstack [Personalize](/docs/personalize/about-personalize) is an optimization engine designed to tailor content based on information gathered about user preferences. By using the logged observations, you can provide targeted content experiences in real time to your customers or audiences depending on their own preferences. Personalize offers two distinct types of experiences: * **Segmented Experience:** Used when you want to show a particular variation to the visitor based on demographics, referrers, and other relevant factors. * **A/B Test Experience:** Used when you want to measure the performance of multiple variations. Within experiences, you can create different Variants of content which you can use within the CMS Entries for Content Types. **Note:** Variant Groups in the CMS are equivalent to Experiences created in a Personalize project. You can create variants (entries) in the CMS for these Variant Groups. The Personalize connector lets you fetch the details of all the Audiences and Experiences created in your Personalize project. Details of each action are covered in their respective sections. ## What You Will Learn * How to connect your Personalize account to the connector. * How to set up the Personalize connector in a Configure Action Step. * How to configure each connector action to fetch audiences, experiences, and versions. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * A Personalize project with audiences and experiences * A connected Personalize account To use the Personalize connector, you must first add your account. To do so, follow the steps given below: ### Connect your Personalize Account 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Personalize** connector.![Select the Personalize connector](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta4f95eba2d182b52/66477249d4d02e94412ea5fe/Select_Connector.png) 4. Under **Choose an Action** tab, select any one action from the list. Here, we are selecting the **Get All Audiences** action.![Select the Get All Audiences action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt13130d60aa1da223/66f41100848c0a89806175f2/Get_All_Audiences_Action.png) 5. On the **Configure Action** page, click the **\+ Add New Account** to add your Personalize account.![Add a new Personalize account](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt669d4d1d9ac25f69/664773acb2e852c2d44513f6/Add_Account.png) 6. In the pop-up window, mark the checkboxes for all the OAuth permissions and then click the **Authorize** button.![Authorize OAuth permissions](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf496420cba6f1bd8/66477249d4d02e67e52ea5fa/Authorize_Account.png) 7. In the pop-up, select your organization to complete the authorization.![Select your organization](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt12017a380cdf6437/66477249dda14b7494dff0a7/Select_Organization.png) 8. In the pop-up that appears, view the module-specific access rights provided to the app. Click **Authorize** to complete authorization.![Authorize module-specific access rights](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf02285070ae2f6a1/66477249a3f9df01f9c105f0/Authorize_Organization.png) 9. Provide an Account Name and then click **Save**.![Name and save the account](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2f0fcc80d0639197/6647744c4ac76e724740f33b/Save.png) Once done, you can go ahead and set up your Personalize connector. ## Set up the Personalize Connector Perform the following steps to set up the Personalize connector: 1. From the left navigation panel, click **Configure Action Step**. 2. Then, click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Personalize** connector.![Select the Personalize connector](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta4f95eba2d182b52/66477249d4d02e94412ea5fe/Select_Connector.png) **Note:** You can sort and search the connector(s) based on the filter. 4. Under **Choose an Action**, you will see these actions: **Get All Audiences**, **Get All Experiences**, **Get All Versions**, **Get a Single Audience**, **Get a Single Experience**, and **Get Audience(s) of a Variant**.![Choose an Action list](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd394bce7ebdd9682/66f411003666b01f92badd41/Select_Actions.png) Let’s look at each of them in detail. ## Get All Audiences This action fetches the details of all the audiences from a Personalize project. 1. Under **Choose an Action** tab, select the **Get All Audiences** action. 2. On the **Get All Audiences Configure Action** page, enter the details given below: 1. Click **+ Add New Account** button to connect your Personalize account as shown in the [Connect your Personalize Account](#connect-your-personalize-account) step. 2. Select a **Project** from the **Lookup** list. 3. **\[Optional\]** Enable the **Show Optional Fields** toggle button to display the **Select Audiences** field.![Get All Audiences configuration fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfb3352c1a18d057f/66477220a3f9df4bbfc105ea/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test the Get All Audiences action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button.![Get All Audiences output, then Save and Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltec579e8c4a31f086/66477220a3f9dfa7b9c105e8/Save_Exit.png) ## Get All Experiences This action fetches the details of all the experiences from a Personalize project. 1. Under **Choose an Action** tab, select the **Get All Experiences** action. 2. On the **Get All Experiences Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Personalize account as shown in the [Connect your Personalize Account](#connect-your-personalize-account) step. 2. Select a **Project** from the **Lookup** list.![Get All Experiences configuration fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd9f0af8cf7b4f901/66477213342fb51b6f62c699/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action. ![Test the Get All Experiences action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button.![Get All Experiences output, then Save and Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfb9f32a44fd6eb49/66477213efc97aba284c04ee/Save_Exit.png) ## Get All Versions This action fetches the details of all the versions of an experience from a Personalize project. **Note:** By default, the audiences of the active version will be fetched. 1. Under **Choose an Action** tab, select the **Get All Versions** action. 2. On the **Get All Versions Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Personalize account as shown in the [Connect your Personalize Account](#connect-your-personalize-account) step. 2. Select a **Project** and **Experience** from the **Lookup** list. This will fetch all the versions of an experience.![Get All Versions configuration fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt47adfe0a835acd0b/66f410cc003e8e4da23f5d69/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action.![Test the Get All Versions action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button.![Get All Versions output, then Save and Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1a59aa1504d8eea2/66f410cc520e9c67ccb42ca5/Save_Exit.png) ## Get a Single Audience This action fetches the details of a single audience from a Personalize project. 1. Under **Choose an Action** tab, select the **Get a Single Audience** action. 2. On the **Get a Single Audience Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Personalize account as shown in the [Connect your Personalize Account](#connect-your-personalize-account) step. 2. Select a **Project** and an **Audience** from the **Lookup** list.![Get a Single Audience configuration fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7935f56922773e27/6647722dacadaf587d727d35/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action.![Test the Get a Single Audience action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button.![Get a Single Audience output, then Save and Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8012a4429c501b09/6647722dd4d02e7fbf2ea5f6/Save_Exit.png) ## Get a Single Experience This action fetches the details of a single experience from a Personalize project. 1. Under **Choose an Action** tab, select the **Get a Single Experience** action. 2. On the **Get a Single Experience Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Personalize account as shown in the [Connect your Personalize Account](#connect-your-personalize-account) step. 2. Select a **Project** and an **Experience** from the **Lookup** list.![Get a Single Experience configuration fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt22cc3627981c3a8d/6647723cefc97a85394c04f3/Select_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action.![Test the Get a Single Experience action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button.![Get a Single Experience output, then Save and Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt57b9a4d13b1bacb7/6647723c0a0de68a883146e6/Save_Exit.png) ## Get Audience(s) of a Variant This action fetches the details of all the audiences of a variant in a variant group. 1. Under **Choose an Action** tab, select the **Get Audience(s) of a Variant** action. 2. On the **Get Audience(s) of a Variant Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** button to connect your Personalize account as shown in the [Connect your Personalize Account](#connect-your-personalize-account) step. 2. Select a **Stack**, **Variant Group**, and **Variant** from the **Lookup** list.![Get Audience(s) of a Variant configuration fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9a32778daacdf43a/66f410eeee6d378b5ea75964/Select_Fields.png) 3. Optionally, enable the **Show Optional Fields** toggle to mark the **Fetch audiences of the draft version** checkbox. This will fetch the audiences defined in the draft version of the variant.![Enable Fetch audiences of the draft version](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt38b19ff7574571ea/66f410ee833cff293bebc7b7/Show_Optional_Fields.png) 3. Once done, click **Proceed**. 4. Click **Test Action** to test the configured action.![Test the Get Audience(s) of a Variant action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted501badbd9adbec/664765dd342fb5743062c5c6/Test_Action.png) 5. The output will be shown as below. Click the **Save and Exit** button.![Get Audience(s) of a Variant output, then Save and Exit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf271ea2023cf4913/66f410eee397230929391685/Save_Exit_Action.png) This sets the **Personalize** connector. ## Related Resources * [Personalize Management API: Get All Audiences](/docs/developers/apis/personalize-management-api/audiences#get-all-audiences) * [Personalize Management API: Get All Experiences](/docs/developers/apis/personalize-management-api/experiences#get-all-experiences) * [Personalize Management API: Get All Experience Versions](/docs/developers/apis/personalize-management-api/experiences#get-all-experience-versions) --- ## URL: https://www.contentstack.com/docs/agent-os/polaris-features --- title: "Polaris Features" description: "Explore Polaris feature, including context-aware intelligence, real CMS actions, preview-first updates, and enterprise-grade governance." url: "https://www.contentstack.com/docs/agent-os/polaris-features" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: polaris-features.md --- # Polaris Features **Note:**For access, please talk to our [Support](mailto:support@contentstack.com) team. Polaris is designed to streamline everyday CMS operations through context-aware intelligence and CMS automation features. By combining guided execution with enterprise-grade governance, Polaris reduces manual effort while ensuring safety, predictability, and control across Contentstack workflows. ## Context-Aware Intelligence Polaris automatically understands the **context of the page** you are working on and scopes every interaction accordingly. * Inherits context from entries, assets, and the Visual Editor * Understands content type schemas and field structures * Identifies selected elements in the Visual Editor * Eliminates the need for manual explanations or setup ## Real CMS Action Execution Polaris is built to perform **actual CMS operations**, not just generate suggestions. * Updates entry fields such as titles, descriptions, and structured content * Modifies asset metadata including titles, descriptions, tags, and folders * Applies changes directly using Contentstack APIs * Executes actions that mirror what users can do through the UI ## Preview-First Change Management Polaris uses **preview-first safeguards** for all write operations. * Clearly displays current values and proposed updates * Allows users to confirm or cancel changes * Prevents accidental or unintended modifications * Ensures transparency and user control ## Read vs. Write Action Separation Polaris clearly distinguishes between informational requests and data-modifying actions. * Read actions (queries, explanations, content inspection) execute immediately * Write actions (updates, edits, metadata changes) require confirmation * Prevents silent or implicit data changes ## Multi-Action Requests Polaris supports complex workflows through a single prompt. * Handles multiple field updates in one request * Supports bulk asset metadata changes * Validates each action independently * Presents all proposed changes in a unified preview ## Visual Editor Integration Polaris integrates directly with the [Visual Editor](/docs/headless-cms/about-visual-editor) for truly contextual editing. * Automatically understands the selected page element * Maps visual elements to underlying entries and fields * Applies updates with real-time visual feedback * Maintains preview and confirmation safeguards ## Permission-Aware Operations Polaris enforces the same governance model as the Contentstack CMS. * Uses the logged-in user’s credentials * Respects role-based, entry-level, and field-level permissions * Prevents unauthorized actions * Clearly explains permission-related failures ## Schema and Validation Awareness Before applying changes, Polaris validates every request against CMS structure. * Checks content type schemas * Ensures field compatibility * Prevents invalid or unsupported updates * Reduces schema-related errors ## Consistent Execution Model Polaris executes tasks in a structured, step-by-step manner. * Breaks requests into discrete CMS-backed operations * Validates permissions, schema, and data integrity * Applies changes only after successful validation and approval --- ## URL: https://www.contentstack.com/docs/agent-os/polaris-prompts --- title: Automations guides and connectors - Polaris Prompts description: Prompt engineering guidance and example prompts for Contentstack Polaris Chat in Agent OS. url: /agent-os/polaris-prompts product: Contentstack doc_type: guide audience: - developers - content-operations - administrators version: Early Access last_updated: 2026-04-08 filename: polaris-prompts.md --- # Automations guides and connectors - Polaris Prompts This page explains how to write effective prompts for Contentstack Polaris (Agent OS) and provides example prompts for common content operations workflows. It is intended for users working with Polaris Chat inside Contentstack who want better outcomes for content management, automation, and reporting. Polaris Prompts **Note:** **Agent OS** is currently in **Early Access**. Features may change and limitations may apply. We recommend using it in non-production environments until general availability. For more information, contact [support](mailto:support@contentstack.com). Prompt engineering is the practice of writing clear, purposeful instructions for **Contentstack Polaris** so it can accurately understand your intent and deliver the right outcomes. Well-designed prompts help you get more precise results when managing content, automating workflows, enriching entries, or generating insights across your Contentstack stack. ## Tips for Effective Polaris Prompts Here are quick reminders to boost prompt quality: - Break complex tasks into smaller pieces. - Mention relevant tools or APIs if needed. - Ask for explanations, not just output. ## Example Prompts for Content Operations Below are customized examples for common workflows you can perform using the Polaris Chat inside Contentstack: ### Entry operations **Explanation:** These prompts cover creation, improvement, translation, publication, and release planning, key content lifecycle operations in CMS workflows. **Examples:** - *Draft a new blog entry about the role of AI in content management.* - *Improve the tone and clarity of this blog entry to make it more engaging.* - *Translate this blog entry into French, keeping industry terminology accurate.* - *Publish this entry to the live environment.* - *Tag this entry for the next release cycle and add it to the upcoming release.* ### Asset operations **Explanation: **Good metadata improves search and accessibility; alt text should describe content clearly for both users and search engines. **Examples:** - *Update metadata for this image to include SEO-friendly tags.* - *Suggest three alternative alt text options for this image based on context.* ### Visual Editor operations **Explanation: **These prompts support marketing operations, from page design to content refinement. **Examples:** - *Create a landing page layout for an upcoming product Launch.* - *Shorten and sharpen the content on this page to improve readability.* ### User guidance **Explanation:** These questions extract instructional help and architectural guidance. **Examples:** - *How do I fetch entries in a specific locale using Contentstack APIs?* - *Review this content type and recommend improvements for structure and usability.* - *What’s the best way to model a blog content type in Contentstack?* ### Visualization **Explanation: **Visualization prompts help with reporting and decision support. **Examples:** - *Show a table of entries broken down by locale.* - *Create a chart comparing published vs. unpublished entries.* ## Common questions ### What is prompt engineering in the context of Contentstack Polaris? Prompt engineering is the practice of writing clear, purposeful instructions for **Contentstack Polaris** so it can accurately understand your intent and deliver the right outcomes. ### When should I break a prompt into smaller pieces? Break complex tasks into smaller pieces when you want to boost prompt quality and get more precise results. ### What kinds of workflows can Polaris prompts support? They can support entry operations, asset operations, Visual Editor operations, user guidance, and visualization for reporting and decision support. ### Should I use Agent OS in production? **Agent OS** is currently in **Early Access**. Features may change and limitations may apply, and it is recommended to use it in non-production environments until general availability. --- ## URL: https://www.contentstack.com/docs/agent-os/polaris-use-cases --- title: "Polaris Use Cases" description: "Explore common Polaris use cases in Contentstack, including schema generation, entry creation with Brand Kit, translation at scale, personalization, and campaign scheduling." url: "https://www.contentstack.com/docs/agent-os/polaris-use-cases" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: polaris-use-cases.md --- # Polaris Use Cases **Note:** For access, please talk to our [Support](mailto:support@contentstack.com) team. This page walks through five common Polaris use cases, covering the problem each solves, example prompts, and a step-by-step walkthrough of how Polaris plans, previews, and executes the request. * [Creating Content Models](#creating-content-models) * [Entry creation including Brand Kit](#entry-creation-including-brand-kit) * [Translation at scale](#translation-at-scale) * [Personalization at scale](#personalization-at-scale) * [Scheduling a campaign](#scheduling-a-campaign) ## Prerequisites * [Contentstack account](https://www.contentstack.com/login) * [Admin](/docs/headless-cms/types-of-roles#admin)/[Owner](/docs/headless-cms/types-of-roles#owner) access for the Contentstack stack * Polaris plan for your organization ## Creating Content Models Building a content model usually means translating a requirements doc or whiteboard sketch into fields, groups, and validations, one field at a time, inside the Content Type builder. With Polaris, you can describe the content type you need in plain language, and Polaris creates the content model for you. **Example prompts:** * _Model a content model for a blog post with a title, author reference, hero image, body, tags, and SEO fields._ * _Attach a website image and ask polaris to create a content model based on the image reference._ Let's look at the steps to build a **Content Model** using **Polaris**: ### Open a stack * Log in to your Contentstack [account](https://www.contentstack.com/login) and navigate to your [stack](/docs/headless-cms/about-stack). * Open the **Polaris** panel. * In the **Polaris** panel, describe the structure you want in plain language. In the prompt text box, click **+** to add an image. **Example:** Attach a website image. In the **Polaris** prompt enter, "Create a **Content Model** based on the attached image." Polaris enters a planning state. No changes are made to the content type at this stage. ### Review the preview Since this is a write operation, Polaris displays a preview showing the proposed fields, types, and structure before anything is created. **Note:** If your prompt is read-only, for example, asking Polaris to explain or review an existing schema, Polaris responds immediately in the panel without a preview or confirmation step. ### Confirm the update * Review the proposed fields and structure. * Click **Update** or **Create** to create or modify the content type. * Click **Cancel** to discard the proposed changes. ### Review the result Once confirmed, the content type reflects the new fields and structure and you can continue refining it with additional prompts or by editing fields directly. ## Entry Creation including Brand Kit Drafting entries often means writing copy from scratch, then editing it to match brand tone and terminology. Polaris can draft [entry](/docs/headless-cms/about-entries) content directly against the open content type schema, and align the content to your organization's Brand Kit, so tone, voice, and terminology stay consistent without a separate review pass. **Example prompts:** * _Draft a new blog entry about the role of AI in content management, following the_ _{{brand\_kit\_name}}_ _Brand Kit._ * _Improve the tone and clarity of this entry to make it more engaging and on-brand using_ _{{brand\_kit\_name}}__._ ### Open an entry context * Log in to your Contentstack [account](https://www.contentstack.com/login) and navigate to your stack. * Open the **Polaris** panel. * In the **Polaris** panel, describe the structure you want in plain language. **Example:** Draft a new blog entry for {{content\_model\_name}} about the role of AI in content management, following our {{brand\_kit\_name}} Brand Kit tone. Polaris identifies the relevant fields (title, body, summary, and so on), and prepares a write action. No changes are made to the entry at this stage. ### Review the preview Polaris displays the proposed content against each field, so you can compare it before anything is saved. **Note:** Read-only requests, such as asking Polaris to explain Brand Kit guidelines, execute immediately without a preview or confirmation step. ### Confirm the update * Review the drafted content. * Click **Update or Create** to apply it to the entry. * Click **Cancel** to discard it. ### Review the result The entry fields are populated with the drafted, Brand Kit aligned copy. The entry remains in draft state unless you publish it. Keep iterating on the draft with additional prompts until the tone lands. ## Translation at Scale Translating entries one field, one locale at a time does not scale once you are supporting multiple markets. Polaris can translate an entry into one or more locales in a single request, while preserving structure, formatting, and industry-specific terminology. **Example prompts:** * _Translate this blog entry into French, German, and Japanese, keeping industry terminology accurate._ * _Translate all text fields in this entry into Spanish._ ### Open an entry context * Log in to your Contentstack [account](https://www.contentstack.com/login) and navigate to your stack. * Open the **Polaris** panel. * In the **Polaris** prompt enter a prompt. **Example:** Translate this blog entry into French, German, and Japanese, keeping industry terminology accurate. **Note:** If your stack does not have the prompted locales, the entry will not be localized. You can add the locales via Polaris to your stack to translate the entry. Polaris identifies the translatable fields, determines the target locales, and prepares a write action for each locale. No locale versions are created at this stage. **Note:** Asking Polaris to review or explain an existing translation, rather than create one, is treated as a read-only action and returns a result immediately. ### Confirm the update * Review the translations for each locale. * Click **Update** or **Create** to apply them. * Click **Cancel** to discard any locale you do not want to save. ### Review the result The translated locale versions are populated with the new content. You can continue refining specific locales with follow-up prompts, for example, adjusting tone in just one language. ## Personalization at Scale Building personalized content variants for different audiences, regions, or segments is time-consuming when done manually for each variation. Polaris can generate and update audience-specific content variants for an entry, keeping the base content and each variant aligned to the same structure. **Example prompts:** * _Create a personalized version of this entry's hero copy for a first-time visitor audience._ * _Update the CTA text in this entry for three variants: new users, returning users, and enterprise buyers._ ### Open an entry context * Log in to your Contentstack [account](https://www.contentstack.com/login) and navigate to your stack. * Open the **Polaris** panel. Polaris receives the base entry content and any existing variant structure. * In the **Polaris** prompt enter a prompt. **Example:** Update the CTA text in this entry for three variants: new users, returning users, and enterprise buyers. Polaris identifies which fields need variant-specific content, and prepares a write action for each audience segment. No variants are created at this stage. **Review the preview** Polaris displays the proposed copy for each variant side-by-side with the base content, so you can compare tone and messaging before applying anything. **Note:** Asking Polaris to explain or compare existing variants, without requesting changes, is a read-only action and returns a result immediately. ### Confirm the update * Review each proposed variant. * Click **Update** or **Create** to apply the variants you want to keep. * Click **Cancel** to discard any you do not want to save. ### Review the result The entry now has updated content for each confirmed variant. You can keep adjusting individual segments with additional prompts, one variant at a time. ## Scheduling a Campaign Getting a campaign entry ready for launch usually involves several small tasks: setting publish and unpublish dates, tagging it for the right release, and assigning it to the correct environment. Polaris can handle these as one request, so a short instruction sets up the full schedule. **Example prompts:** * _Schedule this entry to publish next_ _**Monday**_ _at_ _**9 AM**_ _and unpublish two weeks later._ * _Tag this entry for the_ _**Q3 release**_ _and add it to the upcoming release._ * _Publish this entry to the_ _**staging**_ _environment now, and_ _**production**_ _next Friday._ ### Open an entry context * Log in to your Contentstack [account](https://www.contentstack.com/login) and navigate to your stack. * Open the **Polaris** panel. * In the **Polaris** prompt enter a prompt. **Example:** Schedule this entry to publish next Monday at 9 AM and unpublish two weeks later. Polaris interprets the dates and environments referenced, and prepares a write action covering the publish and unpublish schedule. No scheduling changes are made at this stage. ### Review the preview Polaris displays the proposed publish date, unpublish date, environment, and release assignment, so you can confirm the schedule is correct before it's applied. **Note:** Asking Polaris what an entry's current schedule is, without requesting a change, is a read-only action and returns a result immediately. ### Confirm the update * Review the proposed schedule. * Click **Update** or **Create** to apply it. * Click **Cancel** to discard it. ### Review the result The entry is scheduled according to the confirmed dates, environment, and release. You can continue adjusting the schedule with follow-up prompts at any time before it goes live. ## Best Practices * **Be specific about scope:** Naming the exact fields, locales, or variants you want updated reduces back-and-forth in the preview step. * **Break large requests into smaller ones:** For complex campaigns or multi-locale translations, confirming smaller batches makes it easier to catch issues early. * **Use read-only prompts to check before you commit:** Asking Polaris to explain or review first can validate your assumptions before you request a write action. * **Always review the preview:** Preview-first execution exists so you can catch unintended changes before they're applied, especially for multi-field or multi-locale updates. --- ## URL: https://www.contentstack.com/docs/agent-os/project-sharing --- title: "Project Sharing" description: "Learn how to share projects in Agent OS, manage access permissions, and collaborate effectively on automation workflows." url: "https://www.contentstack.com/docs/agent-os/project-sharing" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: project-sharing.md --- # Project Sharing By utilizing the Agent OS **Project Sharing** feature, organization owner, organization admins, and the respective project owner can invite various users to individual projects, facilitating collaboration. Previously, only owners/admins had the ability to access and modify all projects within Agent OS. However, with the Project Sharing feature, members can also participate as contributors in the specific project(s) they were invited to by the owner and admins of the organization. To invite any user, perform the following steps: 1. Log in to your [Contentstack account](https://www.contentstack.com/login/). 2. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list.![App\_switcher\_icon](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6290d7afc992eda9/6998761148bd410008f0963f/App_switcher_icon.png) 3. Go to your Agent OS project or [create](/docs/agent-os/managing-projects#create-a-project#create-a-project) a new one. 4. From the top navigation panel, click **Settings**. 5. In the **General** section, you can edit the **Project** **Name** and **Description**. You can also filter projects based on tags. These tags can help you filter the projects in the Search. If you use both a tag filter and the Project Search, then it gives a consolidated list of projects based on the search and tags. ![Settings\_icon](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0ea52a9d45bb8482/699875e8a8ff50000833143c/Settings_icon.png) 6. Click the **Save Changes** button. **Tip:** After a new member is added, they can edit the project details, such as Project Name and Description, and collaborate on the existing automations along with creating new automations. Shared users can also view Execution Log and Audit Log sections. ![Tags](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5fa7468b10ca65e2/699875e8697d920008a248d9/Tags.png) 7. Click **Users** in the left navigation panel. Select the email address of the user you want to invite for collaboration from the **Invite** **Users** drop-down. Click I**nvite Users**.![Invite\_Users](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt15d6c2c19648504e/699875e8da5d88000881ea00/Invite_Users.png) **Tip:** You can add multiple users by entering their email addresses. 8. The invited user receives an email invitation to collaborate on the project. After the user accepts the invitation, they can access the project and perform actions in the project. **Tip:** Invited members cannot delete any other user(s) in the project but can add other members in the project who are a part of that organization. 9. In the left navigation panel, click **Audit** **Log**. You will see the **Shared** action for the newly added member.![Audit\_log](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbc454c60143ddab2/699875e88923a00008498581/Audit_log.png) 10. Organization owner, admins, and project owner can remove the shared user. Click the **Delete** icon to remove the shared user.![Remove\_Icon](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4d926314d3511f1f/699875e8624a07000845f83a/Remove_Icon.png) --- ## URL: https://www.contentstack.com/docs/agent-os/pubnub --- title: Automations guides and connectors - PubNub description: Set up the PubNub action connector to send a message to a specified channel through your PubNub account. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/pubnub product: Contentstack doc_type: connector-guide audience: - developers - automation-builders version: latest last_updated: 2026-03-26 filename: pubnub.md --- # Automations guides and connectors - PubNub This page explains how to configure the PubNub connector in Contentstack Automations so you can send messages to a selected PubNub channel. It is intended for developers or automation builders setting up third-party action steps and should be used when integrating PubNub messaging into an automation workflow. ## PubNub PubNub is a realtime communication platform which makes products for developers to build real time web, mobile, and IoT applications. The PubNub connector will send a message to the specified channel through your PubNub account. ## Set Up PubNub Perform the following steps to set up the PubNub action connector: - Click **Configure Action Step** from the left navigation panel. - Click **Action Step **to configure third-party services. - Within the **Configure Action Step**, click the **PubNub** connector. - Under **Choose an Action** tab, select the **Send Message** action. - Click the **+ Add New Account** button to select your PubNub account. - Now, add the **Publish Key** and the **Subscribe Key** of your PubNub account to connect it with Contentstack. You can generate the Publish and Subscribe key by navigating to **Keysets** in your PubNub dashboard.Refer to the Application Setup document for more information. - Click the **Authorize** button. - Under the **Channel name** section, select the channel from your account where you want to send the message. - Write the message you want to send to the above channel in the **Message** box and then click the **Proceed** button. - Click **Test Action** to test the setup. In the output section, you can view the status of your action. - Once set, click **Save and Exit**. - You can check the **Debug console** section in your PubNub account and you will find the message in the channel you specified above. This completes the **PubNub** connector’s setup. ## Common questions ### What does the PubNub connector do? It sends a message to the specified channel through your PubNub account. ### Which keys are required to connect PubNub with Contentstack? You need the **Publish Key** and the **Subscribe Key** from your PubNub account. ### Where can I verify that the message was sent? You can check the **Debug console** section in your PubNub account and find the message in the channel you specified. ### What action should I select to send a message? Under **Choose an Action**, select the **Send Message** action. --- ## URL: https://www.contentstack.com/docs/agent-os/pusher --- title: Automations guides and connectors - Pusher description: Set up the Pusher action connector to send a message to a specified Pusher channel. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/pusher product: Contentstack doc_type: connector-guide audience: - developers version: v1 last_updated: 2026-03-26 filename: pusher.md --- # Automations guides and connectors - Pusher This page explains how to configure the Pusher action connector in Contentstack Automations to send messages to a selected Pusher channel. It is intended for developers or admins setting up third-party action steps and should be used when you want an automation to publish an event/message to Pusher. ## Pusher The Pusher action connector helps you to send a message to the specified Pusher channel. ## Set Up Pusher Perform the following steps to set up the Pusher action connector: - Click **Configure Action Step** from the left navigation panel. - Click **Action Step **to configure third-party services. - Within the **Configure Action Step**, click the **Pusher** connector. - Under **Choose an Action** tab, select the **Send Message** action. - Click the **+ Add New Account** button to select your Pusher account. - Now, add the **App ID**, **App Key**, **App Secret Key**, and the **Cluster** of your Pusher account to connect it with Contentstack. You can get your **App ID**, **App Key**, **App Secret Key**, and the **Cluster** details from your Pusher dashboard. **Additional Resource:** For more information, refer to the [Get your API Keys document](https://pusher.com/docs/channels/getting_started/javascript/?ref=sdk-quick-starts#get-your-free-api-keys). - Click the **Authorize** button. - Under the **Channel name** section, select the channel from your account where you want to send the message. - Now, enter the **Event Name** where you want to send the message. - Write the message you want to send in the **Message** box and then click the **Proceed** button. - Click **Test Action** to test the setup. In the output section, you can view the status of your action. Once set, click **Save and Exit**. - You can check the **Debug console** section in your Pusher account and you will find the message published in the event you specified above. This completes the **Pusher** Connector’s setup. ## Common questions **How do I find my App ID, App Key, App Secret Key, and Cluster?** You can get your **App ID**, **App Key**, **App Secret Key**, and the **Cluster** details from your Pusher dashboard. **What action should I select to send a message?** Under **Choose an Action** tab, select the **Send Message** action. **Where can I verify that the message was published?** You can check the **Debug console** section in your Pusher account and you will find the message published in the event you specified above. **Can I test the connector before saving?** Click **Test Action** to test the setup. In the output section, you can view the status of your action. Once set, click **Save and Exit**. --- ## URL: https://www.contentstack.com/docs/agent-os/response --- title: Automations guides and connectors - Response description: Documentation for the Response action connector in Automation Hub connectors, including setup steps and usage notes. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/response product: Automation Hub doc_type: connector-guide audience: - developers version: v1 last_updated: 2026-03-26 filename: response.md --- # Automations guides and connectors - Response This page explains what the Response action connector does and how to configure it. It is intended for developers setting up automations and should be used when you need to notify users about the success or failure of a configured action via a response. ## Response The Response action connector helps determine the status of your configured action. It notifies users about the success or failure of a configured action with a response. **Note:** The Response action connector can only be used with the HTTP trigger connector. ## Set up Response Perform the following steps to set up the Response action connector: - Click **Configure Action Step** from the left navigation panel. - Click **Action Step **to configure third-party services. - Within the **Configure Action Step**, click the **Response** connector. - Under **Choose an Action **tab, select the **Response** action. - Based on the results of your configured action, enter the **Response Status**. - In the **Response Body** field, you can add data that you want to send as the response. - Add** Response Headers** to provide any additional information. - Click **Proceed**. - To execute and test the configured action, click **Test Action**. - On successful configuration, you can see the below output. Click **Save and Exit**. You can check the response by activating automation and visiting the webhook URL you configured in the previous step. This sets the **Response** action connector. ## Common questions **How do I know if I can use the Response action connector with my automation?** The Response action connector can only be used with the HTTP trigger connector. **Where do I set the status returned by the Response action connector?** Based on the results of your configured action, enter the **Response Status**. **How can I verify the response after configuration?** You can check the response by activating automation and visiting the webhook URL you configured in the previous step. **What fields can I include in the response?** In the **Response Body** field, you can add data that you want to send as the response, and add** Response Headers** to provide any additional information. --- ## URL: https://www.contentstack.com/docs/agent-os/rte-formatter --- title: "[Automations guides and connectors] - RTE Formatter" description: The RTE Formatter action connector helps convert content within the JSON Rich Text Editor into HTML or text formats, and convert HTML RTE content into JSON. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/rte-formatter product: Automation Hub doc_type: connector-guide audience: - developers - automation-builders version: v1 last_updated: 2026-03-26 filename: rte-formatter.md --- # [Automations guides and connectors] - RTE Formatter This page explains how to set up and use the RTE Formatter action connector in Automation Hub to convert JSON Rich Text Editor (RTE) content to HTML or text, and to convert HTML RTE content into JSON. It is intended for developers and automation builders configuring action steps in automations where RTE content needs to be transformed. ## RTE Formatter The RTE Formatter action connector helps convert content within the JSON Rich Text Editor into HTML or text formats. Additionally, you can also convert HTML RTE content into JSON. **Note:** To configure this action, you must configure the trigger connector to fetch the entry's content. Add a JSON RTE field to the content type and add content to the entry. ## Set up RTE Formatter The RTE Formatter lets you perform the following actions: - [Format JSON RTE Content to HTML](#format-json-rte-content-to-html) - [Format JSON RTE Content to Text](#format-json-rte-content-to-text) - [Format HTML RTE Content to JSON](#format-html-rte-content-to-json) Let’s look at each of them in detail. ### Format JSON RTE Content to HTML This action lets you convert the content within the JSON RTE into HTML format. You can add multiple JSON RTE content to convert. - Click** Configure Action Step** from the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the** RTE Formatter** connector.**Note**: You can sort and search the connector(s) based on the filter. - Under **Choose an Action** tab, select the** Format JSON RTE Content to HTML** action. - Click the **+ Add JSON RTE Content** button to select the JSON RTE content you want to convert. You can mark the **Merge multiple RTE contents in a single array** checkbox to include all the JSON RTE content in a single array. - Click **Proceed**. - Click **Test Action **to test the configured action. - The content will appear in HTML format. Click **Save and Exit**. ### Format JSON RTE Content to Text This action lets you convert the content within the JSON RTE into text format. You can add multiple JSON RTE content to convert to text format. - Select the **Format JSON RTE Content to Text **action. - Click the **+ Add JSON RTE Content** button to select the JSON RTE content you want to convert. You can mark the **Merge multiple RTE contents in a single array** checkbox to include all the JSON RTE content in a single array. - Click **Proceed**. - Click **Test Action** to test the configured action. - The content will appear in Text format. Click **Save and Exit**. ### Format HTML RTE Content to JSON This action lets you convert the HTML RTE content into JSON. - Select the **Format HTML RTE Content to JSON **action. - Select the **HTML RTE Content **you want to convert.**Note: **Provide the content in HTML format. - Click **Proceed**. - Click **Test Action** to test the configured action. - The content will appear in JSON format. Click **Save and Exit**. This sets up the **RTE Formatter** action connector. ## Common questions ### Do I need to configure anything before using the RTE Formatter action connector? Yes. **Note:** To configure this action, you must configure the trigger connector to fetch the entry's content. Add a JSON RTE field to the content type and add content to the entry. ### Can I convert multiple JSON RTE contents at once? Yes. You can add multiple JSON RTE content to convert, and you can mark the **Merge multiple RTE contents in a single array** checkbox to include all the JSON RTE content in a single array. ### What formats can the RTE Formatter convert between? It can convert JSON RTE content to HTML, JSON RTE content to text, and HTML RTE content to JSON. ### Where do I see the output after testing the action? After you click **Test Action**, the content will appear in the selected output format (HTML, Text, or JSON), and you can then click **Save and Exit**. --- ## URL: https://www.contentstack.com/docs/agent-os/salesforce-commerce-cloud --- title: "Salesforce Commerce Cloud" description: "Use this connector to fetch product details stored in your Salesforce Commerce Cloud platform." url: "https://www.contentstack.com/docs/agent-os/salesforce-commerce-cloud" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: salesforce-commerce-cloud.md --- # Salesforce Commerce Cloud Salesforce Commerce Cloud is a cloud-based platform that helps you with sales, marketing, and cloud services to enhance your customer experience. This action connector lets you retrieve product details from your Salesforce Commerce Cloud platform. ## Set up the Salesforce Commerce Cloud Connector Perform the following steps to set up the Salesforce Commerce Cloud action connector: 1. Within the **Configure Action Step**, click the **Salesforce Commerce Cloud** connector. ![Salesforce\_commerce\_cloud.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2e7f898bee81587e/6527f8d6a0980fec28edeada/Salesforce_commerce_cloud.png) 2. Under **Choose an Action** tab, select the **Get Product Details** action. ![Select\_the\_get\_product\_Details\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6952fe6eb70812c3/64e5dded0818cce6cc16117c/Select_the-Action.png) 3. In the **Configure Action** tab, click **\+ Add New Account** to add your Salesforce Commerce Cloud account. ![Add\_New\_Account](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2dbee143bcb145e2/64e5ddec29a5142c2e94d6d0/Add_new_Account.png) 4. In the **Authorize** pop-up window, provide the **Organization ID**, **Site ID**, **Short Code**, **Client ID**, and **Client Secret**. To generate the above details, log in to the Salesforce Commerce Cloud dashboard and perform the following steps: 1. To generate Organization ID and Short Code, click **Administration** \-> **Site Development** \-> **Salesforce Commerce API Settings** -> Copy the Organization ID and Short Code. 2. To fetch the Site ID, click **Administration** \-> **Sites** \-> **Manage Sites** \-> Copy the Site ID of the respective site. 3. To generate the **Client ID** and **Client Secret**, refer to our [Salesforce Commerce](/docs/marketplace/salesforce-commerce#retrieve-your-client-credentials-from-salesforce-commerce) documentation. 5. Once done, click **Authorize**. ![Click\_the\_Authorize\_Button](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltee66cc9e7d6c86ce/64e5ddec66f1ff32902f4ed7/Click_the_Authorize_button.png) **Note:** Contentstack Marketplace offers a [Salesforce Commerce](/docs/marketplace/salesforce-commerce) app for its users, so they can fetch the products into their Contentstack CMS entry. With the Salesforce Commerce Cloud connector, you can fetch the product details from your Salesforce Commerce Cloud account and use it within your entry. 6. Select the **Product Category** based on your preferred site to fetch the product details. 7. Select the **Product ID** to fetch the product details. ![Select\_Different\_Fields](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc1e3c9247e5107c3/64e5ddec37cf46271213c2fd/Select_Different_Fields.png) 8. Enable the **Show optional fields** toggle button to display the **Product Parameter(s)** field to fetch specific details of a product. Click the checkboxes to fetch the image model and the price details of the product. The first checkbox will fetch the _Image Model_ for the product, i.e. the entire collection of the images for that product along with the details and the second checkbox will fetch the price for each product based on the price book. **Note:** You can enter only predefined values in the Product Parameter(s) field. Refer to the [Reference](https://developer.salesforce.com/docs/commerce/commerce-api/references/shopper-products?meta=getProduct) document to learn more. ![Salesforce\_SHow\_optional\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8a057aa5871f7d00/64f827e1dc21171643c2f070/Salesforce_SHow_optional_Field.png) 9. Click the **Proceed** button. 10. To execute and test the configured action, click the **Test Action** button. ![Test\_Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt26aa8731d19b512b/64e5ddedae976690210cb8c0/Test_Action.png) 11. On successful configuration, you can see the below output. Click the **Save and Exit** button. ![save\_and\_Exit\_Button](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt11cf70790487e255/64e5dded29a062c9aeb80281/Save_and_Exit.png) This sets the **Salesforce Commerce Cloud** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/scheduler --- title: "[Automations guides and connectors] - Scheduler by Automate" description: Guide for using the Scheduler by Automate connector to configure timed automation triggers, intervals, and execution parameters. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/scheduler-by-automation-hub product: Automate doc_type: guide audience: - developers - automation-builders version: unknown last_updated: 2026-03-25 filename: scheduler.md --- # [Automations guides and connectors] - Scheduler by Automate This page explains how to use the Scheduler by Automate connector to set up timed automation triggers with different interval options (Minutes, Hours, Days, Weeks, Months, and Custom/Cron). It is intended for users configuring automation triggers and should be used when you need to run actions on a schedule. ## Scheduler by Automate Setting up timed automations is essential for streamlining repetitive tasks. This guide walks you through using the Scheduler by Automate to configure automation triggers, define time intervals, and customize execution parameters. Whether you are scheduling actions to run every minute, hour, or day, this guide provides clear instructions to ensure your automations are set up effectively. ## Set up the Scheduler by Automate Trigger Perform the following steps to configure the Scheduler by Automate trigger: - Click **Configure** **Trigger** from the left navigation panel. - Within the **Configure Trigger** step, click the **Scheduler by Automate** connector. - Under the **Choose** **Trigger** tab, select the **Scheduler by Automate** trigger. This allows you to schedule the activation time for your trigger event. - On the **Scheduler by Automate Configure Trigger** page, enter the details given below: **Time Zone:** Enter a time zone. By default, **Etc/UTC **is selected. - **Trigger Interval:** Select the time interval unit to define the interval for scheduling the trigger. Options include **Minutes**, **Hours**, **Days**, **Weeks**, **Months**, and **Custom (Cron)**.**Note:** By default, the interval is set to **Minutes**. ### When the user selects Minutes Trigger Interval Select **Minutes** from the **Trigger** **Interval** drop-down. - In the **Minutes** **Interval** field, enter the interval in minutes between each trigger.For example, entering **1** will schedule the trigger to run every **1** **minute**. - Optionally, enable the **Show** **Optional** **Fields** toggle button to view the **Metadata** field. Enter custom data that will be accessible during the automation process. ### When the user selects Hours Trigger Interval - Select **Hours** from the **Trigger** **Interval** drop-down. - In the **Hours Interval** field, enter the interval in hours between each trigger.For example, entering **1** will schedule the trigger to run every **1 hour**. - Optionally, enable the** Show Optional Fields** toggle button to view the **Trigger** **at** **Minute** and **Metadata** fields. In the **Trigger at Minute** field, enter the minute** (0–59) **past the hour when the trigger should run. In the **Metadata** field, provide the data to be accessed while the automation runs. For example, setting **6** for **Hours** **Interval** and **30** for **Trigger** **at** **Minute** schedules the trigger to execute** every 6 hours at 30 minutes past the hour**. ### When the user selects Days Trigger Interval - Select **Days** from the **Trigger** **Interval** drop-down. - In the **Days** **Interval** field, enter the interval in days between each trigger.For example, entering **1** will schedule the trigger to run every **1 day**. - Optionally, enable the **Show Optional Fields **toggle button to view the **Trigger at Hour**, **Trigger at Minute**, and **Metadata** fields.In the **Trigger at Hour** field, select the hour of the day to run the trigger, i.e., 1 am, 2 am, etc. Enter the minute** (0–59)** past the hour when the trigger should run in the **Trigger** **at** **Minute** field. In the **Metadata **field, provide the data to be accessed while the automation runs. For example, setting **2** for **Days** Interval, **9 am** for **Trigger at Hour**, and **15** for **Trigger at Minute** schedules the trigger to run **every 2 days at 9:15 am**. ### When the user selects Weeks Trigger Interval - Select **Weeks** from the **Trigger** Interval drop-down. - In the **Trigger on Day of the Week** field, select the days of the week to run the trigger. You can add multiple days by clicking the** + Add Trigger on Day of the Week** button.For example, selecting **Sunday** will schedule the trigger to run **every** **Sunday**. - Optionally, enable the **Show Optional Fields** toggle button to view the **Trigger at Hour**, **Trigger at Minute**, and **Metadata** fields.In the **Trigger at Hour **field, select the hour of the day to run the trigger, i.e., 1 am, 2 am, etc. Enter the minute **(0–59)** past the hour when the trigger should run in the **Trigger at Minute** field. In the **Metadata** field, provide the data to be accessed while the automation runs. For example, selecting **Monday** for **Trigger on Day of Week**, **3** **pm** for **Trigger** **at** **Hour**, and **30** for **Trigger at Minute** schedules the trigger to run **weekly on Mondays at 3:30 pm**. ### When the user selects Months Trigger Interval - Select **Months** from the **Trigger** **Interval** drop-down. - In the **Months** **Interval** field, enter the interval in months for the trigger.For example, entering **1** will schedule the trigger to run every **1** **month**. - Optionally, enable the **Show Optional Fields** toggle button to view the **Trigger at Day of Month**, **Trigger** **at** **Hour**, **Trigger** **at** **Minute**, and **Metadata** fields.In the **Trigger at Day of Month** field, enter the day of the month (1–31) for the trigger. If the day does not exist in a month, the trigger will not run (for example, **30** will **not** run in **February**). In the **Trigger** **at** **Hour** field, select the hour of the day to run the trigger, i.e., 1 am, 2 am, etc. Enter the minute **(0–59)** past the hour when the trigger should run in the **Trigger** **at** **Minute** field. In the **Metadata** field, provide the data to be accessed while the automation runs. For example, setting **3** for **Months** **Interval**, **28** for **Trigger at Day of Month**, **9 am **for **Trigger** **at** **Hour**, and **0** for **Trigger** **at** **Minute** schedules the trigger to run every **3 months on the 28th day at 9:00 am**. ### When the user selects Custom (Cron) Trigger Interval - **Unix Cron Format: **0 */6 * * * (this means the trigger event is to be activated every 6 hours). For examples on Unix Cron format values, check the [Crontab guru | Cron Examples](https://crontab.guru/examples.html) page.Refer the below table for more details on the Unix Cron format: | Cron Format | Field Name | Allowed Names | | --- | --- | --- | | ********* | minute | 0-59 | | ********* | hour | 0-23 | | ********* | day of month | 1-31 | | ********* | month | The months of the year can be represented numerically from 1 to 12, where 1 is January, 2 is February, and so on. They can also be represented as three-character strings in uppercase, lowercase, or mixed-case formats based on their English names: JAN, jan, Jan; FEB, feb, Feb, etc. | | ********* | day of week | The days of the week can be represented numerically from 0 to 7, where 0 or 7 is Sunday, 1 is Monday, and so on. They can also be represented as three-character strings in uppercase, lowercase, or mixed-case formats based on their English names: MON, mon, Mon; TUE, tue, Tue, etc. | **Additional Resource:** For more information, refer to the [Cron job format and time zone](https://cloud.google.com/scheduler/docs/configuring/cron-job-schedules) document. - Optionally, enable the** Show Optional Fields** toggle button, to display the **Metadata** field. Metadata can be utilized during the execution of automation. - Click the **Proceed** button. - Click the **Test Trigger** button to test the configured trigger. - Click the **Save** **and** **Exit** button. **Note:** After configuring the trigger, reconfiguring another trigger will prompt you to revert to the previous trigger configuration. You can restore the last configuration by clicking the Revert Changes button. This sets up your **Scheduler** **by** **Automate** trigger. ## Common questions ### What trigger interval options are available in Scheduler by Automate? Minutes, Hours, Days, Weeks, Months, and Custom (Cron). ### What is the default time zone and default interval? By default, **Etc/UTC **is selected for **Time Zone**, and the interval is set to **Minutes**. ### What is the Metadata field used for? Metadata can be utilized during the execution of automation and will be accessible during the automation process. ### What happens if I reconfigure another trigger after setting this one up? Reconfiguring another trigger will prompt you to revert to the previous trigger configuration, and you can restore the last configuration by clicking the Revert Changes button. --- ## URL: https://www.contentstack.com/docs/agent-os/send-newly-transformed-data-via-email --- title: "Send Newly Transformed Data via Email" description: "Use Automations to transform JSON data with modifiers like capitalize and send the result via email using an automation workflow." url: "https://www.contentstack.com/docs/agent-os/send-newly-transformed-data-via-email" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: send-newly-transformed-data-via-email.md --- # Send Newly Transformed Data via Email In this use case, we will cover a scenario where, if a user creates a new entry in Contentstack, automations should be able to transform the input data as per the transform modifier. You can use different transform modifiers such as camelCase, capitalize etc., to modify your final output. Let's break this scenario to see what must be the trigger event and the consequent action required to execute the automation: * **Set up the Contentstack “Entry Created” Trigger Event:** This trigger event is activated whenever a user creates a new entry for a particular stack, and in turn, it activates the automation. * **Set up the Transform Action:** Once the above event triggers the automations, it will modify the JSON code passed in the transformation box. * **Set up the Email by Agent OS “Email by Agent OS” Action:** Once the Transform action is completed, you can post the transformed JSON data to Email by Agent OS. Let’s look at the setup in detail. 1. ## Create an Automation To create an automation, perform the steps given below: 1. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list. ![App\_Switcher\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6811114493828fe1/699d4a4d2664c800089242e0/App_Switcher_Icon.png) 2. Go to your project or click **\+ New Project** to add a new project. Enter a **Project Name** and an optional **Description**. 3. In the top navigation click **Automations**. Then, click **\+ New Automation**. From the dropdown, click **Create New** to add the steps required to configure the automation. Next, let’s look at the steps to set up the trigger event. 2. ## Set up the Contentstack Trigger Event 1. Click **Configure Trigger** from the left navigation panel. ![Configure\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd3ec928ac8fa3c46/699d4eae2664c800089242f4/Configure_Trigger.png) 2. Within the **Configure Trigger** step, click the **Contentstack** connector. ![Select\_Contentstack\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfbc23497efdaa935/699d4a46133ed700086b121d/Select_Contentstack_Trigger.png) 3. Add your [Contentstack account](https://app.contentstack.com/#!/login). For more information, refer to the [Contentstack Trigger](/docs/agent-os/contentstack-trigger/) documentation. 4. Once done, select **Entry Created** from the list of trigger events and define the rest of the steps needed to set up the trigger (refer **steps 3 to 12** in [Contentstack Trigger](/docs/agent-os/contentstack-trigger/)).![Select\_CS\_Trigger\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt67fc7ce28ff2b12d/699d4eaeb88caa00080c274b/Select_CS_Trigger_Fields.png) 5. Click **Test Trigger** to execute and test the trigger that you configured. 3. ## Set up your Transform Action Connector Let’s configure the Transform action connector. 1. Click **Configure Action Step** from the left navigation panel. ![Configure\_Action\_Step.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf8d238df2fe04eab/699d4ead973a3b00089af25b/Configure_Action_Step.png) 2. Click **Action Step** to configure third-party services. ![Action\_Step.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta9edf00a0bbb00c9/699d4eadf70ac4000881ee86/Action_Step.png) 3. Within the **Configure Action Step**, click the **Transform** connector. **Note:** You can sort and search the connector(s) based on the filter. ![Transform\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9ac52cb0981409b0/699d4eb42664c800089242f8/Transform_Connector.png) 4. Select the **Transform** action. ![Select\_Transform\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt71aaa489a99ff4bb/699d4eb4f70ac4000881ee8a/Select_Transform_Action.png) 5. Click **Add Input**, and enter a variable name for the **Input Name** (say, “name”) and an **Input Value** for the variable (say, “john” in lowercase letters) (see screenshot in next step). **Note**: You can even pass the value directly into the **Transformation** box. 6. Let’s enter the JSON code that uses the “capitalize()” modifier in the Transformation box. Use the following code:{“result” : “{capitalize(name)}” } **Note:** You can use the data received from the trigger instead of manually adding the values. ![Transform\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf5cdecb678091354/699d4eb4a9f58400085a6a58/Transform_Fields.png) 7. Click **Proceed**. 8. Click **Test Action** to execute the JSON code. 9. You should see the output with the first letter capitalized. Click **Save and Exit** for the Transform process flow. ![Save\_Exit\_Transform.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7fd4b599b5001e77/699d4eae76a08e0008728460/Save_Exit_Transform.png) This sets the **Transform** action connector. 4. ## Test the Automation Now, let’s see how you can test out your Automation. To do so, perform the steps given below: 1. Go to Contentstack and [create an entry](/docs/headless-cms/create-an-entry/) for the content type that you selected in your trigger event in Step 2. This should trigger your Automation. 2. To post the JSON data by sending an email through the Email by Automate action connector: 1. Click **\+ Add New Step**. Click **Action Step** to configure third-party services. 2. Within the **Configure Action Step**, click the **Email by Agent OS** connector. ![Select\_Email\_by\_Automate\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3ee6c45bc22f8f1b/699d4eae973a3b00089af25f/Select_Email_by_Automate_Connector.png) 3. Select the **Email by Agent OS** action. ![Select\_Email\_By\_Agent\_OS.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt06e8b16c35034205/699d4eae9bb7a20008e77274/Select_Email_By_Agent_OS.png) 4. In the **Configure Action** tab, enter the following details: 1. Email address of the recipient 2. The **Subject** for the email. 3. Under the **Body Type** field, enter the type. 4. Add the email content within the **Body** field. 5. Additionally you can add optional fields such as the “CC” and “BCC” email addresses. **Note:** You can use the output from the transform action and send it to your email. ![Email\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt339c1a645890c520/699d4eae248dc9000882b386/Email_Fields.png) 5. Click **Proceed.** 6. To execute and test the configured action, click **Test Action**. 7. The email is queued and sent to the recipient’s email address. Click **Save and Exit**. ![Save\_Exit\_Email\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt227c5050e5aaf00c/699d4eae6c2cd90008edcc4b/Save_Exit_Email_Button.png) 8. To check the email, navigate to your inbox. ![Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte737017cea61578d/699d4eaef3d8950008a1dee6/Output.png) --- ## URL: https://www.contentstack.com/docs/agent-os/sendgrid --- title: "SendGrid" description: "SendGrid" url: "https://www.contentstack.com/docs/agent-os/sendgrid" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: sendgrid.md --- # SendGrid SendGrid is a communication platform used for sending transactional and marketing emails. ## Set Up SendGrid Perform the following steps to set up the SendGrid action connector: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **SendGrid** connector. ![Sendgrid.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt145c5b9c9ae8b5c8/6527f8e169ac257a41176c58/Sendgrid.png) 4. Under **Choose an Action** tab, select the **Send Email** action.  ![Select-Action](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5f097179293e2fb3/63db9d4814a2b44fa11dec62/Select-Action.png) 5. Click the **\+ Add New Account** button to set up your SendGrid account (see screenshot in next step). ![Add-Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt369c6870cf7b0c43/63db9d470b15864e35bded0d/Add-Account.png) 6. In the Authorize modal, enter a **Title** for your connection and your SendGrid account API Key. Then click **Authorize**. For more information, refer to the [How to create an API key](https://www.twilio.com/docs/sendgrid/ui/account-and-settings/api-keys) document.  ![Authorize.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt30f1beb47bf3801d/63db9d47d0a39b6b6a9bd8aa/Authorize.png) 7. On the **Configure Action** page, enter the **From** and **To** email address, the **Subject** line, the **Body Type**, and the **Body** of the email.  ![Select-Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4ea4c43c7ce703a3/63db9d4786b8be36ce831d65/Select-Fields.png) 8. Click the **Show optional fields** toggle switch to view and enter the “CC” and “BCC” email addresses. 9. Click **Proceed.** 10. Check if the details are correct. If yes, click **Test Action**. ![Test-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7466e3d7cc3494f8/63db9d48c338484e3b194cc9/Test-Action.png) 11. Once set, click **Save and Exit**. ![Save-Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltafd0219ba36df178/63db9d48e69a581225555005/Save-Exit.png) You can check the email in the receiver’s email account to verify the action. This sets up the **SendGrid** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/slack --- title: Automations guides and connectors - Slack description: Set up the Slack action connector to send messages to a specific Slack channel. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/slack product: Automation Hub doc_type: connector-guide audience: - developers - administrators version: v1 last_updated: 2026-03-26 filename: slack.md --- # Automations guides and connectors - Slack This page explains what the Slack connector is and how to set up the Slack action connector (Send Message). It is intended for users configuring automation actions that post messages to Slack channels, and should be used when adding and authorizing a Slack account for an automation workflow. ## Slack Slack is a business communication platform used to communicate between corporate team members. ## Set Up Slack Perform the following steps to set up the Slack action connector: - In the **Configure Action** section, click the **Slack** connector. - Select the action listed under Slack i.e., **Send Message**. This action will send a message to a specific Slack channel. - In the **Configure Action** tab, click on **+ Add New Account** to add your Slack account. - Select a way to add a new account. You can authenticate your account in two ways; **Slack ****OAuth **or **Slack ****Bot ****Token**. Click **Proceed**. For **Slack ****Bot ****Token**, enter a **Title **and the **Slack ****Bot ****Token **retrieved from your Slack account. Click **Authorize.** To create a new bot token, follow these steps: Navigate to [Slack account](https://api.slack.com). - Login to your organization. Click **Your ****Apps **to create a new app. - Navigate inside your app and click **OAuth ****& ****Permissions**. - Copy the **Bot User OAuth Token**. You **must **have the required authorization from your organization to use the OAuth token. - For Slack OAuth, you will see a list of permissions that you can choose to **Authorize**. - Next, you will see a window open with access requests from the app. Click **Allow** to proceed further. - Enter a **Title** for this account, say “Allow-Slack-access,” and click **Save**. - Next, click on the **Channel** textbox and select a channel from the **LOOKUP** list that contains all the channels in your Slack account. Click **Load More** until you locate your channel. - Click the **Message** textbox and select the parameter you want to include in your message that will be sent to the selected Slack channel. For example, we will draft this: “1.query.name has sent a GET/POST request”. - Optionally, enable the **Show optional fields** toggle button to display the **Username **and **Icon ****URL **fields. **Username **and **Icon ****URL **fields can **only **be used while using Slack Bot Token. If you prefer not to send a message that displays your name on Slack, you can authorize your account via Slack Bot Token and provide a suitable **Username **and **Icon ****URL **to send a slack message. **Note:** If you use Slack OAuth, **Username **and **Icon ****URL **will not be visible in the output. - Once done, click **Proceed.** - Finally, you can test the configuration you set up by clicking the **Test Action** button. The output shows the message that will be sent on the linked Slack channel. Click **Save and Continue**. Check your Slack channel. You will see the message delivered to the Slack channel as below: This sets up the **Slack** action connector. ## Common questions ### Which Slack authentication methods are supported? You can authenticate your account in two ways; **Slack OAuth** or **Slack Bot Token**. ### When can I use the Username and Icon URL fields? **Username** and **Icon URL** fields can **only** be used while using Slack Bot Token. ### What does the Send Message action do? **Send Message** sends a message to a specific Slack channel. ### How do I verify the connector configuration works? You can test the configuration you set up by clicking the **Test Action** button, then check your Slack channel for the delivered message. --- ## URL: https://www.contentstack.com/docs/agent-os/smartling --- title: "Smartling" description: "Use this connector to add and translate content from your Smartling account." url: "https://www.contentstack.com/docs/agent-os/smartling" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: smartling.md --- # Smartling Smartling is one of the most widely used cloud-based language translation platforms. It helps you to localize content across different digital properties. The Smartling Connector enables you to add content for translation and download the translated content from your Smartling project. ## Set up Smartling Perform the following steps to set up the Smartling action connector: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Smartling** connector. ![Smartlin.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte58a0d029042a9bf/6527f8e15a3045c1bb005acb/Smartlin.png) 4. Under **Choose an Action** tab, you will see two actions: 1. **Add Content to a Project**: This action helps you send data to your Smartling project for translation. 2. **Download Translated Content**: This action helps you download the translated content from your Smartling project. Let's take the first example of the **Download Translated Content** action to download the translated content from your **Smartling** project. Action 1: Select the **Download Translated Content** action: ![Smartling-Action-Download.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt47eae5a232b3d69c/63dcad273d81ee204e8c4c28/Smartling-Action-Download.png) 1. Click the **\+ Add New Account** button to set up your Smartling account (see screenshot in next step). ![Smartling-Action-Download-Add-New-Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2ef18ea8718cdbd6/63dcad27040e3e388a964bcb/Smartling-Action-Download-Add-New-Account.png) 2. In the **Authorize modal**, enter the **Title**, **User Identifier**, **User Secret ID**, and **Account UID** of your Smartling account. You can create the **User Secret ID** and **Account UID** by navigating through **Account Settings** > **API** > **Create Token** in your Smartling account. ![API-Key.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt5be7056ca0ebd893/634e814b6a938c238802b790/API-Key.png) **Additional Resource:** Refer to the [Integrating Smartling Guide](https://help.smartling.com/hc/en-us/articles/115004187694-API-Tokens-) for more details. Then, click **Authorize**. ![Smartling-Action-Authorize.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7bb4bf25e4a5155f/63dcad2786b8be36ce832086/Smartling-Action-Authorize.png)6. On the **Configure Action** page, enter the following details while configuring the action: 1. **Project ID**: Select the Smartling project ID from the Lookup drop-down. 2. **Locale to Download**: Select the locale in which you want the content to be downloaded. 3. **File URI**: Enter the file url/path to invoke the download action. ![Smartling-Action-Download-Configure-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6b5bd86294860143/63dcad267ccfaf4bc687f03c/Smartling-Action-Download-Configure-Action.png) 7. Click **Proceed**. 8. You will see the input values which you have configured in the **Configure Action** modal. ![Smartling-Action-Download-Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2fb31367e05e2437/63dcad2711a22c0d982328f4/Smartling-Action-Download-Input.png) 9. Check if the details are correct. If yes, click **Test Action**. ![Smartling-Test-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt105722368964d803/63dcad2d45febe7be9212883/Smartling-Test-Action.png) 10. Once set, click **Save and Exit**. Action 2: Select the **Add Content to a Project** action: ![Smartling-Action-Add-Content.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt12a8f947d322fbed/63dcad26ef38d05093a9a187/Smartling-Action-Add-Content.png) 1. Click the **\+ Add New Account** button to set up your Smartling account (see screenshot in next step). ![Smartling-Action-Add-Add-New-Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt88ca1799f1639f28/63dcad2614a2b44fa11def3c/Smartling-Action-Add-Add-New-Account.png) 2. In the **Authorize modal**, enter the **Title**, **User Identifier**, **User Secret ID**, and **Account UID** of your Smartling account. You can create the **User Secret ID** and **Account UID** by navigating through **Account Settings** > **API** > **Create Token** in your Smartling account. ![API-Key.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt5be7056ca0ebd893/634e814b6a938c238802b790/API-Key.png) **Additional Resource:** Refer to the [Integrating Smartling Guide](https://help.smartling.com/hc/en-us/articles/115004187694-API-Tokens-) for more details. Then, click **Authorize**. ![Smartling-Action-Authorize.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7bb4bf25e4a5155f/63dcad2786b8be36ce832086/Smartling-Action-Authorize.png)6. On the **Configure Action** page, enter the following details while configuring the action: 1. **Project ID**: Select the Smartling project ID from the Lookup drop-down. 2. **Locale**: Select the locale in which you want to translate the content from the list of locales fetched from your Smartling project. 3. **Contents**: Add the content you want Smartling to translate. 4. **Callback URL**: Mention the callback URL for Smartling to invoke when the translation is completed. ![Smartling-Action-Add-Configure-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9892b5b065580a1e/63dcad2683cdf64d44f74f1a/Smartling-Action-Add-Configure-Action.png) 7. Click **Proceed**. 8. You will see the input values which you have configured in the **Configure Action** modal. ![Smartling-Action-Add-Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8be257369ddefd03/63dcad2686b8be36ce832082/Smartling-Action-Add-Input.png) 9. Check if the details are correct. If yes, click **Test Action**. ![Smartling-Test-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt105722368964d803/63dcad2d45febe7be9212883/Smartling-Test-Action.png) 10. Once set, click **Save and Exit**. To use the Pause connector to store the output from the previous action and use it as the input to download the translated content from the same project, refer to the [Pause Connector](/docs/agent-os/pause) documentation This completes the setup for **Smartling** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/sub-automation-action --- title: "Sub Automation Action" description: "Use this action to fetch the sub automation created in a project." url: "https://www.contentstack.com/docs/agent-os/sub-automation-action" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: sub-automation-action.md --- # Sub Automation Action A sub automation involves creating smaller, specialized automation tasks as part of a larger automation process. These sub automations help break down complex tasks into more manageable steps, making it easier to design, implement, and maintain the overall automation process. The Automate Sub Automation action connector lets you fetch the sub automation created in a project. This can be useful while working with the ChatGPT based [Function Calling](/docs/agent-os/chatgpt#action-4-select-the-function-calling-action) action. ## Set up the Sub Automation Action Perform the following steps to configure the Sub Automation action: 1. Click **Configure Action** from the left navigation panel. 2. Within the **Configure Action Step**, click the **Sub Automation** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt24f95e27987c07e6/65c3110cf02705dcceea77e2/Select_Connector.png) 3. Under **Choose an Action** tab, select the **Sub Automation** action. ![Select\_Actio.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt56f4484473a7870d/65c3110ceed32e6d97ac3344/Select_Actio.png) 4. Select the **Sub Automation** from the dropdown. This fetches a list of all the sub automations created in a project. 5. Enter the values in the **Sub Automation Template**. The schema is fetched from the configured sub automation. **Note:** Only **Live** Sub Automation(s) will be displayed in the drop-down menu. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt40d0b729693ba9cf/65c3110cab9c0f4608b92990/Select_Fields.png) 6. Click the **Proceed** button. 7. To test the configured action, click the **Test Action** button. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3abb49e62d6998b3/65c311167998da328a6b4897/Test_Action.png) 8. Click the **Save and Exit** button. ![Save\_Exit\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt809c4e8ab8492d5e/65c3110c7998da492b6b4893/Save_Exit_Button.png) This completes the configuration of your **Sub Automation** action connector. Let’s see an example to understand the use of Sub Automation action connector. In this use case, we will cover a scenario where, if a user creates a new entry in Contentstack, the automations should be able convert the given entry in German language and create a new entry for German language in Contentstack. ### Configure Entry Trigger 1. Click **Configure Trigger** from the left navigation panel. 2. Within the **Configure Trigger** **Step**, click the **Contentstack** connector. 3. Under the **Choose Trigger** step, select the **Entry Trigger**. 4. Click **\+ Add New Account** to add your Contentstack account. For more information refer to the [Contentstack Trigger](/docs/agent-os/contentstack-trigger) documentation. 5. Select the **Event** and the **Stack** for which you want to configure the trigger. 6. Optionally enable the **Show Optional Fields** toggle to select the Content Type in which you want to create an entry. ![Entry\_Trigger\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt20d7151c43f69d76/65c3110ca3c2028f15251cd4/Entry_Trigger_Fields.png) 7. Click the **Proceed** button. 8. Click the **Test Trigger** button. ![Test\_Entry\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt62434347030f2ece/65c3111649edef30c96a1cef/Test_Entry_Trigger.png) 9. Click the **Save and Exit** button. An entry will be created in the selected content type as shown below. ![Save\_Exit\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1c302fc96a79ee4f/65c3110cf027050a40ea77de/Save_Exit_Trigger.png) ### Configure Sub Automation Action 1. Click **Configure Action** from the left navigation panel. 2. Within the **Configure Action step**, click the **Sub Automation** connector. 3. Under **Choose an Action**, select the **Sub Automation** action. 4. Select the **Sub Automation** from the Lookup dropdown. You see a list of all the sub automations created in a project. 5. Enter the data in the **Sub Automation Template**. This fetches the template for the selected sub automation. In our case, we are using a [Sub Automation](/docs/agent-os/sub-automation-trigger) trigger. In the **Value** field, select the entry name created in the entry trigger as shown below: ![Select\_Sub\_Automation\_Action\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt572884c3d67fe721/65c31116fb34d054aa1b0b39/Select_Sub_Automation_Action_Field.png) 6. Click the **Proceed** button. 7. Click the **Test Action** button. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3abb49e62d6998b3/65c311167998da328a6b4897/Test_Action.png) 8. Click the **Save and Exit** button. You see the entry is converted in to German language as shown below: ![Save\_Exit\_Sub\_Automation\_Entry\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd88798c50f59f23a/65c3110c49edef70e76a1ceb/Save_Exit_Sub_Automation_Entry_Trigger.png) In the next step, we will create a new entry for the translated text. ### Configure Create an Entry Action 1. Under **Choose an Action** tab, select the **Create Entry** action. 2. In the **Configure Action** tab, click + Add New Account to add your Contentstack account. Refer to the [Contentstack](/docs/agent-os/about-contentstack-management-actions) action connector for adding an account. 3. Select a **Stack**, **Branch**, and **Content Type** from the **Lookup** list. Provide your entry data in the **Entry Data** field. **Note:** Provide your entry data as per your content type schema in JSON format only. You can fetch the UID for all the previously configured automation steps directly from the Lookup list as shown below: ![Create\_Etry\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0b7cfff0ee49ae78/65c3110cab9c0f46dcb9298c/Create_Etry_Fields.png) 4. In the **Entry Data** field, you can add a predefined schema template for your entry data. This will add a structure to provide your entry data in a particular format for different fields. Enter the “title” value from the previous step, i.e. the title of the translated content. **Note:** You must manually configure the entry data for JSON Rich Text Editor, Custom, and Experience Container fields. 5. Click **Proceed**. 6. Click **Test Action** to test the configured action. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3abb49e62d6998b3/65c311167998da328a6b4897/Test_Action.png) 7. Click the **Save and Exit** button. 8. Activate the automation and create an entry in Contentstack. You see a new translated entry is also created. Activate the automation to check the output. You can use this sub automation trigger to invoke a sub automation action. Both are **interdependent** on each other. --- ## URL: https://www.contentstack.com/docs/agent-os/sub-automation-trigger --- title: "Sub Automation Trigger" description: "Use the Sub Automation trigger to invoke a sub automation action." url: "https://www.contentstack.com/docs/agent-os/sub-automation-trigger" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: sub-automation-trigger.md --- # Sub Automation Trigger The Sub Automation trigger lets you invoke sub automation. You can define the schema of the sub automation using the **Key** and **Type** field. **Note:** A sub automation involves creating smaller, specialized automation tasks as part of a larger automation process. These sub automations help break down complex tasks into more manageable steps, making it easier to design, implement, and maintain the overall automation process. ## Set up the Sub Automation Trigger Perform the following steps to configure the Sub Automation trigger: 1. Click **Configure Trigger** from the left navigation panel. 2. Within the **Configure Trigger** step, click the **Sub Automation** connector. ![Select\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt13fd54c870fe5fdd/65c30a24d4db55bd256ee56e/Select_Trigger.png) 3. Under **Choose Trigger** tab, select the **Sub Automation Trigger**. ![Select\_Trigger\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3344ae1d1f7a749e/65c30a244cd370459470d27a/Select_Trigger_Action.png) 4. Enter the **Description** of the trigger. **Note:** The description in the schema can be helpful while using the [ChatGPT](/docs/agent-os/chatgpt#action-4-select-the-function-calling-action) Function Calling action to briefly describe the schema defined in the sub automation trigger. 5. Under the **Schema** field, enter the value in the **Key** field and select the **Type** from the dropdown. Click **\+ Add Schema** button to add multiple values. Additionally, you can also mark the **Required** checkbox to make it mandatory. ![Select\_Different\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf573e0d0e6150ff0/665ed45945172598cf7a5cc2/Select_Different_Fields.png) 6. Click the **Proceed** button. 7. Click the **Test Trigger** button to test the configured trigger. ![Test\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt795691d1acbca80c/65c30a24d4db550ce16ee572/Test_Trigger.png) 8. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt835a4e1d9ae3f87e/665ed4a802ed7f9672e82ff3/Save_Exit.png) **Note:** After successfully configuring a trigger, if you re-configure any other trigger you will be prompted to revert to the previously configured trigger. You can revert back to the last trigger configurations by clicking the **Revert Changes** button. This sets the **Sub Automation** trigger connector. Let’s see an example to convert a given string in German language using the Sub Automation trigger. Follow the steps below to configure the sub automation trigger: 1. Within the **Configure Trigger** step, click the **Sub Automation Trigger**. 2. Under the **Choose Trigger** section, select **Sub Automation** trigger. 3. Enter the **Description** of the sub automation. For example, _Convert a given text in German Language_. 4. In the **Key** field, enter the string you want to convert. For example, _Top 10 ways to improve communication skills?_ In the **Type** field, select String from the dropdown and mark the **Required** checkbox. ![Select\_Different\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf573e0d0e6150ff0/665ed45945172598cf7a5cc2/Select_Different_Fields.png) 5. Click the **Proceed** button. 6. Click the **Test Trigger** button to test the configured trigger. ![Test\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt795691d1acbca80c/65c30a24d4db550ce16ee572/Test_Trigger.png) 7. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt835a4e1d9ae3f87e/665ed4a802ed7f9672e82ff3/Save_Exit.png) Let’s configure the [ChatGPT](/docs/agent-os/chatgpt) connector to view the converted text. 1. Within the **Configure Action Step**, click the **ChatGPT** connector. 2. Under **Choose an Action** tab, select the **Chat** action. 3. Click the **\+ Add New Account** button to add your ChatGPT account. **Additional Resource:** Refer to the [ChatGPT](/docs/agent-os/chatgpt) connector documentation for adding the account. 4. Select the **API Model** from the dropdown list to generate content for the chat responses. **Note:** Different models are available to different users based on the account the user holds such as paid accounts. You must check the account access before selecting the model. 5. Provide the **Prompt Text** to generate the chat response(s). You must select the output from the sub automation trigger. For example, convert the given string into German. 6. Select the **Role** from the dropdown options to send to the API model request. By default, the role is set to the user. **Additional Resource:** There are three different types of roles provided by the OpenAI platform. The **system** role sets the response context, the **assistant** role provides the response content, and the **user** role asks the prompt. ![Select\_Chat\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8ae08961ddd426b8/665edca6653cb9b3e6a7f1ce/Select_Chat_Fields.png) 7. Click **Proceed**. 8. Click **Test Action** to test the configured action. 9. Click the **Save and Exit** button. You will see the input string converted into German language. ![Save\_Exit\_Chat.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6cbd12d4c686ba3a/665edcfb585b447949987840/Save_Exit_Chat.png) Now let’s configure a **Response** connector to send the output. 1. Within the **Configure Action Step**, click the **Response** connector. 2. Under **Choose an Action** tab, select the **Response** action. 3. Based on the results of your configured action, enter the **Response** Status. 4. In the **Response Body** field, you can add the data that you want to send as the response. As per our example, select the message content from the ChatGPT action. ![Response\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt56fab5efc6e792a1/65c30a2408722221cd49629a/Response_Fields.png) 5. Add **Response Headers** to provide any additional information. 6. Click **Proceed**. 7. To execute and test the configured action, click **Test Action**. ![Test\_Action\_Response.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt48531360bd123825/65c30a24554798179d809a64/Test_Action_Response.png) 8. On successful configuration, you can see the below output. Click **Save and Exit**. ![Save\_Exit\_Response.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdd29a26528dcc5fb/665edd53d036b2878500b449/Save_Exit_Response.png) Activate the automation to check the output. You can use this sub automation trigger to invoke a sub automation action. Both are **interdependent** on each other. --- ## URL: https://www.contentstack.com/docs/agent-os/supported-capabilities-of-agent-os --- title: "Supported Capabilities of Agent OS" description: "Discover the capabilities and feature restrictions of Contentstack Agent OS." url: "https://www.contentstack.com/docs/agent-os/supported-capabilities-of-agent-os" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: supported-capabilities-of-agent-os.md --- # Supported Capabilities of Agent OS * Agent OS is a plan-based feature, and the number of executions allowed depends upon the Agent OS pricing plan that is activated for a particular organization. * Organizations that have upgraded to a paid plan will have a soft cap for executions (when reaching this threshold they will be notified by email), and a hard cap that is 5x the number of the soft cap. After the organization hits the hard cap, automations will be temporarily disabled for that month. * By default, each organization will be enrolled in the Explorer Plan, which is included at no cost and allows up to **200** executions per month (200 soft cap and 200 hard cap). * The maximum number of projects allowed per organization is **50**. * The maximum number of automations allowed per project is **50**. * The maximum number of steps allowed per automation is **15**. * Currently, organization members can only view and edit their own projects. * There is no support for nesting within Conditional Path and Repeat Path steps. * The Pause and Response action connectors cannot be used within Conditional Path and Repeat Path steps. * The maximum number of loops per Repeat Path is **100**. * For Direct Queue (if automation is **not** throttled), the rate limit is **5000** executions per minute per organization. * You can select up to **10 executions per second** from Agent OS Settings (if an automation is throttled) for a specific automation. * If an automation includes a [**Response**](/docs/agent-os/response/) connector, **Retry Execution** will not be available for that automation. * In Agent OS's Design mode, the test action output response previews are limited for performance - if a payload object exceeds **1** MB, only the first **10** nodes of arrays are shown. For payloads under **1** MB, the full output is displayed. This limitation helps optimize performance and ensures efficient data rendering in the browser. * The maximum supported size for incoming HTTP requests is **3 MB**. * The maximum supported output size for the Log action is **1 MB**. --- ## URL: https://www.contentstack.com/docs/agent-os/supported-capabilities-of-polaris --- title: "Supported Capabilities of Polaris" description: "Understand Polaris limitations in Contentstack, including supported content types, permission controls, context-based actions, and metadata-only operations." url: "https://www.contentstack.com/docs/agent-os/supported-capabilities-of-polaris" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: supported-capabilities-of-polaris.md --- # Supported Capabilities of Polaris **Note:** For access, please talk to our [Support](mailto:support@contentstack.com) team. * Polaris is currently focused on **CMS Entries**, **Assets**, and **Visual Editor**. * Polaris performs actions using the **credentials and permissions of the logged-in user**. * Polaris supports **text and metadata content only**. * Polaris **does not** analyze or **edit images or videos**. * Polaris acts only on the content that is **currently open or explicitly selected** by the user. * For all **write** **actions**, Polaris pauses before execution and requires **explicit user confirmation**. --- ## URL: https://www.contentstack.com/docs/agent-os/throttle-execution --- title: "Throttle Execution" description: "Discover how to throttle executions in automations and control workflow run frequency effectively." url: "https://www.contentstack.com/docs/agent-os/throttle-execution" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: throttle-execution.md --- # Throttle Execution Throttle Execution refers to controlling the rate at which the executions are carried out within a specific timeframe. Users can enable throttling their execution to overcome rate limit issues. **Note:** Throttling occurs at the **Organization** level. When multiple automated processes are executed, they are processed in the order they are received, that is, following a first-come, first-serve approach. ## What is Throttling in Agent OS? Suppose an organization has set a rate limit of 100 executions per minute, but the execution request it receives is 1000 per minute. This is much higher than the established limit. In this case, the execution will not work correctly, potentially resulting in automation failures. To address this issue, the organization can choose to implement execution throttling . When a user triggers an automation 1000 times, these automations will be queued and the executions will be performed sequentially. In short, the automations that have throttling enabled in their settings will go through the executions sequentially. Automations with throttling enabled are executed **sequentially**. Suppose you select two executions per second, and there is a request for 1000 executions, so the time taken for execution will reduce by half,( i.e., **500 seconds**). **Additional Resource:** Refer to the [Error Notification](/docs/agent-os/error-notification) document for more details. You can view your automation's success and queue status in the [Execution Log](/docs/agent-os/view-execution-log-of-agent-os) section. **Note:** The queued executions will retry to execute three times before going into the Rejected status in case of any errors, such as engine failure. ## What Happens if an Automation is **Not** Throttled? If an automation is not set to throttle the execution, it will go in the **Direct Queue**. In Direct Queue, the rate limit is set to **5000** executions per minute per organization. To use the Direct Queue for executions, you must ensure that the automation is not hitting other rate limits such as CMA limits. Execution request(s) will be sent to the direct queue **only if** your automation does not contain the [Response](/docs/agent-os/response) connector. The [Response](/docs/agent-os/response) connector works synchronously in the background to fetch the response from any server. If an automation contains the Response connector, it will send the response based on the configuration and if it goes in the Direct Queue for execution, you may not be able to view the response. --- ## URL: https://www.contentstack.com/docs/agent-os/transform --- title: "Transform" description: "Use Automate's Transform Connector to efficiently process and convert data for specific requirements." url: "https://www.contentstack.com/docs/agent-os/transform" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: transform.md --- # Transform The Transform action connector helps in manipulating texts and numbers as required. It helps you to manipulate and structure data according to our needs. For example, suppose in the previous trigger specific data is selected to be displayed. In that case, the action defined by the Transform connector can manipulate or change it to meet your display requirements. ## Set up the Transform Connector Perform the following steps to set up the Transform action connector: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Transform** connector. ![Select\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt037386c6ee10bb4c/66c5f2230baf9b0bc3af7175/Select_Connector.png) 4. You will see these actions under the Choose an Action tab: **Aggregate** **Data**, **Date and Time Transformer**, **Filter** **Data**, **JSON** **Stringify**, **Merge Data**, **Modify** **Object** **Fields**, **Remove** **Duplicate** **Data**, **Sort Data**, **Template** and **Transform**. ![Select\_Actions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt171ed712aed12244/67beca945e83f44eafcb34d8/Select_Actions.png) Let’s look at each of them in detail. ## Aggregate Data The **Aggregate** **Data** action makes it easy to calculate key statistics, such as totals, averages, minimums, and maximums, for numeric fields within an array of objects. Whether the data is straightforward or deeply nested, this action helps you quickly extract meaningful insights without manual calculations. **Example Code:** ``` return [ { "user": { "details": { "age": 25, "score": 85 } } }, { "user": { "details": { "age": 30, "score": 90 } } }, { "user": { "details": { "age": 35, "score": null } } } ] ``` Let’s see the configuration for this: 1. In the **Input** **Value** field, enter the value to aggregate. For example, fetch the response from the previous step, i.e., _2.response_. 2. Click **\+ Add Fields to Aggregate** button. By default, the **Field Name** is visible. In the **Field** **Name**, enter the nested path to the numeric field. For example, “**user.details.age.**” 3. In the **Statistics** field, select the value you want to use for aggregating the data. Here, we are using _Total_ and _Average_.![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt79ba0697adbe2546/67beca2724e52c3021e6c3b8/Select_Fields.png) 4. Optionally, enable the **Show Optional Fields** toggle button to view the optional field. In the **Select Null Value Handling** drop-down, select either **Exclude** or **Zero** to handle null values. If **Null Value Handling** is set to **Exclude**, null or undefined values are ignored. However, if it is set to **Zero**, these values are not excluded and are instead assigned a value of 0. ![Show\_Optional\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte8a89c6319e53b65/67beca2787966d83ad9924dc/Show_Optional_Fields.png) 5. Click **Proceed**. 6. Click **Test** **Action**. 7. Click **Save and Exit** to view the output. ![Save\_and\_EXIT.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbb4d10cee3c8c0e4/67beca27f4b0b144ed9870c7/Save_and_EXIT.png) ## Date and Time Transformer The **Date and Time Transformer** makes working with dates and times effortless. It simplifies the process of adjusting dates, calculating time differences, or formatting them for reports. Let’s see the configuration for each operation: #### Add Duration to Date This operation adds days, months, years, etc. to the input date. 1. In the **Input Date** field, enter the date to add a duration in ISO format. If left blank, current date is selected. 2. In the **Select Unit** drop-down, select the time unit to add to the date. For example, Minute, Hour, Day, Week, Month, Year. 3. In the **Add Value** field, enter the number you want to add. For example, if you choose **Minute** and enter **1**, it will add **1** **minute** to the date. 4. In the **Select Output Format** drop-down, select the output format for the date. ![Add\_Duration\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd917f231f9cfb184/67becc05809db0266eb4fb8e/Add_Duration_Fields.png) 5. Click **Proceed**. 6. Click **Test** **Action**. 7. Click **Save and Exit** to view the output. ![Add\_Duration\_Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3b6748487b551b87/67becc0524e52ce6d4e6c3cd/Add_Duration_Save_Exit.png) #### Extract Part of Date This operation extracts the year, month, day, etc. from the input date. 1. In the **Input Date** field, enter the date to extract the date-time component. If left blank, the current date is automatically selected. 2. In the **Select Date-Time Component** drop-down, select the date-time component to extract. For example, if you choose **Year**, it will extract the year from the input date. ![Extract\_Part\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfeb3a3e149e003bf/67becc05938bf558a4f9a5d2/Extract_Part_Fields.png) 3. Click **Proceed**. 4. Click **Test** **Action**. 5. Click **Save and Exit** to view the output. ![Extract\_Fields\_Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltee3311c190f4db5c/67becc055ac38d51478ff73c/Extract_Fields_Save_Exit.png) #### Format Date This operation allows you to format a date to match your needs. For example, if you want the date in **YYYY-MM-DD** format, you can apply the formatting. 1. In the **Input Date** field, enter the date to format. If left blank, current date is selected. 2. In the **Select Output Format** drop-down, select the date-time component to format. For example, if you choose YYYY-MM-DD format, it will format the input date based on the output format. ![Format\_Date\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf5976abfb170deac/67becc050f0ae13d50ba3f3e/Format_Date_Fields.png) 3. Click **Proceed**. 4. Click **Test Action**. 5. Click **Save and Exit** to view the output. ![Format\_Date\_Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte66e07260e3866d9/67becc05045f582c4bbfabd9/Format_Date_Save_Exit.png) #### Get Current Date This operation retrieves the current date in different formats. 1. In the **Select Output Format** drop-down, select the date-time component in which you want to fetch the current date. For example, if you choose **DD/MM/YYYY**, the current date will be retrieved in the same selected format. ![Get\_Current\_Date\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt91f04d3747b886aa/67becc0f5c04c80ac1fff159/Get_Current_Date_Fields.png) 2. Click **Proceed**. 3. Click **Test** **Action**. 4. Click **Save and Exit** to view the output.![Get\_Current\_Date\_Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1ae242da8bde0b90/67becc0fcdb05a06b35df1ea/Get_Current_Date_Save_Exit.png) #### Calculate Time between Dates This operation retrieves the time difference between two dates. 1. In the **Start Date** field, enter the start date to calculate the time difference. If left blank, the current date is automatically selected. In the **End Date** field, enter the end date. 2. In the **Select Unit** drop-down, select the date-time component to fetch the gap. If you choose Year, the difference between the two dates is fetched in year. ![Calculate\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt78e57d28f4b156d3/67becc05f5cfb35a9ed6b971/Calculate_Fields.png) 3. Click **Proceed**. 4. Click **Test** **Action**. 5. Click **Save and Exit** to view the output. ![Calculate\_Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt848682f1ce2c7a0c/67becc055c5329f2d4316ce5/Calculate_Save_Exit.png) #### Subtract from Date This operation removes the days, months, years, etc. from a given date. 1. In the **Input Date** field, enter the date from which you want to subtract the date-time components. If left blank, the current date is automatically selected. 2. In the **Select Unit** drop-down, select the date-time component to subtract from the input date. If you choose **Week**, the week is subtracted. 3. In the **Subtract Value** field, enter the value to subtract. For example, if you choose **Week** in the **Select Unit** drop-down and enter **2** in the **Subtract Value** field, it removes two weeks from the input date. 4. In the **Select Output Format**, select an output date format. ![Subtract\_Date\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt58fd82367e400f0d/67becc0f2c963bd1b81b7c1c/Subtract_Date_Fields.png) 5. Click **Proceed**. 6. Click **Test Action**. 7. Click **Save and Exit** to view the output. ![Subtract\_Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt027a2cccbe495785/67becc0f959e4e4625e47909/Subtract_Save_Exit.png) ## Filter Data The Filter Data action extracts specific objects from an array based on defined conditions, ensuring accurate and efficient data filtering. **Example Code:** ``` return [{ "name": "John", "age": 30 },{ "name":"John", "age":"22"},{ "name":"alice", "age":"21"}] ``` Let’s see the configuration for this: 1. In the **Input** **Value** field, enter the JSON data (objects or array of objects) to filter. 2. In the **Filter Conditions** section, click **\+ Add Condition** button to add the filters. Based on the example code, enter **"name"** in the **Select** **Input** field, choose the **Matches** operator, and enter a value (e.g., **"John"**). This filters the array and returns only the objects where the name is John. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0625d50c907fbc38/67bed21ed1b1de0609ca444b/Select_Fields.png) 3. Click **Proceed**. 4. Click **Test Action**. 5. Click **Save and Exit** to view the output. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt965e7bae9f1111c2/67bed21d24e52c04a4e6c3f8/Save_Exit.png) ## JSON Stringify The **JSON** **Stringify** action converts an object (or array of objects) into a JSON-formatted string. In the [ChatGPT](/docs/agent-os/chatgpt) connector, the output is generated in JSON format. This action helps to properly indent the JSON, making it easier to read and use in the entry data. Let’s see the configuration for this: 1. In the **Input** **Value** field, enter the JSON data (objects or array of objects) to stringify. 2. Optionally, enable the **Show Optional Fields** toggle button to display the optional fields. In the **Select Indentation Spaces**, select the spaces for JSON indentation in the output. By default, 0 is selected. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb5ec5fcf2a9d4c68/67bed2ab54cf2f02dc762a1d/Select_Fields.png) 3. Click **Proceed**. 4. Click **Test Action**. 5. Click **Save and Exit** to view the output. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt31fc0dc0c10df59b/67bed2ab5e83f4d828cb351c/Save_Exit.png) ## Merge Data The **Merge** **Data** action lets you combine multiple items into one, using various merge methods. Let’s see the configuration for each operation: 1. In the **Input Name** and **Input Value** field, enter the JSON data (array of objects) to merge. 2. In the **Merge Method** drop-down, select the method to merge the data. If the **Merge Method** is **Merge**: If the **Merge Option** is **Matching Fields**: 1. In the **Select Merge Option** drop-down, select the type of merge method, i.e., **Matching Fields**, **Position**, and **All Possible Combinations**. Here we are selecting **Matching** **Fields**. **Note:** Merge by **Position** applies to all provided input data, while **Matching Fields** and **All Possible Combinations** work only for the first two input data sets. 2. In the **Field Name** field, enter the name of the field to compare and merge. 3. In the **Match Options** drop-down, select any one of the options: 1. **Equal:** Returns objects where the specified field name matches in both objects. 2. **Not Equal:** Returns objects where the specified field name does not match in both objects. 3. **Keep Both:** Includes all objects in the output, regardless of matching criteria. 4. **Enrich First:** Merges both objects, keeping all fields while prioritizing values from the first object (similar to a left join). 5. **Enrich Second:** Merges both objects, keeping all fields while prioritizing values from the second object (similar to a right join). ![Merge\_Matching\_Position.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte967d30fce1876da/67bedf3f938bf579caf9a67d/Merge_Matching_Position.png) If the **Merge Option** is **Position**: 1. In the **Select Merge Option** drop-down, select the type of merge method, i.e., **Position**. **Position-based** merging takes the first object from each array and merges them. If you have three arrays of objects, it will pick the first object from each and combine them in the output. ![Merge\_Position.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltde1f5c26d4b6ae47/67bedf40f5cfb3881dd6ba41/Merge_Position.png) If the **Merge Option i**s **All Possible Combinations**: 1. In the **Select Merge Option** drop-down, select the type of merge method, i.e., **All Possible Combinations**. 2. **All Possible Combinations** generates and merges every possible pair from the first two input arrays. For example, if the first array has 2 objects and the second array has 4 objects, the output contains 8 unique combinations. ![Merge\_All\_Possible\_Combinations.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt38f3ded3be5d4240/67bedf3f938bf5f312f9a67b/Merge_All_Possible_Combinations.png) If the **Merge Method** is **Append**: 1. If the **Merge Method** is **Append**, it will merge all the data from the array of objects into a single array. ![Append\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0362edd3bc7b3e4a/67bedf48d1b1de0385ca44d7/Append_Fields.png) 3. Click **Proceed**. 4. Click **Test Action**. 5. Click **Save and Exit** to view the output. You will see a new field added to the object. ## Modify Object Fields The **Modify Object Fields** action lets you modify, remove, or add fields within objects or arrays of objects. It fully supports nested structures and allows you to target specific paths using dot notation, giving you precise control over your data. **Example Code:** ``` return [{ "name":"John", "age":"20"}] ``` Let’s see the configuration for each operation: #### Add New Field This operation adds a new field to the object. If the field already exists, an error is thrown. 1. In the **Input Value** field, enter the JSON data (objects or array of objects) to add. 2. In the **Select Operations** drop-down, select **Add New Field**. 3. In the **Field Key** field, enter the key of the object to add. 4. In the **Field Value** field, enter the value of the key to add. 5. Enter the dot-notation path to access nested fields in the **Target Path** field. ![Select\_Add\_New\_Field\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt414dc95c3670b0c7/67bed345959e4ea245e4794d/Select_Add_New_Field_Fields.png) 6. Click **Proceed**. 7. Click **Test Action**. 8. Click **Save and Exit** to view the output. You will see a new field is added to the object. ![Add\_New\_Fields\_Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf5dece9d91bc9778/67bed345cdb05a723f5df22f/Add_New_Fields_Save_Exit.png) #### Remove Field This operation removes a field from an object or an array. 1. In the **Input Value** field, enter the JSON data (objects or array of objects) to remove. 2. In the **Select Operations** drop-down, select **Remove** **Field**. 3. In the **Field Key** field, enter the key of the object to remove. 4. Enter the dot-notation path to access nested fields in the **Target** **Path** field. ![Remove\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt82f28d4b39bba729/67bedaea959e4e9b98e47990/Remove_Fields.png) 5. Click **Proceed**. 6. Click **Test Action.** 7. Click **Save and Exit** to view the output. You will see the object key is removed. ![Save\_Exit\_Remove.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaf4b3135aa30a01a/67bedaebf5cfb3a850d6ba19/Save_Exit_Remove.png) #### Update Field This operation updates the value of an existing field or creates it if it does not already exist. 1. In the **Input Value** field, enter the JSON data (objects or array of objects) to modify. 2. In the **Select Operations** drop-down, select **Update Field**. 3. In the **Field Key** field, enter the key of the object to update. 4. In the **Field Value** field, enter the value of the key to update. 5. Enter the dot-notation path to access nested fields in the **Target Path** field. ![Update\_Field\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1691d2f328a94c9e/67bed345f4b0b1755e987118/Update_Field_Fields.png) 6. Click **Proceed**. 7. Click **Test Action**. 8. Click **Save and Exit** to view the output. You will see the updated field value. ![Update\_Fields\_Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaedc977e4b7a117c/67bed345c1fe960fc654d7f2/Update_Fields_Save_Exit.png) ## Remove Duplicate Data The **Remove** **Duplicate** **Data** action is designed to clean up data by eliminating duplicate values from arrays, objects, or nested structures. It identifies duplicates based on a specified key or criteria, ensuring accurate and efficient data refinement. With support for both case-sensitive and case-insensitive comparisons, this action can handle complex data types, including nested objects and arrays. **Example Code:** ``` return [{ "name": "John", "age": 30 },{ "name":"John", "age":"22"},{ "name":"alice", "age":"21"}] ``` Let’s see the configuration for this: 1. In the **Input Value** field, enter the JSON data (objects or array of objects) to remove the duplicate. 2. Optionally, enable the **Show Optional Fields** to display the optional fields. In the **Key/Nested Path** field, enter the key or the nested path to remove the duplicate. You can enable the check for case-sensitive duplicate values. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt045d7cfdd8fcee06/67bedbc7f4b0b1f529987174/Select_Fields.png) 3. Click **Proceed**. 4. Click **Test Action**. 5. Click **Save and Exit** to view the output. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8a87495f6cc341e0/67bedbc76bdc8013cb690f7c/Save_Exit.png) ## Sort Data The **Sort** **Data** action sorts arrays of objects, numbers, or strings, supporting multi-field and nested field sorting with dot notation. It also allows case-sensitive or case-insensitive string sorting. **Example Code:** ``` return [1, 20, 4, 5 6]; ``` Let’s see the configuration for this: 1. In the **Input Value** field, enter the data to sort. 2. In the **Field Name**, enter the field name to sort based on the input value. If left blank, an empty string is automatically selected. 3. In the **Select Sort Direction**, enter the sort direction, i.e., **Ascending** or **Descending**. If your input is an array of objects and you want to sort by a specific field (e.g., "age"), enter **age** in the **Field** **Name** and select **Ascending** from the **Sort Direction** drop-down. **Example Input:** ``` return [{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}, {"name": "Charlie", "age": 20}]; ``` **Example Output:** ``` [ {"name": "Charlie", "age": 20}, {"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}] ``` 4. Optionally, enable the **Show Optional Fields** toggle to display the optional fields. Click the **Enable case-sensitive sorting** checkbox to match cases when sorting data. ![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltefec39d8c220bfa0/67bedc9420c9dd4c581c1c34/Select_Fields.png) 5. Click **Proceed**. 6. Click **Test** **Action**. 7. Click **Save and Exit** to view the output. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf2a22cb0b69e83e3/67bedc940f78eb0adeac9531/Save_Exit.png) ## Transform Modifiers Transform modifiers help in manipulating texts and numbers as per our needs. This function utilizes JSON code and modifiers to transform data. The Transform connector also helps in mapping different JSON objects into one object, as seen in the sample transform input data: ``` { "first_name" : "{user_first}", "last_name" : "{user_last}", "full_name" : "{join(user_first,user_last,' ')}", "country" : "india", "time" : "{now('toISO')}"} ``` The Transform connector also helps in mapping different JSON objects into one object, as seen in the sample transform input data: 1. On the **Transform Configure Action** page, enter the following details: 1. Click the **Add Input** button, and enter a variable name for the **Input Name** (say, “name”) and an **Input Value** for the variable (say, “john” in lowercase letters). **Note**: You can even pass the value directly into the **Transformation** box. 2. Let’s enter the JSON code that uses the “capitalize()” modifier in the **Transformation** box. Use the following code: {“result” : “{capitalize(name)}” } ![Transform\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc5d6e8a4f389109e/66c5f3c84b8e144bbfbc82d1/Transform_Fields.png) 2. Click **Proceed**. 3. Check if the details are correct. If yes, click **Test Action**. 4. Once set, click **Save and Exit**. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9ec465e884e5dba6/66c5f22283db67c959aee466/Save_Exit.png) The Transform function has specific modifiers that can manipulate the data. Let’s look at the applicable transform modifiers in detail. ### Mathematical Operations #### number Use this modifier to convert text into numbers. **Example:** number('3') Here’s a screenshot that shows the input: ![Number\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbf0133079ee92880/66c5fac51ee805c6de167b82/Number_Input.png) Here’s a screenshot that shows the output: ![Number\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt63aca355bc5e6813/66c5fac583db678050aee4ca/Number_Output.png) #### sum Use this modifier to perform the addition of all numbers. **Example:** sum(5,10,2) Here’s a screenshot that shows the input: ![Sum\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7df8de9dc65f7bd4/66c5fb52b506aa375dc6f604/Sum_Input.png) Here’s a screenshot that shows the output: ![Sum\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt83324bf00493e855/66c5fb52b506aabde5c6f600/Sum_Output.png) #### random Use this modifier to generate random numbers from a specified range. **Example:** random(1, 100) Here’s a screenshot that shows the input: ![Random\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt823ea6b04bef2210/66c5fcb9e712ef6f24311fbb/Random_Input.png) Here’s a screenshot that shows the output: ![Random\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3015572fc9bae0ee/66c5fcb8134286db70c3eb21/Random_Output.png) #### max Use this modifier to retrieve the largest number from an array. **Example:**max(arrayRef) Here’s a screenshot that shows the input: ![Max\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd5cfc381bbbad106/66c5fcedab1b6946ca3cb686/Max_Input.png) Here’s a screenshot that shows the output: ![Max\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6d1bf903dd318b1f/66c5fced20995ef0c6d2d1eb/Max_Output.png) #### min Use this modifier to retrieve the smallest number from an array. **Example:** min(arrayRef) Here’s a screenshot that shows the input: ![Min\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt97d28c412f74510e/66c5fd1c33f9a5d8867a9ab1/Min_Input.png) Here’s a screenshot that shows the output: ![Min\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2f92a4a96b7c366a/66c5fd1c4b8e14c326bc837f/Min_Output.png) #### toFixed Use this function to return a decimal value truncated to the specified number of decimal places, without rounding. **Example:** \[\[toFixed 3.15656 2\]\]. In the above example: * **toFixed** is the helper function * **3.15656** is the decimal value * **2** is the specified number of decimal places to which the output will be displayed Here’s a screenshot that shows the input: ![ToFixed\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt28fa054817444541/66c6f1104b8e14c001bc8e0d/ToFixed_Input.png) Here’s a screenshot that shows the output: ![toFixed\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt40d39d4a08d81e46/66c6f110c71171b43e69bd35/toFixed_Output.png) ### Text Processing #### truncate Use this modifier to reduce the length of a string to a specific number of characters or words using ellipses or word-break options. **Note:** The boolean value (true, false) implies whether you want to break the word or not. True means you want to break the word, and false means not. The space after the word is considered a break. **Example:** truncate (string,number of characters,'ending string', ‘word break’) **Note:** If the limit for the number of characters is more than that of the string, the output will contain the complete string without ellipses. Here’s a screenshot that shows the input: ![Transform\_Truncate\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf7756cdb3f41e350/66c5f4a64c39122cb4ac062c/Transform_Truncate_Input.png) Here’s a screenshot that shows the output: ![Transform\_Truncate\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt69d04d9b6675f8d9/66c5f4a67118673773aa23bb/Transform_Truncate_Output.png) Here’s a screenshot that shows the input when the word break is set to true by default.![Truncate\_True\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8f6089b6eddf7240/66c5f4f1c7117115bf69aefc/Truncate_True_Input.png) Here’s a screenshot that shows the output: ![Truncate\_True\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte544777e2b018f2d/66c5f4f1ab1b6993ff3cb5e0/Truncate_True_Output.png) **Note:** In the truncate modifier, string and the number of characters are the two mandatory fields. If we do not specify the ending string, it would take the ellipses (...) or any other characters the user enters such as (\*\*\*). #### replace Use this modifier to replace any character, word, or string given in the 2nd argument with the 3rd argument. **Example:** replace(Data, 'one char, one word or string', 'with this string') **Note:** The replace modifier can only replace the first occurrence of a character/word/string. Here’s a screenshot that shows the input:![Replace\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt580cdfd304c4e778/66c5f5e4dd1a3680b040cb10/Replace_Input.png) Here’s a screenshot that shows the output: ![Replace\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb5cd064ed489d373/66c5f5e4e712ef7592311f50/Replace_Output.png) #### replaceAll Use this modifier to replace all the characters, words, or strings given in the 2nd argument with the 3rd argument. **Example:** replaceAll(Data, 'one char, one word or string', 'with this string') **Note:** The replaceAll modifier will replace multiple occurrences of a character/word/string with the same pattern. Here’s a screenshot that shows the input:![ReplaceAll\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt32e9afbe6eaf2dea/66c5f763c71171674d69af2a/ReplaceAll_Input.png) Here’s a screenshot that shows the output:![ReplaceAll\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt872f8ff7259e2453/66c5f76383db674a3daee4af/ReplaceAll_Output.png) You can also pass the data configured from the previous step and replace the content. Here is an example: 1. Configure your HTTP Trigger and use the trigger data in the input value field. ![Replace\_Trigger\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3093ef0b04aaf965/66c5f63ee712ef00fb311f5c/Replace_Trigger_Input.png) 2. To replace all the occurrences of the word _hello_ with _hi_. ![Replace\_Trigger\_Transform.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8fe20b587ecde2d1/66c5f63ec711710cca69af0d/Replace_Trigger_Transform.png) Here’s a screenshot that shows the output: ![Replace\_Trigger\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaeb5322545a37db3/66c5f63edd1a361faa40cb22/Replace_Trigger_Output.png) #### trim Use this modifier to remove white spaces at the beginning and end of the string, including tab, space, null byte, new line, and carriage return. **Example:** trim(Data) Here’s a screenshot that shows the input: ![Trim\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcea6ccd77bf4e27d/66c5f8385c1ba463f6269aaa/Trim_Input.png) Here’s a screenshot that shows the output: ![Trim\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt27b96cba0337c3e2/66c5f839038881adb51efd53/Trim_Output.png) #### capitalize Use this modifier to convert the input data into the capital (upper) case. **Example:** capitalize('input data') or capitalize(variable) Here’s a screenshot that shows the input: ![Capitalize\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt721cc17687139cfe/66c5f89cc71171571369af49/Capitalize_Input.png) Here’s a screenshot that shows the output:![Capitalize\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9856f6273c4758cd/66c5f89cb506aa5636c6f58a/Capitalize_Output.png) #### camelCase Use this modifier to convert the input text into the camel case. **Example:** camelCase('input data') Here’s a screenshot that shows the input: ![CamelCase\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt85bc506a59a17ec0/66c5f8d7ca95951ae853b9bd/CamelCase_Input.png) Here’s a screenshot that shows the output: ![CamelCase\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2d4feb34df3ab892/66c5f8d61342863405c3eaac/CamelCase_Output.png) #### kebabCase Use this modifier to convert the input text into the kebab case. **Example:** kebabCase('input data') Here’s a screenshot that shows the input: ![KebabCase\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt62accc4f4cb65b01/66c5f95d1342864425c3eacb/KebabCase_Input.png) Here’s a screenshot that shows the output: ![KebabCase\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt83982e931ddf573f/66c5f95d5c9bfe3a7c0f1d38/KebabCase_Output.png) #### snakeCase Use this modifier to convert the input text into the snake case. **Example:** snakeCase('input data') Here’s a screenshot that shows the input: ![SnakeCase\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta12ede2e1edcff51/66c5f9a471186741d5aa23f6/SnakeCase_Input.png) Here’s a screenshot that shows the output: ![SnakeCase\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7cb32bb1abd61d32/66c5f9a33bab114714a2d898/SnakeCase_Output.png) #### escape Use this modifier to escape HTML characters. **Example:** escape('') Here’s a screenshot that shows the input: ![Escape\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5cf44161a33011d3/66c5f9e4ab1b6905e93cb635/Escape_Input.png) Here’s a screenshot that shows the output: ![Escape\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2301a059557e87a7/66c5f9e3e712ef0ff7311f7f/Escape_Output.png) #### split Use this modifier to split the text into an array. **Example:** split('data-input' , '-') Here’s a screenshot that shows the input: ![Split\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2029bbf0766df781/66c5fa245c9bfe27060f1d55/Split_Input.png) Here’s a screenshot that shows the output: ![Split\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9b31b39bca7ae70f/66c5fa24e712ef3608311f84/Split_Output.png) #### join Use this modifier to join all items of an array to make a single string. **Example:** join(…arrayRef|string , '-') Here’s a screenshot that shows the input: ![Join\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8f49acfa25b6d11b/66c5fa783bab1138a5a2d8bc/Join_Input.png) Here’s a screenshot that shows the output: ![Join\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfeb0654a11c26bb3/66c5fa784b8e146c3fbc834e/Join_Output.png) #### upperCase Use this modifier to convert the input text into upper case. **Example:** upperCase(Data) Here’s a screenshot that shows the input: ![UpperCase\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt21744fa5ffc1b0e7/66c5fd619727681c22b5cabe/UpperCase_Input.png) Here’s a screenshot that shows the output: ![UpperCase\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3e515e2c596b94e8/66c5fd6120995e11b7d2d1f8/UpperCase_Output.png) #### lowerCase Use this modifier to convert the input text into lower case. **Example:** lowerCase(Data) Here’s a screenshot that shows the input: ![LowerCase\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt513f7d9ef3b26afc/66c5fdae4c3912367eac06f7/LowerCase_Input.png) Here’s a screenshot that shows the output: ![LowerCase\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt874a7e85b1f9fbac/66c5fdae5c1ba4b70b269b1c/LowerCase_Output.png) #### repeat Use this function to repeat the input string a specified number of times. **Example:** \[\[repeat string\_name number\]\]. In the above example: * **repeat** is the helper function * **string\_name** is the input string which you want to repeat * **number** specifies the count of repetition for the string **Note:** The input value must be a string, and the number should be an integer value. Here’s a screenshot that shows the input: ![repeat\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteb6e0a564bd75a83/66c6d251dd1a36cd4440d51c/repeat_input.png) Here’s a screenshot that shows the output: ![repeat\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb849b526299c21d4/66c6d2515c9bfe66850f25c9/repeat_output.png) #### startsWith Use this function to check whether the input string starts with the specified letter or string. This returns a boolean value, i.e., **true** or **false**. **Example:** \[\[startsWith string\_name “letter/string”\]\]. In the above example: * **startsWith** is the helper function * **string\_name** is the input string which you want to verify * **letter/string** is the string that you want to check against the beginning of the input string. Here’s a screenshot that shows the input: ![StartsWith\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2153beff90dde941/66c6d39803888177051f0700/StartsWith_Input.png) Here’s a screenshot that shows the output: ![StartsWith\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt581137f42c48697d/66c6d3983bab115e79a2e2f4/StartsWith_Output.png) In case of incorrect input: ![StartsWith\_Input\_Wrong.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2855fea755b0abc5/66c6d3980baf9b3592af7970/StartsWith_Input_Wrong.png) Output: ![startsWith\_Output\_Wrong.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfb656c899d6fba7c/66c6d399c71171652269bb8b/startsWith_Output_Wrong.png) #### endsWith Use this function to check whether the input string starts with the specified letter or string. This returns a boolean value, i.e., **true** or **false**. **Example:** \[\[endsWith string\_name “letter/string”\]\]. In the above example: * **endsWith** is the helper function * **string\_name** is the input string which you want to verify * **letter/string** is the string that you want to check against the end of the input string. Here’s a screenshot that shows the input: ![endsWith\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt42d575648a93667d/66c6d4e6b506aa7877c70033/endsWith_Input.png) Here’s a screenshot that shows the output: ![endsWith\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0b450ea8cb48ea93/66c6d4e6c7117155fb69bba3/endsWith_Output.png) In case of incorrect input: ![endsWith\_Output\_Wrong.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt85af22710ffd15fd/66c6d4e613428668c5c3f56e/endsWith_Output_Wrong.png) Output: ![endsWith\_wrong\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaa60691c654f6cc2/66c6d60e1ee805f94a168448/endsWith_wrong_output.png) #### contains Use this function to check whether the input string contains the specified letter or substring. This function returns a boolean value: **true** if the specified text is found, and **false** otherwise. **Example:** \[\[contains “string\_name” “letter/substring”\]\]. In the above example: * **contains** is the helper function * **string\_name** is the input string * **letter/string** is the substring that you want to search in the input string. Here’s a screenshot that shows the input: ![contains\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt301300f3e0d63abb/66c6d99a5c1ba427b626a3a1/contains_input.png) Here’s a screenshot that shows the output: ![contains\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltff83adc72523e7d5/66c6d99a4b8e14da9dbc8c68/contains_output.png) ### Data Processing and Transformation #### uniqueItems Use this modifier to remove duplicate items and return unique values from an array. **Example:** uniqueItems(Data) Here’s a screenshot that shows the input: ![UniqueItems\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt665d57a55846d002/66c5ff5133f9a5d3917a9ae2/UniqueItems_Input.png) Here’s a screenshot that shows the output: ![UniqueItems\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt025a4a2ea3c24ab8/66c5ff5120995e75cad2d23b/UniqueItems_Output.png) #### findInCollection Use this modifier to return objects from an array specified in the conditions. **Example:** findInCollection(Data, 'Name= John Harper') Here’s a screenshot that shows the input: ![FilterCollection\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfbe78c7159e17b8b/66c5ffc05c1ba4b015269b51/FilterCollection_Input.png) Here’s a screenshot that shows the output: ![FilterCollection\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5cc3f2f437e90b83/66c5ffc0c71171f9ba69b047/FilterCollection_Output.png) #### filterCollection Use this modifier to filter an array and remove all objects which do not match the condition. **Example:** filterCollection(Data, 'Name=John Harper') Here’s a screenshot that shows the input: ![FindInCollection\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt81570087abbfdc0b/66c5ff9d1342868014c3eb6a/FindInCollection_Input.png) Here’s a screenshot that shows the output: ![FindInCollection\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta27e48f921f07709/66c5ff9dab1b690d803cb6b5/FindInCollection_Output.png) #### mapCollection Use this modifier to map the collection data. This function will help users create a new collection by mapping data to different keys. **Example:** { "userslist": "{mapCollection(users,'Name=John Harper&book =Harry Potter')}" } Here’s a screenshot that shows the input: ![MapCollection\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteae6792bb4cd7143/66c6002a4b8e140f92bc83dd/MapCollection_Input.png) Here’s a screenshot that shows the output: ![MapCollection\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0b4749dd5f32e2c4/66c6002a3bab110545a2d95b/MapCollection_Output.png) #### size Use this modifier to retrieve the size of an array. **Example:** size(Data) Here’s a screenshot that shows the input: ![Size\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt81f99ee4c36e6467/66c6008d4b8e1458d0bc83e7/Size_Input.png) Here’s a screenshot that shows the output: ![Size\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta9008e0a500bcf46/66c6008dab1b696ca73cb6c9/Size_Output.png) ### Miscellaneous #### Using Multiple Filters You can also pass data in for more than one filter, as shown below: { “name”: “{lowerCase(firstname)|upperCase($pipe)}” } Here’s a screenshot that shows the input: ![Multiple\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt64ad61e62a515c65/66c601a3ab1b69b5093cb6e1/Multiple_Input.png) Here’s a screenshot that shows the output: ![Multiple\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt73d95ef05c0b2611/66c601a3c711717d6069b07e/Multiple_Output.png) #### text Use this modifier to convert numbers to the text type, i.e., this modifier typecasts data which means that the data type gets changed to string. **Example:** text(3) Here’s a screenshot that shows the input: ![Text-input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcdca50455566e800/66c5feeb5c1ba4afea269b35/Text-input.png) Here’s a screenshot that shows the output: ![text--output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt53f8f5a5f0446d03/66c5feeb1ee805d8f0167bc6/text--output.png) #### uuid Use this modifier to retrieve the unique ID based on UUID v4. **Example:** uuid() { "uuid" : "{uuid()}"} Here’s a screenshot that shows the input: ![UUID\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb5342b48e9c457a4/66c6013a1ee805711e167bf9/UUID_input.png) Here’s a screenshot that shows the output: ![UUID\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3656d3ca096f82e0/66c6013aca9595713b53ba3d/UUID_Output.png) ### Date and Time Processing #### now Use this modifier to retrieve the current timestamp. **Example:** now(toISO) **Options:** toISO | toDate | toGMT | toUTC | toTime Here’s a screenshot that shows the input: ![now\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf3a689e74b052ad2/66c600e0c711710d1d69b05c/now_input.png) Here’s a screenshot that shows the output: ![Now\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5f3a7e63def02ab0/66c600e0ab1b6933c33cb6cd/Now_output.png) ## Template This action enables you to format your data using HTML, incorporate inline CSS, and apply custom helper functions for data formatting. It includes many predefined functions, making it easier to transform inputs into your desired formats. **Additional Resource:** Refer to the [Handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) document for details on custom functions that can be used within the Template. 1. Under **Choose an Action** tab, select the **Template** action. ![Select\_Template\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt385a64e64cc1ca10/66c5f223ca9595cd9153b8e6/Select_Template_Action.png) 2. On the **Template Configure Action** page, enter the details given below: 1. Click the **Add Input** button, and enter a variable name and value in the **Input Name** and **Input Value** fields respectively. For example, enter **Entry Title** in the **Input Name** field and in the **Input Value** field, fetch the entry title configured in the previous step as shown in the screenshot below: **Note:** You can also pass the value directly into the **Template** box. 2. In the **Template** field, provide a template and fetch the values from the previous step as shown below: ![Template\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta525567b2e8fe2ed/66c5f2235c1ba4740e269a0a/Template_Fields.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test Action**. 5. Once set, click **Save and Exit**. ![Save\_Exit\_Template.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt81e1205bf05470b5/66c5f223e712efa05f311ec4/Save_Exit_Template.png) ### Examples Let’s look at some of the basic examples of the Template action. **Example 1:** **Data Array:** ``` data = [{name: "Alice", age: 25}, {name: "Bob", age: 30}] ``` **Explanation:** * **\[\[#each data\]\]** loops through the data array. * **\[\[this.name\]\]** accesses the name property of each object in the array. * **\[\[#unless @last\]\]** checks if the current item is not the last one in the array; if it is not, a comma is added. This results in the names being joined with commas, except after the last name. Here’s a screenshot that shows the input: ![Each\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt71480c524a274289/66cc1ff95a70e52ce826520a/Each_Input.png) Here’s a screenshot that shows the output: ![Each\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5fb0f864112ddf46/66cc1ffee82cec477e13a6b2/Each_Output.png) **Example 2:** **Data Array:** ``` data = [{name: "Alice", age: 25}, {name: "Bob", age: 30}] ``` **Explanation:** * **\[\[#each data\]\]** loops through the data array, creating a list item (
  • ) for each iteration that displays the name value. The result is an HTML list where each name appears as a list item. This results in an unordered list. Here’s a screenshot that shows the input: ![Unordered\_List\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3b525bd645a01475/66cc21c08f533ff49fe1794b/Unordered_List_Input.png) Here’s a screenshot that shows the output: ![Unordered\_List\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfe8073466f2736f9/66cc21bf769673162e677f79/Unordered_List_Output.png) **Example 3:** **Data Array:** ``` Data = { author: true, firstName: "Yehuda", lastName: "Katz"} ``` **Explanation:** * **\[\[#if Data.author\]\]** checks whether the author exists. * If the author is present, the full name is displayed within an

    tag. * If the author is not present, the message "He is not an author" is displayed. * In this scenario, since the author exists, the name is shown. Here’s a screenshot that shows the input ![If\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltedc77c3eb20441f9/66cc224e5a70e56728265226/If_Input.png) Here’s a screenshot that shows the output: ![If\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1995909e5ec6dbb9/66cc224ebfc53e8fc7a5eea0/If_Output.png) **Example 4:** **Data Array:** ``` Data= { isAdmin: false} ``` **Explanation:** * **\[\[#unless Data.isAdmin\]\]** checks if isAdmin is false. * If it is, the message "You are not an admin" is displayed. * In this case, since isAdmin is false, the message is shown. Here’s a screenshot that shows the input: ![Unless\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc2d97eb4c8dbdeab/66cc22996a6ceed4c0384eb8/Unless_Input.png) Here’s a screenshot that shows the output: ![Unless\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdce9def55885ad6c/66cc2299f97efdfe36595856/Unless_Output.png) **Example 5:** **Data Array:** ``` data = { products = [ { "name": "Laptop", "price": 999, "inStock": true }, { "name": "Smartphone", "price": 499, "inStock": false }, { "name": "Tablet", "price": 299, "inStock": true } ] } ``` **Explanation:** * The template uses **\[\[#each products\]\]** to loop through the products array. * For each product, it displays the name, price, and stock status within a list item (
  • ). * The **\[\[#if inStock\]\]** helper checks if the product is in stock and conditionally shows the correct status. * The result is an HTML list of products, showing their names, prices, and stock availability. Here’s a screenshot that shows the input: ![Products\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf484298ca5f78ada/66cc22b4fb244e309d700ad5/Products_Input.png) Here’s a screenshot that shows the output: ![Products\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3c2f19a9db9ce49a/66cc22b4769673020e677f9f/Products_Output.png) **Example 6:** **Data Array:** ``` Data = { "data": ["a", "b", "c", "d", "e"] } ``` **Explanation:** * The **\[\[size Data\]\]** helper counts the elements in the Data array. * The output is the total number of items, which, in this case, is 5. Here’s a screenshot that shows the input: ![Size\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltba4424cf8750f29a/66cc22ca70d8f8212efea4e4/Size_Input.png) Here’s a screenshot that shows the output: ![Size\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8ec26f66a01b6e4b/66cc22cabfc53eb665a5eea4/Size_Output.png) ### Template Helper Functions The Transform action connector is a robust tool for manipulating text and numerical data according to user specifications. To offer users even greater flexibility in data transformation and manipulation, Automate offers **templating**. This enhancement significantly expands the capabilities of the Transform action connector, making it even more powerful and user-friendly. Let’s look at the applicable template helper functions in detail. #### and Use this function to perform a logical AND operation between two boolean values. You will get true if both boolean inputs are **true**, and false if either of the boolean values is **false**. **Example:** \[\[and true false\]\]. In the above example: * **and** is the helper function * **true** is the first boolean value * **false** is the second boolean value Here’s a screenshot that shows the input: ![and\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5e0a6e90f7274b8c/66c6d7b74c3912293aac0f11/and_input.png) Here’s a screenshot that shows the output: ![and\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1d4b3444a42df52f/66c6d7b6e712ef38163128d2/and_output.png) #### or Use this function to perform a logical OR operation between two boolean values. You will get true if either of the boolean values is true, and false if both the boolean inputs are false. **Example:** \[\[or true false\]\]. In the above example: * **or** is the helper function * **true** is the first boolean value * **false** is the second boolean value Here’s a screenshot that shows the input: ![or\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt478bdb16999621d7/66c6d8b94b8e14303abc8c4c/or_input.png) Here’s a screenshot that shows the output: ![or\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt605c686ff8ebe34e/66c6d8b94c39127204ac0f4e/or_output.png) #### fromNow Use this function to check the time from an existing date with the specific date. **Example:** \[\[fromNow “01/08/2028” “MM/DD/YYYY”\]\]. In the above example: * **fromNow** is the helper function * **01/08/2028** is the date from which you want to check the time * **MM/DD/YYYY** is the date format of the specified date Here’s a screenshot that shows the input: ![fromNow\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5ef0a82349b04edd/66c6da4cdd1a36a74b40d5d8/fromNow_Input.png) Here’s a screenshot that shows the output: ![fromNow\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta11e25f10aeddb1c/66c6da4cca95956fb053c1b5/fromNow_Output.png) #### diffDate Use this function to calculate the difference between two dates. **Example:** \[\[diffDate “01/08/2028” “01/09/2028” “MM/DD/YYYY” “Months”\]\]. In the above example: * **diffDate** is the helper function * **01/08/2028** and **01/09/2028** are the dates to find the difference between * **MM/DD/YYYY** is the format of the specified dates * **Months** represent the desired output of the difference that you want i.e., months will fetch the difference between the two dates in months. Here’s a screenshot that shows the input: ![diffDate\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta3694082ddb1febf/66c6db3db506aa64b6c70085/diffDate_Input.png) Here’s a screenshot that shows the output: ![diffDate\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc3879fd7de861a4c/66c6db3cca9595c08153c1cd/diffDate_output.png) #### addDays Use this function to add days in the specified date. **Example:** \[\[addDays “01/08/2028” “MM/DD/YYYY” 5\]\]. In the above example: * **addDays** is the helper function * **01/08/2028** is the date in which you want to add the days * **MM/DD/YYYY** is the format of the specified date * **5** represents the total number of days you want to add in the specified date. Here’s a screenshot that shows the input: ![addDays\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte37d2e1b9aa7da72/66c6dc6d038881872d1f0798/addDays_Input.png) Here’s a screenshot that shows the output: ![addDays\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1eb1663e507e10d6/66c6dc6ddd1a3609a440d628/addDays_Output.png) #### subtractDays Use this function to subtract days from the specified date. **Example:** \[\[subtractDays “20/08/2028” “MM/DD/YYYY” 5\]\]. In the above example: * **subtractDays** is the helper function * **20/08/2028** is the date from which you want to subtract the days * **MM/DD/YYYY** is the format of the specified date * **5** represents the total number of days you want to subtract from the specified date Here’s a screenshot that shows the input: ![subtractDays\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9854b137ebcb7c65/66c6dd4cca9595384453c20a/subtractDays_Input.png) Here’s a screenshot that shows the output: ![subtractDays\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5711160a754f6185/66c6dd4c134286cef6c3f5c3/subtractDays_Output.png) #### formatDate (Scenario 1) Use this function to parse the date string according to the second argument, and then generate the output as per the third argument. **Example:** \[\[formatDate “16/08/2024” “DD/MM/YYYY” “YYYY/MM/DD”\]\]. In the above example: * **formatDate** is the helper function * **16/08/2024** is the date string * **DD/MM/YYYY** is the format of the specified date string * **YYYY/MM/DD** represents a new format in which you want to transform the date string Here’s a screenshot that shows the input: ![Format\_Date\_Scenario\_1\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte732e66824df4f6c/66c6de7ee712efbcb4312935/Format_Date_Scenario_1_Output.png) Here’s a screenshot that shows the output: ![Format\_Date\_Scenario\_1\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte732e66824df4f6c/66c6de7ee712efbcb4312935/Format_Date_Scenario_1_Output.png) #### formatDate (Scenario 2) Use this function to format the current date and time in ISO 8601 format. **Example:** \[\[formatDate\]\]. In the above example: * **formatDate** is the helper function Here’s a screenshot that shows the input: ![Format\_Date\_Without\_Arguments\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt32b15c06c0932021/66c6ebb30baf9b5de1af7a6f/Format_Date_Without_Arguments_Input.png) Here’s a screenshot that shows the output: ![Format\_Date\_Without\_Arguments\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltce304cc11f5160f9/66c6ebb3dd1a36335340d71b/Format_Date_Without_Arguments_Output.png) Refer to the below table to understand more about the formatDate function: Date Format Output (as of August 15th 2024, 8:41 PM IST) Description 'MMMM Do YYYY, h:mm:ss a' August 15th 2024, 8:41:35 pm Full date and time with month name, day of month with suffix, year, 12-hour clock, minutes, seconds, and AM/PM. 'dddd' Thursday Day of the week. 'MMM Do YY' Aug 15th 24 Abbreviated month name, day of month with suffix, and year in two digits. 'YYYY \[escaped\] YYYY' 2024 escaped 2024 Year with custom text insertion. '' (empty string) 2024-08-15T20:41:35+05:30 Default ISO 8601 format (date and time with timezone offset). 'LT' 8:41 PM Localized time. 'LTS' 8:41:35 PM Localized time with seconds. 'L' 08/15/2024 Localized short date. 'l' 8/15/2024 Localized short date without leading zeros. 'LL' August 15, 2024 Localized long date. 'll' Aug 15, 2024 Localized long date with abbreviated month. 'LLL' August 15, 2024 8:41 PM Localized long dates with time. 'lll' Aug 15, 2024 8:41 PM Localized long date with time and abbreviated month. 'LLLL' Thursday, August 15, 2024 8:41 PM Localized long date with day of the week and time. 'llll' Thu, Aug 15, 2024 8:41 PM Localized long date with abbreviated day of the week, month, and time. #### encodeURI Use this function to encode the junk data and space in the URL. **Example:** \[\[encodeURI “URL”\]\]. In the above example: * **encodeURI** is the helper function * **URL** is the specified URL to encode Here’s a screenshot that shows the input: ![EncodeURI\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt630a9b65084f1646/66c6f1e0b506aa885dc701df/EncodeURI_Input.png) Here’s a screenshot that shows the output: ![encodeURI\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltadb070eb5cf63063/66c6f1df20995eb0b0d2dc46/encodeURI_Output.png) #### ol Use this function to return the ordered list. **Example:** \[\[ol array\_of\_strings\]\]. In the above example: * **ol** is the helper function * **array\_of\_strings** is the array of strings Here’s a screenshot that shows the input: ![ol\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltae8c16a767f26523/66c6f274aff77de03bc43cde/ol_input.png) Here’s a screenshot that shows the output: ![ol\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7cb96b4d01680e4f/66c6f274c711718f0369bd42/ol_output.png) #### ul Use this function to return the unordered list. **Example:** \[\[ul array\_of\_strings\]\]. In the above example: * **ul** is the helper function * **array\_of\_strings** is the array of strings Here’s a screenshot that shows the input: ![ul\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6ce8ea086c6ce48e/66c6f31683db6716e4aeee40/ul_input.png) Here’s a screenshot that shows the output: ![ul\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1c85f1384b8f9175/66c6f3165c9bfe6b770f281f/ul_output.png) #### list Use this function to return the fetched array of objects. **Example:** \[\[#list array\_name\]\] \[\[this.name\]\] \[\[/list\]\]. In the above example: * **#list** is the helper function * **array\_name** fetches the array of objects from the previous step * **this.name** points to the attributes of the array. * **\[/list\]** indicates the end of list Here’s a screenshot that shows the input: ![List\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt648c59c1eabbd85a/66c6f3bd1ee805b59b1685dd/List_Input.png) Here’s a screenshot that shows the output: ![List\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc8c0233d28b32ae0/66c6f3be4c39120060ac1028/List_Output.png) #### italic Use this function to return the string in italic format. **Example:** \[\[italic “Hello World”\]\]. In the above example: * **italic** is the helper function * **Hello World i**s the string which you want to return in italic format Here’s a screenshot that shows the input: ![Italic\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt357aa19517062d21/66c6f47c4b8e1477f4bc8e18/Italic_Input.png) Here’s a screenshot that shows the output: ![Italic\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6bbbaf6871358c0d/66c6f47c038881de981f08de/Italic_Output.png) #### table Use this function to return the array in tabular format. **Example:** \[\[table array\_name\]\]. In the above example: * **table** is the helper function * **array\_name** is the array of objects Here’s a screenshot that shows the input: ![Table\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltae1c3b5884aa4fb5/66c6ff51aff77d49dbc43d45/Table_Input.png) Here’s a screenshot that shows the output: ![Table\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc4a0db69b83f32a5/66c6ff51e712ef5b09312ae1/Table_Output.png) **Note:** You will get the Inline helper ‘xyz’ not found error if any pre-defined class is not found/present. Let's explore the helper functions that are a part of the Transform action, but can also be implemented within the Template action. #### capitalize Use this function to convert the first letter or character of the input data into the capital (upper) case. **Example:** \[\[capitalize “hello world”\]\]. In the above example: * **capitalize** is the helper function * **hello world** is the string which you want to convert in capitalized format Here’s a screenshot that shows the input: ![Capitalize\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9d2d5eaa55ff547f/66c70f4c1ee8056dde168742/Capitalize_Input.png) Here’s a screenshot that shows the output: ![Capitalize\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt03ea43ef90750ba6/66c70f4cb506aab200c703a4/Capitalize_Output.png) #### upperCase Use this function to convert the input text into upper case. **Example:** \[\[upperCase “hello world”\]\]. In the above example: * **upperCase** is the helper function * **hello world** is the string which you want to convert in uppercase format Here’s a screenshot that shows the input: ![Uppercase\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt29863c7e37b779b5/66c7102ddd1a36320d40d94d/Uppercase_Input.png) Here’s a screenshot that shows the output: ![Uppercase\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9a8b2aa2be2c8d71/66c7102ddd1a36502f40d948/Uppercase_Output.png) #### lowerCase Use this function to convert the input text into lower case. **Example:** \[\[lowerCase “HELLO WORLD”\]\]. In the above example: * **lowerCase** is the helper function * **HELLO WORLD** is the string which you want to convert in lowercase format Here’s a screenshot that shows the input: ![lowerCase\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4665cb9ae3d3cada/66c710d5b506aa3149c70401/lowerCase_Input.png) Here’s a screenshot that shows the output: ![lowercase\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta9592214118ffce1/66c710d5dd1a368e7c40d96d/lowercase_Output.png) #### camelCase Use this function to convert the input text into the camel case. **Example:** \[\[camelCase “hello world”\]\]. In the above example: * **camelCase** is the helper function * **Hello world** is the string which you want to convert in camelcase format Here’s a screenshot that shows the input: ![camelCase\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt028c434ced7a9894/66c711a00baf9bd44baf7cf3/camelCase_Input.png) Here’s a screenshot that shows the output: ![camelCase\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf096ebb010ed6e76/66c711a05c9bfec19b0f29d4/camelCase_Output.png) #### kebabCase Use this function to convert the input text into the kebab case. **Example:** \[\[kebabCase “hello world”\]\]. In the above example: * **kebabCase** is the helper function * **hello world** is the string which you want to convert in kebabcase format Here’s a screenshot that shows the input: ![kebabCase\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt16ea1678344c2e6f/66c712789727682178b5d6bf/kebabCase_Input.png) Here’s a screenshot that shows the output: ![kebabCase\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6aa2aa9951d2f193/66c71278b506aa4234c70446/kebabCase_Output.png) #### snakeCase Use this function to convert the input text into the snake case. **Example:** \[\[snakeCase “hello world”\]\]. In the above example: * snakeCase is the helper function * **hello world** is the string which you want to convert in snakecase format Here’s a screenshot that shows the input: ![snakeCase\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1e147e6cd175aab7/66c7138e3f4c199a731ce5db/snakeCase_Input.png) Here’s a screenshot that shows the output: ![SnakeCase\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta19e9d4f25193fcd/66c7138eab1b695f3f3cc2af/SnakeCase_Output.png) #### replace Use this function to replace any character, word, or string given in the 2nd argument with the 3rd argument. **Example:** \[\[replace “input string”, “one char, one word or string”, “with this string”\]\]. **Note:** The replace modifier can only replace the first occurrence of a character/word/string. In the above example: * **replace** is the helper function * **Input string** is the string you want to modify * **one char**, **one word**, or **string** is the character, word, or string that you want to replace * **with this string** is the new string that will replace the specified part of the input string Here’s a screenshot that shows the input: ![replace\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt22d5dabea7a149f9/66c7141f5c9bfec0980f29e9/replace_input.png) Here’s a screenshot that shows the output: ![replace\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt152e3f7b6e334723/66c7141e134286c291c3f923/replace_Output.png) #### replaceAll Use this function to replace all the characters, words, or strings given in the 2nd argument with the 3rd argument. **Example:** \[\[replaceAll data, “one char, one word or string”, “with this string”\]\]. **Note:** The replaceAll modifier will replace multiple occurrences of a character/word/string with the same pattern. In the above example: * **replaceAll** is the helper function * **data** is the string you want to modify * **one char**, **one word**, or **string** is the character, word, or string that you want to replace * **with this string** is the new string that will replace the specified part of the input string Here’s a screenshot that shows the input: ![replaceAll\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0169c17fa0e85c76/66c715d30baf9bda6caf7d57/replaceAll_Input.png) Here’s a screenshot that shows the output: ![replaceAll\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1adddd0e5e826f66/66c715d333f9a5145f7aa72e/replaceAll_Output.png) #### uniqueItems Use this function to remove duplicate items and return unique values from an array. **Example:** \[\[uniqueItems myarray\]\]. In the above example: * **uniqueItems** is the helper function * **myarray** is the array of strings Here’s a screenshot that shows the input: ![uniqeItems\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5b0dae24da353e5b/66c716a85c9bfe028a0f2a52/uniqeItems_Input.png) Here’s a screenshot that shows the output: ![uniqueItems\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte2d1b439a9d36261/66c716a89727686465b5d749/uniqueItems_Output.png) #### escape Use this function to escape HTML characters. **Example:** \[\[escape “”\]\]. In the above example: * **escape** is the helper function * **** is the input HTML Here’s a screenshot that shows the input: ![escape\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt145d2d1ce6cbc3bd/66c717be3f4c1976051ce642/escape_input.png) Here’s a screenshot that shows the output: ![escape\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt440dcaf293b5ab28/66c717be5c9bfe56d50f2a65/escape_output.png) #### split Use this function to split the text into an array. **Example:** \[\[split “data-input” , “-”\]\]. In the above example: * **split** is the helper function * **data-input** is the input string * **“ ”** is the character to split the data input Here’s a screenshot that shows the input: ![Split\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf781b40538d997c2/66c71891b506aa51a0c704c9/Split_input.png) Here’s a screenshot that shows the output: ![Split\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt296e43316cad5aec/66c71890dd1a36204d40da92/Split_Output.png) #### join Use this function to join all items of an array to make a single string. **Example:** \[\[join myarray, “-”\]\]. In the above example: * **join** is the helper function * **myarray** is the array of strings * **“-”** is the character to join all the items of the array Here’s a screenshot that shows the input: ![join\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt91ca2c3b51fffec4/66c71941dd1a36178640daa9/join_input.png) Here’s a screenshot that shows the output: ![join\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt31842c4c902ed3fd/66c719410baf9b77acaf7d86/join_output.png) #### sum Use this function to perform the addition of all numbers. **Example:** \[\[sum 5 10 15\]\]. In the above example: * **sum** is the helper function * **5, 10, 15** are the integer values to be summed up Here’s a screenshot that shows the input: ![Sum\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt287b922f5eb0aeb8/66c71a1f1342860546c3f9ad/Sum_input.png) Here’s a screenshot that shows the output: ![Sum\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6ad5c8d6d0b824b9/66c71a1fb506aa69f0c704de/Sum_Output.png) #### random Use this function to generate random numbers from a specified range. **Example:** \[\[random 1 100\]\]. In the above example: * **random** is the helper function * **1 100** are the integer values to fetch a random value Here’s a screenshot that shows the input: ![random\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltad9a1f16b5dad70f/66c71abb3f4c19502e1ce698/random_input.png) Here’s a screenshot that shows the output: ![random\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4d904a3de8d76331/66c71abbe712ef6cde312db3/random_output.png) #### max Use this function to retrieve the largest number from an array. **Example:** \[\[max inputarray\]\]. In the above example: * **max** is the helper function * **inputarray** is the array of numbers Here’s a screenshot that shows the input: ![max\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1a150bc1dffb29e3/66c71ba24c391206f6ac12d5/max_input.png) Here’s a screenshot that shows the output: ![max\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3ba2bf062504cc28/66c71ba20baf9b3db8af7db7/max_output.png) #### min Use this function to retrieve the smallest number from an array. **Example:** \[\[min inputarray\]\]. In the above example: * **min** is the helper function * **inputarray** is the array of numbers Here’s a screenshot that shows the input: ![min\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf8cd2d31019f0427/66c71c564c39126dc9ac12e8/min_input.png) Here’s a screenshot that shows the output: ![min\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte7293f7cd3a7ed03/66c71c555c9bfefb630f2aaf/min_output.png) #### size Use this function to retrieve the size of an array. **Example:** \[\[size inputarray\]\]. In the above example: * **size** is the helper function * **inputarray** is the array of numbers Here’s a screenshot that shows the input: ![size\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7c9e41946559dbca/66c71d39aff77d43d4c43edb/size_input.png) Here’s a screenshot that shows the output: ![size\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc0004d098984f25d/66c71d395c1ba4402526a6d6/size_output.png) #### now Use this function to retrieve the current timestamp. **Example:** \[\[now toISO\]\]. **Options:** toISO | toDate | toGMT | toUTC | toTime In the above example: * **now** is the helper function * **toISO** is the time format in ISO 8601 Here’s a screenshot that shows the input: ![now\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc076cd5f0c3b9452/66c71e14c71171119769c14e/now_input.png) Here’s a screenshot that shows the output: ![now\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4c280eef0d4c01bf/66c71e14ca9595694753c4cb/now_output.png) #### jsonStringify Use this function to stringify an array. JSON Stringify is a method used to convert a JavaScript object, array, or other value into a JSON-formatted string. **Example:** \[\[jsonStringify myarray\]\]. In the above example: * **jsonStringify** is the helper function * **myarray** is an object Here’s a screenshot that shows the input: ![jsonStringify\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteac65f5d67a83bcc/66c71f04c71171824f69c15f/jsonStringify_Input.png) Here’s a screenshot that shows the output: ![jsonStringify\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3b70b41608cb31ac/66c71f04c711713d4369c15b/jsonStringify_Output.png) #### findInCollection Use this modifier to search and return the objects based on the specified criteria. **Example:** \[\[findInCollection inputarray, “name=Jim”\]\]. In the above example: * **findInCollection** is the helper function * **inputarray** is the array of objects * **name=Jim** is the filter criteria to return the object data Here’s a screenshot that shows the input: ![findInCollection\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf5130c8d89ddfe36/66c71faee712ef89f4312dfd/findInCollection_Input.png) Here’s a screenshot that shows the output: ![findInCollection\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7b5cc5f91f603ee8/66c71fae0baf9b2893af7dd3/findInCollection_Output.png) #### filterCollection Use this modifier to filter an array and remove all objects that don't match the condition. **Example:** \[\[filterCollection myarray "active=true"\]\]. In the above example: * **filterCollection** is the helper function * **myarray** is the array of objects * **active=true** is the filter criteria to return the object data Here’s a screenshot that shows the input: ![filterCollection\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf6676bc2d5ff2196/66c720235c9bfe9e240f2ad4/filterCollection_Input.png) Here’s a screenshot that shows the output: ![filterCollection\_Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt13c61e3c5ff49527/66c7202333f9a5fafc7aa79b/filterCollection_Output.png) #### trim Use this function to remove whitespace characters from the beginning and end of the string. This includes tab, space, null byte, new line, and carriage return. **Example:** \[\[trim “ Hello World ”\]\]. In the above example: * **trim** is the helper function. * **Hello World** is the input string. Here’s a screenshot that shows the input: ![trim\_Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt95b855c1f3925738/66c721965c9bfe4c7b0f2af1/trim_Input.png) Here’s a screenshot that shows the output: ![trim\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt15e3c60aba2b0eb7/66c721965c9bfe0caa0f2aed/trim_output.png) #### truncate Use this function to reduce the length of a string to a specific number of characters or words using ellipses or word-break options. **Note:** The boolean value (true or false) indicates whether you want to break the word. True means you do want to break the word, while false means you do not. Note that a space following the word is considered a break. For instance, with a boolean value of true, 'hello world' would break after 'hello'. **Example:** \[\[truncate string,number of characters,”ending string”, “word break”\]\]. In the above example: * **truncate** is the helper function * **string** is the input string * **number of characters** is the limit to reduce the input string length * **ending string** is the special character or ellipses used to end the string * **word break** specified as true/false to break the word **Note:** If the limit for the number of characters is more than that of the string, the output will contain the complete string without ellipses. Here’s a screenshot that shows the input: ![truncate\_input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt217bca27836e2760/66c7230220995e6f8dd2dfe1/truncate_input.png) Here’s a screenshot that shows the output: ![truncate\_output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt299eb547a1984d86/66c723029727688694b5d7c7/truncate_output.png) This sets up the **Transform** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/translate-data-using-smartling --- title: "Translate Data using Smartling" description: "Translate Data using Smartling" url: "https://www.contentstack.com/docs/agent-os/translate-data-using-smartling" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: translate-data-using-smartling.md --- # Translate Data using Smartling The End-to-End Translation use case shows how you can use Contentstack Automate to set up an automated language translation system for your Contentstack-powered website. In this use case, you will walk through the steps required to perform end-to-end translation of an entry created/updated in contentstack. Also, you will integrate a communication medium (say slack) to notify us whenever an entry gets successfully translated. The entire translation process consists of eight major steps right from configuring the entry trigger to setting up the slack channel. Here is the list of processes we need to execute. 1. [Configure Entry Trigger](#configure-entry-trigger) 2. [Add Content to a Project](#add-content-to-a-project) 3. [Pause an Automation](#pause-an-automation) 4. [Download Translated Content](#download-translated-content) 5. [Add the Transform Function](#add-the-transform-function) 6. [Localize an Entry](#localize-an-entry) 7. [Set Entry Workflow](#set-entry-workflow) 8. [Send Message](#send-message) Let’s have a look at the steps in detail.  1. ## Configure Entry Trigger 1. Log in to your [Contentstack account](https://app.contentstack.com/#!/login) and click the “Automate” icon. 2. Click **\+ New Project** to add a new project. 3. Click **\+ New Automation**. 4. Enter the **Automation Name** and **Description**. 5. Click **Create**. 6. Click **Configure Trigger** from the left navigation panel. 7. Within the **Configure Trigger** step, click the **Contentstack** connector. ![Select\_the\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbcef0c6da43f7209/651b9d4b5554e958f463c8d1/Select_the_Trigger.png) 8. Select **Entry** **Trigger**. ![Choose-trigger-Event.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte8eee1811e4b40ca/63d8ef8cf1b8c22282814f42/Choose-trigger-Event.png) 9. Click **\+ Add New Account** to add your Contentstack account. ![Add-New-Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt94e5f3667a603735/63d8ef8bc9787852a26be6b6/Add-New-Account.png) 10. Select the **Event** and the **Stack** for which you want to configure the trigger.  ![Select-Event-Stack.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt89df0b8adeeefab6/63d8efa8071fae111ebfd852/Select-Event-Stack.png) 11. Click **Proceed**. 12. Click **Test Trigger**. ![Test-Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaf109c95101766b5/63d8efb448166810e8b60c82/Test-Trigger.png) 13. Click **Save and Exit**. 2. ## Add Content to a Project After you configure the entry trigger, the next step is to configure the Smartling action connector by adding a project and the content you want to translate. 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Smartling** connector. ![Select\_the\_Smartling\_Connecto.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte0947f0ff260594b/651b9d4b7bedef004194c15d/Select_the_Smartling_Connecto.png) 4. Click **Add Content to a Project** action. ![Add-Content-To-Project-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt663730a635e49cda/63d8ef8bca59cf11374cee2b/Add-Content-To-Project-Action.png) 5. Click **\+ Add New Account** to add your Smartling account. **Note:** To add your Smartling account, refer to the [Smartling Connector](/docs/agent-os/smartling/) document. ![Add-Smartling-Account-AddContent.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt28ca62a2b30cf46a/63d8ef8be4e29e75dc5deac7/Add-Smartling-Account-AddContent.png) 6. Select the **Project ID**, the **Locale** in which you want the content to be translated, and add the **Contents**. 7. Add the **Callback URL** and click **Proceed**. **Note**: Smartling uses the **Callback URL** to resume the automations once the content is translated. ![Select-AddProject-Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta9a56608ee9fdbd6/63d8ef9c9d7bcb54223511a3/Select-AddProject-Fields.png) 8. Click **Test Action**. 9. You will get the following response once the action is successfully executed. **Note:** From the given set of response, preserve the fileuri as it will be used in the next steps. ![Save-Exit-Smartling.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb19a09c1a6704c9e/63d8ef9c5ba46f75ddba0ef3/Save-Exit-Smartling.png) 10. If all looks good, click **Save and Exit** to finish the process. This sets the Smartling action connector and **Add Content to a Project** step. 3. ## Pause an Automation The third step requires you to configure the **Pause** connector. The Pause connector lets you pause the automation until Smartling executes the translation process.  1. Click **\+ Add Step** under the Else step from the left navigation panel. 2. Within the **Configure Action Step**, click the **Pause** connector. ![Select\_the\_Pause\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf458e817563f5577/651b9d4b8dc13fa7bf8ecab9/Select_the_Pause_Connector.png) 3. Under **Choose an Action**, select the **Pause an Automation** action. ![Select-pause-Action.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/bltc7898c53f4159cca/63be89dca0db4d3e821efdab/Select-pause-Action.png) 4. Specify the properties you preserved in the previous steps such as file\_uri,content\_type, andentry\_id in the given fields. Then, click **Proceed**. ![Pause-Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt985369d03b80f892/63d8ef9caaf5cc62cfa66136/Pause-Fields.png) 5. Click **Test Action**. ![Test-Action-Contentstack-Localize-Entry.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1070ebfdb8a76485/63d8efb49d7bcb54223511a7/Test-Action-Contentstack-Localize-Entry.png) 6. You will get the following response once the action is successfully executed. ![Save-Exit-Pause.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc2cad6334b7d4e1b/63d8ef9c2d94ad4c89edc291/Save-Exit-Pause.png) 7. If all looks good, click **Save and Exit** to finish the process. This sets the **Pause** action connector. 4. ## Download Translated Content Once the content is successfully translated, the next step is to download the translated content. 1. Click **\+ Add Step** under the Else step from the left navigation panel. 2. Within the **Configure Action Step**, click the **Smartling** connector. ![Select\_the\_Smartling\_Connecto.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte0947f0ff260594b/651b9d4b7bedef004194c15d/Select_the_Smartling_Connecto.png) 3. Under **Choose an Action**, select the **Download Translated Content** action. ![Download-Translated-Content-Smartling.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt10485b56c0c756df/63d8ef9cca59cf11374cee2f/Download-Translated-Content-Smartling.png) 4. Click **\+ Add New Account** to add an account. ![Add-Smartling-Account-Download-Content.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt98a273d4761e9b65/63d8ef8b35e4be151745b234/Add-Smartling-Account-Download-Content.png) 5. Specify the **Project ID**, the **Locale**, and the **File URI** you preserved in the previous steps.  ![Download-Translated-Content-Smartling-Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt621db309a9cdcfe7/63d8ef9ce480c910d1acb5d8/Download-Translated-Content-Smartling-Fields.png) 6. Once done, click **Proceed**. 7. Click **Test Action** 8. You will get the following response once the action is successfully executed. The translated content is appended in the **data1** response shown here. ![Save-Exit-Download-Content-Smartling.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd6b5c5b2efef8f07/63d8ef9c59f4a64dd3157d0f/Save-Exit-Download-Content-Smartling.png) 9. Click **Save and Exit** to finish the process. This sets the download translated content action for your **Smartling** connector. 5. ## Add the Transform Function In the fifth step, you will add the **data1** response preserved in the previous step in a Transform function. This step is required because the Contentstack API expects the translated data in a particular format. 1. Within the **Configure Action Step**, click the **Transform** connector. ![Select\_the\_Transform\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4be97b73ee864abf/651b9d4becf48b7de0c37b84/Select_the_Transform_Connector.png) 2. Under **Choose an Action**, select the **Transform** action. ![Select-Transform-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfe38533a2536eaac/63d8efa85c5c9c52a32ed048/Select-Transform-Action.png) 3. Specify the **Input Name** and **Input Value** for the function in the given fields. ![Transform-Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt401ad6edadafeb6c/63d8efb48e456d21046c7695/Transform-Fields.png) 4. Once done, click **Proceed**. 5. Click **Test Action.**![Test-Action-Contentstack-Localize-Entry.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1070ebfdb8a76485/63d8efb49d7bcb54223511a7/Test-Action-Contentstack-Localize-Entry.png) 6. You will get the following response once the action is successfully executed. ![Save-Exit-Transform.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd1b87a7335e9d167/63d8ef9cffb41a7454dbf1fa/Save-Exit-Transform.png) 7. Click **Save and Exit** to finish the process. This sets the **Transform** function. 6. ## Localize an Entry 1. Click **\+ Add Step** under the Else step from the left navigation panel. 2. Within the **Configure Action Step**, click the **Contentstack** connector. ![Select\_the\_Contentstack\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcbb6c86df31e48c2/651b9d4becf48b9b44c37b80/Select_the_Contentstack_Connector.png) 3. Under **Choose an Action**, select the **Localize Entry** action. ![Select-Localize-Entry-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc2c485a1e227b1aa/63d8efa8e7a6981129095878/Select-Localize-Entry-Action.png) 4. Click **\+ Add New Account** to add your Contentstack account. ![Add-Contentstack-Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf7c451250446fd65/63d8ef8b5b2c1e6188c568f0/Add-Contentstack-Account.png) 5. Enter details such as **Stack**, **Content Type**, **Entry**, and **Locale**. Also, add the **Entry Data** preserved from the Transform function step ([step 5](#add-the-transform-function)).  ![Select-Localize-Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4d89783928564e5f/63d8efa8771d7f10c63c29d7/Select-Localize-Fields.png) 6. Once done, click **Proceed**. 7. Click **Test Action**. ![Test-Action-Contentstack-Localize-Entry.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1070ebfdb8a76485/63d8efb49d7bcb54223511a7/Test-Action-Contentstack-Localize-Entry.png) 8. You will get the following response once the action is successfully executed. ![Save-Exit-Localize.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5b32962b2d9ea440/63d8ef9cbbcc27228d8e0219/Save-Exit-Localize.png) 9. Click **Save and Exit** to finish the process. This sets the Localizing an Entry step. 7. ## Set Entry Workflow The seventh step requires you to add workflow stages for your stack. This will allow you to define different stages of the review process for your team. 1. Click **\+ Add Step** under the Else step from the left navigation panel. 2. Within the **Configure Action Step**, click the **Contentstack** connector. ![Select\_the\_Contentstack\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcbb6c86df31e48c2/651b9d4becf48b9b44c37b80/Select_the_Contentstack_Connector.png) 3. Under **Choose an Action**, select the **Set Entry Workflow** action. ![Select-Workflow-Stage-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb9038a8b2a21b008/63d8efb4ddb7a921030a76a5/Select-Workflow-Stage-Action.png) 4. Click **\+ Add New Account** to add your Contenstack account. ![Add-Set-Workflow-Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb74f37df2f15dc7b/63d8ef8be480c910d1acb5d4/Add-Set-Workflow-Account.png) 5. Add details such as **Stack**, **Content Type**, **Entry**, **Workflow Stage**. You can add dynamic parameters such as **Assignee Name**, **Assignee Role**, **Set Due Date**, **Notify via Email**, **Locale** and let you add **Workflow Comments**. ![Set\_Entry.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3f7de6fe582c5de1/651b9f426c9e36dd6bc0a55c/Set_Entry.png) 6. Once done, click **Proceed**. 7. Click **Test Action**. ![Test-Action-Contentstack-Localize-Entry.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1070ebfdb8a76485/63d8efb49d7bcb54223511a7/Test-Action-Contentstack-Localize-Entry.png) 8. Click **Save and Exit** to finish the process. ![Save-Exit-Workflow-Stage.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte2918c787016b971/63d8ef9c99f0c910e171a237/Save-Exit-Workflow-Stage.png) This sets the **Set Entry Workflow** step. 8. ## Send Message The last step is to set up a notification channel in Slack. 1. Click **+ Add Step** under the Else step from the left navigation panel. 2. Within the **Configure Action Step**, click the **Slack** connector. ![Select\_the\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5340c62e4ebe25de/651b9d4bf156d5247caf0c5d/Select_the_Connector.png) 3. Under **Choose an Action**, select the **Send Message** action. ![Send-Message-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta4f1718b33cec990/63d8efb46977b36187ca4e68/Send-Message-Action.png) 4. Click **\+ Add New Account** to add your Slack account. ![Add-Slack-Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2a193d8e206426c1/63d908f7e408254c88fc038c/Add-Slack-Account.png) 5. Add the desired **Slack Channel** where you want to get the notifications. Enter the **Message** body. ![Select-Slack-Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf42ea9ffb6d3480f/63d8efa8e4e29e75dc5deacb/Select-Slack-Fields.png) 6. Click **Proceed**. 7. Click **Test Action.** 8. Click **Save and Exit** to finish the process. ![Slack-Save-Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltea5b783de295a792/63d8efb43f562662ce10ab5f/Slack-Save-Exit.png) This sets the last step to set up a notification channel in Slack. --- ## URL: https://www.contentstack.com/docs/agent-os/travisci --- title: Automations guides and connectors - TravisCI description: TravisCI connector documentation for setting up an action connector and triggering a build. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/travisci product: Automation Hub doc_type: connector-guide audience: - developers - automation-builders version: v1 last_updated: 2026-03-26 filename: travisci.md --- # Automations guides and connectors - TravisCI This page describes the TravisCI connector in Automation Hub and explains how to set up the TravisCI action connector to trigger builds for GitHub or Bitbucket repositories. It is intended for developers or automation builders configuring third-party service actions and should be used when integrating TravisCI into an automation workflow. ## TravisCI TravisCI is an integration service used to test the repositories hosted on GitHub or Bitbucket. When you integrate your GitHub or Bitbucket repositories with your TravisCI account, it checks for the configuration defined in the .travis.yml file (that you need to define) and notifies you with the output. TravisCI is very helpful as it lets you test any kind of code break or redundancy in the master repository of your GitHub or Bitbucket accounts. ## Set Up TravisCI Perform the following steps to set up TravisCI action connector: - Click** Configure Action Step** from the left navigation panel. - Click** Action Step **to configure third-party services. - Within the **Configure Action Step**, click the **TravisCI** connector. - Under **Choose an Action** tab, select the **Trigger a Build** action. - In the **Configure Action** tab, click**+ Add New Account** to add your TravisCI account. - In the **Authorize** pop-up window, provide the **API Token**. - To generate an API Token, log in to the TravisCI dashboard and perform the following steps: - Under User Settings, select **Settings**. - Under the **Settings** tab, copy the **Token** value. **Additional Resource:** For more information, refer to the [Token](https://blog.travis-ci.com/2013-01-28-token-token-token/) document. - Once done, click**Authorize**. - Select a **Repository** from the **Lookup** list. You need to integrate your GitHub or Bitbucket repositories within TravisCI. - Select a **Branch** from the **Lookup** list. - Clicking the **Show optional field** toggle button lets you add the **Commit message** and **Configuration** fields. - Provide a new **Commit message**. This will override any previous commit message. - Provide additional configuration details (in JSON format only) in the **Configuration** field. This will get added into the .travis.yml file. - Once done, click **Proceed**. - Click **Test Action**. - On successful configuration, you can see the below output. Click **Save and Exit**. - Navigate to TravisCI to check the progress. You should see the following output: This sets the **TravisCI **action connector. ## Common questions ### Where do I get the TravisCI API Token? To generate an API Token, log in to the TravisCI dashboard, go to User Settings, select **Settings**, and copy the **Token** value under the **Settings** tab. ### What repositories can I use with this connector? You need to integrate your GitHub or Bitbucket repositories within TravisCI, then select a **Repository** from the **Lookup** list. ### What does the optional Configuration field do? Provide additional configuration details (in JSON format only) in the **Configuration** field. This will get added into the .travis.yml file. ### What happens after I click Test Action? On successful configuration, you can see the below output. Click **Save and Exit**, then navigate to TravisCI to check the progress. --- ## URL: https://www.contentstack.com/docs/agent-os/trigger-conditions --- title: "Trigger Conditions" description: "Learn how to set trigger conditions in automations to execute workflows based on events and logic-driven rules." url: "https://www.contentstack.com/docs/agent-os/trigger-conditions" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: trigger-conditions.md --- # Trigger Conditions While configuring automation triggers, you can customize the automation by applying certain conditions. The automation runs only if the trigger conditions are met. With the Trigger Conditions, match the input using a predefined operator with a specific value. You can add multiple operators and customize the trigger condition. Let’s look at each one of the operators and see how you can manipulate your automation output based on the conditions. **Matches (Text)** * Matches the input with the string value provided and is case-sensitive. **Loosely matches (Text)** * Matches the input with the string value provided and is not case-sensitive. **Does not match (Text)** * Checks whether the input does not match the string value provided and is case-sensitive. **Does not loosely match (Text)** * Checks whether the input does not match the string value provided and is not case-insensitive. **Contains (Text)** * Checks whether the input contains the value provided. **Does not contain (Text)** * Checks whether the input does not contain the value provided. **Starts with (Text)** * Checks whether the input (string) starts with the value provided. **Does not start with (Text)** * Checks whether the input (string) does not start with the value provided. **Ends with (Text)** * Checks whether the input (string) ends with the value provided. **Does not end with (Text)** * Checks whether the input (string) does not end with the value provided. **Is empty (Text)** * Checks whether the input (string) is empty based on the selected boolean value. **Equals (Number)** * Checks whether the input is equal to the numeric value provided. **Not equals (Number)** * Checks whether the input is not equal to the numeric value provided. **Greater than (Number)** * Checks whether the input is greater than the numeric value provided. **Less than (Number)** * Checks whether the input is less than the numeric value provided. **Greater than or equals (Number)** * Checks whether the input is greater than or equal to the numeric value provided. **Less than or equals (Number)** * Checks whether the input is less than or equal to the numeric value provided. **Is positive (Number)** * Checks whether the input is a positive numeric value based on the boolean value selected. **Equals (Date)** * Checks whether the input is equal to the date value provided. The format should be DD/MM/YYYY. **Less than (Date)** * Checks whether the input date comes before the date value provided. **Greater than (Date)** * Checks whether the input date comes after the date value provided. **Less than or equals (Date)** * Checks whether the input date comes before or on the date value provided. **Greater than or equals (Date)** * Checks whether the input date comes after or on the date value provided. **Equals (Date/Time)** * Checks whether the input equals the date/time value provided. The format should be DD/MM/YYYY. **Less than (Date/Time)** * Checks whether the input date comes before the date/time value provided. **Greater than (Date/Time)** * Checks whether the input date comes after the date/time value provided. **Less than or equals (Date/Time)** * Checks whether the input date comes before or on the date/time value provided. **Greater than or equals (Date/Time)** * Checks whether the input date comes after or on the date/time value provided. **Has property (Object)** * Checks whether the input (Object) contains the property (key) provided. **Does not have property (Object)** * Checks whether the input (Object) does not contain the property (key) provided. **Is empty (Object)** * Checks whether the input (Object) is empty, based on the selected boolean value. **Is an object (Input)** * Checks whether the input is an object, based on the selected boolean value. **Is a number (Input)** * Checks whether the input is a number, based on the selected boolean value. **Is an array (Input)** * Checks whether the input is an array, based on the selected boolean value. **Is a number text (Input)** * Checks whether the input is a number text, based on the boolean value selected. **Is a text (Input)** * Checks whether the input is a text (string), based on the boolean value selected. **Is a date (Input)** * Checks whether the input is a date, based on the boolean value selected. **Is a falsy value(Input)** * Checks whether the input is a falsy value (null/empty) etc., or not; based on the boolean value selected. **Data type (Input)** * Checks whether the input data type matches the data type selected in the value field. **Is empty (Array)** * Checks whether the input (array) is empty, based on the boolean value selected. **Value exists (Array)** * Checks whether the input (array) contains the value provided. **Value does not exists (Array)** * Checks whether the input (array) does not contain the value provided. **Length greater than (Array)** * Checks whether the length of the input (array) is greater than the length provided in the value field. **Length less than (Array)** * Checks whether the length of the input (array) is less than the length provided in the value field. --- ## URL: https://www.contentstack.com/docs/agent-os/twilio --- title: Automations guides and connectors - Twilio description: Set up and use the Twilio action connector to perform voice, messaging, video, and other communication functions via Twilio web service APIs. url: https://www.contentstack.com/docs/developers/automation-hub-connectors/twilio product: Automation Hub doc_type: connector-guide audience: - developers - automation-builders version: v1 last_updated: 2026-03-26 filename: twilio.md --- # Automations guides and connectors - Twilio This page describes the Twilio action connector and the steps required to configure it for sending SMS within an automation flow. It is intended for developers and automation builders who need to integrate Twilio communication capabilities into web or mobile app workflows. ## Twilio Twilio is a communication app and this action connector lets you enable and perform voice, messaging, video, and other communication functions within the web and mobile apps by using its web service APIs. ## Set up Twilio Perform the following steps to set up the Twilio action connector: - Click **Configure Action Step** from the left navigation panel. - Click **Action Step** to configure third-party services. - Within the **Configure Action Step**, click the **Twilio** connector. - Under** Choose an Action** tab, select the **Send SMS** action. - On the **Configure Action** page, click **+ Add New Account**. - In the **Authorize** modal, enter your **Account SID** and **Token** (i.e., your project Auth Token). **Additional Resource:** You will find these credentials in the homepage of your Twilio account/project. For more information, refer to the [Credentials REST API Authentication | Twilio](https://www.twilio.com/docs/iam/credentials/api/) document. - Once done, click on **Authorize** (screenshot 1 in the above step). - Click the **Caller ID** textbox, and under **Lookup**, select the phone number (already configured in your Twilio account) using which you want to send the SMS. - In the **To** textbox, enter the phone number you want to send the SMS to and your message in the **Message** box. Click **Proceed**. - In the next step, click **Test Action**. You will see the following output. If the output looks correct, click **Save and Exit**. This sets the **Twilio** action connector. ## Common questions ### Where do I find the Account SID and Token needed for authorization? You will find these credentials in the homepage of your Twilio account/project. For more information, refer to the [Credentials REST API Authentication | Twilio](https://www.twilio.com/docs/iam/credentials/api/) document. ### What action is selected when configuring the Twilio connector in this guide? Under** Choose an Action** tab, select the **Send SMS** action. ### What should I do after entering the To number and Message? In the **To** textbox, enter the phone number you want to send the SMS to and your message in the **Message** box. Click **Proceed**. ### How do I confirm the connector is working before saving? In the next step, click **Test Action**. You will see the following output. If the output looks correct, click **Save and Exit**. --- ## URL: https://www.contentstack.com/docs/agent-os/typesense-cloud --- title: "Typesense Cloud" description: "Use the Typesense Cloud Connector to seamlessly index, update, or delete documents with Automate workflows." url: "https://www.contentstack.com/docs/agent-os/typesense-cloud" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: typesense-cloud.md --- # Typesense Cloud The Typesense Cloud Connector lets you automate adding, updating, or deleting indexed documents in a Typesense Cloud collection. By integrating this connector in your Contentstack Automations, you can keep your search indexes in sync with your content workflows. ## Prerequisites * Typesense Cloud [account](https://cloud.typesense.org/) * Contentstack [account](https://www.contentstack.com/login) * Access to organization that has Agent OS enabled To use the Typesense Cloud connector, you must first add your Typesense Cloud account. To do so, follow the steps given below: ## Connect your Typesense Cloud Account 1. Click **Configure** **Action** **Step** in the left navigation panel. 2. Click **Action** **Step** to configure third-party services. 3. Within the **Configure** **Action** **Step**, click the **Typesense Cloud** connector.![Typesense\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt86c1bb718850df4a/68ba89f4b6a4572295fe66f2/Typesense_Connector.png) 4. Under **Choose an Action** tab, select any one action from the list. Here, we are selecting the **Index an Entry** action.![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte89dc20bbdf4835a/68beaafed2e6bb5112d17c32/Select_Fields.png) 5. On the **Configure Action** page, click the **\+ Add New Account** to add your Typesense Cloud account.![Add\_an\_Accoun.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltba741223e3bd2751/68beaaecbc3a224c294b6dd4/Add_an_Accoun.png) 6. In the **Authorize** modal, enter the **API Key** and the **Typesense Host Node URL**. 1. To generate the API Key, login to your Typesense Cloud [account](https://cloud.typesense.org/). 2. In the Typesense Cloud dashboard, click **Overview** in the left navigation panel. 3. Click **Generate API Keys** to create a new API Key. An API key file is downloaded to your local machine. You will see two API keys: **Admin API Key** and **Search Only API Key**. * **Search Only API Key:** Use this API Key to search or read the data from Typesense Cloud collection. * **Admin API Key:** Use this API Key to write the data in the Typesense Cloud collection. ![Typesense\_Cloud\_Generate\_API\_Keys.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt072fa97d45b57362/68ba89f411efa939785c8eac/Typesense_Cloud_Generate_API_Keys.png) 4. Copy the **Admin API Key**. 5. Copy the node **URL** to add the Typesense Host Node URL. 6. To add/update/delete a document, you must create a **Collection** in the Typesense Cloud account. To do so, follow these steps: 1. In the left navigation panel, click **Collections**. 2. Click **New Collection**. 3. Edit the example schema and click **Create Collection**. **Additional Resource:** Refer to the [Collections](https://typesense.org/docs/29.0/api/collections.html#create-a-collection) documentation to learn more. 7. Enter an Account Name, then click **Authorize**.![Authorize\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt917942b07533702e/68ba89eaea3098f83cec1e4b/Authorize_Account.png) Once done, you can go ahead and set up your Typesense Cloud connector. ## Set up the Typesense Cloud Connector Perform the following steps to set up the Typesense Cloud connector: 1. From the left navigation panel, click **Configure Action** Step. 2. Then, click **Action** **Step** to configure third-party services. 3. Within the **Configure** **Action** **Step**, click the **Typesense Cloud** connector.![Typesense\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt86c1bb718850df4a/68ba89f4b6a4572295fe66f2/Typesense_Connector.png) 4. Under **Choose an Action**, you will see these actions: **Index an Entry**, **Update an Entry**, and **Delete an Entry**.![Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte89dc20bbdf4835a/68beaafed2e6bb5112d17c32/Select_Fields.png) Let’s look at each of them in detail. ### Index an Entry This action adds a new document into a Typesense Cloud collection. 1. Under **Choose an Action** tab, select the **Index an Entry** action. 2. On the **Index an Entry Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** to connect your Typesense Cloud account as shown in the [Connect your Typesense Cloud Account](#connect-your-typesense-cloud-account) step. 2. Select an existing **Collection Name** to add the document from the **Lookup** list. 3. In the **Document ID** field, enter the ID of the document to add into the Typesense collection. **Note:** The Document ID in **Typesense Cloud** refers to the unique identifier for each record within a collection. This ID is essential for creating, updating, deleting, or retrieving records. 4. In the **Entry Data** field, enter the entry data in JSON format to add in a specific collection. ![Select\_Fields\_Index.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1529161190a9bb5d/68beaafed8ada2f45a2f23e8/Select_Fields_Index.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test Action**. 5. The output will be shown as below. Click the **Save and Exit** button. ![Save\_Exit\_Button\_Index.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta68809cc61a49eee/68ba89eabfa11f65b4a16c83/Save_Exit_Button_Index.png) ### Update an Entry This action updates the entry data in the Typesense Cloud collection. 1. Under **Choose** **an Action** tab, select the **Update an Entry** action. 2. On the **Update an Entry Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** to connect your Typesense Cloud account as shown in the [Connect your Typesense Cloud Account](#connect-your-typesense-cloud-account) step. 2. Select an existing **Collection Name** to update the document from the **Lookup** list. 3. In the **Document ID** field, enter the ID of the document to update into the Typesense collection. 4. In the **Entry Data** field, enter the entry data in JSON format to update a specific collection. It is not necessary to provide the complete document object; you only need to include the fields that require updating.![Select\_Fields\_Update\_an\_Entry.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd006c208abc5ee00/68beaafe356bcf1c69727bff/Select_Fields_Update_an_Entry.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test** **Action**. 5. Once set, click **Save** **and** **Exit**.![Save\_Exit\_Button\_Update.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt399119f2fbae7600/68ba89eac9b76ab0c8394766/Save_Exit_Button_Update.png) ### Delete an Entry This action removes a single document from the Typesense Cloud collection. 1. Under **Choose** **an Action** tab, select the **Delete an Entry** action. 2. On the **Delete an Entry Configure Action** page, enter the details given below: 1. Click **\+ Add New Account** to connect your Typesense Cloud account as shown in the [Connect your Typesense Cloud Account](#connect-your-typesense-cloud-account) step. 2. Select the **Collection Name** from the **Lookup** list where the document resides. 3. In the **Document ID** field, enter the ID of the document to delete from the Typesense collection. ![Select\_Fields\_Delete.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5cff1434d339aa61/68beaafee2fb9a29d4917590/Select_Fields_Delete.png) 3. Click **Proceed**. 4. Check if the details are correct. If yes, click **Test** **Action**. 5. Once set, click **Save** **and** **Exit**.![Delete\_Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt90f7582507137a3c/68ba89eab6a457a937fe66ee/Delete_Test_Action.png) This sets the **Typesense Cloud** connector. --- ## URL: https://www.contentstack.com/docs/agent-os/using-conditional-paths-to-customize-automations --- title: "Using Conditional Paths to Customize Automations" description: "Using Conditional Paths to Customize Automations" url: "https://www.contentstack.com/docs/agent-os/using-conditional-paths-to-customize-automations" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: using-conditional-paths-to-customize-automations.md --- # Using Conditional Paths to Customize Automations This use case covers a scenario where you can execute an Automation based on a conditional path. The conditional path configurations are checked, and if the condition is true, the **If** step actions are executed, otherwise the **Else** step actions are executed. Creating a new entry triggers the automation, and the conditional path configurations are checked. If the condition is true, the If step will execute the Slack connector that will send a message to the configured channel. If the condition is false, the Else step will execute the Transform connector that will fetch the entry details from the trigger and pass these details as an object in Algolia. Let's break this scenario to see what must be the trigger event and the consequent action required to execute the Automation: * **Set up the Contentstack “Entry Created'' Trigger Event:** This trigger event is activated whenever a user creates a new entry in Contentstack and in turn it executes the automation. * **Set up the Contentstack “Conditional Path”:** Once the above event triggers the automation, it checks for the configuration provided within the conditional path. * **Set up the Slack “Send Message” action for the If step:** When the conditional path configurations are met, the If step action will send a message to the configured channel using the Slack action connector. * **Set up the “Transform” action for the Else step:** When the conditional path configurations are not met, the Else step will execute the Transform action which will fetch the entry UID from the entry trigger as a JSON object and entry data will be merged in the final result. * **Set up the Algolia “Index Entries” action for the Else step:** Once the transformation is complete, an object will be created in the Algolia index with the same entry UID. The steps to set up the Automation are as follows: 1. [Configure Entry Trigger](#configure-entry-trigger) 2. [Configure Conditional Path](#configure-conditional-path) 3. [Configure Slack Connector within the If Step](#configure-slack-connector-within-the-if-step) 4. [Configure Transform Connector within the Else Step](#configure-transform-connector-within-the-else-step) 5. [Configure Algolia Connector within the Else Step](#configure-algolia-connector-within-the-else-step) Let’s look at the setup in detail. 1. ## Configure Entry Trigger 1. Log in to your [Contentstack account](https://www.contentstack.com/login/) and click the “Automate” icon. ![Agent\_OS.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc8494fab1b356859/699d40c3370b580008b424db/image11.png) 2. Click **\+ New Project** to add a new project. 3. Click **\+ New Automation**. 4. Enter the **Automation Name** and **Description**. 5. Click **Create**. 6. Select **Configure Trigger** from the left navigation panel. ![image3.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt36d92ba8b250f552/699d43f7a9de3800086c8459/image3.png) 7. Within the **Configure Trigger** step, click the **Contentstack** connector.![image23.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8f18a98110e4f976/699d4475a6967e0008df547f/image23.png) 8. Click **Entry Trigger** from the list of trigger events. ![image24.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb0d02448a34995f7/699d45072b6dd50008a8a787/image24.png) 9. Add your Contentstack account. For more information, refer to the [Contentstack Trigger](/docs/agent-os/contentstack-trigger/) documentation. 10. Select **Entry Created** event from the list of events. Select a **Stack,** and a **Branch** from the **Lookup** dropdown. ![image5.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt61a613b02c440df5/699d460776a08e000872844a/image5.png) 11. Once done, click **Proceed**. 12. Click **Test Trigger** to test the configured trigger. 13. On successful configuration, you can see the below output. Click **Save and Exit**. ![image19.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3560125d85c2bdbd/699d483e133ed700086b1217/image19.png) **Note:** You can specify trigger conditions that will determine whether the complete automation should run or not. The automation and conditional path will not be carried out if the trigger conditions are not satisfied. You can see the updated list of executions in the Execution Log section 2. ## Configure Conditional Path 1. Click **Configure Action Step** from the left navigation panel. ![image1.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteb1aad80ebc797d2/699d4ae58a389b0008e2f6b9/image1.png) 2. Click **Conditional Path** to configure and set conditions. ![image2.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt072903cca14d818c/699d4bb22f2b150008a7fc59/image2.png) 3. Click **+ Add Condition**. In the **Select Input** box, enter the content type UID from the previous step. Select **Matches (Text)**, and provide the UID of the content type in the input box. ![image10.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbf28dbac850fe209/699d4c5c50bc530008da6258/image10.png) 4. Click **Save Configuration**. 3. ## Configure Slack Connector within the If Step When the conditional path configurations are met, the If step action of sending a Slack message is executed. 1. Click **\+ Add Step** under the If step from the left navigation panel. ![image7.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7b744b7e6868ae63/699d4cb282302d0008039f84/image7.png) 2. Within the **Configure Action Step**, click the **Slack** connector. **Note:** You can sort and search the connector(s) based on the filter. ![image14.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9823b4426495e775/699d4d8a133ed700086b1229/image14.png) 3. Under **Choose an Action**, select the **Send Message** action.![image6.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte85d4c3d43166fdb/699d4dea2664c800089242ee/image6.png) 4. In the **Configure Action** tab, add your Slack account. For instructions on adding your account, refer to the [Slack](/docs/agent-os/slack/) connector documentation. 5. Select a **Channel** from the **Lookup** list where you want to send the message. Enter the message in the **Message** field. ![image16.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcaaa0bea0526e34f/699d4eb38a5f830008ab5d9e/image16.png) 6. Click **Proceed**. 7. Click **Test Action** to test the configured action. 8. On successful configuration, you can see the below output. Click **Save and Exit**.![image9.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt541ba3c1676a0dda/699d4faa490f3a0008d963cc/image9.png) 9. Once you configure the Slack action, you can add other actions inside the If step using the quick select screen. Similarly, you can also configure Else steps. **Note:** The quick select next step screen appears only when you have configured an action inside the If-Else step. ![image4.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt00b0f31a77fd6175/699d501e8c820f0008262e0f/image4.png) This sets the **Slack** action connector 4. ## Configure Transform Connector within the Else Step When the conditional path configurations are not met, the Else step actions of transformation and indexing entries in Algolia are executed. 1. Click **\+ Add Step** under the Else step from the left navigation panel. ![image17.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd203396db3515a0f/699d50d2b88caa00080c274f/image17.png) 2. Within the **Configure Action** Step, click the **Transform** connector. ![image25.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc97c1e61447d5c88/699d5357973a3b00089af275/image25.png) 3. Under **Choose an Action**, select the **Transform** action. ![image22.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltddd994b9f42ee414/699d53d4b88caa00080c2767/image22.png) 4. Click **Add Input**, and enter a variable name for the **Input Name** (say, “ObjectID”) and an **Input Value** configured in the previous step (entry UID) (see the screenshot in next step). 5. Click **\+ Add Objects to Merge** and fetch the complete entry details configured in the previous step as shown below. ![image20.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt49e885fcfc4019ab/699d55541abb8400085b388e/image20.png) 6. In the **Transformation** field, enter the JSON code to fetch the UID value from the **Input Value** field in a variable. You can use the following code format: {“objectID” : “{ObjectID}”}  ![image15.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt234f84d6452cca0a/699d56af8a389b0008e2f6d1/image15.png)   7. Click **Proceed**. 8. Click **Test Action** to test the configured action. 9. On successful configuration, you can see the below output. Click **Save and Exit**.![image8.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0c7d5273103efc7b/699d57932f6e3f000833ac61/image8.png) This sets the **Transform** action connector. 5. ## Configure Algolia Connector within the Else Step 1. Click **\+ Add Step** under the Else step from the left navigation panel.![image13.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta95d0867fd584bd2/699d586e976a3a00080febc5/image13.png) 2. Within the **Configure Action** Step, click the **Algolia** connector.![image18.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt71c09e4ee8228e7b/699d58e32f2b150008a7fca3/image18.png) 3. Under **Choose an Action** tab, select the Index Entries action. ![image12.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt48ad3d68af26cd33/699d5a2482302d0008039faf/image12.png) 4. In the **Configure Action** tab, add your Algolia account. For instructions on adding your account, refer to the [Algolia](/docs/agent-os/algolia/) connector documentation. 5. Select the **Index Name** where you want to send the data in the form of a list of objects. 6. In the **Entries** field, select the entry data fetched from the transform step. **Note:** Provide your index data as per your object schema and in JSON format only. 7. Click **Proceed**. 8. Click **Test Action** to test the configured action. 9. On successful configuration, you can see the below output. Click **Save and Exit**. 10. Go to the Algolia Index section and check the latest index entry with the data. ![image21.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd5cefd9b93caf895/699d603b3bafa80008727c94/image21.png) **Note:** You can view the status of your executions in the Execution Log section. --- ## URL: https://www.contentstack.com/docs/agent-os/using-repeat-paths-to-automate-repetitive-tasks --- title: "Using Repeat Paths to Automate Repetitive Tasks" description: "Using Repeat Paths to Automate Repetitive Tasks" url: "https://www.contentstack.com/docs/agent-os/using-repeat-paths-to-automate-repetitive-tasks" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: using-repeat-paths-to-automate-repetitive-tasks.md --- # Using Repeat Paths to Automate Repetitive Tasks This use case covers a scenario where you can dynamically create multiple entries in Contentstack using the Repeat Path feature. In this use case, we send bulk data via Postman and fetch the data in the HTTP trigger. Once the data is fetched, you need to configure the Repeat Path. Select the HTTP trigger data via the Data source field in the Repeat Path configuration. **Note:** You can use any trigger or action to fetch the data from any source. Configure the Contentstack action and select the Create an Entry action inside the repeat path. In the Create an Entry action, fetch the current-item value from the Repeat Path step. The current\_item will iterate through each item in the data array and create the entries in Contentstack. Let's break this scenario to see what must be the trigger event and the consequent action required to execute the Automation: * **Set up the “HTTP'' Trigger Event:** This trigger event is activated whenever a user makes a HTTP GET/POST request to the configured URL. In this case, the data is collected from Postman to the HTTP trigger. * **Set up the Contentstack “Repeat Path”:** Once the above event triggers the automation, it checks for the configuration provided within the repeat path. * **Set up the Contentstack “Create an Entry” action:** When the Repeat Path configurations are set, the create an entry action will create different entries in Contentstack. **Note:** Once you configure any action inside the Repeat Path, it will execute the action step repeatedly until the condition is met. The steps to set up the Automation are as follows: 1. [Configure HTTP Trigger](#configure-http-trigger) 2. [Configure Repeat Path](#configure-repeat-path) 3. [Configure Contentstack Connector within the Repeat Path Step](#configure-contentstack-connector-within-the-repeat-path-step) Let’s look at the setup in detail. 1. ## Configure HTTP Trigger 1. Log in to your [Contentstack account.](https://www.contentstack.com/login/) 2. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list. ![image14.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd6084ca969044590/699d9d51af65af3c581da429/image14.png)[](https://www.contentstack.com/login/) 3. Click **\+ New Project** to add a new project. 4. Click **\+ New Automation**. 5. Enter the **Automation Name** and **Description**. 6. Click **Create**. 7. Select **Configure Trigger** from the left navigation panel. ![image3.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt51088f75e1d8eb90/699d9d6bbc49c470948a793e/image3.png) 8. Within the **Configure Trigger** step, click the **HTTP** trigger connector. ![image6.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt407a17262b4691b4/699d9d8162d1393fbf846391/image6.png) 9. Select **HTTP Request Trigger**. This trigger will be activated whenever you make an HTTP GET/POST request to a specific webhook URL. ![Select\_HTTP\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted3d78295677ac15/6602dcb1aabcc9a37f2f4bc5/Select_HTTP_Trigger.png) 10. Select a **Method**, i.e., **GET/POST**. ![image19.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8f8ab0078d66f3be/699d9db1b009382400832b31/image19.png) 11. Click the **Proceed** button. 12. You will find the applicable input “URL.” This URL will be the webhook URL to see the rule working. To send the data, hit the URL with a POST call in Postman. **Note:** Let’s consider the following dummy data from Postman. ``` { "Students": [ {"studentName":"test1","studentClass":"6","studentSection":"A"}, {"studentName":"test2","studentClass":"7","studentSection":"B"}, {"studentName":"test3","studentClass":"8","studentSection":"C"}, {"studentName":"test4","studentClass":"9","studentSection":"D"} ]} ``` 13. Click the **Test Trigger** button to test the configured trigger. 14. On successful configuration, you can see the below output. Click the **Save and Exit** button. ![image7.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt610de13b1763451c/699d9de0ba238f8fbf2f3b45/image7.png) 2. ## Configure Repeat Path 1. Click **Configure Action Step** from the left navigation panel. ![image8.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltef898b893fc322b0/699d9e057c3275df7f2add65/image8.png) 2. Click **Repeat Path** to configure and select the Repeat type. ![image24.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6293722c990a3f07/699d9e5040b0345c890f74b1/image24.png) 3. In the Repeat Path Configurations, select the **Data source** to iterate the array received in the trigger. ![image2.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta0a52812bfb323d3/699d9eb07e22a9176ffaba44/image2.png)![image23.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5ca28dc21305a3c6/699d9e8c62d139cda8846399/image23.png) 4. Click **Save Configuration**. ![Save\_Configuration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6cf4577e56ac2813/6602dca6d057551183001074/Save_Configuration.png) 5. You can click the **Reload** icon to access the most recent data fetched from the **Data Source** field for the Repeat Path output without affecting the configuration. ![image2.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4e87e461ce210caa/699d9ece62d13967bb84639d/image2.png) 3. ## Configure Contentstack Connector within the Repeat Path Step Configuring an action step inside the Repeat Path will iterate and run the action until the end of the data source is reached. 1. Click **\+ Add Step** under the Repeat Path from the left navigation panel. ![image15.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdb6da81299052891/699d9f19f8f186aea78896a7/image15.png) 2. Within the **Configure Action Step**, click the **Contentstack** connector. ![image9.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcf6b98a7d9d437a9/699d9f357b66ce5285c65c34/image9.png) 3. Select the **Contentstack Management** connector to perform CMS tasks. 4. Under **Choose an Action** tab, select the **Create an Entry** action. ![image10.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2cc410afaed2add4/699d9f63af65af7e8f1da439/image10.png) 5. In the **Configure Action** tab, click **\+ Add New Account** to add your Contentstack account. 6. Select a way to add a new account. You can authenticate your account in two ways: **Contentstack OAuth** or **Management Token**. ![Authorize\_Account.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt583530c9a76bca24/66042d3f0a7895c103d7f6ea/Authorize_Account.png) 1. If you select **Contentstack OAuth** and click **Proceed**, the Manage Permissions modal will open, as shown below. Provide the OAuth permissions for all the values by checking the boxes and click **Authorize**. ![image21.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdfd263628304106b/699d9fc4a215682668108ce5/image21.png) 2. In the pop-up that appears, select your organization to complete the authorization. ![image22.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1dad3b394b877d3c/699d9ff80f1f9e679f129f18/image22.png) 3. In the pop-up that appears, view the module-specific access rights provided to the app. Click **Authorize** to complete authorization. ![Authorize\_Organization.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc14717a94926f294/6602de7ed057550cc2001092/Authorize_Organization.png) 4. Provide an **Account Name** and click the **Save** button. ![image16.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2a72d6a7b25bb6a4/699da02356ca117f3abb4831/image16.png) 7. Select a **Stack**, **Branch**, and a **Content Type** from the **Lookup** list. ![image1.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteb7cdc3680eef224/699da03bf8f186543e8896af/image1.png) 8. Provide your entry data in the **Entry Data** field. Fetch the data from the Repeat Path step. **Note:** Provide your entry data as per your content type schema in [JSON format](/docs/headless-cms/json-schema-for-creating-a-content-type/) only. ![image26.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf3b0c7e0a33f53e1/699da04c883c63efe24d7b33/image26.png) 9. Click the **Proceed** button. 10. Click the **Test Action** button to test the configured action. 11. Click the **Save and Exit** button. ![image20.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb1c4407f2140a92f/699da08a62d139044f8463a3/image20.png) You can also add another action step using the Quick Select screen after you have configured the Contentstack connector. ![image17.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7b54e831ad6ab598/699da0b2b2b7de9d44b4997d/image17.png) In the output, you will see one entry. To view all the entries created, you must activate the automation. ![image25.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4470275979359193/699da0d93b580ea3f7249f5f/image25.png) After activating the automation, you must send the data via Postman to the HTTP trigger URL. Navigate to Contentstack to view the entries in the selected content type. ![Entry\_Ouput\_1.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1c629d9a685126a9/6603ed360a78958f32d7f4a9/Entry_Ouput_1.png) You can view the details of the entry as shown below: ![Entry\_Output\_2.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdec92afc47263f5a/6603ed366f7fa77366eadec7/Entry_Output_2.png) --- ## URL: https://www.contentstack.com/docs/agent-os/utility --- title: "Utility" description: "Use this connector to manage your automation workflow." url: "https://www.contentstack.com/docs/agent-os/utility" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: utility.md --- # Utility The Utility action connector helps to manage your automation workflow. With the wait action, you can put your automation on hold for some time before the following automation action runs. ## Set up the Utility Connector Perform the following steps to set up the Utility connector. You can set up four actions: Continue Automation If, Continue Repeat If, Log Action, and Wait. **Note:** **Continue Repeat If** action can be used **only** inside the Repeat Path step. 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Utility** connector.![Select\_Utility\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaefed41f4795f02d/66cd7901d97a0ca773550061/Select_Utility_Connector.png) 4. You will see these actions under the **Choose an Action tab**: **Continue Automation If**, **Continue Repeat If (inside Repeat Path only)**, **Log Action**, and **Wait**. Let's look at each of them in detail. ### Continue Automation If Continue Automation If will execute the automation based on the defined conditions. It will exit out of automation completely if the condition(s) is not met or it will continue to execute the automation if the condition(s) is met. 1. Under **Choose an Action** tab, select the **Continue Automation If** action. ![Continue\_Automation\_If.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfa42bda8bfb41071/66c4ad6b1ee8050b5816680d/Continue_Automation_If.png) 2. Provide the conditions you want to set up in the input box. Suppose you want to continue the automation only if the entry title is John. If the condition matches, automation continues to execute; otherwise, the automation terminates. ![Continue\_Automation\_If\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt59a49c1460c6b26b/66c4ad6caff77d2ae9c42314/Continue_Automation_If_Fields.png) 3. Click the **Proceed** button. 4. To test the configured action, click the **Test Action** button. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt800a019105f2d22d/66c4ad83c7117108c8699b87/Test_Action.png) 5. On successful configuration, you can see the below output. Click the **Save and Exit** button. ![Save\_Exit\_Continue\_If.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8328ec063a67400b/66c4ad78c711711702699b7b/Save_Exit_Continue_If.png) Let's see a simple use case of the Continue Automation If action. **Note:** Continue Automation If action can be used inside **Repeat Path**, **Conditional Path**, or as a **separate Action Step**. In this use case, we send data via Postman and fetch the data in the HTTP trigger to create an entry in Contentstack. Once the data is fetched, you need to configure Continue Automation If action to provide the conditions for the automation. You need to configure the Transform action to execute, if the condition matches. The condition(s) provided in the Continue Automation If is checked, and if it matches, the Transform action gets executed. If the condition(s) does not match, the automation exits completely. Sample data: ``` { "title": "Art 2323", "body": "body", "tags": ["tag1", "tag2"], "pdf": "yes"} ``` **Note:** The primary differences between a **Conditional Path Statement** and C**ontinue Automation If** are: \- Conditional Path is a special action with a defined flow, which executes actions based on the condition, and Continue Automation If is a simple action to continue the execution of an automation only if the condition(s) is met. \- In the Conditional Path, conditions are checked, and if the condition matches, the IF block is executed; if not, the flow moves to the ELSE block. Whereas in Continue Automation If, if the condition is true, it executes the succeeding step, and if it is false, the automation exits completely. 1. Configure the **HTTP Trigger** connector. **Additional Resource:** Refer to the [HTTP Trigger connector](https://www.contentstack.com/docs/agent-os/http-trigger/) documentation for more details. 2. Under the **Choose Trigger** tab, select the **HTTP Request Trigger** action. Select **HTTP Request Trigger**. This trigger will be activated whenever you make an HTTP GET/POST request to a specific webhook URL. 3. Select a **Method**, i.e., GET/POST. 4. You will find the applicable input “URL.” This URL will be the webhook URL to trigger the automation. You can send your Postman data via this trigger URL. ![Test\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf0c8e112ce91bbfb/66c4ad83c71171851a699b8b/Test_Trigger.png) 5. Click the **Test Trigger** button. 6. You will be able to see the entire data in the output. Click the **Save and Exit** button.![Save\_Exit\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3394b8aebac8876b/66cd7add19b683aa550899cc/Save_Exit_Trigger.png) Once the data is fetched, configure the **Create an Entry** action to create an entry in Contentstack with the data fetched in the trigger. 1. Click **\+ Add New Step** to add a new step. 2. Click **Configure Action Step** from the left navigation panel. 3. Within the **Configure Action Step**, click the **Contentstack** connector. 4. Under **Choose an Action** tab, select the **Create an Entry** action. 5. In the **Configure Action** tab, click **\+ Add New Account** to add your Contentstack account. **Additional Resource:** For more details on how to add an account, refer to the [Contentstack Action](https://www.contentstack.com/docs/agent-os/about-contentstack-management-actions/) documentation. 6. Select a **Stack**, **Branch**, and **Content Type** from the **Lookup** list. In the **Entry Data** field, fetch the data output from the HTTP trigger. ![Select\_Fields\_Create\_Entry.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbcb9b38afa32f7eb/66c4b318ab1b6909043ca75b/Select_Fields_Create_Entry.png) **Note:** In the **Entry Data** field, you can add a predefined schema template for your entry data. You must manually configure the entry data for **JSON Rich Text Editor**, **Custom**, and **Experience Container** fields. 7. Click the **Proceed** button. 8. Click the **Test Action** button. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt800a019105f2d22d/66c4ad83c7117108c8699b87/Test_Action.png) 9. Click the **Save and Exit** button. ![Save\_Exit\_Create\_Entry.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4cf56ab0c393a124/66c4b31783db67057faed88e/Save_Exit_Create_Entry.png) Once the entry is created, configure the **Continue Automation If** action inside the **Utility** connector. 1. Under **Choose an Action** tab, select the **Continue Automation If** action. ![Continue\_Automation\_If.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfa42bda8bfb41071/66c4ad6b1ee8050b5816680d/Continue_Automation_If.png) 2. Click **\+ Add Condition**. In the **Select Input** box, select the pdf field UID from the HTTP Request Body. Select **Loosely Matches (Text)**, and provide the value “yes.” _This means Continue Automation If checks the value for the pdf field based on the trigger data sent via Postman. If the value is yes, i.e.. the condition matches, the automation continues to execute. If the value is no, i.e., the condition does not match; the automation exits completely._ ![Continue\_Automation\_If\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt59a49c1460c6b26b/66c4ad6caff77d2ae9c42314/Continue_Automation_If_Fields.png) 3. Click the **Test Action** button. 4. You will see the output if the condition is met. Click the **Save and Exit** button. ![Save\_Exit\_Continue\_If.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8328ec063a67400b/66c4ad78c711711702699b7b/Save_Exit_Continue_If.png) Let's configure a **Transform** action to execute if the condition is true. 1. Click **\+ Add New Step** to add a new step. 2. Click **Configure Action Step** from the left navigation panel. 3. Within the **Configure Action Step**, click the **Transform** connector. 4. Under **Choose an Action** tab, select the **Transform** action. 5. In the **Transformation** Box, provide a value as shown below: ![Transform\_Continue\_If.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9fc4dc487e53ce99/66c4ad834c3912c5f9abf65b/Transform_Continue_If.png) 6. Click the **Proceed** button. 7. Click the **Test Action** button. 8. Click the **Save and Exit** button. Let's see what happens if the condition is **true**. 1. Navigate to the **Execution Log** section. 2. Click the **Continue Automation If** execution details. 3. A pop-up appears. In the **Additional Details** section, you will see the number of steps executed for the automation. The succeeding step, i.e., the Transform action will run completely. ![Execution\_Log\_Output\_For\_True.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt278c1029cc0ca92f/64bf7d0e27713f287e6a20ac/Execution_Log_Output_For_True.png) Let's see what happens if the condition is **false**. 1. Navigate to the **Execution Log** section. 2. Click the **Continue Automation If** execution details. 3. A pop-up appears. In the **Additional Details** section, you will see that the automation breaks completely after the **Continue Automation If** step **without executing** the **Transform** action step. ![Execution\_Log\_Output\_For\_False.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt230bd39f746916d3/64bf7d0e0c8acebe5e02f9c0/Execution_Log_Output_For_False.png) ### Continue Repeat If Continue Repeat If executes the automation based on the defined conditions. You must select the exit behavior to exit out of the Repeat Path or current iteration. **Note:** Continue Repeat If action can be configured **only** inside a Repeat Path step. 1. Under **Choose an Action** tab, select the **Continue Repeat If** action. ![Continue\_Repeat\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5eb50eb6cb90497b/66c4ad6bab1b69597e3ca6d4/Continue_Repeat_Action.png) 2. Provide the conditions you want to set up in the input box. Suppose you want to execute succeeding steps inside of a Repeat Path only if the condition is **true**, i.e., the value of the pdf field is **yes**, then the succeeding steps after the Continue Repeat If action will execute inside the Repeat Path. 3. Select the exit behavior in case the condition is not met. You can either exit the Repeat Path completely, i.e, the steps outside the Repeat Path will continue to execute or you can exit the current iteration and continue with the next iteration in the Repeat Path. ![Continue\_Repeat\_Path\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt01a3478700e1272e/66c4ad6bc7117123c3699b77/Continue_Repeat_Path_Fields.png) 4. Click the **Proceed** button. 5. To test the configured action, click the **Test Action** button. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt800a019105f2d22d/66c4ad83c7117108c8699b87/Test_Action.png) 6. On successful configuration, you can see the below output. Click the **Save and Exit** button.![Repeat\_Path\_Iteration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6e392b012631f5e7/66c4ad78dd1a360cb440b863/Repeat_Path_Iteration.png) Let's see a simple use case of the Continue Repeat If action. In this use case, we send bulk data via Postman and fetch the data in the HTTP trigger to create entries in Contentstack. On each iteration, an entry is created, and the conditions provided in the Continue Repeat If are checked; if it is true, the Transform action will execute. If the condition(s) is not met, there are two exit ways to select. You can exit the current iteration or completely exit out of the Repeat Path. In the latter situation, the action outside the Repeat Path will execute. **Note:** With the Continue Automation If action, if the condition is not met, the automation exits completely, whereas with Continue Repeat If, the flow breaks out of the Repeat Path (not terminating the entire automation). Sample data to be sent via Postman: ``` { "entries": [ { "title": "Article 183", "pdf": "yes" }, { "title": "Article 184", "pdf": "no" }, { "title": "Article 185", "pdf": "yes" } ]} ``` 1. Configure the **HTTP Trigger** connector. **Additional Resource:** Refer to the [HTTP Trigger connector](https://www.contentstack.com/docs/agent-os/http-trigger/) documentation for more details. 2. Under the **Choose Trigger** tab, select the **HTTP Request Trigger** action. Select **HTTP Request Trigger**. This trigger will be activated whenever you make an HTTP GET/POST request to a specific webhook URL. 3. Select a **Method**, i.e., GET/POST. 4. You will find the applicable input “URL.” This URL will be the webhook URL to trigger the automation. You can send your Postman data via this trigger URL. ![Test\_Trigger.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf0c8e112ce91bbfb/66c4ad83c71171851a699b8b/Test_Trigger.png) 5. Click the **Test Trigger** button. 6. You will be able to see the entire data in the output. Click the **Save and Exit** button. ![Trigger\_Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte72086060729daae/66c4ad833bab112343a2c19c/Trigger_Save_Exit.png) Let's configure the **Repeat Path** to use **Continue Repeat If** action. 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Repeat Path** to configure and select the Repeat Type. 3. In the Repeat Path Configurations, select the **Data source** to fetch the entries data to iterate the array received in the trigger. ![Save\_Repeat\_Configuration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7c698f6d6f379443/64c0ce74bae80f1347d9d342/Save_Repeat_Configuration.png) 4. Click the **Save Configuration** button. After the Repeat Path configurations are done, configure the Contentstack connector within the Repeat Path step and configure the **Create an Entry** action. Configuring an action step inside the Repeat Path will iterate and run the action until the end of the data source is reached. 1. Click **\+ Add Step** under the Repeat Path from the left navigation panel. 2. Click **Configure Action Step** from the left navigation panel. 3. Within the **Configure Action Step**, click the **Contentstack** connector. 4. Under **Choose an Action** tab, select the **Create an Entry** action. 5. In the **Configure Action** tab, click **\+ Add New Account** to add your Contentstack account. **Additional Resource:** For more details on how to add an account, refer to the [Contentstack Action](https://www.contentstack.com/docs/agent-os/about-contentstack-management-actions/) documentation. 6. Select a **Stack**, **Branch**, and **Content Type** from the **Lookup** list. In the **Entry Data** field, fetch the data output from the HTTP trigger as shown below: **Note:** In the **Entry Data** field, you can add a predefined schema template for your entry data. You must manually configure the entry data for **JSON Rich Text Editor**, **Custom**, and **Experience Container** fields. ![Create\_Entry\_Configuration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt760c68bee09d1e08/66c4ad6cab1b6950f73ca6d8/Create_Entry_Configuration.png) 7. Click the **Proceed** button. 8. Click the **Test Action** button. 9. Click the **Save and Exit** button. Once the entry is created, configure the **Continue Repeat If** action present in the **Utility** connector. 1. Under **Choose an Action** tab, select the **Continue Repeat If** action. ![Continue\_Repeat\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5eb50eb6cb90497b/66c4ad6bab1b69597e3ca6d4/Continue_Repeat_Action.png) 2. Click **\+ Add Condition**. In the **Select Input** box, enter the UID of the pdf field from the HTTP trigger step. Select **Loosely Matches (Text)**, and provide the value “yes.” _This means Continue Repeat If will continue to iterate through the array data if the value for the pdf field is yes for an entry. If the value is yes, i.e., the condition matches, the Repeat Path will execute the succeeding action and continue to iterate through the array data._ _If the value is no i.e. the condition does not match, then based on the exit behavior defined in the configuration, Repeat Path will break and execute the succeeding action in the automation or it will break the current iteration and continue to create entries as per the defined conditions._ ![Conitnue\_Repeat\_Fields\_Selection.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9d8382b581aab15e/66c4ad6b5c1ba4c1a02687c1/Conitnue_Repeat_Fields_Selection.png) 3. Click the **Test Action** button. 4. You will see the output as shown below. Click the **Save and Exit** button. Let's configure a **Transform** action to execute if the condition is true. 1. Under **Choose an Action** tab, select the **Transform** action. 2. In the **Transformation** Box, provide a value as shown below: ![Transform\_Continue\_If.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9fc4dc487e53ce99/66c4ad834c3912c5f9abf65b/Transform_Continue_If.png) 3. Click the **Proceed** button. 4. Click the **Test Action** button. 5. Click the **Save and Exit** button. ![Transform\_Save\_Exit\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc8939f829177b208/66c4ad830baf9b1b9daf6030/Transform_Save_Exit_Button.png) Now, let's configure the **Response** connector to see what happens if the exit behavior is **Exit the Repeat Path completely**. 1. Click **\+ Add New Step** to configure third-party services. ![Add\_New\_Step\_Outside\_Repeat\_Path.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb62e2b36becf681a/64c0ce65384028771cd9e2ec/Add_New_Step_Outside_Repeat_Path.png) 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Response** connector. ![Select\_Connector\_Response.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt989a3de697b52177/6527d3ec3347f3071d027a01/Select_Connector_Response.png) 4. Under **Choose an Action** tab, select the **Response** action. ![Response\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte899ba81e2573a9a/66c4ad780baf9b2de8af602b/Response_Action.png) 5. In the **Response Body** field, you can add the data that you want to send as the response. ![Response\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte044ef00d6a69316/66c4ad7971186707d8aa1310/Response_Fields.png) 6. Click **Proceed**. 7. To execute and test the configured action, click **Test Action**. 8. On successful configuration, you can see the below output. Click **Save and Exit**. ![Save\_Exit\_Response.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd95a4c299641725e/66c4ad79e712ef60bf310e00/Save_Exit_Response.png) Let's see what happens if the exit option is - _Exit the Repeat Path completely_ 1. Navigate to the **Execution Log** section. 2. Click the **Continue Repeat If** execution details. 3. A pop-up appears. In the **Additional Details** section, you will see the sequence of actions executed based on the array data as shown below: ![Exit\_Repeat\_Path\_Completely.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0dd4cb2aa6fdec4c/64c0ce64b6e665178e511f82/Exit_Repeat_Path_Completely.png) Let's see what happens if the exit option is - _Exit Current Repeat Iteration_ 1. Navigate to the **Execution Log** section. 2. Click the **Continue Repeat If** execution details. 3. A pop-up appears. In the **Additional Details** section, you will see that the third iteration for the Repeat Path is skipped and the loop exits the Repeat Path completely. ![Execution\_log\_Repeat\_If\_Exit\_Iteration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta9079f3c4e9ff29e/64c0ce64c0f3050feeb6a9fd/Execution_log_Repeat_If_Exit_Iteration.png)![Exit\_Repeat\_Path\_Iteration-2.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7be255339e019f9d/64c0ce65ff3e9bde7a4d8a32/Exit_Repeat_Path_Iteration-2.png) As per the sample data, the pdf flag for second data is no. So the Repeat Sequence did not execute the **Transform** action and moved to the next iteration. ### Wait Action 1. Under **Choose an Action** tab, select the **Wait** action. ![Select\_Wait\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt880aa8e3a9e08940/66c4beb7b506aa1b6dc6e494/Select_Wait_Action.png) 2. In the **Wait** drop-down, select the timeout value to delay the automation execution. ![Select\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt433bfd8371f4edf8/66c4beb7134286c820c3d9d0/Select_Field.png) 3. Click the **Proceed** button. 4. To test the configured action, click the **Test Action** button. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt800a019105f2d22d/66c4ad83c7117108c8699b87/Test_Action.png) 5. On successful configuration, you can see the below output. Click the **Save and Exit** button. ![Save\_and\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt31d09f05ea5fc921/66c4beb6ab1b69afb63ca7df/Save_and_Exit.png) Let’s see a simple use-case of the Utility connector using Repeat Path. Wait action is useful while working with bulk data. Previously, if the number of API requests exceeded the defined limitation, the automation failed automatically due to rate limiting. In this example, we are sending bulk data through the HTTP action with a limitation of 5 API requests per second, and we will use the Wait action to delay the API request per second in order to create multiple entries in Contentstack. We will also see how the user receives an error message in the Execution Log section for exceeding the rate limit. **Note:** Rate Limit is organization based and needs to be set as per the requirement. 1. Configure the HTTP Trigger connector. For more details, refer to the [HTTP Trigger connector](/docs/agent-os/http-trigger/) documentation. 2. Once the trigger is configured, configure an **Action Step** and click the **HTTP** action connector. ![HTTP.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcd11137c4b680ccf/6527f8c9a4cac20fe4c5d04c/HTTP.png) 3. Under **Choose an Action** step, select the **HTTP Request** action. 4. Under the Select Account drop-down, select one of the accounts connected to your project. The sensitive information, such as access code, secret key, API key, etc., can be fetched from the selected account. **Note:** Select Account is an optional field. You can still configure the action without selecting an account. 5. Provide a **URL** to fetch the bulk data. In this example, we have set the limit to 20, i.e. the URL will fetch the data as per the limit. **Note:** You can provide any URL that can fetch bulk data from a source. ![Select\_HTTP\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7c276bf0eb1ed372/66c4bf883f4c193ac41cca97/Select_HTTP_Fields.png) 6. Click the **Proceed** button. 7. Click the **Test Action** button. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5538ef47ff7b8a23/66c4bf881ee805b8461669cf/Test_Action.png) 8. You will be able to see the entire data in the output. Click the **Save and Exit** button. Once the data is fetched, configure the Repeat Path step to bring the data from the HTTP action. To do so, follow the steps below: **Note:** The specific use of Repeat Path in this use-case is to iterate through the bulk data and create multiple entries in Contentstack. It will help if you define your content type schema as per the data fetched in the HTTP action. 1. Click **\+ Add New Step** to add a new step. 2. Click **Configure Action Step** from the left navigation panel. 3. Click **Repeat Path** to configure repeat path. ![Repeat\_Path.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt638fc6eca85ab119/66c4bf7f134286681cc3d9de/Repeat_Path.png) 4. In the Repeat Path Configurations, select the **Data source** to fetch the array of data configured previously. ![Repeat\_Path\_Configuration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf01461f8a887b08a/66c4bf7f3f4c19394e1cca90/Repeat_Path_Configuration.png) 5. Click **Save Configuration** to save the Repeat Path configuration. On successful completion, use the **Create an Entry** action inside Repeat Path. Follow the steps below: 1. Click **\+ Add Step**. 2. In the **Configure Action Step**, click the **Contentstack** connector. ![Select\_Contentstack\_Connector.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9021f52680da13e5/66c4bf7fe712ef7708310f4a/Select_Contentstack_Connector.png) 3. Select the Contentstack Management connector to perform CMS tasks. 4. Under **Choose an Action** step, select the **Create an Entry** action. ![Create\_an\_Entry\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4f9a8cd763302592/66c4bf7e20995e6f0ed2c2f2/Create_an_Entry_Action.png) 5. Add your Contentstack account. For more information, refer to the [Contentstack action](/docs/agent-os/about-contentstack-management-actions/) connector document. 6. Select the **Stack**, **Branch**, **Content** **Type**, and **Entry** **Data** to create an entry in Contentstack. ![Select\_Create\_an\_Entry\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte7705d97bb2e23dd/66c4bf8803888131571ef067/Select_Create_an_Entry_Fields.png) 7. Click the **Proceed** button. 8. Click the **Test Action** button to test the configured action. 9. Navigate to your stack. An entry will be created. Click the **Save and Exit** button. Let’s see what happens if we do **not** configure the Wait action. 1. Activate the automation. 2. Hit the HTTP trigger URL. 3. Navigate to the **Execution Log** section. You will see that the automation fails. Click to view the details of the failure. 4. You will see the error message “Rate limit exceeded.” ![Rate\_Limit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3646b073daf25f7e/649583e87ad988097231c4c3/Rate_Limit.png) **Note:** Rate limit exceeds based on the organization plan. The user gets this error if the number of API calls made in a second exceeds the maximum limit defined in a particular organization. Let’s see how to configure the **Utility** connector. To do so, follow the steps below: 1. Click **+ Add Step**. 2. Click **Configure Action Step** from the left navigation panel. 3. Click **Action Step** to configure third-party services. 4. Within the **Configure Action Step**, click the **Utility** connector. Select the **Wait** action.![Select\_Wait.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd217f13944d739b9/66cd8055fb244e3c07701ccf/Select_Wait.png) 5. Select the timeout duration for each API request from the drop-down. ![Select\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt433bfd8371f4edf8/66c4beb7134286c820c3d9d0/Select_Field.png) 6. Click the **Proceed** button. 7. Click the **Test Action** button to test the configured action. 8. Click the **Save and Exit** button. Let’s see what happens when we configure the Wait action. 1. Activate the automation. 2. Hit the HTTP trigger URL. 3. Navigate to the **Execution Log** section. You will see a success message. Click to view the details of the execution. ![Success\_Message](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8644aa31e348dd7e/649583fae64f41ef2342cfe9/Success_Message.png) ### Log Action Log Action in Automate allows you to view the output of the previous step in the Execution Log. To use Log Action, follow the steps given below: 1. Under **Choose an Action** tab, select the **Log Action**. ![Select\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5139b19bb44e23ad/66c4ad83aff77d42d9c42319/Select_Action.png) 2. On the **Log Action Configure Action** page, enter the details given below: 1. Enter the **Key** and select the value from the previous step in the Value field. Click the **\+ Add Data from Previous Step** button to add more keys. Please note that you can add up to 10 key value pairs. ![Log\_Action\_Select\_Fields.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta560183aa74fefbe/66d02ddc545a3b01f964f44f/Log_Action_Select_Fields.png) 3. Click the **Proceed** button. 4. To test the configured action, click the **Test Action** button. ![Test\_Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt800a019105f2d22d/66c4ad83c7117108c8699b87/Test_Action.png) 5. On successful configuration, you can see the following output. Click the **Save and Exit** button. ![Save\_Exit\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaced6c6fe7e19d08/66c4ad78e712ef4c60310dfc/Save_Exit_Button.png) 6. Activate the automation and test the configured trigger. For example, test the **HTTP** trigger. 7. Now navigate back to the Automations landing page and click the **Execution Log** option from the left navigation panel. 8. Click the **Code** icon to view the **Output** payload for the action step. Additionally, you can click the **Copy** icon to copy and debug the code. ![Output\_Execution\_Log.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7f40d7b4a2c18d6e/66d085799fc2b6643065cb98/Output_Execution_Log.png) This sets the **Utility** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/variables --- title: "Variables" description: "Add and uniformly use project variables across all the automation to eliminate redundancy." url: "https://www.contentstack.com/docs/agent-os/variables" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: variables.md --- # Variables The Project Variables section helps you add project variables to use the same key-value pair across different automations. You can view and use the project variables under the **“Output from Previous Steps”** dropdown inside an automation. To add the Project Variables, perform the following steps: 1. log in to your [Contentstack account](https://www.contentstack.com/login/). 2. Go to your project or [create](/docs/agent-os/variables) a new one. 3. In the top navigation panel, click **Settings**. Then in the left navigation click **Variables**. You will see all the project variables defined in your project.![Variables\_landing\_page.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd19ead74fa22d440/699c258131a5c5000890ea09/Variables_landing_page.png) To add a new project variable, follow the steps below. 1. Click the **"+"** icon on the Project Variables screen to add a new project variable. ![Click\_Add\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0ea8b87a63569769/656c24f96a1419a37b417f26/Click_Add_Icon.png) 2. A pop-up screen appears. Select a **Variable Type** to add a **Plain Text** or **Secret** variable. **Note:** Secret value cannot be viewed in an automation once saved. 3. Enter the variable’s name in the **Key** field and value in the **Value** field. **Note:** Each **Key** must be unique in a project. ![Save\_Variables.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf8d088579329629a/656c24f94c0b9a9a83d564a4/Save_Variables.png) 4. Click the **Save** button to create a project variable. You can view the project variables in all the connectors with custom authentication. For example, in the AWS S3 connector, you will see a list of all the project variables defined in your project as shown below: ![Custom\_Authentication.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt410e11087b8a61f5/662b467bca8874abc0ed5345/Custom_Authentication.png) Let's see how to add and use project variables in automation. In this use case, we will cover a scenario where you can add project variables to create entries using the Contentstack [Content Management API](/docs/developers/apis/content-management-api). We create two project variables: management token and stack key respectively. Once the variables are created, configure the [HTTP Trigger](/docs/agent-os/http-trigger), [HTTP Action](/docs/agent-os/http-action), and [Response](/docs/agent-os/response) connector. Configure the HTTP Trigger to trigger the action. Later configure the HTTP Action to fetch the entries dynamically via the [Content Management API](/docs/developers/apis/content-management-api). You can display the response sent by the HTTP Action connector in the Response connector. Let's break this scenario to see what must be the trigger event and the consequent action required to execute the Automation: 1. **Set up the “HTTP Trigger" Event:** This trigger event is activated whenever a user makes a HTTP GET/POST request to the configured URL. 2. **Set up the Contentstack “HTTP Action”:** Once the above event triggers the automation, you can fetch the data from the URL and add the Headers to authenticate the URL. 3. **Set up the Contentstack “Response Action”:** You can check the data sent from the HTTP Action in the Response connector. The steps to set up the Automation are as follows: 1. [Configure HTTP Trigger](#configure-http-trigger) 2. [Configure HTTP Action](#configure-http-action) 3. [Configure Response Connector](#configure-response-connector) Let’s look at the setup in detail. 1. ## Configure HTTP Trigger 1. Select **Configure Trigger** from the left navigation panel. 2. Within the **Configure Trigger Step**, click the **HTTP** trigger connector. 3. Select **HTTP Request Trigger**. This trigger will be activated whenever you make an HTTP GET/POST request to a specific webhook URL. 4. Select a **Method**, i.e., **GET/POST**. 5. Click the **Proceed** button. 6. You will find the applicable input “URL.” This URL will be the webhook URL to see the automation working. 7. Click the **Test Trigger** button to test the configured trigger. 8. On successful configuration, you can see the below output. Click the **Save and Exit** button. ![Save\_Exit.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf4544c8b03a0c5fd/663093a024e181627cad160c/Save_Exit.png) 2. ## Configure HTTP Action 1. Within the **Configure Action** **Step**, click the **HTTP** connector. **Note:** You can sort and search the connector(s) based on the filter. 2. Under **Choose an Action** tab, select the **HTTP Request** action. 3. On the **Configure Action** page, enter the **URL**. You can use any URL to fetch the data. Here, we are using a Content Management API URL to create an entry. Select any one **HTTP method** from **GET**, **POST**, **PUT**, **DELETE**, and **PATCH**. For this example, we are choosing the **POST** HTTP method. 4. In the Post **Body**, enter the entry data you want to fetch in JSON format. 5. Click the **Show Optional Fields** toggle button to enter the respective names and values for **Headers**. Here we use the Header parameters defined in the Content Management API. Use the Contentstack-defined header parameter in the **Header Name** field and the project variables in the **Value** field. ![HTTP\_Action\_Configuration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc5f816b4d755cdb3/656c24f994a2472ac434e1dd/HTTP_Action_Configuration.png) 6. Click the **Proceed** button. 7. Click the **Test Action** button to test the configured action. 8. Click the **Save and Exit** button. 9. You will see an entry created in the defined content type. 3. ## Configure Response Connector 1. Within the **Configure Action Step**, click the **Response** connector. **Note:** You can sort and search the connector(s) based on the filter. 2. Under **Choose an Action** tab, select the **Response** action. 3. Based on the results of your configured action, enter the **Response Status**. 4. In the **Response Body** field, you can add the data that you want to send as the response. Fetch the data from the HTTP action. ![Response\_Body.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5541aa35fd297a3f/656c24f941d574823fc8164d/Response_Body.png) 5. Click the **Proceed** button. 6. Click the **Test Action** button to test the configured action. 7. Click the **Save and Exit** button. 4. ## Test the Automation Now, let’s see how you can test out your Automation. To do so, perform the steps given below: 1. Toggle the **Activate Automation** button to activate the automation. 2. Hit the trigger URL to see the response generated. 3. To check the entries created in Contentstack, go to Contentstack, navigate to the desired content type. You will see entries created. --- ## URL: https://www.contentstack.com/docs/agent-os/vercel --- title: "Vercel" description: "Use this connector to deploy your GitHub projects to Vercel domain." url: "https://www.contentstack.com/docs/agent-os/vercel" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: vercel.md --- # Vercel Vercel lets you host websites and web services. It lets you connect your GitHub repository and instantly deploy the master/main branch of your project to Vercel domains without any supervision. The Vercel Action Connector allows you to trigger a deployment in Vercel. ## Set up Vercel Perform the following steps to set up the Vercel action connector: 1. Click **Configure Action Step** from the left navigation panel. 2. Click **Action Step** to configure third-party services. 3. Within the **Configure Action Step**, click the **Vercel** connector. ![Vercel.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd073273a3682a350/6527f8ec31f9bbac62966804/Vercel.png) 4. Under **Choose an Action** tab, select the **Trigger Deploy** action. ![Vercel-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltddf0a7526a51c0cd/63dcad54b3b39d7d817f0503/Vercel-Action.png) 5. On the **Configure Action** page, enter the hook URL in the **Name** field. ![Vercel-Configure-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7542516a55f6a240/63dcad54c338484e3b194f42/Vercel-Configure-Action.png) **Note:** In Vercel, you will find the hook URL in your project’s **Project Settings** page, under **Git** > **Deploy Hooks**. To create a new hook, provide a “name” for your hook and the branch name of your GitHub project, and click **Create Hook**. **Additional Resource:** For more information, refer to the [Vercel - Deploy Hooks](https://vercel.com/docs/deploy-hooks) documentation. 8. Click **Proceed**. 9. You will see the input values which you have configured in the **Configure Action** modal. ![Vercel-Input.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd9d6a8e5479ac7d9/63dcad546d590c21c347cd2d/Vercel-Input.png) 10. Check if the details are correct. If yes, click **Test Action**. ![Vercel-Test-Action.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2c2e9d21542dbcb6/63dcad547ccfaf4bc687f040/Vercel-Test-Action.png) 11. Once set, click **Save and Exit**. ![Vercel-Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt32b4bffa66656c42/63dccf846d590c21c347cd77/Vercel-Output.png) **Note:** The **PENDING** state means that your deployment activity has been queued. Go to your project’s **Deployments** page in Vercel. You will see the details of the latest version deployed. This sets up your **Vercel** action connector. --- ## URL: https://www.contentstack.com/docs/agent-os/view-execution-log-of-agent-os --- title: "View Execution Log of Agent OS" description: "View and debug execution logs for Agents and Automations workflows with detailed input/output data, execution flow, and performance metrics." url: "https://www.contentstack.com/docs/agent-os/view-execution-log-of-agent-os" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: view-execution-log-of-agent-os.md --- # View Execution Log of Agent OS The Execution Log section in Agent OS helps you monitor the status of your automations and agents. **Additional Resource:** Refer to the [Executions in Agent OS](/docs/agent-os/executions-in-agent-os) documentation to learn about the execution statuses. To access **Execution Log**, [log into your Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. After logging in, click the **App Switcher** icon, then select **Agent OS** from the list.![App\_switcher\_icon](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6290d7afc992eda9/6998761148bd410008f0963f/App_switcher_icon.png) 2. Open your project or [create](/docs/agent-os/managing-projects#create-a-project#create-a-project) a new one. 3. From the top navigation panel, click **Settings**.![Settings\_Icon](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt54c29342b477e2fd/69987601a9de3800086c7925/Settings_Icon.png) 4. Click **Execution Log** in the left navigation panel. You can view the executions for **Agents** and **Automations** by clicking the dropdown.![Agent\_automation\_dropdown](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3c80c134cb3d8669/6998760163bcae00089104c6/Agent_automation_dropdown.png) On the listing page, you see the following columns: 1. **Name:** Displays the name of the automation or agent that was executed. 2. **Status:** Shows the final execution state (e.g., Success or Failed) or intermediate states (Running, Pending, Paused, and Rejected). 3. **Started At:** Indicates the date and time when the execution began. 4. **Duration:** Shows how long the execution took to complete. 5. **Connectors Used:** Indicates which connectors or services were used during the execution. 6. **Tools Used:** Indicates the tools used during the agent execution. **Note:** To view the log, you **must** execute an automation or agent.  ![Execution\_listing\_page](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8383e88d0caaf119/699876018923a00008498585/Execution_listing_page.png) 5. To view more details of a particular execution, click a specific log. You will see a time-wise distribution of each step. **Execution steps** The Execution Steps timeline shows every action performed during the run in chronological order, making it easy to trace agent behavior and identify performance bottlenecks. **Agent execution detail includes:** * Step-by-step execution flow (for example, web search, content creation, message delivery) * **Metrics:** * **Started At:** Shows the exact date and time when the execution began. * **Duration:** Indicates how long the execution took to complete from start to finish. * **Total Tokens:** Represents the total number of tokens consumed during the run, helping track usage and cost. * **Model:** Identifies the AI model used to execute the task. * **Input and Output:** * **Input:** * Displays the exact prompt or instructions provided to the agent. * Shown in JSON format for reproducibility. * **Output:** * Displays structured execution results in JSON format. ![Execution\_log\_agent](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltad29b072aea92f8a/69987601b13d650008b4fc28/Execution_log_agent.png) **Automation execution detail includes:** * Step-by-step execution flow (for example, web search, content creation, message delivery) * **Metrics:** * **Started At:** Shows the exact date and time when the execution began. * **Duration:** Indicates how long the execution took to complete from start to finish. * **Input and Output:** * **Input:** * Displays the trigger payload or initial input data/configuration for the automation. * Shown in JSON format for reproducibility. * **Output:** * Displays structured execution results in JSON format. ![Automations\_execution\_screen](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd1e17e7582769585/6998760131a5c5000890e2ff/Automations_execution_screen.png) --- ## URL: https://www.contentstack.com/docs/agent-os/view-list-of-connected-apps-in-automations --- title: "View List of Connected Apps in Automations" description: "View, edit, reauthorize, or delete connected apps in Automations for seamless integration control." url: "https://www.contentstack.com/docs/agent-os/view-list-of-connected-apps-in-automations" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: view-list-of-connected-apps-in-automations.md --- # View List of Connected Apps in Automations The Connected Apps option in the **Agent OS** **Settings** displays the list of apps you have connected with in Automations. It also displays the **Active/Inactive** status that denotes if the automation using this authentication is active or inactive. ![Connected\_Apps\_Listing.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt626e94cd0dbf5ebf/699c18a168c24300082b2b64/Connected_Apps_Listing.png) Click any of the connected apps to view its connections. Here, you can **Edit the connection** (click the pencil button), **Reauthorize** an app (the “Reauthorize” button), and even **Delete** a connection (the “Delete” button). ![Edit\_app.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5d9d432ffabc5d10/699c18a2db043d00082542bf/Edit_app.png) **Note**: For apps such as Contentstack and Slack, you can view the **Edit** connection name icon and **Reauthorize** icon. For all the other apps, you can view the **Edit** icon to edit the connection details. **Delete** icon will be visible only if the connection is not being used in any automation (active or inactive). Let’s look at them in detail: * **Edit Connection**: The ‘edit’ icon allows you to edit the connection name. Edit the connection name and click the **Update** button. ![Update\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2d4d00ca0a7850f6/699c18a2676f8800085c0aae/Update_App.png) * **Reauthorize:** The **Reauthorize** button allows you to change the authorizations/permissions assigned to the application. For Slack, it will be displayed as follows: ![Authorize.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt31706bab0e9ebffe/699c18a18d3a6a0008c5b2e1/Authorize.png) For other authentications, where you enter credentials (access key), you will only view the edit icon, and you will need to re-enter the credentials. ![Connected\_Apps\_Contentstack\_Connections\_Reauthorize\_2](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9a32388af7dd754a/63c908aa5d5a091065ee0f2b/Connected-Apps-Contentstack-Connections-Reauthorize-2.png) * For some apps, you must select the organization as shown below: ![Authorization\_modal.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta3027317966ea2a7/699c189a63bcae0008910a75/Authorization_modal.png) * **Delete Connection**: You can delete your connection by clicking the **Delete** button. Confirm your action by clicking **Delete** again in the **Delete Connection** modal. ![Delete\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt34db57ccbbb8be15/699c18a15a4f7700082328d7/Delete_App.png) --- ## URL: https://www.contentstack.com/docs/agent-os/what-is-a-conditional-path --- title: "What is a Conditional Path?" description: "Learn how to use Conditional Paths and customize workflows in Automations to create if-else logic with precise conditions." url: "https://www.contentstack.com/docs/agent-os/what-is-a-conditional-path" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: what-is-a-conditional-path.md --- # What is a Conditional Path? A conditional path runs a different set of actions based on whether an expression is true or false. For example, if you want to call someone, you can only do so if the person is available. Otherwise, you might send a voice message. The Conditional Path feature in Automations, allows you to customize your automation paths and flows. 1. If the conditions in the Conditional Path match, the actions in the If step are executed. 2. If the conditions do not match, the actions in the Else step are executed. ### Basic Flowchart of Conditional Path ![Agent-OS-Automate-Conditional-Path](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd07ce154acea1f7c/69f31140baa5f016911f7337/Agent-OS-Automate-Conditional-Path.png) ## When to Use the Conditional Path Statement? With the Conditional Path feature, you can control the flow of your automation. Use a Conditional Path when you want to trigger specific actions only if a condition is met. For example, when a variable equals a specific value or exceeds a threshold. Refer to the [Using Conditional Paths to Customize Automations](/docs/agent-os/using-conditional-paths-to-customize-automations/) use case to narrow down your automation for specific tasks. --- ## URL: https://www.contentstack.com/docs/agent-os/what-is-a-repeat-path --- title: "What is a Repeat Path?" description: "Learn how Repeat Path in Agent OS helps you automate repetitive tasks by looping over data and executing steps multiple times." url: "https://www.contentstack.com/docs/agent-os/what-is-a-repeat-path" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: what-is-a-repeat-path.md --- # What is a Repeat Path? The Repeat Path feature in Agent OS lets you repeat actions based on a specific data source or a defined count. It functions like a loop, executing the configured steps multiple times. For example, you can use Repeat Path to create multiple entries in Contentstack based on bulk data or an array of values received from a trigger or action. You can use the Repeat Path configuration to specify the number of times you want to create the entry or select the data source so the repeat path can iterate or loop based on the number of items in the array (list). ## When to Use Repeat Path? The Repeat Path feature in the automation software allows you to automate repetitive tasks, especially when dealing with bulk data. It automates a sequence of actions by iterating them multiple times, enabling operations on bulk or structured data efficiently. Repeat Path eliminates the risk of human error by automating repetitive data processing consistently and accurately. ### Some points to remember: 1. The default limit for executing Repeat Path is 100. You can request a higher limit by contacting the [support team](mailto:support@contentstack.com) to customize your plan. 2. If the repeat count exceeds your plan limit, the automation will fail. You can view details in the [Execution Log](/docs/agent-os/view-execution-log-of-agent-os/) section. 3. The Basic plan allows up to **15 steps** in each automation, covering both the Repeat and Conditional Paths. The step limit may vary based on your subscription plan. --- ## URL: https://www.contentstack.com/docs/agent-os/what-is-an-agent --- title: [Automations guides and connectors] - What is an Agent description: Learn what Contentstack Agents are, how they combine AI and context to act intelligently in Agent OS. url: https://www.contentstack.com/docs/agent-os/what-is-an-agent product: Automations doc_type: documentation audience: - developers version: v1 last_updated: 2026-02-19 filename: what-is-an-agent.md --- # [Automations guides and connectors] - What is an Agent This page explains [Automations guides and connectors] - What is an Agent for Automations. It is intended for developers who need to understand or implement this topic. Use it when you are setting up, configuring, or troubleshooting this feature. ## What is an Agent **Note:** **Agent OS** is currently in **Early Access**. Features may change and limitations may apply. We recommend using it in non-production environments until general availability. For more information, contact [support](mailto:support@contentstack.com). An **Agent** is an intelligent system that combines AI understanding with context, instructions, and tools to act on behalf of users. Unlike traditional automation that simply executes tasks, an agent can think, learn, and adapt across your digital ecosystem. By uniting intelligence, context, and capabilities, they free teams from repetitive work while accelerating creativity, innovation, and business growth. **Agents in Contentstack are built on four core pillars:** * **Trigger:** Defines the event that starts the agent’s workflow and initiates execution. * **Instructions:** Define the agent’s role, rules, goals, and what successful output looks like. * **Tools:** Provide the agent with capabilities such as connectors, CMS actions, and integrations to perform tasks. * **AI Model:** Powers the agent’s reasoning, decision-making, and language understanding during execution. Together, these elements create agents that can truly **understand**, **reason**, and **act**. ![What_is_an_agent.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7eba26d90698c288/6996d4c3348aa80008cee61f/What_is_an_agent.png) Unlike static workflows, Contentstack Agents continuously learn from your data, adapt to changing conditions, and proactively deliver outcomes. From generating SEO-ready content to giving personalized customer experiences, they empower teams to focus on creativity and strategy while helping your business scale with speed in an AI-first world. [[video link]] ## Common questions ### What is covered in [Automations guides and connectors] - What is an Agent? This page covers the topic described in the title and provides the steps, options, and examples needed to use it. ### Who should read [Automations guides and connectors] - What is an Agent? Anyone responsible for configuring, implementing, or maintaining this capability should use this page as a reference. ### When should I use this page? Use it when you are setting up this feature, troubleshooting issues, or validating expected behavior. --- ## URL: https://www.contentstack.com/docs/agent-os/what-is-an-automation --- title: [Automations guides and connectors] - What is an Automation description: Build automation workflows in Agent OS using triggers and actions to simplify tasks, integrate tools, and reduce manual operations. url: https://www.contentstack.com/docs/agent-os/what-is-an-automation product: Automations doc_type: documentation audience: - developers version: v1 last_updated: 2026-02-20 filename: what-is-an-automation.md --- # [Automations guides and connectors] - What is an Automation This page explains [Automations guides and connectors] - What is an Automation for Automations. It is intended for developers who need to understand or implement this topic. Use it when you are setting up, configuring, or troubleshooting this feature. ## What is an Automation **Automations** in **Agent OS** help you streamline business processes by creating structured workflows built on triggers and actions. These workflows respond automatically to defined events, reducing manual effort and ensuring tasks are completed consistently across systems. An automation begins with a **trigger**, which defines when the workflow should start. This could be an event such as an entry being created, updated, published, or deleted in Contentstack. Once the trigger condition is met, the automation executes one or more **actions** in response. Actions can include sending notifications, updating records, creating tasks, or interacting with external applications. For example, you can configure an automation that sends a Slack notification whenever an entry in Contentstack is published. This ensures your team is immediately informed of content changes without requiring manual communication. [[video\_link]] ## Common questions ### What is covered in [Automations guides and connectors] - What is an Automation? This page covers the topic described in the title and provides the steps, options, and examples needed to use it. ### Who should read [Automations guides and connectors] - What is an Automation? Anyone responsible for configuring, implementing, or maintaining this capability should use this page as a reference. ### When should I use this page? Use it when you are setting up this feature, troubleshooting issues, or validating expected behavior. --- ## URL: https://www.contentstack.com/docs/agent-os/what-is-contentstack-agent-os --- title: "[Automations guides and connectors] - What is Contentstack Agent OS" description: Overview of Contentstack Agent OS and its core pillars (Agents, Automations, Polaris, Digital Concierge). url: https://www.contentstack.com/docs/developers/automation-hub-guides/about-automation-hub product: Contentstack doc_type: concept-overview audience: - developers - administrators - content-ops version: current last_updated: 2026-03-25 filename: what-is-contentstack-agent-os.md --- # [Automations guides and connectors] - What is Contentstack Agent OS This page explains what Contentstack Agent OS is, the problem it addresses in modern digital operations, and the core pillars that make up its architecture. It is intended for teams evaluating or implementing Contentstack automation and AI capabilities, and should be used when you need a conceptual understanding of how Agent OS unifies automation, conversation, and contextual reasoning. ## What is Contentstack Agent OS In modern digital operations, organizations are moving beyond rule-based automation toward intelligent, adaptive systems that can understand context, reason through complexity, and act independently. **Agent OS** is Contentstack’s response to this evolution, a unified architectural foundation that turns automation into intelligence and intelligence into measurable business impact. Agent OS brings together **automation**, **conversation**, and **contextual reasoning** into a single, governed operating system. It connects deterministic workflows with dynamic, language-driven decision-making so enterprises can operate faster, smarter, and fully on-brand. At its core, **Agent OS **reimagines how digital work happens inside Contentstack: - **Agents** inject true cognition, modular AI entities that think, act, and collaborate within enterprise rules and brand boundaries. - **Automations** provides the execution backbone, a no-code engine that ensures reliability, governance, and scale. - **Polaris** introduces an intelligent conversational layer, the always-on, context-aware assistant that connects users directly with the system’s capabilities. - **Digital Concierge** is an external, customer-facing conversational agent that brings Agent OS intelligence to websites and digital experiences. It delivers accurate, on-brand responses using shared agents, Brand Kit, and Knowledge Vault for trusted self-service. Together, these pillars create an **intelligent operating system for digital wor**k, one that blends human creativity with machine precision. Agent OS transforms the Contentstack platform from a headless CMS into an adaptive intelligence layer that continuously learns, reasons, and executes in alignment with brand and business objectives. [[video link]] ## Common questions ### What are the main components (pillars) of Agent OS? Agent OS brings together Agents, Automations, Polaris, and Digital Concierge. ### How is Agent OS different from rule-based automation? It moves beyond deterministic workflows by adding conversation and contextual reasoning so the system can understand context, reason through complexity, and act independently. ### Where does Polaris fit in Agent OS? Polaris introduces an intelligent conversational layer, the always-on, context-aware assistant that connects users directly with the system’s capabilities. ### What is Digital Concierge used for? Digital Concierge is an external, customer-facing conversational agent that brings Agent OS intelligence to websites and digital experiences. --- ## URL: https://www.contentstack.com/docs/agent-os/what-is-polaris --- title: "What is Polaris" description: "Learn what Polaris is and how Contentstack’s AI co-pilot helps teams automate real CMS tasks with context, governance, and built-in controls." url: "https://www.contentstack.com/docs/agent-os/what-is-polaris" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: what-is-polaris.md --- # What is Polaris **Note:** For access, please talk to our [Support](mailto:support@contentstack.com) team. As content operations scale, teams spend increasing time on repetitive CMS tasks, such as updating entries, fixing metadata, and making small changes across multiple places. While AI can assist with content generation, most CMS friction comes from **execution**, not ideation. Polaris is built to address this gap by applying AI where it matters most: **inside the CMS**, during real content operations, with full awareness of structure, context, and governance. Polaris is **Contentstack’s built-in AI co-pilot**, that offers: * **Faster CMS actions:** Perform real CMS operations directly within the interface quickly. * **Contextual assistance:** Al automatically understands the content ([Entry](/docs/headless-cms/about-entries), [Asset](/docs/headless-cms/about-assets), or [Visual Editor](/docs/headless-cms/about-visual-editor)) a user is working on, eliminating the need to explain the task or location. * **Direct execution:** Execute complex CMS actions (updating fields, modifying metadata, applying visual changes) using the same rules and permissions as the Ul, unlike generic Al chat tools. ## What Can You Do with Polaris With Polaris, you can: * Ask questions about the current entry, asset, or page * Update entry fields such as headings and descriptions * Perform multiple updates in a single request * Modify asset metadata, including titles, descriptions, tags, and folders * Make contextual updates inside the Visual Editor * Review and confirm changes before they are applied ## Tutorial Video --- ## URL: https://www.contentstack.com/docs/analytics --- title: "Analytics" description: "Learn to optimize CMS, Launch, Automate, and Brand Kit with Contentstack Analytics through real-time insights and usage performance metrics." url: "https://www.contentstack.com/docs/analytics" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-05-26" filename: analytics.md --- # Analytics Analytics provides a centralized platform for monitoring and analyzing the usage and performance of organization's CMS, Launch, Automate, and other products within Contentstack. ## Work with Analytics ### About Analytics Analytics offers real-time product specific insights to optimize performance, manage resources, and enhance user experience across various products. [Learn more](https://www.contentstack.com/analytics/about-analytics) ### Analytics for CMS Monitor your CMS performance with our Analytics dashboard. Track usage, manage resources, and optimize efficiency with key metrics and insights. [Learn more](https://www.contentstack.com/analytics/analytics-for-cms) ### Analytics for Launch Optimize Launch deployments with in-depth analytics on project progress, API usage, and device trends for improved performance and resource efficiency. [Learn more](https://www.contentstack.com/analytics/analytics-for-launch) ### Analytics for Personalize Track Personalize usage with Contentstack's Analytics dashboard. Monitor API requests, impressions, events, and more. [Learn more](https://www.contentstack.com/analytics/analytics-for-personalize) ### Analytics for Brand Kit Track Brand Kit usage with Contentstack's Analytics dashboard. Monitor Brand Kits, Voice Profiles, AI requests, and more. [Learn more](https://www.contentstack.com/analytics/analytics-for-brand-kit) ### Analytics for AI Credits Monitor monthly credit usage and analyze product-wise consumption trends with the AI Credits dashboard. [Learn more](https://www.contentstack.com/analytics/analytics-for-ai-credits) ### Analytics for Assets Gain insights into asset storage, API usage, bandwidth, cache performance, and AI-enabled assets with the Contentstack Assets Analytics dashboard. [Learn more](https://www.contentstack.com/analytics/analytics-for-assets) ## Analytics for Agent OS ### Analytics for Automate [Learn more](https://www.contentstack.com/analytics/analytics-for-automate) ### Analytics for Agent [Learn more](https://www.contentstack.com/analytics/analytics-for-agents) ### Analytics for Polaris [Learn more](https://www.contentstack.com/analytics/analytics-for-polaris) ## More about Analytics ### Analytics Limitations [Learn more](https://www.contentstack.com/analytics/limitations-for-analytics) ### Analytics FAQs [Learn more](https://www.contentstack.com/analytics/faqs) --- ## URL: https://www.contentstack.com/docs/analytics/about-analytics --- title: "About Analytics" description: "Contentstack Analytics offers real-time product specific insights to optimize performance, manage resources, and enhance user experience across various products." url: "https://www.contentstack.com/docs/analytics/about-analytics" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-12" filename: about-analytics.md --- # About Analytics Analytics is a centralized dashboard in Contentstack that lets organization owners and admins monitor and analyze usage and performance across the organization's products. It consolidates metrics from [Content Management System (CMS)](/docs/analytics/analytics-for-cms), [Launch](/docs/analytics/analytics-for-launch), [Personalize](/docs/analytics/analytics-for-personalize), [Brand Kit](/docs/analytics/analytics-for-brand-kit), [AI Credits](/docs/analytics/analytics-for-ai-credits), Agent OS ([Automations,](/docs/analytics/analytics-for-automate) [Agents](/docs/analytics/analytics-for-agents), [Polaris](/docs/analytics/analytics-for-polaris)), and other products into a single experience. ## What Analytics Covers Analytics brings together usage and performance data from across your Contentstack organization into one place. It combines the capabilities of the previously separate Product Analytics and Mission Control features into a unified experience. Organizing analytics data by product helps you allocate resources efficiently. For example, if a CMS stack is generating a high volume of API requests, you can investigate the cause and adjust accordingly. Understanding device usage patterns also ensures your products are optimized for the most-used platforms. With the Analytics dashboard, you can monitor API status codes to identify and fix errors, and track bandwidth usage to avoid overages. ## Why Use Analytics A unified view of your organization's activity lets you identify issues before they affect users. You can address API errors and bandwidth overages proactively, reducing downtime and maintaining a consistent user experience. Analytics data lets you make resource decisions based on actual usage patterns rather than estimates. ## Related Resource * [Analytics API](/docs/developers/apis/analytics-api) --- ## URL: https://www.contentstack.com/docs/analytics/analytics-for-agents --- title: "Analytics for Agents" description: "Gain insights into agent executions, AI model adoption, token consumption, and activity trends with the Contentstack Agents Analytics dashboard." url: "https://www.contentstack.com/docs/analytics/analytics-for-agents" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-13" filename: analytics-for-agents.md --- # Analytics for Agents The Agents Analytics dashboard shows how Contentstack Agents are used across your organization. Use it to monitor execution trends, token consumption, AI model adoption, and overall agent activity. Contentstack Agents are automated systems built on four core components: triggers, instructions, tools, and AI model. They can reason, decide, and act across workflows. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to navigate to the Agents Analytics dashboard. * What each dashboard section tracks and how to read it. * How to apply filters and save custom views. ## Access the Agents Analytics Dashboard To access the Analytics dashboard, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to **Analytics** through the “App Switcher”. 2. By default, the **CMS** analytics dashboard appears. Click **Agent OS** and then select **Agents** to switch dashboards.![Agents dashboard selection in Analytics](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am8474ca28f215cd56/6a8928a76a79ba2643efcbe1/Analytics_Agents_Select.png?locale=en-us) **Note:** The data in the Agents dashboard updates in real-time, with a latency of **5 to 10 minutes**. ## Agents Analytics Dashboard Sections The dashboard is divided into five sections. Each section covers a different aspect of agent activity and usage. ### Overview The Overview section provides a high-level snapshot of agent activity across your organization. It displays four summary cards: * **Total Agents:** The total number of agents configured in your organization. * **Total Active Agents:** The number of agents that have executed at least once in the selected date range. * **Total Executions:** The total number of agent runs in the selected date range. * **Token Consumption:** The total tokens consumed by agent executions. Tokens are units that measure AI model input and output consumption. Use this section to quickly assess execution frequency and resource consumption across your organization. ![Agents Overview summary cards](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amffa54bc6483ec474/ac961c1e3f9364650b10dc78/Analytics_Agents_NewOverview.png?locale=en-us) ### Executions The Executions section displays the number of successful and failed agent executions over the selected date range as a daily bar chart. Use this section to monitor execution reliability, identify periods with higher failure rates, and track execution trends over time. ![Daily agent executions bar chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt288981a8bb1074a9/69fd4a034ba9edcc50c6dd87/Analytics_Agents_Execution.png) ### Agent Executions The Agent Executions section displays execution details for individual agents. For each agent, it shows the AI model the agent is configured to use, the number of executions, and the total tokens consumed. Use this section to identify the most active agents, analyze AI model usage per agent, and monitor token consumption across agent configurations. **Note:** If this chart appears identical to the Executions chart above, the screenshot asset may need to be updated. See Flag 1 in the production review notes. ![Agent-level execution details](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt288981a8bb1074a9/69fd4a034ba9edcc50c6dd87/Analytics_Agents_Execution.png) ### Top AI Models The Top AI Models section displays the distribution of agents by AI model as a bar chart. Each bar represents one model and the number of agents built on it. Use this section to understand how AI model usage is distributed across your organization. ![Agent distribution by AI model chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1e572e5640b7e4ab/69fd4a03a402528430c40382/Analytics_Agents_TopAIModels.png) ### Tokens Used The Tokens Used section displays the trend of total tokens consumed by agent executions over the selected date range as a daily bar chart. Use this section to monitor token usage trends, identify peak consumption periods, and track AI resource usage over time. ![Daily token consumption bar chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt857a5074fbde97dd/69fd4a03eb66df10034b849e/Analytics_Agents_TokensUsed.png) ## Apply Filters and Manage Views To apply filters, click **Filters**, select your options, then click **Apply Filter(s)**. The following filters are available: * **Date Range:** Choose from **1 week**, **30 days** (default), **60 days**, or **90 days**. Some charts include a timeline selector for further refinement. * **Custom Date:** Set a custom date range using the dropdown. **Note:** The custom date range should not exceed **90 days**. * **Zoom:** Switch between **1 week**, **30 days**, **60 days**, or **90 days** for trend analysis. * **Projects:** View metrics for a specific project or all projects together. * **Group By:** View data grouped by day, week, or month, depending on the selected section. To save a specific filter for later use, click the horizontal ellipsis (...) beside **Reset** and choose **Save As New View**. Once saved, your view appears in the dropdown menu for quick access, so you don’t need to reapply filters manually each time. --- ## URL: https://www.contentstack.com/docs/analytics/analytics-for-ai-credits --- title: "Analytics for AI Credits" description: "Monitor AI credit usage, track monthly allocation, analyze product-wise trends, and manage credit utilization with the AI Credits analytics dashboard." url: "https://www.contentstack.com/docs/analytics/analytics-for-ai-credits" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-12" filename: analytics-for-ai-credits.md --- # Analytics for AI Credits The AI Credits analytics dashboard provides visibility into your organization’s AI usage. Use the dashboard to monitor monthly allocation, track product-wise trends, and analyze credit utilization patterns to help manage credits more effectively. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to access the AI Credits analytics dashboard. * How to read monthly credit allocation and usage metrics. * How to interpret product-level credit consumption in the Credits by Product table. ## Access the AI Credits Analytics Dashboard To access the analytics dashboard, log in to your [Contentstack account](https://www.contentstack.com/login/), and perform the following steps: 1. Navigate to **Analytics** from the “App Switcher” icon.![Analytics option in the App Switcher](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am553a6c0474b37029/b154e92a77142bfecb54a5c0/App-Switcher-Analytics.png?locale=en-us) 2. By default, the **CMS** analytics dashboard appears. Click **AI Credits** to switch dashboards.![AI Credits analytics dashboard](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am3649ea334331fb15/4ef5b77bcf42ab6b28cd4a96/Analytics-For-AI-Credits.png?locale=en-us) **Note:** All credit balances reset on the **1st of every month**. ## AI Credits Analytics Dashboard Sections The AI Credits analytics dashboard is divided into multiple sections that provide high-level allocation insights and detailed product-wise usage analytics. ### Monthly Credit Usage This section provides an overview of your organization’s credit allocation and usage for the current month. * **Credits Used and Remaining:** Displays total credits consumed. * **Excess Credits Limit Used and Remaining:** Tracks usage beyond the allocation applied against the configured **Credits Limit**. For details on configuring credit limits, refer [AI Credits Management](/docs/administration/ai-credits#credits-management). ![Monthly Credit Usage section with allocation charts and metric blocks](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am9bd20748b9462853/27c7cc9e7c77925f0a0fa4a0/Analytics-For-AI-Credits-Monthly-Usage.png?locale=en-us) The following metric blocks offer a quick summary of your organization’s credit health: * **Days Until Reset:** Number of days remaining until your monthly allocation refreshes. * **Overall Credit Utilization (%)**: Holds the total credit consumption. * **Active Products:** Total number of AI-enabled products currently consuming credits. * **Average Daily Usage:** The average credits consumed per day during the selected period. * **Trend Vs Last Month:** Compare the trend with the last month's consumption. **Tip:** Use these charts to monitor whether your organization is approaching the **Excess Usage** or requires adjustment. ### Credits Trend This section displays a time-series area chart that tracks daily credit usage trends across products. Hover over the chart data points to view product-wise usage details for a selected day. ![Credits Trend time-series area chart](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amc4f506a8ba3df0f6/08e643a9b5e4cea3fbec75e4/Analytics-For-AI-Credits-Trend.png?locale=en-us) ### Credits by Product This table provides a detailed breakdown of credit usage by product: ![Credits by Product table](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am8ba7f79295dc375a/825ec7c872870cb770a7f4d5/Analytics-For-AI-Credits-By-Product.png?locale=en-us) * **Product:** The name of the AI-enabled product (for example, Agent OS) * **Total credits:** Total credits consumed during the selected period. * **Avg Per Day:** The average credits consumed daily by the product. * **Excess Credits Limit:** Credits consumed after the monthly credit allocation was exhausted. * **% Credits (this period):** The total credits consumed in percentage for the selected timeline. --- ## URL: https://www.contentstack.com/docs/analytics/analytics-for-assets --- title: "Analytics for Assets" description: "Gain insights into asset storage, API usage, bandwidth, cache performance, and AI-enabled assets with the Contentstack Assets Analytics dashboard." url: "https://www.contentstack.com/docs/analytics/analytics-for-assets" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-13" filename: analytics-for-assets.md --- # Analytics for Assets The Analytics dashboard for Assets provides detailed insights into asset usage, storage consumption, API activity, and AI-enabled asset adoption across your organization. Use these metrics to monitor storage trends, bandwidth usage, API requests, and cache performance. ## Prerequisite * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to navigate to the Assets Analytics dashboard. * What each dashboard section measures and how to interpret it. * How to apply filters and save custom views for later use. ## Access the Assets Analytics Dashboard To access the analytics dashboard, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to **Analytics** through the “App Switcher”. 2. By default, the **CMS** analytics dashboard appears. Click **Assets** to switch dashboards.![Assets dashboard selection in Analytics](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am66d5dae27a0c3da1/99c4cb9a3336e17e4dfe5ed5/Analytics_Assets_Select.png?locale=en-us) **Note:** The data in the Assets dashboard is updated every **24 hours**. ## Assets Analytics Dashboard Sections The dashboard is divided into several key sections, each providing insights into asset usage, storage, API activity, and AI-enabled asset adoption. ### Subscription Usage This section provides a high-level snapshot of your asset ecosystem across your organization. It displays key metrics including total assets, storage consumption, deleted assets, workspaces, spaces, custom asset types, fields, and AI-enabled assets. Use these summary cards to quickly assess asset volume, storage usage, and AI-enabled asset adoption across your organization. ![Assets Subscription Usage summary cards](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/ameb4f597078ffc529/84c8b167ea137109efa4c972/Analytics_Assets_NewSubscriptionUsage.png?locale=en-us) ### Storage This section displays the total storage consumed by different asset types over a selected time range. Use the zoom options (**1w**, **30d**, **60d**, **90d**) and date selector to analyze storage trends. The chart highlights storage usage trends across the selected period. ![Assets storage consumption chart](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amd3fd74109c2d9e45/0977622fbded4e60b2166384/Analytics_Assets_Storage.png) ### API Usage This section displays the number of asset-related API requests over a selected time range. Use the zoom options (**1w**, **30d**, **60d**, **90d**) and date selector to analyze request trends. This data helps identify API activity patterns across integrations. ![Asset API usage chart](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am7fffb00f41712965/e28d14dbc3a72426ced6df8f/Analytics_Assets_APIUsage.png) ### Bandwidth Usage This section displays the amount of bandwidth consumed by assets over a selected time range. Use the zoom options (**1w**, **30d**, **60d**, **90d**) and date selector to analyze usage trends. This view helps you track content delivery consumption, identify traffic spikes, and manage bandwidth allocation effectively. ![Asset bandwidth usage chart](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/ama1e5c2f4bf148454/517303b82538f3ce062b23b7/Analytics_Assets_BandwidthUsage.png) ### Status Codes This section displays the distribution of asset-related API response codes for the selected date range. It helps you monitor successful requests, client errors, and server errors. This view supports troubleshooting by highlighting response patterns and identifying potential integration issues. ![Asset API status code distribution](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amf7ba4d00c367170f/21a627abe2f7bf1da8998525/Analytics_Assets_StatusCodes.png?locale=en-us) ### Cache Usage This section displays cache performance metrics for asset delivery within the selected date range. It helps you analyze cache hit and miss patterns. This data helps analyze caching efficiency and repeated origin requests. ![Asset cache hit and miss chart](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am795c604b69516df7/f3f345503096ee77c02cba6b/Analytics_Assets_CacheUsage.png?locale=en-us) ### AI-Enabled Assets Usage This section displays activity related to assets enhanced with AI capabilities within the selected date range. It helps you monitor adoption and usage trends of AI-powered asset features. This view provides visibility into how AI-enabled assets contribute to your overall asset management strategy. ![AI-enabled assets usage chart](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am7ec04bb8427390e4/8107e1be974ec1f6c946e562/Analytics_Assets_AI-Enabled-Assets-Usage.png?locale=en-us) ### Top 5 Spaces by AI-Enabled Assets This section highlights the **five spaces** with the highest number of AI-enabled assets within the selected date range. It helps you identify where AI capabilities are most actively used. This view supports better visibility into space-level AI adoption and usage distribution across your organization. ![Top five spaces by AI-enabled assets](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am22d585b7db8cb7c6/078d718a777db470961127e8/Analytics_Assets_Top5-Spaces-AI-Enabled-Assets.png?locale=en-us) ### Top 5 AI-Enabled Asset Creators This section highlights the **five users** who have created or managed the highest number of AI-enabled assets within the selected date range. It provides visibility into user-level adoption of AI capabilities. This view helps identify key contributors and understand how AI features are utilized across teams. ![Top five AI-enabled asset creators](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amf40a80052e00f8ca/925e78f55448c73f6b2131c5/Analytics_Assets_Top5-AI-Enabled-Asset-Creators.png?locale=en-us) ## Apply Filters and Manage Views To filter dashboard data, click **Filters**, select your desired options, and then click **Apply Filter(s)**. The following filters are available: * **Spaces:** View data for a specific space or all spaces. * **Asset Category:** Filter data by asset category. * **Status Code:** Filter data by specific API response codes. * **Cache:** Filter by cached responses (All, HIT, or MISS). * **Group By:** View data grouped by day, week, or month, depending on the selected section. * **Date Range:** Choose from **1 week**, **30 days** (default), **60 days**, or **90 days**. Some charts include a timeline selector for further refinement. * **Zoom:** Switch between **1w**, **30d**, **60d**, or **90d** for trend analysis within a chart. To save a specific filter configuration for later use, click the horizontal ellipsis (**...**) beside **Reset** and choose **Save As New View**. Once saved, your view appears in the dropdown menu for quick access, so you do not need to reapply filters manually each time. ## Related Resources * [Usage Analytics](/docs/developers/apis/analytics-api/usage-analytics) * [Status Code](/docs/developers/apis/analytics-api/status-code) * [Cache Usage](/docs/developers/apis/analytics-api/cache-usage) --- ## URL: https://www.contentstack.com/docs/analytics/analytics-for-automate --- title: "Analytics for Automations" description: "Track execution counts, API requests, and resource usage in Automations with our Analytics dashboard to optimize your automation processes effectively." url: "https://www.contentstack.com/docs/analytics/analytics-for-automate" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-13" filename: analytics-for-automate.md --- # Analytics for Automations The Analytics dashboard for [Automations](/docs/agent-os/what-is-an-automation) is designed to provide comprehensive insights into the execution and performance of automation scripts within your organization. This tool allows you to monitor the efficiency and impact of automation by tracking various key metrics, ensuring that your automation processes are optimized for peak performance. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to navigate to the Automations Analytics dashboard. * What each dashboard section displays and how to use it. * How to filter data by status code, time interval, and date range. ## Access the Automations Analytics Dashboard To access the analytics dashboard, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to **Analytics** through the “App Switcher”. 2. By default, the **CMS** analytics dashboard appears. Click **Agent OS** and then select **Automations** to switch dashboards.![Automations dashboard selection in Analytics](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am3a901d042fe199c6/c25a72c8568941abf8d77056/Analytics_Automations_Select.png?locale=en-us) **Note:** The data in the Automations dashboard is updated every **24 hours**. ## Automations Analytics Dashboard Sections The dashboard is divided into several key sections, each providing valuable insights into different aspects of your Automations usage. These sections help you monitor and optimize your performance, resource utilization, and overall efficiency. ### Subscription Usage This section gives an overview of the execution usage, showing the number of executions performed in Automations, along with your organization’s set limit. ![Automations Subscription Usage overview](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am0a16456b6f6431f6/3c0e319eaea93b625ff9f09b/Analytics_Automations_SubscriptionUsage.png?locale=en-us) ### API Usage The API Usage section features a visualization of API usage over a selected time frame. This visualization helps you monitor and analyze the volume and frequency of API calls within Automations. Hover anywhere over the chart to see the corresponding API utilization for a specific timestamp. ![Automations API usage chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb97f99cdc91e4259/6800e1ab642b0a07ad2fbf4d/3._API_usage.png) ### Bandwidth Usage This section visually tracks bandwidth usage over time, helping you ensure that you stay within your subscription limits. Hover anywhere over the chart to see the corresponding bandwidth utilization for a specific timestamp. ![Automations bandwidth usage chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc353e8b6a0de6d64/6800e1aa24632d42d012506a/4._bandwidth_usage.png) ### Top URLs The Top URLs section displays the most frequently accessed API endpoints within Automations, helping you understand user interactions and optimize your system's performance. ![Top URLs table for Automations](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9bf32bf36e1075a3/6800e1aa9a3191068163e017/5._Top_URLs.png) ### Status Codes This section monitors the status of API calls, including successful requests, errors, and unsupported requests, to help you identify and address any issues quickly. ![Automations API status code breakdown](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt66395270fba47405/6800e1aa54c6905de0caa09c/6._status_codes.png) These sections give you insight into your automation performance, so you can make data-driven decisions to improve efficiency, optimize resource allocation, and keep your automation processes running smoothly. ## Apply Filters and Manage Views To apply filters, click **Filters**, select your option, then click **Apply Filter(s)**. The following filters are available: * **Status Code:** Filter the chart to show only specific status codes. * **Group By:** Organize the data by daily, weekly, or monthly intervals. * **Date Range:** Choose from predefined time filters (1 week, 30 days (default), 60 days, or 90 days). Additionally, some sections include a date selector below the graph to refine the range within the last 90 days. * **Custom Date:** Use the date dropdown filter to select a specific range or set a custom date range. **Note:** The custom date range should not exceed **90 days**. To save a specific filter for later use, click the horizontal ellipsis (**...**) beside Reset and choose **Save As New View**. Once saved, your view appears in the dropdown menu for quick access, so you don’t need to reapply filters manually each time. ## Related Resources * [Usage Analytics](/docs/developers/apis/analytics-api/usage-analytics) * [Top URLs](/docs/developers/apis/analytics-api/top-urls) * [Status Code](/docs/developers/apis/analytics-api/status-code) --- ## URL: https://www.contentstack.com/docs/analytics/analytics-for-brand-kit --- title: "Analytics for Brand Kit" description: "Track Brand Kit usage with Contentstack's Analytics dashboard. Monitor Brand Kits, Voice Profiles, AI requests, and more." url: "https://www.contentstack.com/docs/analytics/analytics-for-brand-kit" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-13" filename: analytics-for-brand-kit.md --- # Analytics for Brand Kit The Brand Kit Analytics dashboard gives organization Owners and Admins a centralized view of how their organization's Brand Kit is used. Use this dashboard to monitor subscription consumption, track generative AI (GenAI) request volume, review API performance, and measure Knowledge Vault activity. ## Prerequisite * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to navigate to the Brand Kit Analytics dashboard. * What each dashboard section measures and how to interpret it. * How to apply filters to narrow dashboard data by Brand Kit and Voice Profile. * How to save a filter combination as a reusable view. ## Access the Brand Kit Analytics Dashboard To access the Analytics dashboard, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to **Analytics** through the "App Switcher". 2. By default, the **CMS** analytics dashboard appears. Click **Brand Kit** to switch to the Brand Kit dashboard. ![Selecting the Brand Kit dashboard in Analytics](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amb24ebe65a3b84f59/f2827f38f89a9435371b4f06/Analytics_Brandkit_NewSelect.png?locale=en-us) **Note:** Data in the Brand Kit dashboard is updated every **24 hours**. ## Brand Kit Analytics Dashboard Sections The dashboard is divided into several sections, each providing valuable insights into different aspects of your Brand Kit usage. These sections help you monitor and optimize your performance, resource utilization, and overall efficiency. ### Subscription Usage This section shows organization-level consumption totals for the current subscription period. The following metrics are displayed: * **Brand Kit:** The number of Brand Kits created within your organization. * **Voice Profile:** The total number of Voice Profiles configured. * **Knowledge Vault:** The number of items stored in the Knowledge Vault. * **Tokens:** The number of tokens consumed for GenAI requests. **Note:** Token usage includes only requests sent to a Brand Kit's custom large language model (LLM). Requests that use the default Contentstack LLM (when no Brand Kit is selected) are not counted in the Tokens metric. ![Subscription Usage section of the Brand Kit Analytics dashboard](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/ama0495f2e84267aa0/192e102c0666cddb0d4a7b0b/Analytics_Brandkit_SubscriptionUsage.png?locale=en-us) ### Usage by Brand Kit This section breaks down resource consumption per individual Brand Kit. The following details appear for each Brand Kit: * **Brand Kit Name:** The name of the Brand Kit. * **Voice Profiles:** The number of Voice Profiles associated with the Brand Kit. * **Knowledge Vaults:** The number of items stored in the Knowledge Vault for the Brand Kit. * **Tokens Used:** The number of tokens the Brand Kit consumed for GenAI requests. This data lets you compare resource consumption across Brand Kits and identify which kits are driving the most activity. ![Usage by Brand Kit table](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8ce5ad2a00e47d69/689d760d0fc452eb67858293/4._Usage_by_Brandkit.png) ### Content Generations This section shows a time-based chart of the number of GenAI content generation requests made over a selected period. Hover over the chart to see the request count for a specific point in time. **Note:** When a Brand Kit is selected during AI content generation, the chart includes only requests processed through that kit's custom LLM. ![Content Generations time-series chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt32d0bd8fa51dcc18/689d760d9ee2010d7feb8e29/5._content_generation.png) ### Content Generations Status Code This section shows the number of content generation requests grouped by response status, including successes, errors, and unsupported requests. This applies to requests processed by both the default Contentstack LLM and any custom LLMs linked to Brand Kits. ![Content Generations Status Code chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta675339233b44bd9/689d760d026f3da7351d83c6/7._Content_generation_status_code.png) ### Brand Kit Requests This section shows the volume and frequency of Brand Kit requests over time. Hover over the chart to inspect the request count for a specific point in time. ![Brand Kit Requests time-series chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta8a16a4c2ba0dab5/689d760e5480a062322e4041/8._Brand_Kit_Requests.png) ### Brand Kit Status Usage This section shows the number of Brand Kit URL requests grouped by response status, including successes, errors, and unsupported requests. Use this data to assess API performance and investigate issues. ![Brand Kit Status Usage chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt112e6b819c81ce87/689d760d46b3af5869e4f238/9._Brandkit_Status_Usage.png) ### AI Assistant Request This section shows how frequently the AI Assistant is used over time. Hover over the chart to see the request count for a specific point in time. **Note:** When a Brand Kit is selected, the chart displays requests processed by that kit's custom LLM. When no Brand Kit is selected, it displays requests processed by the default Contentstack LLM. ![AI Assistant Request time-series chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9b8211c00f42faf2/689d760d8fd38c2bdc16986e/11._AI_Assistant_Request.png) ### AI Status Code Usage This section shows the number of AI Assistant API requests grouped by response status, including successes, errors, and unsupported requests. Use this data to assess API performance and investigate issues. ![AI Status Code Usage chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt13163855ff891b66/689d760defb7487a2e2273eb/12._AI_Status_Usage.png) ### Knowledge Vault Utilization This section shows usage trends for the Knowledge Vault, reflecting how actively the vault is being accessed or updated over time. **Note:** This section applies only to content generation requests where a Brand Kit is selected. Activity from requests using the default Contentstack LLM (without a Brand Kit) is not included. ![Knowledge Vault Utilization trend chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt505ba60f10b93f0b/689d760d46b3af1f71e4f23c/13._Knowledge_vault_utilization.png) ## Apply Filters and Manage Views To filter dashboard data, click **Filters**, select your options, and then click **Apply Filter(s)**. The following filters are available: * **Brand Kits:** View metrics for a specific Brand Kit or for all Brand Kits together. * **Voice Profiles:** View metrics for a specific Voice Profile or for all Voice Profiles together. * **Stacks:** View AI Assistant metrics for a specific stack or for all stacks together. * **Status Code:** Filter by specific response codes. ![Status Code filter options](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb02ef53c11c9c3e4/6894b5b678cbdc7926fb9372/16._filter_status_code.png) * **Group By:** View data grouped by day, week, or month. ![Selecting the Group By filter](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt930cf41767768ce9/6894b87ec841e057f783991e/2-group-by-date_\(2\).gif) * **Date Range:** Choose from 1 week, 30 days (default), 60 days, or 90 days. Some charts include a timeline selector for further refinement. * **Custom Date:** Set a specific date range using the dropdown. ![Setting a custom date range](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta8bee3e68d7da22c/6894b8f310270bd24e55985f/2-set-custom-date_\(2\).gif) **Note:** The custom date range cannot exceed **90 days**. To save a filter combination for later use, click the horizontal ellipsis (**...**) next to **Reset** and select **Save As New View**. The saved view appears in the dropdown menu. You can select it at any time to restore your filter settings without reapplying them manually. ![Save as New View.png](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/bltf74f804d1a36c99b/6894b7a788895d60d0fc7be4/Save_as_New_View.png?locale=en-us) --- ## URL: https://www.contentstack.com/docs/analytics/analytics-for-cms --- title: "Analytics for CMS" description: "Monitor your CMS performance with our Analytics dashboard. Track usage, manage resources, and optimize efficiency with key metrics and insights." url: "https://www.contentstack.com/docs/analytics/analytics-for-cms" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-12" filename: analytics-for-cms.md --- # Analytics for CMS The Analytics dashboard for Content Management System (CMS) gives organization owners and admins a centralized view of how the CMS is used across their organization. It covers resource consumption, API activity, bandwidth, assets, entries, and device usage across all stacks. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to access the CMS Analytics dashboard. * What each dashboard section shows and what metrics it includes. * How to apply filters and save custom views. ## Access the CMS Analytics Dashboard To access the Analytics dashboard, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to **Analytics** through the "App Switcher". 2. By default, the **CMS** analytics dashboard appears, which shows detailed metrics specific to your CMS usage. ![CMS Analytics dashboard overview](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am494ac21d4b4f7b6b/a498b522ef0c97c8ee1c2160/Analytics_CMS_Dashboard.png?locale=en-us) **Note:** Dashboard data updates every **24 hours**. Data shown does not reflect real-time activity. ## CMS Analytics Dashboard Sections The Analytics dashboard is divided into several sections, each providing valuable insights into different aspects of your CMS usage. These sections help you monitor and optimize your performance, resource utilization, and overall efficiency. ### Subscription Usage This section shows your organization's current CMS resource consumption, including bandwidth, API requests, and the number of [stacks](/docs/headless-cms/about-stack), [entries](/docs/headless-cms/about-entries), [assets](/docs/headless-cms/about-assets), [content types](/docs/headless-cms/about-content-types), and other resource metrics. It compares current usage against your subscription's allocated limits. ![Subscription Usage section of the CMS Analytics dashboard](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/amaad8764b9dc008be/762c9ee7410d0d16354be687/Analytics_CMS_SubscriptionUsage.png?locale=en-us) **Note:** The data displayed reflects usage from the last **30 days**. For example, if viewed on February 20, the metrics cover the period from January 21 to February 20. ### Usage by Stacks This section offers detailed metrics for each stack, allowing you to monitor the performance and resource utilization of individual stacks within your CMS. This information helps in managing and optimizing your content infrastructure effectively. ![Stack-level metrics in the Usage by Stacks section](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf21447e53baf684a/68028e0aa1f311e30afec641/2-usage-by-stacks.gif) Metrics available for each stack: * **Stack Name:** Name of all stacks within your organization. * **API Key:** API keys of the listed stacks. * **Owner:** Email addresses of the owners of the listed stacks. * **Content Types:** Number of content types within the stacks. * **Global Fields:** Number of global fields within the stacks. * **Entries:** Number of entries created within the stacks. * **Assets:** Number of assets present within the stacks. * **Environments:** Number of environments created within the stacks. * **Locales:** Number of languages created within the stacks. * **Extensions:** Number of extensions created within the stacks. * **Webhooks:** Number of webhooks created within the stacks. * **Custom Roles:** Number of custom roles within the stacks. * **Branches:** Number of branches within the stacks. * **Branch Aliases:** Number of branch aliases within the stacks. **Note:**[Global Fields](/docs/headless-cms/about-global-field), [Branches](/docs/headless-cms/about-branches), and [Branch Aliases](/docs/headless-cms/about-aliases) are plan-based features. To enable these features for your organization, contact the [support](mailto:support@contentstack.com) team. ### API Usage The API Usage section shows a visualization of API call volume over a selected time frame. Hover over the chart to see API utilization at a specific timestamp. ![Line graph of API call volume](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd4739f0c9bd75f41/68079acceac33265bed9d771/3._API_usage.png) ### Bandwidth Usage The Bandwidth Usage section shows bandwidth consumption over time, helping you track usage against your subscription limits. Hover over the chart to see bandwidth usage at a specific timestamp. ![Line graph of bandwidth usage over time](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc5c1217ffa1ffac9/68028f3a95f40ffa5b994856/4._bandwidth_usage.png) ### Assets The Assets section shows the total number of assets available within your organization and tracks asset count trends over a selected time frame. ![Chart of total asset count trends](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfd8a5a587c211d92/68028f6c54c690ee69cab2ec/5._assets.png) ### Entries The Entries section shows the total number of entries available within your organization. ![Chart of total entry count](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt702e55e16145ea8f/68028f8d696c05a0a035da97/6._entries.png) ### Top URLs The Top URLs section shows the most frequently accessed API endpoints within your CMS, helping you understand usage patterns and identify opportunities to optimize performance. ![Chart of most frequently accessed API endpoints](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6d90116494534be3/68028fcf0d8e5f774a012f2e/7._URLs.png) ### Status Codes The Status Codes section shows the outcomes of API calls, including successful requests, errors, and unsupported requests, so you can identify and address issues quickly. ![Chart of API call outcomes by status code](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta5e585cfd2b6ad99/680335eb4851b5e7b7d314ab/7._status_codes.png) ### Cache Usage The Cache Usage section shows API call hit and miss ratios, helping you assess and optimize your cache configuration. You can filter the chart to display only HITs or MISSes. ![Chart of cache hit and miss ratios](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt142c1625c3a4a4fd/68028ffd54c6907058cab2f7/9._cache_usage.png) ### SDK Usage The SDK Usage section shows a pie chart of SDK consumption across your customers, helping you track the usage of individual SDKs. ![Pie chart of SDK usage distribution](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta2a47b2f6913d4d0/68078571da898c2eb1f878fb/10._SDK_usage.png) ### Device Usage The Device Usage section shows a pie chart of the device types used to access your CMS. Use this data to understand how users access your content and optimize accordingly. ![Pie chart of device types accessing the CMS](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt89bf865d13633c5c/6802901b1ef98323c4f79901/11._device_usage.png) The analytics dashboard for CMS offers crucial insights into your resource usage. ## Apply Filters and Manage Views To apply filters, click **Filters** and then the **Apply Filter(s)** button after selecting your desired options. You can refine dashboard data using the following filters: * **Stacks:** Select specific stacks or choose **All Stacks** for a consolidated view. * **Services:** Filter API requests by specific services or view all services together. * **Status Code:** Filter the chart to show only specific status codes. * **Cache:** Filter the chart to show only HITs or MISSes. * **Group By:** Organize data by daily, weekly, or monthly intervals. * **Date Range:** Choose from predefined time filters: 1 week, 30 days (default), 60 days, or 90 days. Some sections include a date selector below the graph to refine data for a custom period within the last 90 days. * **Custom Date:** Use the date dropdown to set a specific or custom range. **Note:** The custom date range must not exceed **90 days**. To save a filter combination as a view, click the horizontal ellipsis (**...**) beside **Reset** and select **Save As New View**. Saved views are accessible from the dropdown without needing to reapply filters manually. ![Applying filters and saving a custom view](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbd966086b879ce06/6808dad17f7ff4761a9fa863/Apply_filters_and_manage_-_cam_version.gif) ## Related Resources * [Usage Analytics](/docs/developers/apis/analytics-api/usage-analytics) * [Top URLs](/docs/developers/apis/analytics-api/top-urls) * [Status Code](/docs/developers/apis/analytics-api/status-code) * [Cache Usage](/docs/developers/apis/analytics-api/cache-usage) * [SDK Usage](/docs/developers/apis/analytics-api/sdk-usage) * [Device Usage](/docs/developers/apis/analytics-api/device-usage) --- ## URL: https://www.contentstack.com/docs/analytics/analytics-for-launch --- title: "Analytics for Launch" description: "Optimize Launch deployments with in-depth analytics on project progress, API usage, and device trends for improved performance and resource efficiency." url: "https://www.contentstack.com/docs/analytics/analytics-for-launch" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-12" filename: analytics-for-launch.md --- # Analytics for Launch The Launch Analytics page provides detailed insights into the progress of your deployment projects. By analyzing key metrics like execution times, project environments, and API performance, you can optimize deployments and make informed, data-driven decisions. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to navigate to the Launch Analytics dashboard using the App Switcher. * What each dashboard section measures and how to use it. * How to apply filters, group data, and save custom views. ## Access the Launch Analytics Dashboard To access the Analytics dashboard, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to **Analytics** through the "App Switcher". 2. By default, the **CMS** analytics dashboard appears. Click **Launch** to switch to the Launch dashboard. ![Selecting the Launch dashboard in Analytics](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/ambc5352604fc37a85/dc61adc0a614028ebb59a98e/Analytics_Launch_NewSelect.png?locale=en-us) **Note:** The data in the Launch dashboard is updated every **24 hours**. ## Launch Analytics Dashboard Sections The dashboard is divided into several sections, each offering insights into different areas of Launch usage and helping optimize performance and efficiency. ### Subscription Usage This section displays your current Launch resource consumption, including the number of projects, environments, execution time, build time, and cache revalidations. Use this section to track usage against your subscription limits. ![Subscription Usage section of the Launch Analytics dashboard](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am0dbf823c9a9ebce1/3cfe94435ab7a7ef69c0a7c0/Analytics_Launch_SubscriptionUsage.png?locale=en-us) ### URL Requests This section displays a time-based graph of URL request volume and frequency. Hover over the chart to see metrics for a specific timestamp. ![Time-series graph of URL request volume](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6664313bab80104b/680335a324632d65fe1263da/4._URL_Requests.png) ### Bandwidth Usage This section tracks bandwidth consumption over time. Hover over the chart to view bandwidth details for a specific timestamp. ![Time-series chart of bandwidth usage](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb70f1d68936f3cb2/680335b98e7aaaaaf646345a/5._bandwidth_usage.png) ### Top URLs This section lists the most frequently accessed API endpoints within Launch. Use this section to identify usage trends and find candidates for performance optimization. ![Bar graph of most frequently accessed API endpoints](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbfcc8fa86a2e0f0c/680335d645744f927cc99a96/6._top_URLs.png) ### Status Codes This section breaks down URL request results by HTTP status code, including successes, errors, and unsupported requests. Use this section to support diagnostics and identify patterns in request failures. ![Chart of HTTP status code distribution for URL requests](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta5e585cfd2b6ad99/680335eb4851b5e7b7d314ab/7._status_codes.png) ### Cache Usage This section shows hit and miss ratios for cached responses. Use this section to evaluate your cache configuration and identify opportunities to improve load times. ![Chart showing cache HIT and MISS counts or percentages over the selected date range.](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9c52f22f7e959908/6803362c782624bbaa2e525b/8._cache_usage.png) ### Device Usage This section displays a pie chart showing the breakdown of devices accessing Launch. Use this section to understand traffic sources and inform decisions about UI optimization for specific device types. ![Pie chart of traffic by device category](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltad74109c0e722ff1/68033644bc28a81689a4a966/9._device_usage.png) By leveraging the Analytics dashboard, you gain actionable insights to optimize deployments, improve system efficiency, and maximize the value of Contentstack Launch. ## Apply Filters and Manage Views To apply filters, click **Filters**, select your desired options, and then click **Apply Filter(s)**. The following filters are available: * **Projects:** View metrics for a specific project or for all projects together. * **Environments:** Filter data for specific environments or for all environments. * **Status Code:** Filter by specific HTTP response codes. * **Cache:** Filter by HITs or MISSes. * **Group By:** View data grouped by day, week, or month. * **Date Range:** Choose from 1 week, 30 days (default), 60 days, or 90 days. Some charts include a timeline selector for further refinement. * **Custom Date:** Set a custom date range using the dropdown. **Note:** The custom date range must not exceed **90 days**. To save a specific filter for later use, click the horizontal ellipsis (**...**) beside **Reset** and select **Save As New View**. The saved view appears in the dropdown menu so you can reapply it without re-entering the filter options each time. ## Related Resources * [Subscription Usage](/docs/developers/apis/analytics-api/subscription-usage) * [Usage Analytics](/docs/developers/apis/analytics-api/usage-analytics) * [Top URLs](/docs/developers/apis/analytics-api/top-urls) * [Status Code](/docs/developers/apis/analytics-api/status-code) * [Cache Usage](/docs/developers/apis/analytics-api/cache-usage) * [Device Usage](/docs/developers/apis/analytics-api/device-usage) --- ## URL: https://www.contentstack.com/docs/analytics/analytics-for-personalize --- title: "Analytics for Personalize" description: "Track Personalize usage with Contentstack's Analytics dashboard. Monitor API requests, impressions, events, and more." url: "https://www.contentstack.com/docs/analytics/analytics-for-personalize" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-12" filename: analytics-for-personalize.md --- # Analytics for Personalize The Personalize Analytics dashboard gives organization Owners and Admins a centralized view of how Contentstack Personalize is being used across the organization. Use it to track subscription consumption, monitor API activity, and analyze usage patterns over time. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to open the Personalize Analytics dashboard. * What each dashboard section measures. * How to filter data and save filter combinations as views. ## Access the Personalize Analytics Dashboard To access the Analytics dashboard, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to **Analytics** through the "App Switcher". 2. By default, the **CMS** dashboard appears. Click **Personalize** to switch to the Personalize dashboard. ![Selecting the Personalize dashboard in Analytics](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am897351c073eef942/f404a6072630a663d887831c/Analytics_Personalize_Select.png?locale=en-us) **Note:** The data in the Personalize dashboard is updated every **24 hours**. ## Personalize Analytics Dashboard Sections The dashboard is divided into several sections, each offering insights into different aspects of your Personalize usage to help optimize performance and resource utilization. ### Subscription Usage This section shows your Personalize resource consumption measured against your allocated limits. It tracks the following parameters: * **Projects:** Number of projects created. * **Experiences:** Total configured experiences. * **Audiences:** Number of defined personalization audiences. * **Attributes:** User attributes in use. * **Manifest Requests:** Requests for retrieving personalized content. * **Events:** Total events captured for personalization. * **Impressions:** Count of personalized content displays. * **Custom Events:** Number of tracked custom events. ![Subscription Usage section of the Personalize Analytics dashboard](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am211dc5ce6e6935c7/2179bc486c1705746900c358/Analytics_Personalize_SubscriptionUsage.png?locale=en-us) ### API Requests This section visualizes Personalize Edge and Management API usage over a selected time frame. Hover over the chart to view utilization at specific timestamps. ![Line chart of Personalize API request volume](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7e1f7b91d184ec86/680345db2b1be9dca0154dd5/4._API_requests.png) ### Top URLs This section displays the most frequently accessed Personalize API endpoints. Use it to analyze usage trends and optimize performance. ![Bar chart of most accessed Personalize API endpoints](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb657db92b42c8eda/680345f16758e04d0f5b6aab/5._top_URLs.png) ### Status Codes This section breaks down API call results by status (success, error, or unsupported) to support diagnostics. ![Bar chart of most accessed Personalize API endpoints](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltacd73a43a46d9d75/680346081650673f2124d0db/6._status_codes.png) ### Management API Device Usage This section shows the device types accessing the Personalize Management API, helping you understand user interaction environments. ![Chart of device types accessing the Management API](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9a1db2d2e7c381fe/6803462478262471b02e526f/7._management_API_device_usage.png) ### Edge SDK Usage This section provides a pie chart summarizing Edge SDK consumption across different implementations. ![Pie chart of Edge SDK usage distribution](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4c6424bfb32ae617/6803463dd8072e0b2bc395d2/8._edge_sdk_usage.png) The analytics dashboard for Personalize offers crucial insights into your personalization efforts and helps improve decision-making across your strategies. ## Apply Filters and Manage Views To filter dashboard data, click **Filters**, select your desired options, and then click **Apply Filter(s)**. The following filters are available: * **Projects:** Filter by individual or all projects. * **Services:** Filter API requests by all or specific services. * **Subtypes:** Filter data by **Events**, **Manifest**, or **User Attributes**. * **Status Code:** Show results for selected status codes. * **Group By:** Display data grouped by day, week, or month. * **Date Range:** Choose from predefined options (1 week, 30 days, 60 days, 90 days). Some graphs allow further range refinement. * **Custom Date:** Set a custom range using the dropdown. **Note:** The custom date range cannot exceed **90 days**. If you regularly use the same filter combination, you can save it as a view. Click the horizontal ellipsis next to **Reset** and choose **Save As New View**. ![Animated walkthrough showing how to apply filters and save a custom view in the Personalize Analytics dashboard](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbd966086b879ce06/6808dad17f7ff4761a9fa863/Apply_filters_and_manage_-_cam_version.gif) Once saved, you can access the view from the dropdown menu without reapplying filters manually. ## Related Resources * [Usage Analytics](/docs/developers/apis/analytics-api/usage-analytics) * [Top URLs](/docs/developers/apis/analytics-api/top-urls) * [Status Code](/docs/developers/apis/analytics-api/status-code) * [Device Usage](/docs/developers/apis/analytics-api/device-usage) * [SDK Usage](/docs/developers/apis/analytics-api/sdk-usage) --- ## URL: https://www.contentstack.com/docs/analytics/analytics-for-polaris --- title: "Analytics for Polaris" description: "Gain insights into agent activity, token consumption, tool execution, and user-level usage with the Contentstack Polaris Analytics dashboard." url: "https://www.contentstack.com/docs/analytics/analytics-for-polaris" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-13" filename: analytics-for-polaris.md --- # Analytics for Polaris The Analytics dashboard for Polaris provides detailed insights into how Contentstack's built-in AI assistant is being used across your organization. Polaris can perform actions on entries, assets, and the Visual Editor on behalf of users. Use these metrics to monitor usage trends, response latency, token consumption, and execution success rates across Polaris operations. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to navigate to the Polaris Analytics dashboard. * What each of the seven dashboard sections shows and when to use it. * How to apply filters, set date ranges, and save custom views. ## Access the Polaris Analytics Dashboard To access the analytics dashboard, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to **Analytics** through the “App Switcher”. 2. By default, the **CMS** analytics dashboard appears. Click **Agent OS** and then select **Polaris** to switch dashboards.![Polaris dashboard selection in Analytics](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am4c4600eaa7249500/99e9599e1c670c5a76cc68ff/Analytics_Polaris_Select.png?locale=en-us) **Note:** The data in the Polaris dashboard updates in real-time, with a latency of **5 to 10 minutes**. ## Polaris Analytics Dashboard Sections The dashboard is divided into several key sections, each providing insights into different aspects of Polaris usage and performance. ### Overview This section provides a high-level summary of Polaris activity within your organization. It highlights key metrics such as **Active Users**, **Average Response Latency**, and **Token Consumption**. These summary cards help you quickly assess Polaris usage, response performance, and token consumption. ![Polaris Overview summary cards](https://assets.contentstack.io/spaces/am51d76353d996c1fe/assets/am7af112260916ef72/6be0ec5423ea63c8b7e32e9a/Analytics_Polaris_NewOverview.png?locale=en-us) ### Tool Execution Summary This section displays a table of all operations executed by Polaris within the selected date range. For each tool, it shows the number of successful executions, failed executions, and average duration in milliseconds. ![Tool Execution Summary table](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7956c9e396cbca38/69fd49d5ea752382be0e5bbb/Analytics_Polaris_ToolExecution.png) ### Usage Summary This section displays the number of successful and failed Polaris requests over a selected time range. Use the zoom options (**1w**, **30d**, **60d**, **90d**) and date selector to analyze request trends. This view helps you understand how frequently users are invoking Polaris, identify spikes in activity, and track the overall success rate of requests over time. ![Polaris usage summary chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt18493071c9ba09a2/69fd49d5eb66df67814b849a/Analytics_Polaris_UsageSummary.png) ### Average Duration for an Action This section displays the trend of average response times for Polaris-executed actions over the selected time range. Use the zoom options (**1w**, **30d**, **60d**, **90d**) and date selector to analyze latency trends. ![Average action duration trend chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt97f1b3fee1d35b37/69fd8dbf9437c80ee40596c6/Analytics_Polaris_AvgDuration.png) ### Token Usage This section displays the total number of tokens consumed by Polaris within the selected date range, broken down by successful and failed requests and shown as a bar chart. This view helps you monitor AI resource consumption tied specifically to Polaris operations, identify peak usage days, and manage token allocation across your organization.  ![Polaris token usage bar chart](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb06fa63fcfafe233/69fd49d59e74d50fb4c7fb28/Analytics_Polaris_TokenUsage.png) ### Error Distribution This section helps you identify and categorize failures across Polaris operations. This view supports troubleshooting by surfacing error patterns, such as permission-related failures or schema validation issues, helping teams address recurring problems. If no errors are found for the selected period, the section displays a “No records found” message. ![Polaris error distribution view](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf91cd5b93b36370e/69fd8dbf9437c845340596ca/Analytics_Polaris_ErrorDistribution.png) ### Top Users by Consumption This section highlights the users who have consumed the highest number of tokens through Polaris interactions within the selected date range. Since Polaris performs actions using the logged-in user’s credentials, this view helps you understand how AI usage is distributed across your team and identify the most active Polaris users. ![Top users by token consumption](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9c74128cf9c3ae16/69fd8dbf7dde2c067282e479/Analytics_Polaris_Users.png) ## Apply Filters and Manage Views To apply filters, click **Filters**, select your options, then click **Apply Filter(s)**. The following filters are available: * **Date Range:** Choose from **1 week**, **30 days** (default), **60 days**, or **90 days**. Some charts include a timeline selector for further refinement. * **Custom Date:** Set a custom date range using the dropdown. **Note:** The custom date range should not exceed **90 days**. * **Zoom:** Switch between **1 week**, **30 days**, **60 days**, or **90 days** for trend analysis. * **Group By:** View data grouped by day, week, or month, depending on the selected section. To save a specific filter for later use, click the horizontal ellipsis (...) beside **Reset** and choose **Save As New View**. Once saved, your view appears in the dropdown menu for quick access, so you don’t need to reapply filters manually each time. --- ## URL: https://www.contentstack.com/docs/analytics/faqs --- title: "Analytics FAQs" description: "Discover the frequently asked questions for analytics in Contentstack." url: "https://www.contentstack.com/docs/analytics/faqs" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-13" filename: faqs.md --- # Analytics FAQs ### What is the Analytics feature in Contentstack? The Analytics feature integrates Product Analytics and Mission Control, offering a unified view of interactions with Contentstack’s CMS, Launch, Automate, Personalize, Brand Kit, and other products. It provides comprehensive metrics, including status codes, cache usage, SDK usage, and top URLs. ### How do I access the Analytics feature? To access Analytics, log in to your [Contentstack account](https://www.contentstack.com/login), select your organization, then click **Analytics** from the "App Switcher" icon. ### Who can access the Analytics feature? The Analytics feature is only accessible to organization [Owner and Admin](/docs/administration/about-administration-roles) roles. ### Can I filter data in the Analytics dashboard? Yes, you can filter data in the Analytics dashboard based on specific services, groups, and durations. **Note**: The date range for these filters must be within **90** **days**. ### Can I see analytics for the pages of my website? Contentstack does not provide analytics for the pages of your website. However, you can use any external tool to get the analytics. --- ## URL: https://www.contentstack.com/docs/analytics/limitations-for-analytics --- title: "Limitations for Analytics" description: "Learn about the limitations of the Analytics feature in Contentstack." url: "https://www.contentstack.com/docs/analytics/limitations-for-analytics" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-13" filename: limitations-for-analytics.md --- # Limitations for Analytics This page lists the known constraints that apply to Analytics dashboards in Contentstack. ## Limitations * The data in the dashboards updates every **24 hours**. * Filters are limited to a maximum date range of **90 days**. ## Related Resource * [Analytics API](/docs/developers/apis/analytics-api) --- ## URL: https://www.contentstack.com/docs/assets --- title: "Assets" description: "Centralize, organize, and govern digital assets with Contentstack Assets. Enable reuse, AI-powered discovery, and scalable asset management across teams." url: "https://www.contentstack.com/docs/assets" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-04" filename: assets.md --- # Assets Contentstack Assets is a modern, AI-powered digital asset platform designed to help teams organize, govern, and reuse assets at scale. It enables you to manage brand-specific assets across spaces and workspaces, apply rich metadata and asset models, localize content, add visual intelligence, and securely share assets across CMS stacks. With built-in search, automation, and governance, your assets stay consistent, discoverable, and ready for every channel and use case. ## Assets Quickstart ### Create a Space [Learn more](https://www.contentstack.com/assets/create-a-space) ### Add Users to Space [Learn more](https://www.contentstack.com/assets/add-users-to-space) ### Add Languages to a Workspace [Learn more](https://www.contentstack.com/assets/add-languages-to-a-workspace) ### Create User-Defined Fields [Learn more](https://www.contentstack.com/assets/create-user-defined-fields) ### Create Asset Types [Learn more](https://www.contentstack.com/assets/create-asset-types) ### Upload Assets [Learn more](https://www.contentstack.com/assets/upload-assets) ### Use AI to Manage Assets [Learn more](https://www.contentstack.com/assets/enhance-asset-management-with-ai) ### Localize an Asset [Learn more](https://www.contentstack.com/assets/localize-an-asset) ### Link Space with Headless CMS [Learn more](https://www.contentstack.com/assets/manage-spaces-and-workspaces-in-assets-hub#link-a-workspace) ### Publish Assets [Learn more](https://www.contentstack.com/headless-cms/publish-an-asset) ## Get Started ### About Assets [Learn more](https://www.contentstack.com/assets/about-assets) ### Enhance Asset Management with AI [Learn more](https://www.contentstack.com/assets/enhance-asset-management-with-ai) ### Move from Stack Assets to New Assets [Learn more](https://www.contentstack.com/assets/move-from-stack-assets-to-new-assets) ### Getting Started with Assets [Learn more](https://www.contentstack.com/assets/getting-started-with-assets) --- ## URL: https://www.contentstack.com/docs/assets/about-asset-localization --- title: "[AM2.0] - About Asset Localization" description: Overview of asset localization in Assets, including benefits, supported languages, and an example workflow. url: https://www.contentstack.com/docs/assets/about-asset-localization product: Assets doc_type: concept audience: - developers - content-managers - administrators version: AM2.0 last_updated: 2026-03-25 filename: about-asset-localization.md --- # [AM2.0] - About Asset Localization This page explains what asset localization is in Assets, why it matters for global teams, what languages are supported (including custom languages), and provides an example workflow for managing localized asset metadata and files. ### About Asset Localization Asset localization in Assets enables you to manage, adapt, and deliver digital assets for global audiences with ease. It allows you to create language-specific versions of asset metadata, and even the asset itself, so that teams can deliver culturally relevant and regionally accurate experiences without duplicating assets or workflows. With asset localization, you can localize asset titles, descriptions, tags, user-defined metadata, and even replace the underlying file (eg., images containing text) for different languages, all within the same asset. ## Key Benefits of Asset Localization Asset localization helps organizations scale global content delivery while maintaining control and consistency. - Deliver regionally relevant assets without duplication - Maintain a single source of truth for global assets - Ensure consistent fallback behavior - Improve search and discovery in localized environments - Support global campaigns and multilingual websites at scale ## Why Asset Localization Matters Global teams often need more than just translated content. Assets such as images, documents, and videos may need: - Language-specific text - Region-specific visuals - Localized metadata for better discovery - Controlled fallbacks when localized content is unavailable Asset localization addresses these needs by allowing a single asset to support multiple languages while maintaining a clean, governed structure that’s easy to manage across teams and regions. ## Supported and Custom Languages Assets supports **200+ predefined languages**, covering most global and regional needs. In addition: - You can create custom languages if your localization requirements do not align with standard language codes. - Custom languages behave the same as supported languages for asset localization. - Once created, a language code cannot be changed. This flexibility allows teams to support: - Regional dialects - Internal or business-specific language conventions - Market or audience-specific variations ## Example: Localized Asset Workflow Imagine you manage assets for a website available in English and French: - You upload an image and add metadata in English. - You add French as a language with English as its fallback. - You switch to the French version and:Update the title and description in French - Add French tags - Replace the image with a French version containing localized text When the website is viewed in French, the French asset version is used. If a French version is unavailable, the English version is automatically served. ## Common questions **What can be localized for an asset?** Asset titles, descriptions, tags, user-defined metadata, and even the underlying file can be localized. **Do I need to duplicate assets to support multiple languages?** No. Asset localization allows a single asset to support multiple languages without duplicating assets or workflows. **What happens if a localized version is missing?** Fallback behavior ensures that if a localized version is unavailable, the fallback language version is automatically served. **Can I change a custom language code after creating it?** No. Once created, a language code cannot be changed. --- ## URL: https://www.contentstack.com/docs/assets/about-asset-modeling --- title: "[AM2.0] - About Asset Modeling" description: About Asset Modeling in Contentstack Asset Management 2.0 (AM2.0) url: https://www.contentstack.com/docs/assets/about-asset-modeling product: Contentstack doc_type: concept audience: - developers - admins - content-managers version: AM2.0 last_updated: 2026-03-25 filename: about-asset-modeling.md --- # [AM2.0] - About Asset Modeling This page explains what asset modeling is in AM2.0, why you might create user-defined fields, and how asset types work (including a practical example). It is intended for admins and teams configuring asset metadata and file-type handling at the product level, and should be used when you need to extend Contentstack’s default asset support with custom types and fields. ## About Asset Modeling Asset modeling lets you structure, enrich, and manage your digital assets more effectively. You can **create user-defined fields**, **create asset types**, and **assign these fields to your asset types**, all at the product level. Out of the box, Contentstack provides a wide range of system-defined asset types, including standard images, audio, video, documents, archives, and many more. But every business has unique formats. For example, you might need to handle 3MF 3D models, which are not supported by default. With asset modeling, you can create a custom asset type for `.3mf` files, map it to the MIME type `model/3mf`, and add fields such as product SKU, model dimensions, and license expiration. This flexibility means you are not limited to what comes built in. You can expand the system to capture the exact metadata your workflows demand. ## Why Create User-Defined Fields? User-defined fields are custom metadata fields that capture information specific to your assets. Unlike default file properties (such as file name or size), user-defined fields allow you to record data that aligns with your business processes, compliance needs, or campaign workflows. Key features: - **Reusable Across Asset Types**: Define a field once and apply it to one or many asset types. For example, a photographer name field can be reused across all photography-related asset types. - **Configurable Metadata Input**: Choose from a wide range of field types, such as:Single Line Textbox - Multi Line Textbox - Link - Select - Number - Date - Boolean - Group **Additional Resource: **Refer to the [Field Types](/docs/assets/field-types) document for more information on how to use these fields. ## Understand Asset Types An asset type defines how Contentstack recognizes a file format and what metadata fields apply to it. - An asset type always corresponds to exactly one MIME type. - You can associate one file extension with each asset type. - Each asset type has a user-friendly name that makes it easier for contributors to identify and work with. Example: - **MIME type:** `image/jpeg` - **Extension:** `.jpg` - **Asset Type Name:** JPG Image You could also define: - **MIME type:** `image/jpeg` - **Extension:** `.jpeg` - **Asset Type Name:** JPEG Image Both map to the same MIME type but represent different extensions with clear names. ## Example: 3MF 3D Model A retailer that sells 3D-printable products wants to manage `.3mf` files in its library. Out of the box, `.3mf` is not supported, so the admin creates a custom asset type: - **Name:** 3MF 3D Model - **MIME Type:** `model/3mf` - **Extension:** `.3mf` - **Associated Fields:**Product SKU (Single Line Textbox, Mandatory) - Model Dimensions (Single Line Textbox, for example 10x10x15 cm) - Creator (Single Line Textbox) - License Expiration (Date, Mandatory) Whenever a file of MIME type `model/3mf` and extension `.3mf` is uploaded, the system automatically applies this asset type and displays the associated fields. Contributors cannot complete the upload until they provide values for all mandatory fields. Start modeling your assets today to unlock smarter workflows, richer metadata, and a more powerful digital asset experience in Contentstack. ## Common questions **How is asset modeling applied in Contentstack?** Asset modeling is done at the product level, where you can create user-defined fields, create asset types, and assign fields to asset types. **Can multiple asset types map to the same MIME type?** An asset type always corresponds to exactly one MIME type, and you could define multiple asset types that use the same MIME type but represent different extensions with clear names. **What happens when a file matches a custom asset type?** Whenever a file of the specified MIME type and extension is uploaded, the system automatically applies the asset type and displays the associated fields. **Do mandatory fields affect uploads?** Contributors cannot complete the upload until they provide values for all mandatory fields. --- ## URL: https://www.contentstack.com/docs/assets/about-assets --- title: "[AM2.0] - About Assets" description: Overview of Contentstack Assets, including key features and advanced capabilities. url: https://www.contentstack.com/docs/assets/about-assets product: Contentstack doc_type: overview audience: - developers - content-managers - administrators version: AM2.0 last_updated: 2026-03-25 filename: about-assets.md --- # [AM2.0] - About Assets This page introduces Contentstack Assets, describing what it is, the core features it provides, and the advanced capabilities available. It is intended for teams evaluating or onboarding to Assets (developers, content teams, and administrators) and should be used when planning how to organize, govern, and deliver digital assets across projects. ## About Assets Contentstack Assets provides a centralized, integrated, intelligent, and scalable solution to organize, enrich, and deliver digital assets across all your projects. It serves as an asset repository within Contentstack, giving teams control over how files are stored, categorized, searched, and used in content experiences. From product images and brand videos to 3D models and marketing documents, Contentstack Assets helps you streamline workflows, maintain consistency, and make assets discoverable and reusable across your organization. ## Key Features - **Spaces and Workspaces** Spaces are top-level containers where assets are managed independently. Each brand, business unit, or region can have its own space. Workspaces are isolated environments inside a space, ideal for campaign-specific collaboration or branch-aligned workflows. They provide controlled editing, access management, and campaign asset governance. - **Centralized Asset Library** Upload and store images, documents, videos, 3D models, and more. - Organize assets into folders for clarity and easy navigation. - Reuse assets across multiple stacks. - **Custom Asset Modeling** Define user-defined fields (e.g., product ID, campaign name, photographer) to capture contextual metadata. - Create custom asset types that map to MIME types and file extensions (e.g., image/jpeg). - Ensure assets are consistently tagged, classified, and discoverable. ## Advanced Capabilities Assets includes AI-powered and enterprise-grade capabilities: - **AI-Powered Asset Recommendations:** Suggests relevant assets based on entry content, audience, and variant details, reducing manual effort and improving content relevance. - **Visual Markup:** Add hotspots and bounding boxes to images for interactive or shoppable experiences. Use AI-powered suggestions to detect and add markups faster. Link markups to external URLs or contextual details. - **Alt Text Suggestion:** Automatically generates accessibility-friendly alt text for images, improving inclusivity and SEO. - **Tag Suggestion:** Suggests descriptive tags for assets, making them easier to categorize and find. - **Localization:** Manage multilingual versions of assets across a space. - **Metadata Management:** Uses user-defined fields to structure asset metadata for better classification, filtering, governance, and discovery across large asset libraries. - **Color-Based Filtering:** Filter image assets by dominant color with advanced controls such as fuzzy matching and prominence thresholds for precise results. - **Asset Versioning:** Create, compare, roll back, and manage historical versions of both binary files and metadata, ensuring full traceability and auditability. - **Role-Based Access Control (RBAC):** Manages access through predefined and custom roles, space-level permissions, teams, and associations. Supports enterprise identity workflows with SSO and SCIM for centralized user provisioning and governance. Contentstack Assets is the foundation for building a structured, intelligent, and future-ready asset strategy inside Contentstack. Whether you manage product catalogs, marketing campaigns, or global brand assets, Contentstack Assets ensures your assets are organized, discoverable, localized, and optimized for delivery across all digital experiences. ## Common questions ### What is Contentstack Assets used for? Contentstack Assets is used to organize, enrich, and deliver digital assets across projects, serving as an asset repository within Contentstack. ### What is the difference between Spaces and Workspaces? Spaces are top-level containers where assets are managed independently, while Workspaces are isolated environments inside a space for campaign-specific collaboration or controlled workflows. ### What types of files can be stored in the centralized asset library? You can upload and store images, documents, videos, 3D models, and more. ### What enterprise governance features are supported? Assets supports capabilities such as Asset Versioning and Role-Based Access Control (RBAC), including enterprise identity workflows with SSO and SCIM. --- ## URL: https://www.contentstack.com/docs/assets/about-assets-roles --- title: "[AM2.0] - About Assets Roles" description: About Assets Roles url: https://www.contentstack.com/docs/assets/about-assets-roles product: Contentstack Assets doc_type: concept audience: - administrators - developers - content-managers version: AM2.0 last_updated: 2026-03-25 filename: about-assets-roles.md --- # [AM2.0] - About Assets Roles This page explains how Contentstack Assets uses role-based access control (RBAC) to manage permissions at the product and space levels. It is intended for administrators and team members who need to understand or configure access to Assets, and should be used when assigning roles or planning permission models across spaces. ## About Assets Roles Contentstack [Assets](/docs/assets/about-assets) uses **role-based access control** (**RBAC**) to manage who can access Assets and what actions they can perform. Permissions are applied at two levels: - **Product-level roles**: These organization-level roles control product-wide capabilities across Assets, such as creating spaces, configuring asset types, managing Asset roles and users, and others. - **Space-level roles**: Controls access and actions within a specific space, such as uploading assets, managing workspaces, managing space languages, and managing space users and roles. A user’s effective permissions are determined by the combination of organization-level role(s) and space-level role(s) assigned for each space. Contentstack provides the following out-of-the-box product-level roles: - **Product Admin**: Full access to Assets administration across assigned spaces. Commonly manages users, roles, spaces, asset types, user-defined fields, and languages. - **Asset Type Manager**: Manages asset types and user-defined fields. Typically supports metadata modeling and schema configuration. - **Member**: Provides access to the Assets, but does not grant administrative permissions by itself. Capabilities depend on space-level roles assigned per space. By combining product-level roles with space-level roles, Contentstack Assets delivers flexible, secure, and scalable access control. This ensures the right users have the right level of access to assets, exactly where they need it. ## Common questions ### What determines a user’s effective permissions in Assets? A user’s effective permissions are determined by the combination of organization-level role(s) and space-level role(s) assigned for each space. ### What is the difference between product-level roles and space-level roles? Product-level roles control product-wide capabilities across Assets, while space-level roles control access and actions within a specific space. ### Which out-of-the-box product-level roles are available? Contentstack provides Product Admin, Asset Type Manager, and Member as out-of-the-box product-level roles. ### Does the Member product-level role grant administrative permissions? No. The Member role provides access to the Assets, but does not grant administrative permissions by itself; capabilities depend on space-level roles assigned per space. --- ## URL: https://www.contentstack.com/docs/assets/about-space-roles --- title: "[AM2.0] - About Space Roles" description: About space roles and how they control user permissions within a specific space in Contentstack Assets. url: https://www.contentstack.com/docs/assets/about-space-roles product: Contentstack Assets doc_type: concept audience: - administrators - developers - asset-managers version: AM2.0 last_updated: 2026-03-25 filename: about-space-roles.md --- # [AM2.0] - About Space Roles This page explains what space roles are in Contentstack Assets, what default space-level roles exist, and how space roles work for controlling permissions within a specific space. It is intended for administrators and team members who manage access and governance across asset spaces. ## About Space Roles Space roles control user permissions within a specific space in Contentstack Assets. These roles define what users can do inside a space, such as managing assets, folders, workspaces, languages, webhooks, and space-level settings. Unlike organization-level roles, which grant access to the Assets product as a whole, space roles are assigned per space and determine the scope of access within that space only. This separation allows organizations to maintain granular control over asset operations while enabling secure collaboration across different spaces. Contentstack Assets provides the following default space-level roles: - **Space Owner**: Automatically assigned to the creator of the space. Only one Space Owner exists per space. - **Space Admin**: Full operational control within the space, including users, roles, workspaces, languages, and space settings. - **Asset Developer**: Supports configuration and setup inside the space. Commonly used for managing setup-related capabilities such as asset types and metadata structure, validation rules, localization setup, and technical integrations within the space. - **Asset Manager**: Supports day-to-day asset operations. Commonly responsible for uploading, organizing, managing, and maintaining assets along with their asset quality and structure. ## How Space Roles Work - Space roles apply only to the assigned space. - A user can have different roles across different spaces. - Users must have space access even if they already hold an organization-level or product-level role. - Custom space roles can be created (if permitted by organization settings) to meet specific governance requirements. Space roles ensure precise, space-specific access control, enabling teams to collaborate securely while maintaining clear ownership and governance within each asset space. ## Common questions ### Can a user have multiple space roles? A user can have different roles across different spaces. ### Do organization-level roles automatically grant access to a space? Users must have space access even if they already hold an organization-level or product-level role. ### What default space-level roles are available? Contentstack Assets provides the following default space-level roles: Space Owner, Space Admin, Asset Developer, and Asset Manager. ### Can custom space roles be created? Custom space roles can be created (if permitted by organization settings) to meet specific governance requirements. --- ## URL: https://www.contentstack.com/docs/assets/about-spaces-and-workspaces --- title: "About Spaces and Workspaces" description: "Optimize asset management and experimentation with Spaces and Workspaces in Contentstack. Ensure organized, compliant, and flexible governance." url: "https://www.contentstack.com/docs/assets/about-spaces-and-workspaces" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: about-spaces-and-workspaces.md --- # About Spaces and Workspaces In Assets, **spaces** serve as the highest-level containers for assets and governance, while **workspaces** allow experimentation and parallel development inside a space. Understanding when to use each helps you keep assets organized, compliant, and adaptable. ## Spaces A space is a central repository for all your digital assets, metadata, and configurations related to a specific brand, team, or initiative. * Each space is independent, assets, roles, and settings in one space do not affect another. * Spaces define governance boundaries: roles, permissions, and settings are scoped at the space level. * Spaces can be linked to one or more CMS stacks, allowing assets to be reused seamlessly inside content entries. ### When to Use Spaces * To manage assets for different brands (e.g., contentstack.com/product-marketing, contentstack.com/docs, or contentstack.com/academy). * To create separate environments for legal or regional requirements. ## Workspaces Within a space, you can create workspaces. Workspaces act as parallel environments where assets and schemas can evolve independently. They are similar to branches in Git or Contentstack Headless CMS. * Workspaces are typically used to test or experiment without affecting the main workspace. * Each workspace has a parent-child relationship as new workspaces are forked from another workspace. **Note:** Every space includes a **main workspace** that serves as the primary workspace. Any new workspace you create becomes a fork of the main (or another parent workspace), inheriting its assets and configurations. In other words, when a workspace is forked, it inherits assets, metadata, and configurations from its parent. Changes made in the child workspace remain isolated and do not affect the parent. This forking model allows safe experimentation while keeping the main workspace stable. ### When to Use Workspaces * To prepare seasonal or campaign-specific assets without affecting the main workspace. * To experiment with new asset schemas or metadata before rolling them out globally. * To align with CMS branching workflows, ensure assets stay in sync with content changes. **Warning:** * Do not create a workspace to manage separate websites, brands, or business units. * Workspaces are designed for isolated experimentation and campaign-level asset workflows, not as replacements for spaces. * Each website, brand, or regional entity should have its own space, not a workspace. ## Best Practices * Use spaces for long-term organizational separation (eg., brands, regions). * Use workspaces for short-term or experimental work (eg., campaigns, testing). * Avoid over-fragmentation (too many small spaces/workspaces increase complexity). ## Quick Compare Use Case Choose Spaces Choose Workspaces Manage different brands or websites check\_circle cancel Separate environments for regions or legal requirements check\_circle cancel Enforce role-based governance at the unit level check\_circle cancel Run campaign-specific asset workflows cancel check\_circle Safely test new asset schemas or metadata cancel check\_circle Branch assets to align with CMS content variants cancel check\_circle By combining spaces and workspaces correctly, Assets provides both structural clarity and operational flexibility, ensuring assets are always organized, governed, and adaptable. --- ## URL: https://www.contentstack.com/docs/assets/add-custom-languages-in-assets --- title: "[AM2.0] - Add Custom Languages in Assets" description: How to create custom languages in Assets for modeling languages, regional variants, or internal language definitions and make them available for asset localization. url: https://www.contentstack.com/docs/assets/add-custom-languages-in-assets product: Contentstack Assets (AM2.0) doc_type: how-to audience: - developers - content-managers - localization-teams version: AM2.0 last_updated: 2026-03-25 filename: add-custom-languages-in-assets.md --- # [AM2.0] - Add Custom Languages in Assets This page explains how to create custom languages in Contentstack Assets (AM2.0) so teams can model languages, regional variants, or internal language definitions not covered by supported formats. It is intended for users managing Assets settings and should be used when setting up or expanding asset localization across spaces and workspaces. ## Add Custom Languages in Assets Custom languages in Assets allow teams to model languages, regional variants, or internal language definitions that fall outside supported formats. Custom languages are created globally at the Assets level and once added, become available across spaces and workspaces for asset localization. To add custom languages, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps below: - Open Assets and navigate to **Settings** > **Languages**. - Click **+ New Language**. - Select **Create Custom Language**. - Enter the following details:**Language Name:** A descriptive name for the custom language. - **Language Code:** A unique code that identifies the language. - **Fallback Language:** Select a language to source content when localized content is unavailable. - Click **Add** to create the custom language. The newly created custom language becomes available for assignment to workspaces. Refer to the [Add Languages to a Workspace](/docs/assets/add-languages-to-a-workspace) document to get started with asset localization. **Note:** - The combination of language code and locale or country code must remain unique across Assets. - Language codes must be between **2 and 12 characters** long. - Language codes must start with a letter and can include only letters, numbers, and hyphens (-). - Once created, a custom language code cannot be modified. - A fallback language ensures continuity by serving content from another language when localized content does not exist. ## Best Practices - Use clear and consistent language codes that reflect regional or business needs (e.g., `en-internal` or `fr-ca-marketing`). - Define fallback languages thoughtfully to avoid missing or broken localized asset delivery. - Limit custom languages to genuine use cases to keep localization management clean and scalable. ## Common questions **How are custom languages different from supported languages in Assets?** Custom languages allow teams to model languages, regional variants, or internal language definitions that fall outside supported formats. **Where do custom languages become available after creation?** Custom languages are created globally at the Assets level and once added, become available across spaces and workspaces for asset localization. **Can a custom language code be changed after it is created?** Once created, a custom language code cannot be modified. **What does a fallback language do?** A fallback language ensures continuity by serving content from another language when localized content does not exist. --- ## URL: https://www.contentstack.com/docs/assets/add-languages-in-assets --- title: "[AM2.0] - Add Languages in Assets" description: Add languages globally in Assets for centralized language management and asset localization across spaces and workspaces. url: https://www.contentstack.com/docs/assets/add-languages-in-assets product: Contentstack Assets doc_type: guide audience: - developers - content-managers version: AM2.0 last_updated: 2026-03-25 filename: add-languages-in-assets.md --- # [AM2.0] - Add Languages in Assets This page explains how to add languages globally in Contentstack Assets so spaces and workspaces can enable them for consistent asset localization. Read this if you manage localization settings and need to configure supported and fallback languages before localizing assets. ## Add Languages in Assets Assets supports centralized language management to enable consistent and controlled asset localization across spaces and workspaces. Languages are added globally at the Assets level. Spaces and workspaces do not create languages independently; instead, they selectively enable languages from this global list based on their specific requirements. To add languages, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the steps below: - Open Assets and navigate to **Settings** > **Languages**. - Click **+ New Language**. - Select **Add Supported Language**. - Choose a language from the **Select Language** list. - Select a **Fallback Language**.**Note**: The system uses the fallback language when localized content is unavailable. - Click **Add**. The system adds the language to the space and makes it available for configuration in workspaces. Refer to the [Add Languages to a Workspace](/docs/assets/add-languages-to-a-workspace) document to get started with asset localization. ## Common questions **How are languages managed in Assets?** Languages are added globally at the Assets level, and spaces and workspaces selectively enable languages from this global list. **What is a fallback language used for?** **Note**: The system uses the fallback language when localized content is unavailable. **Do spaces and workspaces create languages independently?** No. Spaces and workspaces do not create languages independently; they enable languages from the global list. **Where do I configure languages in Assets?** Open Assets and navigate to **Settings** > **Languages**. --- ## URL: https://www.contentstack.com/docs/assets/add-languages-to-a-workspace --- title: "[AM2.0] - Add Languages to a Workspace" description: Add and manage workspace languages in Assets so assets can be localized within a specific workspace. url: https://www.contentstack.com/docs/assets/add-languages-to-a-workspace product: Contentstack doc_type: how-to audience: - developers - content-managers version: AM2.0 last_updated: 2026-03-25 filename: add-languages-to-a-workspace.md --- # [AM2.0] - Add Languages to a Workspace This page explains how to enable a subset of globally available Assets languages within a specific workspace so that assets can be localized in that workspace. It is intended for users managing spaces and workspaces who need to control which locales are available for localization in different workflows. ## Add Languages to a Workspace Languages are first [added globally](/docs/assets/add-languages-in-assets) in Assets. These languages form the list of available locales. Spaces and their workspaces do not create languages independently; instead, they select from the available languages and enable only the ones they require. Within a space, each workspace adds a subset of languages based on its specific requirements. Assets become available for localization only after languages are added to the workspace. This layered approach ensures controlled localization, avoids unnecessary language clutter, and supports focused regional or campaign-driven workflows. For example, Assets may include five languages, but a workspace adds only two of them. Only those two languages are available for localizing assets within that workspace. To add languages to a workspace, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps given below: - Navigate to **Assets**. - Open the required space and click **Space Settings**. - Select **Workspaces** from the left navigation panel. - Locate the required workspace and click the vertical ellipsis in the **Actions** column. - Select **Manage Workspace Languages**. The **Manage Workspace Languages** modal displays the languages currently enabled for the workspace. - Click **+ Add Language**. - Select one or more languages from the list of available languages. Each language displays its configured fallback language.**Note:** The default language remains locked and cannot be removed. - Click **Apply** to confirm the selection. - Click **Save Changes** to add the selected languages to the workspace. The selected languages now become available for asset localization within that workspace only. Other workspaces in the same space remain unaffected. **Note:** - Languages must exist in Assets before they can be added to a workspace. - Each workspace can enable a different set of languages based on its requirements. - Assets support localization only for languages enabled in the active workspace. - Changes to workspace languages apply only to that workspace and do not affect other workspaces or spaces. ## Common questions ### Do I need to add languages globally before enabling them in a workspace? Yes. Languages are first added globally in Assets, and workspaces can only enable languages from that available list. ### Can I remove the default language from a workspace? No. The default language remains locked and cannot be removed. ### Do workspace language changes affect other workspaces? No. Changes to workspace languages apply only to that workspace and do not affect other workspaces or spaces. ### When do assets become available for localization in a workspace? Assets become available for localization only after languages are added to the workspace. --- ## URL: https://www.contentstack.com/docs/assets/add-users-to-assets --- title: "Add Users to Assets" description: "Streamline user onboarding and access control in Contentstack Administration with a flexible RBAC model for secure Assets management and space roles." url: "https://www.contentstack.com/docs/assets/add-users-to-assets" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: add-users-to-assets.md --- # Add Users to Assets Users are added to Assets through Contentstack [Administration](/docs/administration/invite-users-to-organization). During the invitation flow, roles are assigned at two levels: * **Product-level**: Organization-specific **Administration** and **Assets** roles * **Space level (optional)**: Space-specific roles applied per selected space This approach enables centralized user onboarding with granular access control across spaces. **Note:** At least one **Administration** role is required for every invited user. By default, the **Member** role is preselected. To invite users to **Assets**, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps given below: 1. Navigate to **Administration** through “App Switcher”, then click the **Users** tab to view organization users. 2. Click **Invite User**. 3. Enter one or more email addresses (comma-separated). 4. In **Assign Product Access**, click **Manage Roles** for **Administration**. By default, the **Member** role is selected. **Note:** Modify this selection only if elevated administrative access is required. 5. Click **Manage Roles** for **Assets**. 6. A side panel opens, listing the default and custom organization-level roles available for Assets. Select one or more roles as required. 7. Optionally select one or more spaces to which the user should be added. 8. Select space-level roles (for example: Space Admin, Asset Developer, Asset Manager). By default, selected space-level roles apply to all selected spaces. 9. Use **Roles Per Spaces** to fine-tune space-level access: * Assign different roles for individual spaces * Assign custom space roles where needed 10. Remove a space or clear roles to restrict access. 11. Click **Save**. 12. Click **Invite** to send the invitation email. This **role-based access control** (**RBAC**) model ensures secure and flexible access management across Assets and spaces while supporting both system-defined and custom permissions. --- ## URL: https://www.contentstack.com/docs/assets/add-users-to-space --- title: "[AM2.0] - Add Users to Space" description: Instructions for inviting users to a specific space from Space Settings and assigning space-level roles. url: https://www.contentstack.com/docs/assets/add-users-to-space product: Contentstack doc_type: how-to audience: - administrators - developers - asset-managers version: AM2.0 last_updated: 2026-03-25 filename: add-users-to-space.md --- # [AM2.0] - Add Users to Space This page explains how to invite users to a specific space in Contentstack and assign space-level roles. It is intended for admins or managers who control space access and should be used when granting new or existing organization users access to a particular space. ## Add Users to Space You can add users to a specific **space** directly from **Space Settings** to grant them access and assign space-level roles. **Note:** If the invited user is not already part of your Contentstack organization, Contentstack adds the user to the organization with the **Member** role by default. To add users to a space, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps given below: - Navigate to **Assets** through “App Switcher” and open the required space. - Navigate to **Space Settings** > **Users & Roles**. - On the **Users** tab, click **+ Invite User**. - Enter one or more email addresses (comma-separated). - Select the space role(s) to assign (e.g., **Space Admin**, **Asset Developer**, **Asset Manager**, or a custom space role). - Click **Invite** to send the invitation. The invited user gains access to the space after accepting the invitation. **Note:** - Users must accept the invitation before they can access the space. - Space access is required even if the user already has an organization-level or product-level role. - You can assign multiple space roles if permitted by your organization’s role configuration. ## Common questions **Q: What role is assigned if the invited user is not already in the organization?** A: Contentstack adds the user to the organization with the **Member** role by default. **Q: Can a user access the space immediately after being invited?** A: No, users must accept the invitation before they can access the space. **Q: Do users with organization-level or product-level roles still need space access?** A: Yes, space access is required even if the user already has an organization-level or product-level role. **Q: Can I assign more than one space role to a user?** A: Yes, you can assign multiple space roles if permitted by your organization’s role configuration. --- ## URL: https://www.contentstack.com/docs/assets/add-visual-markups --- title: "Add Visual Markups" description: "Transform static images into interactive experiences with Visual Markup. Highlight, add info, or create shoppable images in Contentstack Assets." url: "https://www.contentstack.com/docs/assets/add-visual-markups" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: add-visual-markups.md --- # Add Visual Markups Visual Markup allows you to enrich images in Assets by overlaying clickable or hoverable regions. These regions, called markups, transform static images into interactive and actionable experiences. You can use markups to highlight objects, add contextual information, or create shoppable experiences directly within Assets. Visual Markup is ideal for scenarios where you want to guide users’ attention or provide links to related content. **Examples:** * **E-commerce:** Tag products in lifestyle images. * **Marketing:** Guide viewers to related campaigns or assets. * **Education:** Annotate diagrams and training visuals. * **Publishing:** Add references or footnotes within images. ## Types of Visual Markup Markups are available in two types: hotspots and bounding boxes. ### Hotspot * Marks a single point on the image. * Does not have width or height dimensions. * Ideal for highlighting small or precise details, e.g., a button on a device or a product logo. ### Bounding Box * Defines a rectangular region with width and height. * Covers larger areas of the image. * Ideal for highlighting larger objects, e.g., furniture, vehicles, or people. ## Add AI-Powered Markups Assets can automatically suggest markups using AI to help you quickly identify objects in an image. 1. Open an asset. 2. Click the “Visual Markup” icon to open the side panel. 3. Click **Suggest Markup with AI**. 4. Review the suggested markups that appear in the panel. Each suggestion displays the detected object (e.g., person or car) along with a confidence score. 5. Select the markups you want to keep and click **Add Selected Markups**. **Note:** * AI suggestions are not always accurate. Review them carefully and remove or adjust any that are incorrect. * By default, AI-generated markups are created as bounding boxes. ## Add Markups Manually If you want full control over placement, you can add markups manually by performing the following steps: 1. In the Visual Markup side panel, click **\+ Add Markup**. 2. From the floater panel, choose one of the following options: * **Hotspot**: Place a single point on the image. * **Bounding Box**: Draw a rectangle over the object you want to highlight. 3. Adjust the placement as needed by dragging the hotspot or resizing the bounding box. **Tip:** * Use hotspots for small or symbolic highlights (e.g., a brand logo). * Use bounding boxes for larger objects (e.g., a sofa in a living room). ## Edit Markup You can edit a markup to make it interactive and meaningful by performing the following steps: 1. Click the markup on the image. The **Edit Hotspot** or **Edit Bounding Box** modal opens. 2. Enter the following details: * **Title** (required): Name of the object (e.g., Monitor). * **Description** (optional): Additional context or information. * **URL**: Link to related content or a product page (e.g., https://www.ecommerce.com/buy/monitor). * **Position** (X, Y): Adjust coordinates for precise placement. * **Dimensions** (W, H): Resize bounding boxes by entering numeric values or dragging the edges. **Note:** Dimensions are applicable only for bounding boxes. 3. Click **Save Hotspot** or **Save Bounding Box**. ## Manage Markup After you add hotspots or bounding boxes, you can manage them from the Visual Markup panel. Each markup has its own controls to edit, duplicate, hide, or delete. You can also manage all markups at once. ### Manage Markups In the Visual Markup panel, navigate to the markup you want to manage. Click the vertical ellipsis next to the markup name. Choose from the available options: * **Edit**: Open the **Edit Hotspot** or **Edit Bounding Box** modal to update details such as title, description, URL, or position/dimensions. * **Duplicate**: Create a copy of the markup with the same properties. Useful when the same details apply to multiple objects. * **Hide**: Toggle to hide or show the markup on the image. Hidden markups remain listed in the panel but are not visible on the image. * **Delete**: Permanently remove the markup from the image. ### Manage All Markups At the top of the Visual Markup panel, you can apply actions to all markups at once: * **Show All Markups** (enabled by default): Toggle off to hide all markups from the image while they remain listed in the panel. * **Delete All Markups**: Permanently remove all markups from the image. Use this when you want to start fresh. **Tip:** Use **Hide** when you only want to temporarily remove markups from view, and delete when you are certain they are no longer needed. ## Example: Study Table with Shoppable Markups Imagine you upload a lifestyle image of a study table to your asset library. You want to make it interactive so customers can explore and buy products directly. 1. Add a bounding box around the monitor on the table. * **Title:** Monitor * **URL:** https://www.ecommerce.com/buy/monitor * **Description:** 24-inch LED monitor with slim bezel design. 2. Add another bounding box around the guitar leaning against the desk. * **Title:** Guitar * **URL:** https://www.ecommerce.com/buy/guitar * **Description:** Acoustic guitar for beginners. 3. Add a hotspot around the mouse beside the monitor. * **Title:** Mouse * **URL:** https://www.ecommerce.com/buy/mouse * **Description:** RGB gaming mouse. 4. Save the asset. Now, when users view this image, they can hover over or click the bounding boxes or hotspot to learn more or navigate to the product pages directly. With Visual Markup, you can make your images more engaging, actionable, and shoppable. --- ## URL: https://www.contentstack.com/docs/assets/apply-filters --- title: "Apply Filters" description: "Refine asset searches effortlessly with customizable filters in Contentstack. Discover assets by type, size, color, date, tags, and more." url: "https://www.contentstack.com/docs/assets/apply-filters" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: apply-filters.md --- # Apply Filters Filters allow you to refine results within the **Assets** section. All selected filters appear as pills above the results list. You can remove them individually or click **Clear All Filters**. Available filters include the following: * **Folders**: Show assets within a specific folder. * **Asset Type**: Limit results to a specific system-defined or custom asset type. * **Size**: Filter by standard sizes: * **Small** (<1 MB) * **Medium** (1–10 MB) * **Large** (10–100 MB) * **Extra Large** (100 MB+). * **Manage Custom Size:** Define your own size range (e.g., 15–25 MB) and select units (KB, MB, GB). * **Color**: Filter by dominant color detected in an image (eg., selecting blue returns images where blue is visually present. * **Created By / Modified By / Published By**: Filter assets by the user who performed the action. * **Created At / Modified At / Published At**: Use quick ranges (Last 1 day, Last 7 days, Last 30 days, and so on) or set a custom date range. * **Languages**: Filter localized versions of assets by language (eg., English, Chinese, French). * **Dimensions**: Filter assets by image dimensions: * **Icon** (≤64 px) * **Small** (65–512 px) * **Medium** (513–1200 px) * **Large** (≥1200 px) * Use **Manage Custom Dimension** to specify exact ranges for width and height in pixels. For example, find all images between 400–600 px wide and 300–500 px tall. * **Tags**: Narrow down results by tags applied to assets. ## Add User-Defined Fields By default, user-defined fields do not appear in the **Filters** panel. You can add them using **Manage Filters**: 1. In the **Filters** panel, click **Manage Filters**. 2. Expand **User-Defined Fields**. 3. Select the fields you want to enable as filters (eg., a custom field called **Model ID**). 4. Click **Apply Selection**. The chosen fields now appear in the **Filters** panel and can be used to refine results. **Tip**: Add only the most relevant user-defined fields to your search workflow. This keeps the panel clean and focused. ## Manage Filters You can customize which filters appear in the panel for quicker access. 1. In the **Filters** panel, click **Manage Filters**. 2. Click **System Fields** or **User-Defined Fields** and select only the filter categories you need. 3. Click **Show Only Selected** to drag and reorder filter sections into your preferred order. This ensures that your most important filters (eg., **Asset Type** or **Created By**) always appear at the top. Apply filters to quickly refine results and gain full control over asset discovery. --- ## URL: https://www.contentstack.com/docs/assets/apply-views --- title: "Apply Views" description: "Optimize your search with Views in Assets. Create, manage, and share saved views for efficient cross-team collaboration and quick access to important data." url: "https://www.contentstack.com/docs/assets/apply-views" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: apply-views.md --- # Apply Views In Assets, **Views** help you organize and refine your repetitive search results. You can apply predefined or custom views, save new ones, and share them for improved cross-team collaboration. Views let you quickly switch between saved search configurations: * **Popular Views**: Predefined options such as **All Assets**, **Last Modified by Me**, **Published by Me**, or **Not Published**. * **Saved Views**: Custom views you create are managed. To apply a view: 1. Navigate to your space. 2. Go to the **Assets** section. 3. Select the view you need. The asset list updates instantly. ## Save New Views After applying filters or building a search, you can save the configuration as a new view: 1. In the **Assets** section of your space, apply filters or advanced search. 2. Open the current view dropdown from the top-right corner and choose **Save as New View**. 3. Enter a name for the view and save it. ## Manage Saved Views For any saved view, click the vertical ellipsis next to it and choose from the following options: * **Rename**: Change the view name. * **Share**: Share the view with users or roles in your stack. * **Copy Link**: Share the view link with collaborators for quick access. **Note**: Anyone with the link can access the view and save it as their new view. * **View Details**: See key information such as creator, last modified date, and access permissions. * **Delete**: Permanently remove the view if no longer needed. For shared views, the owner can remove it for all users or transfer ownership to another user before deleting it from their account. With saved views, you can quickly switch between different search scenarios, saving your time and effort. --- ## URL: https://www.contentstack.com/docs/assets/asset-versioning --- title: "Asset Versioning" description: "Manage and track asset changes effortlessly with Contentstack's asset versioning. Ensure accuracy, streamline collaboration, and restore previous versions seamlessly." url: "https://www.contentstack.com/docs/assets/asset-versioning" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: asset-versioning.md --- # Asset Versioning Asset versioning in Contentstack Assets provides a reliable way to track, manage, and recover changes made to assets over time. Every update to an asset, whether it is a binary file, its metadata, or even a **Save Assets** action, automatically creates a new version. This ensures a complete, auditable history of changes throughout the asset lifecycle and supports collaboration, reduces risk, and helps teams maintain accuracy and consistency across campaigns, regions, and channels. Asset versions are accessible from the asset details view, where you can review, rename, or restore them as needed. ## Key Capabilities * **Automatic Version Creation:** Every asset update creates a new version automatically. * **Version History:** Track the complete history of changes made to an asset. * **Version Navigation:** Switch between versions using the version selector in the asset details view. * **Rollback and Recovery:** Restore a previous version when an update needs to be reversed. ## Name or Rename an Asset Version By default, Contentstack Assets assigns numeric version labels such as **Version 1**, **Version 2**, and so on. Assigning custom names helps identify the purpose or context of a specific version more easily. To name or rename an asset version, perform the following steps: 1. Open **Assets** and navigate to the required asset. 2. Open the version selector in the top-right corner of the asset page. 3. Locate the version to rename. 4. Click the “Rename” icon next to the version. 5. Enter a meaningful name, such as Initial Banner Image or Approved for Campaign. 6. Confirm the change by selecting the checkmark icon or pressing _enter_/_return_. **Note:** * Renaming a version does not create a new asset version. * Custom version names support a maximum of **32 characters**. * Supported characters include uppercase letters (A–Z), lowercase letters (a–z), numbers (0–9), spaces, hyphens (\-), and underscores (\_). ## Restore an Older Asset Version Asset versioning allows you to restore a previous version when an update needs to be undone or reviewed. To restore an asset version, perform the following steps: 1. Open **Assets** and navigate to the required asset. 2. Open the version selector in the asset details view. 3. Select the version to restore. 4. Review the asset file and metadata if required. 5. Click **Save Asset** to make the selected version the latest. Once saved, the restored version becomes the latest version of the asset, while all previous versions remain available in the version history. By using asset versioning effectively, teams retain full control over their digital assets while supporting fast, iterative content workflows across Contentstack. **Note:** Only users with edit permissions for assets can rename or restore asset versions. Users without edit access can view version history but cannot modify it. --- ## URL: https://www.contentstack.com/docs/assets/assets-bulk-task-queue --- title: Assets Bulk Task Queue description: The Bulk Task Queue displays a list of bulk operations performed within a specific space. url: https://www.contentstack.com/docs/assets/assets-bulk-task-queue product: Contentstack doc_type: guide audience: - developers - content-managers version: current last_updated: 2026-06-09 filename: assets-bulk-task-queue.md --- # Assets Bulk Task Queue This page explains how to access and use the Assets Bulk Task Queue in Contentstack to track bulk asset operations, review task details, and filter tasks by status, user, or date range. It is intended for users who run bulk actions on assets and need to monitor job progress and outcomes within a space. Assets Bulk Task Queue The Bulk Task Queue displays a list of bulk operations performed within a specific space. When you run a bulk action on assets, that is, when you select multiple assets and perform a bulk operation on them, Contentstack processes the action as a background job and records it in this queue. The queue gives you a single place to track each job's progress, confirm completion, and identify any assets that failed to process. To access the **Bulk Task Queue** for a space, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps below: - Open **Assets** and select the space you want to review. - Click **Space Settings** in the top navigation panel. - Click the **Bulk Task Queue** tab to open the queue. The queue provides the following details about each task: - **Time**: The date and time when the task was initiated. - **Job ID**: The unique identifier of the bulk job. - **Task Details**: The type of bulk action performed, such as **Bulk Delete**. - **Initiated By**: The name of the user who started the bulk operation. System-generated jobs display as system. - **Task Status**: The current status of the task. - **Actions**: This column provides options to interact with a specific bulk action. - **View Details**: Open a side panel that lists every asset included in the bulk operation, along with each asset's title, type, locale, and any errors recorded during processing. ## Task Status The Task Status represents the state of the bulk operation. The following statuses apply to a bulk task: - **Waiting**: The task is in the queue, awaiting processing. - **In Queue**: The task is queued and is processed once the in-progress tasks are complete. - **In Progress**: The task is currently being processed. - **Partially Completed**: The task finished, but one or more assets in the job were skipped or failed. - **Completed**: The bulk action has been fully processed. - **Failed**: The task processing encountered an error. ## Filter the Bulk Task Queue Use filters to narrow down the tasks in the queue and find the data you need. - **Status**: Show only tasks with a specific status, such as Failed or Completed. - **Users**: Show tasks initiated by specific users. - **Date range**: Show tasks initiated within a selected time period. To clear all applied filters, click **Reset Filters**. ## Common questions ### Where do I find the Bulk Task Queue for assets? Open **Assets**, select the space, go to **Space Settings**, and click the **Bulk Task Queue** tab. ### What does “Partially Completed” mean? It means the task finished, but one or more assets in the job were skipped or failed. ### How can I view which assets were included in a bulk job? Use **View Details** to open a side panel listing every asset included in the bulk operation along with any errors recorded during processing. ### How do I remove all filters applied to the queue? Click **Reset Filters**. --- ## URL: https://www.contentstack.com/docs/assets/assets-limitations --- title: "Assets Limitations" description: "Discover the limitations and constraints of Contentstack Assets, including file size, naming, localization, roles, permissions, and malware scanning." url: "https://www.contentstack.com/docs/assets/assets-limitations" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-17" filename: assets-limitations.md --- # Assets Limitations Contentstack Assets enforces certain limits and constraints to ensure performance, security, consistency, and scalability across asset operations. These limitations apply to asset uploads, metadata, localization, workspaces, versioning, permissions, delivery, and asset usage. ## File Naming and URL Constraints Asset filenames and asset URLs **cannot include** the following characters: ``` # % ^ + \ / ? * : | " ' < > \s { } = , ``` Any restricted character is **automatically replaced with an underscore (****\_****)** to ensure safe storage and delivery. ## File Size and Upload Limits * **Maximum file size:** * **UI uploads:** Up to **1 GB** per asset * **API uploads:** Up to **10 GB** per asset per request * **Batch upload limit:** Up to **10 assets** per batch operation * **Maximum assets across organization:** Up to **5,0****0,000 assets** **Note:** To request an increase in file size, batch limits, or total asset count, contact [Contentstack support](mailto:support@contentstack.com). ## Image Optimization Limits When using image optimization features, the following constraints apply: * Maximum input image size: **50 MB** * Maximum input image dimensions: **12,000 × 12,000 pixels** * Maximum output image dimensions: **8,192 × 8,192 pixels (8K Ultra HD)** * Animated GIFs: Maximum of **1,000 frames** ## Localization Limitations * Languages are added **globally** in Assets and then selectively enabled per **workspace**. * Only languages added to a workspace are available for asset localization in that workspace. * An asset can only be localized into languages that: * Exist globally, and * Are enabled for the current workspace * Asset localization is applied **per language**, not per region or site. * Assets selected in CMS entries must match: * The entry’s locale, or * The configured fallback locale * Unlocalized assets always resolve metadata from the **default language**. ## Workspace Limitations * Each space has one **Primary (Main) Workspace**. * New workspaces must inherit data from an existing source workspace. * Workspaces are isolated by default, meaning assets created or modified in one workspace do not affect others unless merged. * Workspaces are not intended to represent: * Separate websites * Separate brands * Separate long-term environments * Creating excessive workspace can increase operational complexity and is not recommended for permanent segregation. ## Asset Versioning Limitations * A new asset version is created on **every save**, including metadata-only updates. * Version names: * Are optional * Are limited to **32 characters** * Version history: * Cannot be deleted selectively * Can only be restored by saving an older version as the latest * The **Permanent Asset URL remains the same across versions**, even when the file is replaced. * Restoring a version does not affect references unless the restored version is saved as the latest. ## Metadata and Fields Limitations * System metadata is **read-only** and cannot be edited. * User-defined fields: * Must be created at the space level before assignment * Cannot be edited or deleted while actively used by asset types * Field validation rules apply uniformly across all assets of a given asset type. * Changes to asset type fields affect all existing and future assets using that type. ## Roles and Permissions Limitations * At least one **Administration role** must be assigned when inviting a user. * Asset access is always scoped by: * Assigned roles, and * Assigned spaces * Users cannot access assets in spaces they are not explicitly assigned to. * Some system roles cannot be edited or deleted. * Custom roles must be created by users with sufficient administrative privileges. * SCIM- or SSO-managed users may have role assignment constraints depending on organization settings. ## Asset Usage and Delivery Limitations * Assets in the following states cannot be delivered via URLs: * Pending scan * Quarantined * Deleted * Removed from a workspace * Deleting an asset permanently removes it from all references. * Asset delivery respects workspace, language, and permission boundaries. * Visual Markups are supported only for compatible image formats. --- ## URL: https://www.contentstack.com/docs/assets/bulk-delete-assets --- title: "[AM2.0] - Bulk Delete Assets" description: Select and delete multiple assets at once from the assets listing. url: https://www.contentstack.com/docs/assets/bulk-delete-assets product: Contentstack doc_type: how-to audience: - developers - content-managers version: AM2.0 last_updated: 2026-05-26 filename: bulk-delete-assets.md --- # [AM2.0] - Bulk Delete Assets This page explains how to select and delete multiple assets at once from the Assets listing in Contentstack. It is intended for users who manage assets in a space and need to remove multiple files efficiently, such as after a campaign or during a content audit. ## Bulk Delete Assets Select and delete multiple assets at once from the assets listing. Bulk deletion is useful when you clear out files after a campaign ends or during a content audit. When you delete an asset, Contentstack moves it to trash. You can restore the asset from trash within **14 days**. **Note**: To delete assets, you need permission to delete assets in the stack. Without delete permission, the **Delete** action does not appear on the selection toolbar. To delete multiple assets, sign in to your [Contentstack account](https://www.contentstack.com/login) and perform the steps below: - Navigate to the **Assets** listing page within your space. - Select the assets you want to delete using the checkbox next to each asset. - The selection toolbar appears above the listing and shows the number of selected assets. - On the selection toolbar, click **Delete**. - The **Delete Assets** confirmation appears. Click **Delete** to confirm. Contentstack moves the selected assets to trash and refreshes the assets listing. To restore a deleted asset, open **Trash** within **Space Settings** and select the assets you want to restore. **Warning**: Contentstack permanently removes assets from trash after 14 days. The asset cannot be restored after 14 days from the date of deletion. ## Common questions ### Where do deleted assets go? When you delete an asset, Contentstack moves it to trash. ### How long can I restore a deleted asset? You can restore the asset from trash within **14 days**. ### Why don’t I see the Delete action on the selection toolbar? Without delete permission, the **Delete** action does not appear on the selection toolbar. ### What happens after 14 days in trash? Contentstack permanently removes assets from trash after 14 days, and the asset cannot be restored. --- ## URL: https://www.contentstack.com/docs/assets/bulk-move-assets --- title: "[AM2.0] - Bulk Move Assets" description: Select assets and move to a different folder in a single action instead of moving them one at a time. url: https://www.contentstack.com/docs/assets/bulk-move-assets product: Contentstack doc_type: guide audience: - developers - content-managers version: AM2.0 last_updated: 2026-05-26 filename: bulk-move-assets.md --- # [AM2.0] - Bulk Move Assets This page explains how to bulk move assets to a different folder in Contentstack, who can perform the action (users with the required permissions), and when to use it (reorganizing assets or consolidating files across folders). ## Bulk Move Assets Select assets and move to a different folder in a single action instead of moving them one at a time. Bulk move helps when you reorganize assets after a project or consolidate files into a shared folder. When you move an asset, Contentstack also moves all its localized and source versions. Contentstack updates the access permissions to match the destination folder, which may change who can view or edit the asset. **Warning**: Moving an asset changes its permissions to match the destination folder. Collaborators who can access the asset today may lose access after the move if they do not have permission on the destination folder. To move multiple assets, you need permission to manage assets in the stack, plus access to both the source and destination folders. Sign in to your [Contentstack account](https://www.contentstack.com/login) and perform the steps below: - Navigate to the **Assets** listing page within your space. - Select the assets you want to move using the checkbox next to each asset. - The selection toolbar appears above the listing and shows the number of selected assets. - On the selection toolbar, click **Move To**. The Move Assets modal opens and displays the folder structure of your stack. - Navigate to the destination folder using one of these options:**Browse**: Click through the folder hierarchy until you reach the folder you want. - **Search**: Enter a folder name in the search field and click **Search**. - **Create a new folder**: Click **Create Folder**, name the folder, and confirm. **Tip**: Use the **Sort by** dropdown to reorder the list by title, date modified, date created, created by, modified by, or file size. - With the destination folder open, click **Move Here**. Contentstack moves the selected assets to the destination folder and refreshes the assets listing. **Note**: If a folder has no subfolders, you can still move assets into it. Open the folder and click **Move Here**. ## Common questions ### Does bulk move also move localized and source versions of an asset? When you move an asset, Contentstack also moves all its localized and source versions. ### Will moving assets change who can access them? Yes. Contentstack updates the access permissions to match the destination folder, which may change who can view or edit the asset. ### What permissions do I need to bulk move assets? To move multiple assets, you need permission to manage assets in the stack, plus access to both the source and destination folders. ### Can I move assets into a folder that has no subfolders? Yes. If a folder has no subfolders, you can still move assets into it. Open the folder and click **Move Here**. --- ## URL: https://www.contentstack.com/docs/assets/create-a-folder --- title: "Create a Folder" description: "Organize your assets efficiently in Contentstack with custom folders. Learn how to create and manage folders for better asset management and searchability." url: "https://www.contentstack.com/docs/assets/create-a-folder" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: create-a-folder.md --- # Create a Folder Folders help you organize assets in **Assets**, making it easier to manage related files, group assets by projects, or maintain clean library structures. You can create folders directly from the Assets listing page. To create a folder, perform the following steps: 1. Navigate to the **Assets** listing page within your space. 2. Click **\+ New** and select **New Folder**. 3. Enter the following details: * **Name** (required) * **Description** (optional) 4. Click **Create**. The created folder appears on the assets listing page and is also accessible under the **Folders** section in the **Filters** panel on the left. **Tip:** Use clear, consistent folder names (e.g., Campaign Assets or Training Videos) to make searching and filtering easier later. --- ## URL: https://www.contentstack.com/docs/assets/create-a-new-stack --- title: "Create a New Stack With Assets" description: "Discover how to create and manage stacks in Contentstack, a centralized system for organizing and publishing content across channels efficiently." url: "https://www.contentstack.com/docs/assets/create-a-new-stack" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: create-a-new-stack.md --- # Create a New Stack With Assets A stack is a centralized repository that stores and manages content types, entries, and linked assets for a project. It provides a structured environment for teams to create, manage, and publish content across channels. **Note:** * You must be an organization [owner](/docs/administration/about-administration-roles#organization-owner) or organization [admin](/docs/administration/about-administration-roles#organization-admin) to create a stack. * An organization user can create only one stack per minute per organization. To create a new stack, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps given below: 1. Navigate to **CMS** through “App Switcher”. 2. Click **\+ New Stack**. 3. Select **Create New**. 4. Enter the required information: * **Name** (required) * **Description** (optional) * **Master Language** (required) **Note:** The master language cannot be changed after the stack is created. 5. Assets are stored in spaces, not directly within stacks. Choose how to link the stack to a space. * **Create and Link a New Space**: * A new space is created with the same name as the stack. * A default workspace (e.g., main) is created within the space. * The stack owner becomes the space owner. * The workspace is linked to the stack’s main branch. * **Link an Existing Space**: Disable the toggle, then select an existing space and workspace. 6. Click **Create**. Once the stack is created: * You are redirected to the newly created stack. * The selected workspace is linked to the **main** branch. * Assets from the linked workspace become immediately available in the stack. * You can manage linked spaces from **Settings** > **Assets Hub**. --- ## URL: https://www.contentstack.com/docs/assets/create-a-space --- title: "Create a Space" description: "Learn how to create a new space in Contentstack to manage assets effectively for your website or brand. Get started with step-by-step instructions today!" url: "https://www.contentstack.com/docs/assets/create-a-space" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: create-a-space.md --- # Create a Space In Assets, a [space](/docs/assets/about-spaces-and-workspaces#spaces) is the top-level container where you manage assets for a specific website, brand, or business unit. To create a space, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps below: 1. Navigate to **Assets** through “App Switcher”. 2. Click **\+ New** and select **Space**. 3. In the **New Space** modal, enter the following details: * **Name** (required): Provide a clear, descriptive name for your space (e.g., “Marketing” or “Documentation”). * **Description** (optional): Add a short explanation of what the space will be used for (eg., “Assets for all marketing campaigns” or “Training and learning materials”). 4. Click **Create**. Your space is now ready. You can start uploading assets, creating user-defined fields, and workspaces as needed. **Note:** When you create a new space, a **main workspace** is automatically created. This workspace acts as the primary workspace. You can [create additional workspaces](/docs/assets/create-a-workspace) as forks of the main or any other workspace. These workspaces inherit assets and configurations from the source workspace, similar to how branches work in Git or CMS. --- ## URL: https://www.contentstack.com/docs/assets/create-a-workspace --- title: "Create a Workspace" description: "Optimize asset management and collaboration in Contentstack with isolated workspaces for campaigns, experiments, and secure teamwork. Create and manage easily." url: "https://www.contentstack.com/docs/assets/create-a-workspace" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: create-a-workspace.md --- # Create a Workspace [Workspaces](/docs/assets/about-spaces-and-workspaces#workspaces) provide isolated environments within a space where assets and configurations can evolve independently. You can use workspaces to support campaign-specific collaboration, controlled experimentation, or parallel asset preparation, without disrupting ongoing work in the primary workspace. Why create a workspace: * **Campaign preparation**: Build a dedicated workspace for seasonal launches (eg., Spring Campaign) and manage all related assets in one place. * **Safe experimentation**: Test new asset metadata conventions, validation rules, or organizational structures without impacting the main set of assets. * **Controlled collaboration**: Restrict changes to a specific workstream while keeping the primary workspace stable for day-to-day usage. To create a workspace, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the following steps: 1. Open the required space and navigate to **Space Settings**. 2. Select **Workspaces**. 3. Click **\+ New Workspace**. 4. In the **New Workspace** modal, enter the following details: * **Name (required)**: The display name of the workspace (eg., Spring Campaign). * **UID (required)**: A unique identifier for the workspace (eg., spring\_campaign). * **Description (optional)**: A short summary of the workspace purpose. * **Source Workspace (required)**: Select the workspace from which assets should be inherited (eg., main). 5. Click **Create Workspace**. The newly created workspace is visible on the **Workspaces** listing page. To switch to the new workspace: 1. Navigate to **Assets**. 2. Use the workspace dropdown on the asset listing page and select the newly created workspace to start working within it. All assets and modifications made within workspaces stay isolated and do not affect other workspaces or the primary workspace. --- ## URL: https://www.contentstack.com/docs/assets/create-and-manage-workspaces-with-headless-cms-branches --- title: "[AM2.0] - Create and Manage Workspaces with Headless CMS Branches" description: Create and manage workspaces with Headless CMS branches in Contentstack Headless CMS. url: https://www.contentstack.com/docs/assets/create-and-manage-workspaces-with-headless-cms-branches product: Contentstack doc_type: article audience: - developers - admins version: AM2.0 last_updated: 2026-03-25 filename: create-and-manage-workspaces-with-headless-cms-branches.md --- # [AM2.0] - Create and Manage Workspaces with Headless CMS Branches This page explains how branches work in Contentstack Headless CMS and how to create a new branch while choosing whether to link existing workspaces or fork and link new workspace copies. It is intended for stack owners, admins, and developers who need isolated environments for development and validation without impacting the main branch. ## Create and Manage Workspaces with Headless CMS Branches In Contentstack Headless CMS, branches create isolated copies of a stack so teams can develop and validate changes without impacting the main (default) branch. A new child branch inherits the stack configuration and content from its source branch at the time of creation, including content types, entries, languages, extensions, releases, and linked workspaces. **Note:** - Only stack owners, admins, and developers can create branches. - A branch can be created from the main or from any other branch (for subsequent branches). - Only one branch creation operation can run at a time per organization. Additional branch creation requests remain in the queue until the current operation completes. Status is available in the organization’s bulk task queue. To create a new branch, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps given below: - Navigate to **CMS** through “App Switcher”. - Open your stack and click **Settings** > **Branches**. - Click **+ New Branch**. - In **Create New Branch**, enter:**Branch ID:** Enter a unique ID (for example, staging or dev). - **Source Branch:** Select the branch that the new branch should inherit from.**Note:** For the first child branch, `main` is typically selected by default. The spaces and workspaces linked with the source branch appear in the **Workspace setup** section. - For each linked workspace, choose one of the following:**Link existing workspace:** Select this to keep the branch connected to the same workspace as the source branch. - **Fork and link workspace:** Select this to create a new workspace copy for the new branch. - Click **Create** to initiate the branch creation process. - Switch to the new branch using the branch selector. - Go to **Settings** > **Assets Hub**. - Verify linked workspaces:Workspaces linked as-is appear unchanged. - Forked workspaces appear as newly linked workspaces (e.g., `test_1` if the workspace name before forking was `test`). This setup ensures branch-level isolation in the stack and workspace-level isolation in assets when required. ## Common questions **Q: Who can create branches in Contentstack Headless CMS?** A: Only stack owners, admins, and developers can create branches. **Q: Can I create a branch from something other than `main`?** A: Yes, a branch can be created from the main or from any other branch (for subsequent branches). **Q: What happens if multiple branch creation requests are submitted in the same organization?** A: Only one branch creation operation can run at a time per organization; additional requests remain in the queue until the current operation completes, and status is available in the organization’s bulk task queue. **Q: How do I confirm whether a workspace was linked or forked for a branch?** A: Go to **Settings** > **Assets Hub** and verify linked workspaces; linked workspaces appear unchanged, while forked workspaces appear as newly linked workspaces (e.g., `test_1` if the workspace name before forking was `test`). --- ## URL: https://www.contentstack.com/docs/assets/create-asset-types --- title: "[AM2.0] - Create Asset Types" description: Create asset types to define how a file format is identified and which user-defined fields apply to it. url: https://www.contentstack.com/docs/assets/create-asset-types product: Contentstack Assets doc_type: guide audience: - developers - content-managers version: AM2.0 last_updated: 2026-03-25 filename: create-asset-types.md --- # [AM2.0] - Create Asset Types This page explains how to create asset types in Assets so you can identify files by MIME type and extension and control which user-defined metadata fields apply. It is intended for users configuring asset management rules and metadata requirements, and should be used when you need consistent file classification and enforced metadata entry. ### Create Asset Types Create asset types to define how a file format is identified and which user-defined fields apply to it. An asset type combines a MIME type and a file extension under a user-friendly name that makes it easier for contributors to recognize and work with. For example: - The MIME type image/jpeg with the extension `.jpg` can be named **JPG Image**. - The MIME type image/jpeg with the extension `.jpeg` can be named **JPEG Image**. This approach gives you precise control over file identification while offering a familiar, accessible naming convention for users. Beyond naming, asset types also let you define which metadata [fields](/docs/assets/create-user-defined-fields) apply to a given file format. When users upload or edit a file, the system automatically recognizes its asset type, displays the associated fields, and enforces your rules for metadata entry. This ensures that every file includes the right information, keeping your asset library consistent, searchable, and reliable. To create asset types within Assets, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps given below: - Navigate to **Assets** through “App Switcher” and select the **Asset Types** tab. - Click **+ New Asset Type**. - In the **Asset Type Properties** section, provide the following:**Asset Type Icon** (optional): Upload a PNG, JPG, or SVG under 256 KB. - **Name** (required): A unique human-readable label (for example, JPEG Image, PNG Image, PDF Document). Maximum **50 characters**. - **UID** (required): A unique system identifier using only letters, numbers, and underscores (e.g., jpeg). UID cannot be changed once saved. - **Description** (optional): A short explanation of how this asset type is used. - **Category** (optional): Select a predefined category (e.g., Images, Documents). - **MIME Type** (required): Enter the MIME type for this asset type (for example, `image/jpeg`). An asset type corresponds to one MIME type. - **File Extension** (required): Enter the extension for this asset type (for example, `.jpg`).The system verifies that the MIME type + file extension pair is unique across all asset types. - In the **Fields** section, click the **+** “Insert a field” icon and select **Existing Field**. - In the **Select Existing Fields** modal, search and select a field from the list of user-defined fields.**Tip:** Drag to reorder fields as needed. - Click a field to open **Field Properties** on the right.**Note:** You can only view field properties on the right panel. To edit, go to the **Fields** section, open the field, and then make changes. - Click **Save Asset Type**. Your new asset type is now ready to classify files by MIME type and drive accurate, consistent metadata entry. ## Use Case: Creating a Custom 3MF Asset Type Suppose you run an e-commerce site that allows customers to download 3D models of products. The `.3mf` format is not included in the out-of-the-box asset types, so you create it as a user-defined asset type. - Click **+ New Asset Type**. - In **Properties**, enter:**Name:** 3MF 3D Model - **UID:** 3mf_model - **Category:** 3D Models - **MIME Type:** `model/3mf` - **Extension:** `.3mf` - **Description:** Custom 3D models for e-commerce products. - In the **Fields** section, click **+** and select from existing fields:Product SKU (Mandatory) - Model Dimensions - Author Name - License Expiration (Mandatory) - Save the asset type. Now, whenever a `.3mf` file is uploaded, Assets applies this asset type automatically and displays the mandatory fields for completion. ## Common questions **Q: What uniquely identifies an asset type?** A: The system verifies that the MIME type + file extension pair is unique across all asset types. **Q: Can I change the UID after saving an asset type?** A: No. “UID cannot be changed once saved.” **Q: How do asset types affect metadata fields shown to users?** A: When users upload or edit a file, the system automatically recognizes its asset type, displays the associated fields, and enforces your rules for metadata entry. **Q: Can I reorder fields on an asset type?** A: Yes. “Tip: Drag to reorder fields as needed.” --- ## URL: https://www.contentstack.com/docs/assets/create-custom-assets-roles --- title: "[AM2.0] - Create Custom Assets Roles" description: Create custom organization-level (product-level) roles and permissions for Assets. url: https://www.contentstack.com/docs/assets/create-custom-assets-roles product: Contentstack Assets doc_type: how-to audience: - administrators - developers version: AM2.0 last_updated: 2026-03-25 filename: create-custom-assets-roles.md --- # [AM2.0] - Create Custom Assets Roles This page explains how to create custom organization-level (product-level) roles for Assets in Contentstack, including selecting permission categories and configuring access. It is intended for administrators managing user access and compliance, and should be used when you need to define or adjust Assets permissions beyond default roles. ## Title [AM2.0] - Create Custom Assets Roles ## Url /assets/create-custom-assets-roles ## Article content ### Item 1 #### Article section ##### Heading Create Custom Assets Roles ##### Content Custom roles define **organization-level** (product-level) permissions for Assets (e.g., user management, roles management, spaces creation, asset type configuration, fields, and languages). These roles help align access with internal responsibilities and compliance requirements. To create a custom role, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps given below: - Navigate to **Administration** through “App Switcher”, then click the **Roles** tab to view organization roles. - Click **+ New Role**. - Enter a **Name** and **Description** (optional). - Under **Choose a Product**, click **Assets**. - The available permission categories are:Spaces - Fields - Asset Types - Users - Roles - Languages - For each category, click **Select Permissions**, or click the vertical ellipsis and select **Manage Permissions**. - A permissions side panel opens. Select the required permissions (View, Create, Edit, or Delete) for the selected category. - Click **Save**. - Configure permissions only for the areas this role should access. Leave other categories unselected to restrict access. - Click **Create Role**. The custom role is created successfully and appears on the **Roles** listing page with a **Custom** tag. The role becomes available for selection when: - Inviting new users - Editing existing users’ organization-level Assets roles ## Common questions **Q: Where do custom Assets roles appear after creation?** A: They appear on the **Roles** listing page with a **Custom** tag. **Q: When can a newly created custom Assets role be assigned to users?** A: When inviting new users or editing existing users’ organization-level Assets roles. **Q: What happens if I leave permission categories unselected?** A: Access is restricted for those categories because permissions are configured only for selected areas. --- ## URL: https://www.contentstack.com/docs/assets/create-custom-space-roles --- title: "[AM2.0] - Create Custom Space Roles" description: Create and manage custom space roles to define granular, space-level permissions in Contentstack Assets. url: https://www.contentstack.com/docs/assets/create-custom-space-roles product: Contentstack Assets doc_type: how-to audience: - administrators - developers - content-managers version: AM2.0 last_updated: 2026-03-25 filename: create-custom-space-roles.md --- # [AM2.0] - Create Custom Space Roles This page explains how to create custom space roles in Contentstack Assets to control space-level permissions across assets, folders, workspaces, and languages. It is intended for space administrators and teams managing access control, and should be used when you need granular, least-privilege permissions within a specific space. ## Create Custom Space Roles Custom space roles allow you to define granular, space-level permissions in Contentstack Assets. These roles determine what users can do within a specific space. Unlike organization-level roles, these custom space roles apply only within the selected space and support detailed control across assets, folders, workspaces, and languages. You can use custom space roles to enforce least-privilege access while still enabling teams to work independently. To create a custom role, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps given below: - Navigate to **Assets** through “App Switcher” and open the required space. - Navigate to **Space Settings** > **Users & Roles**. - Open the **Roles** tab. - Click **+ New Role**. - Enter a name and description for the role. - Under **Scope**, select one or more workspaces. This role applies only to the selected workspaces.**Note:** Changing the selected workspace(s) resets previously configured permissions. - In the **Assets** section, click **+ Add Rule** to define what the role can do.Select permissions: **Read**, **Create**, **Update**, **Delete**. - Choose the scope:**All Asset(s) and Folder(s)** - **Specific Folder(s)** > **Select Folders** - **Specific Asset(s)** > **Select Assets** - Click **+ Add Rule** to create additional permission rules for this role. - Click **+ Add Exception** to define what this role cannot do, explicitly restricting actions such as **Delete** for added safety. - Select one or more languages that the role can access. - To add language-level restrictions, click **+ Add Exceptions**.Click **+ Add Rule**. - Select permissions: **Read**, **Create**, **Update**, **Delete**. - Select language(s) from the dropdown to which the selected permissions apply.**Important:** If you remove access to the default language, assets that inherit from it become inaccessible. - Click **Save** to create the custom space role. The new role appears in the **Roles** list for the space. You can now assign it to users when adding or editing space users. ## Best Practices - Use the least-privilege principle, grant only the permissions necessary for a user’s responsibilities. - Use exceptions to prevent high-risk actions, such as Delete in production workspaces. - Restrict language access carefully to avoid unintentionally blocking inherited assets. - Periodically review custom roles to maintain clean governance. ## Common questions ### Can a custom space role apply across multiple spaces? No. Unlike organization-level roles, these custom space roles apply only within the selected space. ### What happens if I change the selected workspace(s) under Scope? **Note:** Changing the selected workspace(s) resets previously configured permissions. ### What is the purpose of using exceptions? Exceptions let you define what this role cannot do, explicitly restricting actions such as **Delete** for added safety. ### What should I consider when restricting language access? **Important:** If you remove access to the default language, assets that inherit from it become inaccessible. --- ## URL: https://www.contentstack.com/docs/assets/create-user-defined-fields --- title: "[AM2.0] - Create User-Defined Fields" description: Instructions for creating user-defined fields in Assets, including field properties, tips, and a 3D model use case. url: https://www.contentstack.com/docs/assets/create-user-defined-fields product: Contentstack Assets doc_type: how-to audience: - developers - content-managers - administrators version: AM2.0 last_updated: 2026-03-25 filename: create-user-defined-fields.md --- # [AM2.0] - Create User-Defined Fields This page explains how to create user-defined fields in Assets, configure field types and properties, and apply best practices. It is intended for users who manage asset metadata and need structured, reusable fields across asset types and field groups. ### Create User-Defined Fields A field is a user-defined attribute used to capture specific details, such as Campaign Name, Copyright Details, or Usage Rights Expiration. These details help teams search, categorize, and analyze assets with greater accuracy. Fields are the building blocks of asset modeling. Once created, you can associate them with one or more asset types and apply them consistently across your entire asset library. This ensures that your metadata is structured, searchable, and aligned with your business workflows. To create user-defined fields within Assets, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the following steps: - Navigate to **Assets** through “App Switcher” and select the **Fields** tab. - Click **+ New Field**. - In the **General** section, enter the following:**Name** (required): A unique name for the field with a maximum of **50 characters**. - **UID** (required): A unique field identifier that uses only letters, numbers, and underscores.**Note:** Once you save the field, you cannot change the UID. - **Description** (optional): A short explanation of the purpose of the field. - In the **Fields** section, click the **Field Type** dropdown and choose a field as needed.**Additional Resource**: Refer to the [Field Types](/docs/assets/field-types) document for more information. - Use the **Field Properties** panel, which opens on the right, to configure the field behaviour. The available options vary by field type and can include:**Placeholder Text**: Enter sample text to show as a prompt in the field. - **Instruction Text**: Guide users on how to fill the field. - **Help Text**: Provide context that appears with the control. - **Default Value**: Set a suggested value that appears by default. - **Is Mandatory?**: Require this field during asset creation or editing. - **Multiple Instances**: Allow users to enter more than one value (for supported types). - **Number of Characters**: Define the minimum and maximum character length. Use the stepper to adjust. Set to `0` for no limit. - **Validation (Regex)**: Define a regular expression to enforce a specific input format. - **Validation Error Message**: Provide a clear message that appears when the value does not meet the validation (regex) pattern. Example: “Enter a 4-digit year, e.g., 2026.” - Click **Save Field**. Your new field is created and is available for reuse across asset types and field groups within Assets. You can edit field properties (except UID) or delete the field if it is not in use. **Tips and Best Practices** - Use clear, purpose-driven names, e.g., “Image Properties” or “Model Release Date”. - Keep UIDs short and consistent, e.g., `campaign_name`, `model_release_date`. - Set fields to mandatory for critical governance data, such as rights and expiration dates. - Use Group field types to organize metadata logically, e.g., `resolution`, `color_profile`, and `dpi` under “Image Properties”. ## Use Case: Fields for 3D Models When you create a custom asset type for a 3MF 3D Model, you will need specialized fields. Examples: - **Product SKU** (Single Line Textbox, Mandatory): Ensures each 3D model links to a product in your catalog. - **Model Dimensions** (Single Line Textbox): Captures physical scale, for example, 10x10x15 cm. - **Creator** (Single Line Textbox): Tracks the creator of the model. - **License Expiration** (Date, Mandatory): Prevents unauthorized use of expired designs. **Note:** When fields are marked as mandatory: - For existing assets, the default value is populated. - For new uploads, users must add the field value to complete the upload. ## Common questions **How do I choose the right Field Type?** Use the **Field Type** dropdown based on the kind of data you need to capture, and refer to the [Field Types](/docs/assets/field-types) document for more information. **Can I change a field UID after saving?** No. **Note:** Once you save the field, you cannot change the UID. **What happens when a field is marked as mandatory?** For existing assets, the default value is populated. For new uploads, users must add the field value to complete the upload. **Where can I reuse a created field?** Your new field is created and is available for reuse across asset types and field groups within Assets. --- ## URL: https://www.contentstack.com/docs/assets/edit-configurable-metadata --- title: "Edit Configurable Metadata" description: "Enhance asset management with customizable metadata and AI tools for improved searchability and workflow efficiency in Contentstack." url: "https://www.contentstack.com/docs/assets/edit-configurable-metadata" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: edit-configurable-metadata.md --- # Edit Configurable Metadata When you open or edit an asset in Asset Management, the **Edit Configurable Metadata** panel appears on the right. This panel allows you to manage both system and custom metadata for your asset. Updating metadata ensures that your assets remain searchable, consistent, and aligned with your business workflows. ## General Metadata In the **General** section, you can edit or generate common metadata fields: * **Title** (required): Enter the name of the asset. * **Description**: Enter a meaningful description manually, or click **Suggest Description with AI** to generate one automatically. Review AI suggestions carefully before inserting. * **Tags**: Add tags manually or click **Suggest Tags with AI** to generate recommendations for quick categorization. **Tip:** AI-powered descriptions and tags can speed up workflows, but always validate their accuracy before saving. ## User-Defined Metadata The **User-Defined Metadata** section displays fields associated with the asset type. These fields come from your [asset modeling](/docs/assets/about-asset-modeling) setup, where admins define reusable custom fields and assign them to asset types. You can edit these fields directly when working with the asset. ### Example: Product Asset with 3MF 3D Model Type Suppose you created a custom asset type called 3MF 3D Model for managing downloadable 3D-printable files. You defined the following fields: * **Product SKU** (Single Line Textbox, Mandatory) * **Model Dimensions** (Single Line Textbox) * **Author Name** (Single Line Textbox) * **License Expiration Date** (Date, Mandatory) When you upload a .3mf file, these fields appear under **User-Defined Metadata**: * **Product SKU**: Enter SKU-2025-3MF100. * **Model Dimensions**: Enter 10x10x15 cm. * **Author Name**: Enter Jane Smith. * **License Expiration Date**: Select Dec 31, 2025. This metadata becomes part of the asset record, making it easier to search, filter, and enforce compliance. **Note:** Mandatory fields must be filled before you can save the asset. ### System Metadata You can switch from configurable metadata to view **System Metadata**. These fields are auto-generated by Contentstack and cannot be edited. Examples: * File name * UID * File URL * Permanent URL * MIME type and asset type * File size * Created by, modified by, and timestamps System metadata ensures traceability and consistency across your digital asset library. --- ## URL: https://www.contentstack.com/docs/assets/enhance-asset-management-with-ai --- title: "Enhance Asset Management with AI" description: "Elevate your digital asset management with Contentstack Assets' AI tools for automated alt text, tagging, and visual markups to boost SEO and accessibility." url: "https://www.contentstack.com/docs/assets/enhance-asset-management-with-ai" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: enhance-asset-management-with-ai.md --- # Enhance Asset Management with AI Contentstack Assets enhances digital asset management with built-in AI capabilities that help teams organize, discover, and optimize assets at scale. From automatically generating metadata to enabling intuitive search experiences, AI reduces manual effort and improves asset usability across your organization. **Note:** AI-powered suggestions can be incorrect sometimes. Review before accepting and report any inconsistencies to our [support](mailto:support@contentstack.com) team for further investigation. ## Auto-Generate Alt Text AI can automatically generate descriptive alt text for image assets. Refer to the [Edit Configurable Metadata](/docs/assets/edit-configurable-metadata) document for more information. Why it matters: * Improves accessibility compliance * Enhances SEO performance * Saves time for content teams How it works: * When an image is uploaded * AI analyzes the image content * Generates a relevant alt text description * You can review and edit before saving ## Automatic Tag Generation AI can generate relevant tags based on the asset content. Refer to the [Edit Configurable Metadata](/docs/assets/edit-configurable-metadata) document for more information. Benefits: * Eliminates manual tagging effort * Ensures consistent metadata * Improves filtering and search Example: An image of a cyclist in a forest may generate tags like: * Bicycle * Outdoor * Forest * Sports These tags are generated using AI, review them carefully before saving. ## Filter Assets Using Colors AI enables visual search based on dominant colors in assets. Refer to the [Apply Filters](/docs/assets/apply-filters) document for more information. Use cases: * Find assets matching brand colors * Discover similar color assets How it works: * AI detects dominant colors in images * You can filter assets using color inputs * Results include similar color assets ## Visual Markup Generation AI assists in generating visual markups such as [bounding boxes](/docs/assets/add-visual-markups#bounding-box) and [hotspots](/docs/assets/add-visual-markups#hotspot). AI automatically identifies objects (e.g., cars, people) and provides their coordinates (bounding boxes), allowing developers to create interactive shoppable images or automated focal points. Refer to the [Add Visual Markup](/docs/assets/add-visual-markups) document for more information. What you can do: * Identify objects within images * Highlight key regions automatically * Use markups for advanced asset interactions Benefits: * Reduces manual markup effort * Improves asset usability in downstream applications * Enables richer visual experiences Contentstack Assets combines AI with powerful asset management capabilities, enabling teams to work smarter, scale faster, and deliver richer digital experiences with confidence. --- ## URL: https://www.contentstack.com/docs/assets/faqs --- title: "Assets FAQs" description: "Discover the frequently asked questions for Assets in Contentstack." url: "https://www.contentstack.com/docs/assets/faqs" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-05-12" filename: faqs.md --- # Assets FAQs ### When should a space be created instead of a workspace? Create a **space** to separate brands, websites, or business units that require independent governance. Create a **workspace** to isolate short-lived work such as campaigns, seasonal updates, or experimentation inside the same space. ### Are spaces mapped to stacks in Contentstack CMS? Yes. In Contentstack CMS implementations, teams commonly map **one or more spaces to a stack** (brand or site) and use a shared space (eg., “Global Brand Assets”) for assets reused across stacks through linking. ### Can assets be reused across multiple stacks? Yes. When a space is linked to multiple stacks, content teams can reuse assets across stacks through the asset picker, subject to roles, space access, and localization rules. ### Can the same asset exist in multiple spaces without duplication? No. An asset belongs to a single space. To reuse an asset across projects, store it in a shared space (eg., Global Brand Assets) and reference it where needed. ### Where are languages configured for asset localization? Add languages **globally** in **Assets** > **Settings** first. Then enable only the required languages inside specific **workspaces**. Only workspace-enabled languages become available for localization in that workspace. ### If Assets supports five locales, can a workspace use only two? Yes. Add only the required languages at the workspace level. Only those enabled languages become available for localizing assets in that workspace. ### Does asset localization support changing the actual file (binary)? Yes. Asset localization can include localized metadata (title/description/tags) and can also include replacing the file when the localized version requires it (eg., an image with translated on-image text). ### What happens to localized data when an asset is unlocalized? Unlocalizing removes the localized variant, and the asset starts pulling values again from the **default language** for that locale. ### Can any asset be selected in the CMS asset picker for any entry locale? No. The asset picker respects locale rules. Entries can select assets that match the entry locale or the locale fallback chain, depending on how fallback is configured. ### What is the difference between system metadata and user-defined fields? **System metadata** is generated by Contentstack, is read-only, and tracks file and activity details. **User-defined fields** are configured through fields and asset types to store business metadata (eg., product ID, usage rights, campaign name). ### Do changes to an asset always create a new version? Yes. Each save creates a new version with asset versioning (eg., updates to file or configurable metadata). Versioning preserves history and enables restoration. ### Does the permanent URL change when an asset version changes? No. The **permanent URL remains constant** across versions, even when the file is replaced, while version history continues to track changes. ### Can an asset version be deleted? Contentstack supports restoring older versions, but selective deletion of specific versions is not supported as a standard end-user action. Version history exists to support traceability and rollback. ### Can version names be longer than 32 characters? No. Custom version names have a maximum length of **32 characters**. ### What happens when a workspace is deleted? Deleting a workspace deletes the workspace and the assets associated with it. This action is destructive and intended for cleanup of temporary workspaces. ### Can a workspace UID be edited after creation? No. Workspace UID is read-only after creation. Create a new workspace if a different UID is required. ### What does “Fork workspace” do? Fork creates a new workspace using an existing workspace as the source. Teams commonly fork a campaign workspace to create a new variation without starting from scratch. ### Can assets be searched by user-defined fields? Yes. Search and filtering support system fields and user-defined fields. Advanced search supports constructing complex queries across multiple fields. ### Do spaces and workspaces have separate roles? Yes. Contentstack Assets provides organization/product roles, and each space supports space-scoped roles. Users must be assigned to a space to access its assets, even if a user has a product role. ### Can a workspace be converted into a space? No. Spaces and workspaces serve different purposes and cannot be converted. ### Is it possible to give a user access to Assets but restrict them to specific spaces? Yes. Assign a Contentstack Assets role and then grant access only to specific spaces. ### Can external vendors be restricted to uploading assets only? Yes. Create a custom role (eg., Vendor) with limited permissions and assign it to one or more spaces. ### Do AI features work for all asset types? AI features such as tag suggestion, description suggestion, alt text suggestion, visual markup suggestion, and reverse image search depend on asset type and format. Some AI capabilities apply primarily to image formats. ### Does visual markup work for every file type? No. Visual markup applies to supported image formats and is not available for non-visual file formats (eg., most documents). ### Can Contentstack Assets enforce required metadata during upload? Yes. Asset types can require specific fields and apply validation rules. Assets must meet required-field rules before saving. ### Can folder/asset deletion be undone? Deleted folders/assets can be restored from trash for up to **14 days**. After this, the assets or folder and all its contents will be permanently deleted. --- ## URL: https://www.contentstack.com/docs/assets/field-types --- title: "[AM2.0] - Field Types" description: Field types available in Asset Management 2.0, including use cases and configurable properties. url: https://www.contentstack.com/docs/assets/field-types product: Asset Management doc_type: reference audience: - developers - administrators version: AM2.0 last_updated: 2026-03-25 filename: field-types.md --- # [AM2.0] - Field Types This page explains the available field types in Asset Management 2.0, what each field type is used for, and why selecting the correct type matters for consistent metadata entry, validation, and display. ### Item 1 #### Article section ##### Heading Field Types ##### Content When you create a field in Asset Management, you must choose a field type. Each field type controls how data is entered, validated, and displayed. Selecting the correct field type ensures metadata is captured accurately and consistently across your assets. This document explains the available field types, their use cases, and the properties you can configure. - **Single Line Textbox**: Designed for short text values, e.g., product SKU, author name, or campaign code. - **Multi Line Textbox**: Captures longer text entries, e.g., description, usage notes, or legal terms. - **Link**: Stores URLs, such as a reference to an external product page, license agreement, or a hosted video. - **Select**: Provides predefined options for controlled choices, e.g., region (North America, Europe, Asia) or image angle (Front, Back, Side). - **Number**: Records numerical values, e.g., DPI, duration (seconds), or model version. - **Date**: Tracks date-specific information, e.g., shoot date, license expiration, or release date. - **Boolean**: Represents true/false or yes/no conditions, e.g., model release obtained or is_featured. - **Group**: Bundles related fields into a single logical unit, e.g., Image Properties (with resolution, color profile, and DPI). Choosing the right field type ensures that metadata is accurate, reusable, and easy to manage. ## Common questions ### How do I choose the right field type for a new metadata field? Choose the field type based on the kind of data you need to store (text, URL, controlled options, numbers, dates, true/false) and how you want it validated and displayed. ### When should I use Select instead of a textbox? Use **Select** when you need predefined options for controlled choices (for example, region or image angle) to keep metadata consistent. ### What is the purpose of a Group field type? A **Group** bundles related fields into a single logical unit (for example, Image Properties with resolution, color profile, and DPI) to keep metadata organized. ### Can field types affect validation and display? Yes. Each field type controls how data is entered, validated, and displayed, which helps ensure metadata is captured accurately and consistently. --- ## URL: https://www.contentstack.com/docs/assets/generate-permanent-url --- title: "Generate Permanent URL" description: "Discover how Contentstack's permanent URLs ensure stable asset references, even after updates. Learn to generate consistent links effortlessly." url: "https://www.contentstack.com/docs/assets/generate-permanent-url" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-31" filename: generate-permanent-url.md --- # Generate Permanent URL Assets allows you to assign a permanent URL to an asset. A permanent URL provides a stable, unchanging reference to the asset, even if the underlying file is updated or replaced. This eliminates the need to manually update asset references in entries whenever the asset file changes. Every asset has two types of URLs: * **Auto-generated asset URL**: The default system-generated URL for the asset that changes whenever the asset is updated or replaced. * **Permanent asset URL**: A constant, non-editable URL that remains the same regardless of file updates or replacements. **Example:** * Initial upload URL: ``` https://assets.contentstack.io/spaces/ambc6ed3deb2dbba87/assets/am3740ef98897fc99a/ad2ed624b04a86eec6476408/sample_logo.png ``` * After replacing the file, the auto-generated URL changes to: ``` https://assets.contentstack.io/spaces/ambc6ed3deb2dbba87/assets/am3740ef98897fc99a/fecd4e011526cf7beaa85faa/new_sample_logo.png ``` * With a permanent URL, the reference stays unchanged: ``` https://assets.contentstack.io/spaces/ambc6ed3deb2dbba87/assets/am3740ef98897fc99a/sample_logo.png ``` **Permanent URL Structure:** A permanent URL follows this structure: ``` https://{base_url}/v3/spaces/{space_uid}/assets/{asset_uid}/{slug} ``` Here: * space\_uid uniquely identifies your space. * asset\_uid is the unique identifier for the asset. * slug is a user-defined identifier (up to 255 characters) that describes the asset. **Example:** ``` https://assets.contentstack.io/spaces/ambc6ed3deb2dbba87/assets/am3740ef98897fc99a/sample_logo.png ``` To generate a permanent URL for an asset: 1. Select the asset. 2. In the right-hand panel, click the “Non-Editable Metadata” icon. 3. The **System Metadata** section displays all system-managed fields. Click the "**+**" icon beside **Permanent URL**. 4. Enter a slug for the permanent URL that describes the asset meaningfully. **Note:** The slug supports a maximum of **255 characters** and accepts only letters (A-Z, a-z), digits (0-9), underscores (\_), hyphens (-), and dots (.). Any other character is replaced with an underscore (\_). For example, my logo@2x.png becomes my\_logo\_2x.png. 5. Click **Save Asset** to generate the permanent URL. The permanent URL becomes active immediately and can be used in entries, APIs, or external systems. ## Limitations * You can generate a permanent URL for an asset only once. Once created, it cannot be modified or regenerated. * The maximum length of the slug is **255 characters**. --- ## URL: https://www.contentstack.com/docs/assets/getting-started-with-assets --- title: "[AM2.0] - Getting Started with Assets" description: Getting Started with Assets url: https://www.contentstack.com/docs/assets/getting-started-with-assets product: Contentstack doc_type: guide audience: - developers - content-managers - administrators version: AM2.0 last_updated: 2026-03-25 filename: getting-started-with-assets.md --- # [AM2.0] - Getting Started with Assets This page is a step-by-step guide showing how an ecommerce brand can use Contentstack Assets to organize, enrich, govern, and reuse digital assets across multiple websites. It is intended for teams planning an Assets implementation (admins, developers, and content/asset managers) and should be used when setting up spaces, asset models, metadata, localization, workspaces, search, and governance. ## Getting Started with Assets This guide walks you through how an ecommerce brand, **Amazemart**, can use Assets to organize, enrich, and reuse digital assets across multiple websites. This guide follows a realistic implementation journey and highlights which capabilities to use at each step. ## Use Case Overview: Amazemart Amazemart operates three websites, all powered by Contentstack CMS: - **Amazemart – Main** (B2C storefront) - **Amazemart – Business** (B2B storefront) - **Amazemart – Resource Center** (guides, legal documents, help content) Amazemart cares deeply about: - **Brand consistency** across all sites (logos, icon sets, brand imagery) - **Campaign agility** for frequent seasonal and promotional sales - **Strong governance** around asset rights and usage windows Assets helps Amazemart solve these needs by providing: - A **central place** to model and store assets - **Reusable asset spaces** for shared brand elements - **Metadata, search, and AI** to keep assets discoverable and compliant ## Plan Spaces for Each Site and Shared Assets Assets is the highest-level system for organizing and governing digital assets in Contentstack. Within it, a **space** acts as the central repository for brand- or project-specific assets. For Amazemart, you would create: **Amazemart Main Space**: Assets specific to the B2C site - **Amazemart Business Space**: Assets specific to the B2B site - **Amazemart Resource Center Space**: PDFs, legal docs, guides - **Global Brand Assets Space**: Shared logos, icons, typography, global imagery Each space is: - Independent (its assets, roles, and settings do not affect other spaces) - Linkable to one or more **CMS stacks**, so CMS entries can pick assets from the relevant spaces You may also create additional spaces later, for example a **Sneaker Vendor Space** that holds assets sourced from a third-party partner. **Tip:** Use the Global Brand Assets space to host logos, navigation icons, and shared lifestyle imagery that all three sites can reference via multi-space linking. ## Configure Asset Models (Fields, Groups, and Types) Next, Amazemart needs structured metadata so teams can search, filter, and govern assets reliably. ### Create Custom Fields and Field Groups In **Fields**, you define reusable fields and group them logically. For example: - Single Line Textbox: `product_id`, `sku`, `brand` - Multi Line Textbox: `usage_notes`, `legal_disclaimer` - Number: `discount_percentage`, `priority_score` - Date: `campaign_start_date`, `campaign_end_date`, `license_expiry_date` - Boolean: `is_hero_image`, `approved_for_reuse` - Group (Asset Rights):`rights_holder` (text) - `license_type` (select: royalty-free, rights-managed, internal only) - `license_start_date`/`license_end_date` (dates) - Nested group restrictions (channels, regions, notes) For each asset type, you can: - Mark critical fields as **mandatory** (for example `license_end_date` for rights) - Configure validation (for example, `license_end_date` must be after `license_start_date`) These fields become the backbone of Amazemart’s search and compliance workflows. ### Create Asset Types In **Asset Types**, you map file formats to **MIME type + extension** and attach the relevant fields. Examples: **JPEG Image**MIME type: image/jpeg - Extensions: .jpg, .jpeg - Fields: product_id, sku, category, color, is_hero_image, Asset Rights group **Campaign Banner PNG**MIME type: image/png - Extension: .png - Fields: campaign_name, campaign_start_date, campaign_end_date, locale, Asset Rights **Legal PDF**MIME type: application/pdf - Extension: .pdf - Fields: document_type, region, effective_from, effective_to This ensures every uploaded file carries the metadata Amazemart needs. ## Organize Folders and Upload Assets Inside each space, Amazemart structures assets into folders: In **Amazemart Main Space**Home Page - Category Pages > Fashion > Shoes - Campaigns > Diwali Sale 2025 In **Global Brand Assets Space**Logos - Icons - Brand Photography Users can: - Create folders and subfolders - Upload assets directly into a folder - Edit folder names and descriptions - Delete folders that are no longer required As assets are uploaded, Asset Management: - Applies the correct **asset type** (based on MIME type and extension) - Displays all **required fields** that must be filled in before saving ## Enrich Assets with Metadata and Localization ### Configurable Metadata and AI Suggestions When a user opens an asset, the **Edit Configurable Metadata** panel allows them to: - Set **title**, **description**, and **tags** - Fill in **user-defined fields** (e.g., product_id, Asset Rights) - Use **AI-powered suggestions** for:Descriptions and alt texts - Tags Metadata can be added once in the Global Brand Assets space and reused where that asset is referenced. ### Localize Assets for Multiple Languages Asset localization follows a two-stage configuration model: - Add languages globally in **Asset** > **Settings**, defining fallback relationships. - Add required languages at the workspace level, making them available for asset localization. Only languages enabled in a workspace become available for that workspace’s assets. Once enabled, localization supports: - Language-specific titles, descriptions, and tags - Optional replacement of the asset binary (for example, packaging text in French) - Fallback behavior when localized content is unavailable This approach allows Amazemart to maintain a single logical asset with multiple language variants while respecting workspace-specific needs. ## Use Workspaces for Campaigns and Experiments Each space includes a primary workspace that serves as the default working environment. Additional workspaces can be created to support: - Campaign preparation (for example Diwali-2026-Campaign) - Experimental asset updates - Review and approval workflows In a campaign workspace, Amazemart can: - Upload new banners and hero images - Add or refine metadata and visual markups - Review changes in isolation Once ready, changes can be merged into the parent workspace. **Warning:** Workspaces support controlled experimentation within a space. Do not use workspaces to manage separate websites or brands. Create separate spaces for that purpose. Support is not provided when workspaces are used as replacements for spaces. ## Search, Filter, and Save Views As the asset library grows, Amazemart relies on **Search**, **Filters**, and **Views**. ### Basic and Advanced Search From the **Assets** page, users can: - Basic search scans across system metadata and all user-defined fields. - Advanced search enables complex queries using multiple fields, operators, and conditions. ### Apply Filters Filters help Amazemart narrow down results quickly: - **Folder**: Filter by folder hierarchy - **Asset Type**: For example only JPEG Product Image - **Size**: Small, medium, large, or custom ranges (KB, MB, GB) - **Color**: Find images where a color (for example blue) is dominant - **Dimensions**: Custom width and height ranges (for example banner formats) - **Dates**: Created or last modified ranges - **Languages**: Show localized assets for specific languages - **User-defined fields**: For example:Rights Holder = “Daniel Taylor” - License End Date after today - Category = “Shoes” User-defined fields can be added to the **Filters** panel via **Manage Filters**, then reused as needed. ### Saved Views Amazemart can configure useful combinations of columns and filters as **views**, such as: - “Active Shoe Campaign Assets” - “Rights Expiring in Next 30 Days” - “Unlocalized French Assets” These views help teams open “their” slice of the library with a single click. ## Add Visual Markup (Images) for Shoppable Experiences For lifestyle images on the Amazemart Main site (for example a model wearing multiple items), editors can add **Visual Markup**: - **Hotspots**: Pinpoint clickable markers (for example on a bag or shoe) - **Bounding boxes**: Highlight a larger region (for example an entire outfit) Workflow: - Open an image asset (for example a photo of a study table or a fashion outfit). - Open the **Visual Markup** panel. - Use **Suggest Markup with AI** to detect people or objects, or manually add hotspots/bounding boxes. - For each markup, set:Title (for example “Leather Tote Bag”) - Description - URL (for example a product detail page) - Position and dimensions (for bounding boxes) This enables **shoppable imagery** and interactive content directly from Asset Management. ## Make the Most of AI Capabilities In addition to AI suggestions for metadata and markups, Assets offers several intelligent features that Amazemart can leverage: - **Automatic tag generation** on upload with configurable maximum tags and confidence threshold. - **Alt text suggestion** to improve accessibility and SEO. - **Reverse**/**visual image search** to find visually similar images (for example similar sneakers). - **Face detection** to identify human faces where needed. - **Adult content detection** to flag sensitive assets. - **Semantic search** to interpret natural language queries and return relevant assets. - **AI-powered asset recommendations** (when integrated with CMS) to suggest images based on entry content and audience. These features reduce manual effort and keep the library clean, compliant, and easy to navigate. ## Govern Access with Roles (High-Level) Although this guide focuses on features, Amazemart also uses **space-level roles** to control access: Out-of-the-box roles such as:Space Owner - Space Admin - Asset Manager - Asset Developer - Custom roles for:External vendors (for example the Sneaker Vendor Space) - Legal reviewers - Regional marketing teams Roles determine who can upload, edit metadata, manage workspaces, or delete assets. ## Use Assets in CMS via Asset Picker Once assets are modeled and organized: CMS editors select assets from linked spaces using the updated **asset picker** in Headless CMS. - They benefit from everything configured in Assets:Correct asset types - Entry locale and fallback language rules**Note:** Only assets matching the entry’s locale or fallback locale appear as selectable, ensuring localization consistency. - Rights-safe assets (based on metadata and filters) - Visual markups for shoppable content This completes the loop from **centralized assets** to **content delivery**. Assets turns Amazemart’s growing asset library into a structured, searchable, and reusable system that supports multiple sites, campaigns, and regions with confidence. ## Common questions ### What is the difference between a space and a workspace in Assets? A **space** acts as the central repository for brand- or project-specific assets, while **workspaces** support controlled experimentation within a space. ### When should I create a separate space instead of a workspace? Do not use workspaces to manage separate websites or brands. Create separate spaces for that purpose. ### How do asset types help with governance? Asset types map file formats to **MIME type + extension** and attach relevant fields, ensuring every uploaded file carries the metadata needed. ### How does localization affect what CMS editors can pick? Only assets matching the entry’s locale or fallback locale appear as selectable, ensuring localization consistency. --- ## URL: https://www.contentstack.com/docs/assets/localize-an-asset --- title: "[AM2.0] - Localize an Asset" description: Asset localization allows the creation of language-specific variants of an asset within a workspace. url: https://www.contentstack.com/docs/assets/localize-an-asset product: Contentstack doc_type: how-to audience: - developers - content-managers version: AM2.0 last_updated: 2026-03-25 filename: localize-an-asset.md --- # [AM2.0] - Localize an Asset This page explains how to localize an asset in a workspace by creating a language-specific variant with independent metadata and content. It is intended for users managing multi-language assets and should be used when you need regionally relevant versions of the same asset without inheriting values from the default language. ## Article content ### Item 1 #### Article section ##### Heading Localize an Asset ##### Content Asset localization allows the creation of language-specific variants of an asset within a workspace. Once an asset is localized, it stops inheriting values from the default language. Instead, it maintains its own metadata and content for the selected language. This enables teams to deliver regionally relevant assets (e.g., localized text, tags, or visuals) while keeping all language versions organized under a single asset. To localize an asset, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps given below: - Navigate to **Assets**. - Open the required asset from the **Assets** section. - From the language selector at the top of the asset details page, select a language marked as **Unlocalized**. - Update the required fields, such as title, description, tags, user-defined metadata, or asset binary if needed (e.g., replace an image containing localized text). - Click **Save Asset**. - In the confirmation dialog, select **Localize Asset**. Once the asset is saved: - The asset becomes localized for the selected language. - The localized version stops fetching values from the default language. - Future changes to the default language do not affect the localized version. **Notes:** - Localization occurs only after saving changes. - Each language maintains an independent version of metadata and content. - Versioning continues to function independently per localized language. - Only languages enabled in the active workspace are available for localization. ## Common questions ### Does a localized asset continue inheriting values from the default language? No. Once an asset is localized, it stops inheriting values from the default language and maintains its own metadata and content for the selected language. ### When does localization take effect? Localization occurs only after saving changes. ### Can I localize an asset for any language? Only languages enabled in the active workspace are available for localization. ### Do changes to the default language affect the localized version later? No. Future changes to the default language do not affect the localized version. --- ## URL: https://www.contentstack.com/docs/assets/manage-a-folder --- title: "Manage a Folder" description: "Organize assets with ease in Contentstack. Learn to view, edit, upload, and delete folders efficiently in a structured, user-friendly interface." url: "https://www.contentstack.com/docs/assets/manage-a-folder" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: manage-a-folder.md --- # Manage a Folder Folders in **Assets** help you organize and group related assets in a structured way. You can view folder details, open or edit folders, upload files, or delete folders as needed. ## View Folder Information To view the key details of a folder: 1. Navigate to the **Assets** section. 2. Hover over the folder and click the "Folder Information" icon. The folder information is displayed, including its name, description, and other relevant details. ## Open a Folder You can open a folder in two ways: * Click the folder name or icon. * Hover over the folder, click the vertical ellipsis, and select **Open**. Once opened, you can add new assets or manage existing ones inside the folder. ## Edit Folder Details To edit the folder name or description: 1. Hover over the folder, click the vertical ellipsis, and select **Edit**. 2. Update the folder name or description as required. 3. Click **Save** to confirm your changes. **Note:** Editing folder details does not affect the assets inside it. ## Upload Assets to a Folder You can upload assets directly into a folder: 1. Hover over the folder, click the vertical ellipsis, and select **Upload File**. 2. Select the assets you want to upload from your system. The selected assets are uploaded to the folder. **Tip:** You can also drag and drop files directly into an open folder for faster uploads. ## Delete a Folder If a folder is no longer required, you can remove it permanently: 1. Hover over the folder, click the vertical ellipsis, and select **Delete**. 2. Click **Delete** again to confirm the action. **Warning:** Deleting a folder removes the folder and all assets within it. Review the folder contents carefully before proceeding. --- ## URL: https://www.contentstack.com/docs/assets/manage-assets-users --- title: "Manage Assets Users" description: "Manage user roles and permissions in Contentstack's Administration for centralized control and space-specific access with easy edits and removals." url: "https://www.contentstack.com/docs/assets/manage-assets-users" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: manage-assets-users.md --- # Manage Assets Users Assets user management is handled through Contentstack [Administration](/docs/administration/invite-users-to-organization), where organization-level access, product roles, and space-level permissions can be viewed and updated in one place. Administrators can review who has access to Assets, modify roles and space assignments, or completely remove a user from the organization. ## Edit User Roles You can edit or remove a user’s Assets roles, assigned spaces, and space-level roles at any time. To edit users, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps given below: 1. Navigate to **Administration** through “App Switcher”, then click the **Users** tab to view organization users. 2. Click the vertical ellipsis next to the user and select **Edit**. 3. On the **Edit user** screen, update the following: * Organization-level Assets roles (default or custom) * Assigned spaces * Space-level roles per space 4. Click **Update** to save changes. Changes take effect immediately. **Note:** At least one **Administration** role must always remain assigned. By default, the **Member** role is selected. ## Remove a User From the Organization To remove the user entirely from the organization, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps given below: 1. Navigate to **Administration** through “App Switcher”, then click the **Users** tab to view organization users. 2. Click the vertical ellipsis next to the user and select **Remove**. 3. A **Remove User** confirmation modal appears. Click **Remove** to confirm the action. **Tip:** Remove space access or Assets roles if the user still requires access to other Contentstack products. Remove the user entirely only when the user is no longer required in the Contentstack organization. Managing Assets users through Contentstack Administration ensures centralized governance while enabling granular, space-specific access control. --- ## URL: https://www.contentstack.com/docs/assets/manage-space-users --- title: "[AM2.0] - Manage Space Users" description: Manage space users by editing user roles or removing a user from a selected space. url: https://www.contentstack.com/docs/assets/manage-space-users product: Contentstack doc_type: guide audience: - administrators - developers version: AM2.0 last_updated: 2026-03-25 filename: manage-space-users.md --- # [AM2.0] - Manage Space Users This page explains how to manage users within a specific Contentstack space by editing assigned space roles or removing a user. It is intended for space administrators who need to update access for users without affecting organization-level roles or other spaces. ### Manage Space Users Edit users to update the roles assigned to a user or remove a user entirely when access is no longer required. These actions affect only the selected space and do not change organization-level roles or access to other spaces. ## Edit User Roles To edit users, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps given below: - Navigate to **Space Settings** > **Users & Roles**. - On the **Users** listing page, click the vertical ellipsis next to the user and select **Edit**. - In the **Update User** modal, add or remove space roles. - Click **Update** to confirm the changes. The changes are applicable immediately for the user. ## Remove a User To remove a user from a space, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps given below: - Navigate to **Space Settings** > **Users & Roles**. - On the **Users** listing page, click the vertical ellipsis next to the user and select **Remove**. - A **Remove User** confirmation modal appears. Click **Remove** to confirm the action. Space-level user management is scoped strictly to the selected space. ## Common questions **Does editing a user’s space roles affect their organization-level roles?** No. These actions affect only the selected space and do not change organization-level roles. **When do role changes take effect after updating a user?** The changes are applicable immediately for the user. **Does removing a user from a space remove them from other spaces too?** No. Space-level user management is scoped strictly to the selected space. **Where do I manage users and roles for a space?** Go to **Space Settings** > **Users & Roles**. --- ## URL: https://www.contentstack.com/docs/assets/manage-spaces --- title: "Manage Spaces" description: "Effortlessly manage your Contentstack spaces by updating details or deleting them to maintain an organized asset environment. Learn how to edit or delete a space." url: "https://www.contentstack.com/docs/assets/manage-spaces" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: manage-spaces.md --- # Manage Spaces Assets allows you to manage your [space](/docs/assets/about-spaces-and-workspaces#spaces) by updating its information or deleting it when it is no longer needed, helping you maintain an organized asset environment. ## Edit a Space To update your space information, perform the following steps: 1. Navigate to **Space Settings** > **General**. 2. Update the **Title** (required) and **Description** (optional) for your space. 3. Click **Save** to apply your changes. **Note:** The **Space UID** is system-generated (read-only), and cannot be modified. ## Delete a Space To delete a space that is no longer needed, perform the following steps: 1. From **Space Settings** > **General**, scroll to **Delete Space**. 2. Click **Delete Space**. 3. Confirm the action by typing **DELETE**. **Warning:** Deleting a space permanently removes all its assets, users, and collaborators. This action is irreversible. Review carefully before proceeding. --- ## URL: https://www.contentstack.com/docs/assets/manage-spaces-and-workspaces-in-assets-hub --- title: "[AM2.0] - Manage Spaces and Workspaces in Assets Hub" description: Manage how spaces and workspaces connect to the current branch in Assets Hub, including viewing, linking, changing, setting default, and unlinking workspaces. url: https://www.contentstack.com/docs/assets/manage-spaces-and-workspaces-in-assets-hub product: Contentstack doc_type: guide audience: - administrators - developers version: AM2.0 last_updated: 2026-03-25 filename: manage-spaces-and-workspaces-in-assets-hub.md --- # [AM2.0] - Manage Spaces and Workspaces in Assets Hub This page explains how stack admins can manage linked spaces and workspaces for a branch in Assets Hub, including how to view current links, link additional workspaces, change the linked workspace, set a default workspace, and unlink a workspace. ## Manage Spaces and Workspaces in Assets Hub **Assets Hub** allows stack admins to manage how spaces and workspaces connect to the current branch. Each branch can link to one or more spaces. ## View Linked Workspaces To view linked workspaces, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps given below: - Navigate to **CMS** through “App Switcher”. - Open your stack and click **Settings** > **Assets Hub**. - Under **Linked Workspaces**, the following details are displayed:Space name (read-only) - Workspace name (read-only) **Note:** A space can be linked to up to **10 stacks**. ## Link a Workspace To link an additional workspace: - Click **+ Link Workspace**. - Select:Space - Workspace - Click **Link Workspace**. Assets from the selected workspace become available for use in the branch. ## Change Linked Workspace If a space contains multiple workspaces, you can change the linked workspace for the branch: - Click the vertical ellipsis beside the workspace. - Select **Change Linked Workspace**. - Choose a different workspace. - Click **Confirm**. **Warning:** This replaces the current workspace connection and may impact entries referencing assets from the previously linked workspace. ## Set a Workspace as Default To define where new assets are created by default: - Click the vertical ellipsis beside the workspace. - In the dropdown menu, scroll to locate **Set as Default**. - Click **Confirm**. The selected workspace becomes the default asset location for that branch. Any new assets added to the stack are added to this workspace by default. ## Unlink a Workspace To unlink an existing workspace: - Click the vertical ellipsis beside the workspace. - In the dropdown menu, scroll to locate **Unlink Workspace**. - Type **UNLINK** to confirm. - Click **Unlink**. **Warning:** Unlinking a workspace removes access to the workspace and all its assets from the branch. Review and ensure no active content depends on those assets before proceeding. ## Common questions **Q: How many stacks can a space be linked to?** A: A space can be linked to up to **10 stacks**. **Q: What happens after I link a workspace?** A: Assets from the selected workspace become available for use in the branch. **Q: What is the impact of changing the linked workspace?** A: This replaces the current workspace connection and may impact entries referencing assets from the previously linked workspace. **Q: What should I consider before unlinking a workspace?** A: Unlinking a workspace removes access to the workspace and all its assets from the branch. Review and ensure no active content depends on those assets before proceeding. --- ## URL: https://www.contentstack.com/docs/assets/manage-workspaces --- title: "Manage Workspaces" description: "Optimize your Contentstack Asset operations with workspace management. Organize, fork, and customize languages for efficient asset control." url: "https://www.contentstack.com/docs/assets/manage-workspaces" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: manage-workspaces.md --- # Manage Workspaces Workspace management in Contentstack Assets lets you organize and isolate asset operations within a space. You can view workspace details, update workspace information, fork workflows, manage languages, and delete workspaces when no longer required. All workspace actions apply only within the selected space. To view the workspaces within a space, navigate to **Space Settings > Workspaces**. ## View Workspace Details To view workspace details, click a workspace name to open its details panel. The details panel displays: * **System metadata:** Title, UID, Created By, Modified By, Created At, and Modified At. * **Languages:** Languages enabled for the workspace and their fallback languages. This view provides a quick summary of workspace configuration and language coverage. ## Edit a Workspace To update workspace details such as the name and description, perform the following steps: 1. Click the vertical ellipsis in the **Actions** column of the workspace and select **Edit Workspace**. 2. Update the **Name** or **Description** as required. **Note:** The **UID** and **Source Workspace** fields remain read-only after creation. 3. Click **Update Workspace**. ## Copy Workspace UID To copy the workspace UID, perform the following steps: 1. Click the vertical ellipsis in the **Actions** column of the workspace. 2. Select **Copy UID**. ## Fork a Workspace Forking creates a new workspace using an existing workspace as the source. The new workspace inherits assets and settings from the source workspace, allowing teams to reuse configurations while making independent changes. For example, a Spring Campaign workspace already exists. A regional team needs a variation of the same assets for a localized promotion. Forking allows reusing of the campaign setup while enabling region-specific changes. To fork a workspace, perform the following steps: 1. Click the vertical ellipsis in the **Actions** column of the workspace and select **Fork this Workspace**. 2. In the **Create a Fork** modal, enter the following details: * **Name (required)** * **UID (required)** * **Description (optional)** * Verify the **Source Workspace**. 3. Click **Create Fork**. The new workspace inherits assets and settings from the selected source workspace. ## Manage Workspace Languages Languages are added globally in **Assets > Settings > Languages** and then selectively enabled for each workspace. To manage languages for a workspace, perform the following steps: 1. Click the vertical ellipsis in the **Actions** column of the workspace and select **Manage Workspace Languages**. 2. In the **Manage Workspace Languages** modal, review the languages currently enabled for the workspace. 3. Click **\+ Add Language**. 4. Select one or more languages from the available list. Each language displays its fallback language. **Note:** The default language remains locked and cannot be removed. 5. Click **Apply** to confirm the selection. 6. Click **Save Changes** to add the selected languages to the workspace. Only languages enabled in a workspace are available for asset localization within that workspace. **Note:** * Languages must exist in **Assets > Settings > Languages** before they can be added to a workspace. * Each workspace can enable a different set of languages based on its requirements. * Assets support localization only for languages enabled in the active workspace. * Changes to workspace languages apply only to that workspace and do not affect other workspaces or spaces. ## Delete a Workspace To delete a workspace, perform the following steps: 1. Click the vertical ellipsis in the **Actions** column of the workspace and select **Delete Workspace**. 2. Click **Yes, Delete Workspace** to confirm the delete action. **Warning:** Deleting a workspace permanently removes all its assets, users, and collaborators. This action is irreversible. Deleting a workspace does not affect its source workspace or other workspaces. Managing workspaces effectively helps teams to ensure clean separation of workstreams, safer experimentation, and scalable asset operations within a space. --- ## URL: https://www.contentstack.com/docs/assets/move-from-stack-assets-to-new-assets --- title: "Move from Stack Assets to New Assets" description: "Move from Stack Assets to New Assets" url: "https://www.contentstack.com/docs/assets/move-from-stack-assets-to-new-assets" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-23" filename: move-from-stack-assets-to-new-assets.md --- # Move from Stack Assets to New Assets When transitioning from stack-based assets to the new Contentstack Assets, the way you structure, manage, and reuse assets changes significantly. In the stack-based assets system, assets were tightly coupled with stacks, and teams often relied on workarounds (such as dummy content types) to manage metadata. With Contentstack Assets, you now have a dedicated, scalable asset management system with built-in support for reusability of assets - single source of truth, metadata, asset types, localization, and governance. This guide walks you through the key actions to take after upgrading, using a dummy e-commerce company the Ridge & Rover use case to illustrate how to adopt the new system effectively. Contentstack Assets is available as a paid upgrade from the legacy Stack Asset Manager. ## How the Migration Works Contentstack manages the migration from stack assets to Contentstack Assets end to end. During migration, Contentstack transforms your existing assets to support Contentstack Assets. You do not run the migration yourself or rebuild your asset library manually. The migration preserves the behavior of your existing assets. During and after migration, you see no change in how existing asset endpoints, delivery URLs, and functionality behave. Everything that worked before migration continues to work the same way. After migration completes, Contentstack enables the new Contentstack Assets features for your organization, alongside the existing behavior you already rely on. **Note**: This migration suits organizations with large asset libraries. Assets that number in the thousands migrate without manual rework. ### What Keeps Working The migration changes where and how your assets are managed, not how your published content is delivered or consumed. The following stay exactly as they are today: * No downtime. The migration runs as a background process, so your live site, apps, and published content stay available throughout. * Your Content Delivery API (CDA) and Content Management API (CMA) integrations continue to work unchanged, and no code changes or re-integration are required. * Existing webhooks, automations, and SDK calls keep functioning without modification. * All published assets continue to be delivered without interruption, so the end-user experience is unaffected. * If an issue occurs during migration, Contentstack can halt and roll it back before completion, so you are not left in a broken in-between state. ### Delivery URLs and API Endpoints Your delivery URLs do not change during or after migration. Assets continue to be served from the same image delivery API you use today, so existing references resolve without any update. The existing asset endpoints remain supported after migration. Any asset you add after migration also follows the original URL pattern and works with the v3 endpoints, so your current integrations continue to function. ### Asset References in Entries You do not update any entries after migration. Contentstack remaps the existing asset references in your entries to the corresponding assets in Contentstack Assets automatically. This applies to references wherever they appear in your entries, so no manual or scripted update is required. ## The Migration Process Migration runs in three phases. Your Customer Success Manager (CSM) and the product team help you plan and run each one. ### Before Migration * Work with your CSM and the product team to choose a migration window that suits you. * Migration time varies with the number of assets, the number of entries, the volume of published assets and entries, and the number of publish environments in your organization. As a benchmark, migrating about 200,000 assets takes roughly 20 minutes. ### During Migration The migration runs as a background process, with no expected downtime. Some activities stay fully supported, while others are restricted to protect data consistency. Supported activities, with no impact: * Uploading assets * Creating entries * Updating entries and associating assets Restricted activities, which you avoid during the migration window: * Creating, updating, or deleting stacks * Creating, updating, or deleting branches * Modifying users * Changing roles or permissions **Note**: These restrictions protect data consistency during the migration window only. They do not apply after migration completes. ### After Migration * Your CSM notifies you once migration is complete. * All your data is available in Contentstack Assets. ## Important: Contentstack Assets Is a One-Way Upgrade **Warning**: Downgrading to the legacy Stack Asset Manager after migration is not supported. Once migration completes, your organization continues on the Contentstack Assets paid tier. Plan your migration window with this in mind, and raise any concerns with your CSM before migration begins. Contentstack can roll back the migration only before it completes. After migration, engineering and product teams remain available to support you if any issues arise. ## What Changes After Moving to Contentstack Assets? After moving from stack-based assets to Contentstack Assets, certain asset management workflows and permissions behave differently. Understanding these changes helps teams manage users, roles, localization, and asset governance more effectively in the new system. ### User Access and Onboarding User access to Contentstack Assets is managed separately from CMS. During migration, your existing stack users are added to the corresponding space automatically, with equivalent permissions, so your current team needs no action. Going forward, you add each new user to both the stack and the space, because access to each is managed independently. This separation lets you control asset access independently across spaces and teams - for example, you can grant a vendor upload access to one space without any access to your CMS stack or other spaces. ### Roles and Permissions Contentstack Assets uses a separate role and permission model from CMS. During migration, new Assets system roles are created and mapped to their corresponding CMS roles. Unlike CMS roles, Assets system roles cannot be edited after creation. **CMS Role**  **Assets Role**  Admin  Space Admin  Developer  Asset Developer  Content Manager  Asset Manager To preserve flexibility for organizations that previously customized CMS roles, additional custom roles are automatically created during migration: * CMS Developer role for Assets * CMS Content Manager role for Assets These custom roles can be modified based on your organization’s requirements. Permissions are now managed at the space level instead of the stack level, so you can scope access to only the assets a team needs. This supports custom roles for external vendors, legal reviewers, or regional teams with only the access they require. **Note**: Changes to asset-related permissions must be managed from the corresponding Space Settings in Contentstack Assets. ### Asset Localization In stack-based assets, an asset had no concept of locale - the same file and metadata served every language. Contentstack Assets adds native, linked localization, so a single asset can hold locale-specific versions of its title, description, metadata, and file. You manage one asset record and deliver the right version for each locale, without duplicating assets per language. #### Configure Locales Before Localizing Localization depends on matching locale configuration between CMS and Contentstack Assets. Before you localize an asset: * Make sure the required locales exist in the CMS stack. * Make sure the corresponding languages are enabled in the relevant Assets space or workspace. Assets used in localized entries rely on this matching configuration to resolve the correct locale. #### How Localized Assets Are Retrieved To retrieve an asset in a specific locale, pass the locale query parameter. This scopes delivery to the requested locale and is the recommended method for all new and localized-asset integrations. For example, to request the fr-fr version of an asset: ``` GET /v3/assets/{asset_uid}?environment={env}&locale=fr-fr&include_fallback=true ``` Use include\_fallback=true to serve the fallback-locale asset when the requested locale has no published version. Fallback resolves toward the master language (for example, fr-fr → en-us). Localizing an asset does not change delivery on its own. A localized variant is served only when it is published in that locale. **Note**: Some existing integrations pass the locale in the request header only, not as a query parameter. In that case, delivery is not scoped to the requested locale and may return the asset from another published locale. This behavior is retained for backward compatibility but is not recommended. Migrate to the locale query parameter for locale-accurate delivery. ## What Is Possible Post Migration? In stack-based assets: * Metadata was often stored using dummy content types * Assets were not reusable across stacks so assets were duplicated in each stack * Localization required separate assets per locale * Limited filtering and governance With Contentstack Assets: * Assets are centrally managed in spaces and can be shared across stacks * Metadata is handled via user-defined fields * Assets are structured, searchable, and reusable * Localization is native and linked **Note**: Some capabilities may require additional configuration or setup after migration depending on your organization’s requirements and workflows. ## Example Use Case - Ridge & Rover Ridge & Rover operates multiple digital experiences: * B2C storefront * B2B platform * Schools platform Each experience uses shared and localized assets across: * Ridge & Rover B2C Site * Ridge & Rover B2B Site * Ridge & Rover Schools Site After migrating to Contentstack Assets, they restructured their asset strategy using the steps below. ## 1\. Organize Assets in Spaces for Reuse In Contentstack Assets, spaces define how assets are organized, governed, and reused across stacks. A well-structured space strategy ensures better discoverability, access control, and scalability. ### One Space per Stack (Stack-Specific Assets) When you create a stack a dedicated space will be created for each stack to store assets exclusive for that stack. Example: * Ridge&Rover-B2c * Ridge&Rover-B2B * Ridge&Rover-Schools Use this for: * Page-specific images * Campaign assets unique to a single stack * Stack-level content that is not reused ### One Global Space (Shared Assets) Create a common space for assets that are reused across multiple stacks. Example: Ridge & Rover – Global Brand Assets Use this for: * Logos and brand elements shared/reused across stacks * Icons and design systems * Shared marketing and lifestyle imagery ### One Vendor Space (External Assets) Create a separate space for assets sourced from external vendors or partners. Example: Partnerstore – Sneaker Nest Use this for: * Vendor product images * Third-party content * Partner-specific assets with licensing constraints Link these spaces to your stacks using Assets Hub to enable seamless asset selection in CMS. ## 2\. Create User-Defined Fields In stack assets, Ridge & Rover previously stored asset metadata using a custom content type (for example, to track campaign details or licensing information). With Contentstack Assets, this is replaced by user-defined fields. ### Example: Campaign Metadata Ridge & Rover creates a field: **Campaign Name (Single line text)** This allows them to: * Tag assets to campaigns * Filter assets by campaign ### Example: Asset Rights (Group Field) They also define a group field called **Asset Rights**, which includes: * Location * License type * Usage period * Copyright * Photographer details (nested group) This structure enables: * Better governance * Compliance tracking * Advanced filtering With the user-defined fields, metadata is now directly attached to assets instead of being managed separately. ## 3\. Associate Fields with Asset Types Once fields are created, the next step is to associate them with asset types. In Contentstack Assets: * Fields become usable only when linked to asset types * This ensures consistent metadata across similar assets Ridge & Rover, for their product images associated the following fields with asset type: * Asset Type: Product Image (JPEG) * Associated fields: * Campaign Name * Asset Rights Now, whenever an image is uploaded, required fields appear automatically. Teams can filter assets based on these fields ## 4\. Create Custom Asset Types Out-of-the-box asset types may not cover all business needs. Contentstack Assets allows you to define custom asset types. Ridge & Rover manages 3D product previews. They create a custom asset type: * **Asset Type**: 3D Model * **MIME Type**: model/3mf * **Fields**: * Product SKU * Dimensions * License Expiry * Asset Rights This ensures correct metadata for specialized assets, enforces validation rules, and improves discovery and filtering. ## 5\. Define Locales and Localize Assets In stack assets: * Localization required separate assets * No relationship between language variants In Contentstack Assets, localization is native and linked ### Step 1: Add Languages to Workspace Ridge & Rover adds languages (e.g., French) to their workspace: **Assets** > **Space Settings** > **Workspaces** > **Add Language** Only enabled languages can be used for asset localization. ### Step 2: Localize Assets On the English product page, Ridge & Rover has product images in English They now: 1. Switch to French 2. Replace or update the asset 3. Save the image to create a localized version This creates a localized version of the asset tied to the fallback locale. ## Best Practices After Migration To fully leverage Contentstack Assets: * Replace dummy content types with user-defined fields and asset types * Standardize metadata using asset types * Use custom asset types for specialized formats * Enable workspace-level languages before localization * Structure assets into spaces for reuse across stacks After completing these steps, you can explore advanced capabilities: * AI-powered tagging and search * Visual markup for images * Saved views and filters * Asset recommendations in CMS Moving from stack assets to Contentstack Assets is not just a migration, it is a shift to a structured, scalable, and intelligent asset management system. ## Frequently Asked Questions **Is there any downtime during migration?** No. The migration runs in the background and does not affect your daily operations. **Is my live site or app affected?** No. All published assets and front-end experiences continue to work without disruption. **Do I need to make any API or code changes?** No. Your existing Content Management API (CMA) and Content Delivery API (CDA) integrations continue to work as-is. **Can I continue uploading assets and updating entries during migration?** Yes. Asset uploads and entry updates are supported during the migration window. **Why are stack, branch, user, and role changes restricted during migration?** These changes can affect data consistency mid-migration. The restriction is temporary and lifts once migration completes. **Can I revert to the legacy Stack Asset Manager after migration?** No. The upgrade to Contentstack Assets is permanent. Plan accordingly, and raise any concerns with your CSM before the migration window begins. **Do asset URLs change?** No. Existing published asset URLs continue to resolve as before. **Do I need to re-invite my team to Contentstack Assets?** No, not for your existing team. Existing stack users are added to the corresponding space automatically during migration. Only new users going forward need to be added to both the stack and the space. **Who do I contact with questions?** Reach out to your Customer Success Manager (CSM) for questions or assistance during the migration process. --- ## URL: https://www.contentstack.com/docs/assets/out-of-the-box-asset-types --- title: "[AM2.0] - Out-of-the-Box Asset Types" description: Assets in Contentstack provides a comprehensive set of system-defined asset types out of the box, including supported asset types, their MIME types, and file extensions. url: https://www.contentstack.com/docs/assets/out-of-the-box-asset-types product: Contentstack doc_type: reference audience: - developers - administrators version: AM2.0 last_updated: 2026-03-25 filename: out-of-the-box-asset-types.md --- # [AM2.0] - Out-of-the-Box Asset Types This page describes the system-defined asset types available out of the box in Contentstack Assets, including their MIME types, file extensions, and whether they are restricted. It is intended for developers and administrators who need to understand supported upload formats and configure or associate asset types with fields for metadata workflows. ## Out-of-the-Box Asset Types Assets in Contentstack provides a comprehensive set of system-defined asset types out of the box. Each asset type maps to a MIME type and file extension, giving your team immediate support for standard file formats without the need for additional configuration. You can associate these asset types with fields to capture metadata relevant to your workflows. ## Asset Types Catalog The following categories include supported asset types, their MIME types, and file extensions. **Note:** Some file types are flagged as restricted (for example, `.exe`, `.sh`, `.bat`, `.php`, `.js`, `.py`) because they may introduce security risks or require special handling. These formats are blocked by default to prevent malicious uploads. Administrators can explicitly enable them in settings if business requirements demand it. Once enabled, they behave like any other type, but you should use them with caution. | Category | Asset Type Name | Content Type (MIME Type) | File Extension | Restricted | |---|---|---|---|---| | 3D Models | Apple USDZ 3D model | `model/vnd.usdz+zip` | `.usdz` | No | | 3D Models | COLLADA 3D model | `model/vnd.collada+xml` | `.dae` | No | | 3D Models | FBX 3D model | `application/octet-stream` | `.fbx` | No | | 3D Models, Virtual Reality | GL Transmission Format Binary | `model/gltf-binary` | `.glb` | No | | 3D Models | OBJ 3D model | `application/octet-stream` | `.obj` | No | | 3D Models | STL 3D model | `model/stl` | `.stl` | No | | Archives | 7z Archive | `application/x-7z-compressed` | `.7z` | No | | Archives | BZIP2 Archive | `application/x-bzip2` | `.bz2` | No | | Archives | GZIP Archive | `application/x-gzip` | `.gz` | No | | Archives | RAR Archive | `application/x-rar-compressed` | `.rar` | No | | Archives | TAR Archive | `application/x-tar` | `.tar` | No | | Archives | ZIP Archive | `application/zip` | `.zip` | No | | Audio | Advanced Audio Coding | `audio/aac` | `.aac` | No | | Audio | Free Lossless Audio Codec | `audio/flac` | `.flac` | No | | Audio | MIDI music file | `audio/midi` | `.mid`, `.midi` | No | | Audio | MP3 audio file | `audio/mpeg` | `.mp3` | No | | Audio | MPEG-4 Audio | `audio/mp4` | `.m4a` | No | | Audio | Ogg Audio | `audio/ogg` | `.ogg` | No | | Audio | Opus audio codec | `audio/opus` | `.opus` | No | | Audio | RealAudio | `audio/x-pn-realaudio` | `.ra` | No | | Audio | RealAudio Metadata | `audio/x-pn-realaudio` | `.ram` | No | | Audio | Waveform audio file | `audio/wav` | `.wav` | No | | Audio | WMA Audio | `audio/x-ms-wma` | `.wma` | No | | CAD | AutoCAD Drawing | `image/vnd.dwg` | `.dwg` | No | | CAD | AutoCAD Interchange Format | `image/vnd.dxf` | `.dxf` | No | | CAD | IGES CAD file | `model/iges` | `.iges`, `.igs` | No | | Code | AWK Script | `application/x-awk` | `.awk` | Yes | | Code | C Shell Script | `application/x-csh` | `.csh` | Yes | | Code | C# Script | `text/x-csharp` | `.cs` | Yes | | Code | C++ source | `text/x-c++-src` | `.cpp` | Yes | | Code | C++ Header | `text/x-c++hdr` | `.h` | Yes | | Code | Emacs Lisp Script | `application/x-emacs-lisp` | `.el` | Yes | | Code | Erlang Script | `text/x-erlang` | `.erl` | Yes | | Code | Java source code | `text/x-java-source` | `.java` | Yes | | Code | Korn Shell Script | `application/x-ksh` | `.ksh` | Yes | | Code | Lua Script | `text/x-lua` | `.lua` | Yes | | Code | Objective-C Source | `text/x-objc` | `.m` | Yes | | Code | Perl Script | `application/x-perl` | `.pl` | Yes | | Code | PHP Script | `application/x-php` | `.php` | Yes | | Code | PostScript | `application/postscript` | `.ps` | Yes | | Code | PowerShell Script | `application/octet-stream` | `.ps1` | Yes | | Code | Python Compiled Code | `application/x-python-code` | `.pyc` | Yes | | Code | Python script | `text/x-python` | `.py` | Yes | | Code | R Script | `text/x-r` | `.r` | Yes | | Code | Scala Script | `text/x-scala` | `.scala` | Yes | | Code | SQL Script | `application/x-sql` | `.sql` | Yes | | Code | Tcl Script | `application/x-tcl` | `.tcl` | Yes | | Code | VBScript | `text/vbscript` | `.vbs` | Yes | | Code | Visual Basic Script | `text/x-vb` | `.vb` | Yes | | Code | Z Shell Script | `application/x-zsh` | `.zsh` | Yes | | Data | CSV | `text/csv` | `.csv` | No | | Data | JSON | `application/json` | `.json` | No | | Data | TSV | `text/tab-separated-values` | `.tsv` | No | | Data | XML | `text/xml` | `.xml` | No | | Databases | Generic database file | `application/octet-stream` | `.db` | No | | Databases | Microsoft Access Database | `application/x-msaccess` | `.mdb` | No | | Databases | SQL script | `application/sql` | `.sql` | No | | Databases | SQLite database | `application/x-sqlite3` | `.sqlite` | No | | Document | Flat OpenDocument Text | `application/vnd.oasis.opendocument.text` | `.fodt` | No | | Document | Microsoft PowerPoint | `application/vnd.ms-powerpoint` | `.ppt` | No | | Document | Microsoft PowerPoint Open XML | `application/vnd.openxmlformats-officedocument.presentationml.presentation` | `.pptx` | No | | Document | Microsoft Word Document | `application/msword` | `.doc` | No | | Document | Microsoft Word Open XML Document | `application/vnd.openxmlformats-officedocument.wordprocessingml.document` | `.docx` | No | | Document | Microsoft Works Document | `application/vnd.ms-works` | `.wps` | No | | Document | Microsoft Write Document | `application/x-mswrite` | `.wri` | No | | Document | OpenDocument Presentation | `application/vnd.oasis.opendocument.presentation` | `.odp` | No | | Document | OpenDocument Text | `application/vnd.oasis.opendocument.text` | `.odt` | No | | Document | PDF | `application/pdf` | `.pdf` | No | | Document, Text | Plain text document | `text/plain` | `.txt` | No | | Document | WordPerfect 5.1 Document | `application/wordperfect5.1` | `.wp5` | No | | Document | WordPerfect 6.0 Document | `application/wordperfect6.0` | `.wp6` | No | | Document | WordPerfect Document | `application/vnd.wordperfect` | `.wpd` | No | | Document | WordPerfect Document | `application/wordperfect` | `.wp` | No | | Document | WordPerfect Document | `application/vnd.wordperfect` | `.wpf` | No | | E-books | EPUB e-book format | `application/epub+zip` | `.epub` | No | | E-books | Mobipocket e-book format | `application/x-mobipocket-ebook` | `.mobi` | No | | Email | Email message | `message/rfc822` | `.eml` | No | | Email | Outlook message | `application/vnd.ms-outlook` | `.msg` | No | | Executable | Batch file | `application/bat` | `.bat` | Yes | | Executable | JAR | `application/x-java-archive` | `.jar` | Yes | | Executable | Linux Executable | `application/x-executable` | `.sh`, `.bin`, `.elf` | Yes | | Executable | macOS Application | `application/octet-stream` | `.app` | Yes | | Executable | Unix shell script | `application/x-sh` | `.sh` | Yes | | Executable | Windows executable | `application/x-msdownload` | `.exe` | Yes | | Font | Bitmap Distribution Format Font | `application/x-font-bdf` | `.bdf` | No | | Font | Embedded OpenType Font | `application/vnd.ms-fontobject` | `.eot` | No | | Font | FontForge Font Data | `application/octet-stream` | `.sfd` | No | | Font | Open Font Format | `application/font-sfnt` | `.sfnt` | No | | Font | OpenType Font | `font/otf` | `.otf` | No | | Font | PCF Font | `application/x-font-pcf` | `.pcf` | No | | Font | TrueDoc Soft Font | `application/font-tdpfr` | `.pfr` | No | | Font | TrueType Font | `font/ttf` | `.ttf` | No | | Font | TrueType Font Collection | `font/collection` | `.ttc` | No | | Font | Type 1 Font | `application/x-font-type1` | `.pfa`, `.pfb` | No | | Font | Web Open Font Format | `font/woff` | `.woff` | No | | Font | Web Open Font Format | `font/woff2` | `.woff2` | No | | Game | Game data archive | `application/octet-stream` | `.pak` | No | | Game | Unity game file | `application/octet-stream` | `.unity3d` | No | | Geospatial | ESRI Geodatabase | `application/octet-stream` | `.gdb` | No | | Geospatial | ESRI Shapefile | `application/octet-stream` | `.shp` | No | | Geospatial | GeoJSON | `application/geo+json` | `.geojson` | No | | Geospatial | Google Earth KML file | `application/vnd.google-earth.kml+xml` | `.kml` | No | | Images | Bitmap image | `image/bmp` | `.bmp` | No | | Images | Encapsulated PostScript | `application/postscript` | `.eps` | No | | Images | GIF image | `image/gif` | `.gif` | No | | Images | ICO Image | `image/ico` | `.ico` | No | | Images | ICO Image | `image/x-icon` | `.ico` | No | | Images | JPEG image | `image/jpeg` | `.jpg`, `.jpeg` | No | | Images | PBM Image | `image/x-portable-bitmap` | `.pbm` | No | | Images | PGM Image | `image/x-portable-graymap` | `.pgm` | No | | Images | PNG image | `image/png` | `.png` | No | | Images | PPM Image | `image/x-portable-pixmap` | `.ppm` | No | | Images | PSD Image | `image/x-adobe-photoshop` | `.psd` | No | | Images | Scalable Vector Graphics | `image/svg+xml` | `.svg` | No | | Images | Tagged Image File Format | `image/tiff` | `.tif`, `.tiff` | No | | Images | TIFF Image | `image/tiff` | `.tiff`, `.tif` | No | | Images | WebP image | `image/webp` | `.webp` | No | | Images | XBM Image | `image/x-xbitmap` | `.xbm` | No | | Images | XPM Image | `image/x-xpixmap` | `.xpm` | No | | Multimedia | Advanced SubStation Alpha Subtitle | `text/x-ssa` | `.ass` | No | | Multimedia | MPlayer Playlist | `application/octet-stream` | `.mpl` | No | | Multimedia | SAMI Caption File | `application/sami` | `.sami` | No | | Multimedia | Shockwave Flash | `application/x-shockwave-flash` | `.swf` | No | | Multimedia | SMIL Presentation | `application/smil` | `.smil` | No | | Multimedia | SMIL Presentation | `application/smil+xml` | `.smil` | No | | Multimedia | SubRip Subtitle | `application/x-subrip` | `.srt` | No | | Multimedia | SubStation Alpha Subtitle | `text/x-ssa` | `.ssa` | No | | Multimedia | Subtitle File | `text/plain` | `.sub` | No | | Multimedia | VobSub Index | `application/octet-stream` | `.idx` | No | | Multimedia | WebVTT Subtitle | `text/vtt` | `.vtt` | No | | Music Notation | MusicXML music notation | `application/vnd.recordare.musicxml+xml` | `.musicxml` | No | | Music Notation | MusiXTeX music notation | `application/octet-stream` | `.musiXTeX` | No | | Spreadsheets | Microsoft Excel Spreadsheet | `application/vnd.ms-excel` | `.xls` | No | | Spreadsheets | Microsoft Excel Open XML Spreadsheet | `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet` | `.xlsx` | No | | Spreadsheets | OpenDocument Spreadsheet | `application/vnd.oasis.opendocument.spreadsheet` | `.ods` | No | | Text | Markdown | `text/markdown` | `.md` | No | | Text | Rich Text Format | `application/rtf` | `.rtf` | No | | Text | TeX | `application/x-tex` | `.tex` | No | | Text | YAML | `text/yaml` | `.yaml`, `.yml` | No | | Video | Audio Video Interleave | `video/x-msvideo` | `.avi` | No | | Video | Matroska video | `video/x-matroska` | `.mkv` | No | | Video | MPEG-4 video | `video/mp4` | `.mp4` | No | | Video | MPEG-4 Video | `video/x-m4v` | `.m4v` | No | | Video | Ogg Video | `video/ogg` | `.ogv` | No | | Video | QuickTime video | `video/quicktime` | `.mov` | No | | Video | RealVideo | `video/vnd.rn-realvideo` | `.rv` | No | | Video | WebM video | `video/webm` | `.webm` | No | | Virtual Machines | Open Virtualization Format Appliance | `application/ovf` | `.ova` | Yes | | Virtual Machines | VMware Virtual Disk | `application/x-vmdk` | `.vmdk` | Yes | | Web | Cascading Style Sheets | `text/css` | `.css` | No | | Web | HTML document | `text/html` | `.html`, `.htm` | No | | Web | JavaScript file | `application/javascript` | `.js` | Yes | | WebAssembly | WebAssembly Module | `application/wasm` | `.wasm` | Yes | ## Common questions ### What does “Restricted” mean for an asset type? Restricted file types are blocked by default to prevent malicious uploads, and administrators can explicitly enable them in settings if business requirements demand it. ### Can restricted file types be uploaded after enabling them? Once enabled, they behave like any other type, but you should use them with caution. ### Why do asset types map to MIME types and file extensions? Each asset type maps to a MIME type and file extension, giving your team immediate support for standard file formats without the need for additional configuration. ### How are these asset types used in Contentstack? You can associate these asset types with fields to capture metadata relevant to your workflows. --- ## URL: https://www.contentstack.com/docs/assets/replace-an-asset --- title: "Replace an Asset" description: "Learn how to seamlessly replace assets in Contentstack, updating files while maintaining continuity and references with easy steps and without reconfiguration." url: "https://www.contentstack.com/docs/assets/replace-an-asset" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: replace-an-asset.md --- # Replace an Asset Replacing an asset allows updating the underlying file (binary) while retaining the same asset record, references, and organizational context. This approach ensures continuity across entries and channels while keeping assets up to date without re-linking or reconfiguration. To replace an asset, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the steps below: 1. Navigate to the **Assets** listing page within your space. 2. Open the required asset to access the asset details page. 3. Click the “Replace” icon at the bottom of the page. 4. Select the new file from the local system. 5. Click **Save Asset** to confirm the replace action. After saving, a new version of the asset is created. **Note**: * The permanent asset URL remains unchanged. * All existing references to the asset continue to work. * Asset versioning captures the change as a new version. * User-defined metadata is retained but must be reviewed to ensure it still applies to the new file. --- ## URL: https://www.contentstack.com/docs/assets/restore-an-asset-or-folder --- title: "[AM2.0] - Restore an Asset or Folder" description: Restore an asset or folder from trash within 14 days from the date of deletion. url: https://www.contentstack.com/docs/assets/restore-an-asset-or-folder product: Contentstack doc_type: how-to audience: - developers - content-managers version: AM2.0 last_updated: 2026-05-27 filename: restore-an-asset-or-folder.md --- # [AM2.0] - Restore an Asset or Folder This page explains how to restore an asset or folder from the Trash in Contentstack Asset Management 2.0 (AM2.0). It is intended for users who manage assets in a workspace and need to recover deleted items within the retention period. ## Restore an Asset or Folder Restore an asset from trash within 14 days from the date of deletion. Restoring returns the asset or folder to its original location in your folder structure. After the retention period ends, Contentstack permanently removes the asset from trash. **Note**: To restore an asset or folder, you need permission to manage assets in the workspace. ## Restore an Asset To restore an asset, sign in to your [Contentstack account](https://www.contentstack.com/login) and perform the steps below: - Open your space, click **Space Settings** > **Trash**. - Locate the asset you want to restore. - To narrow the list, use the filters in the left panel for **Deleted By** or **Type**, and use the date range at the top to view assets deleted in a specific window. The listing shows only assets deleted within the selected range. - Click the vertical ellipsis (⋮) to open the actions menu. - Click **Restore**. **Note**: If you cannot click Restore for an asset, the asset's parent folder is also in trash. Restore the parent folder first using the steps in [Restore a Folder](/docs/assets/restore-an-asset-or-folder#restore-a-folder), then return to the asset's row and click Restore. Contentstack returns the asset to the assets listing. ## Restore a Folder When you restore a folder, Contentstack asks whether to also restore the assets that were inside the folder when you deleted it. To restore a folder, perform the steps below: - In the **Trash** listing, locate the folder you want to restore. - On the folder's row, click the vertical ellipsis (⋮), then click **Restore**. - The **Restore [folder name]** confirmation appears. - Choose one of the following: - Restore With Assets: Restores the folder and the assets that were inside the folder when you deleted it. - Restore without Assets: Restores the folder only. The assets that were inside the folder remain in trash, and you can restore them individually afterward. **Note**: **Restore With Assets** restores only the assets that were inside the folder at the time you deleted the folder. Assets that you deleted individually before deleting the folder remain as separate items in trash. To recover those assets, restore the parent folder first, then restore each asset individually. ## Common questions ### How long can I restore an asset or folder from trash? You can restore an asset from trash within 14 days from the date of deletion. ### Why is the Restore option disabled for an asset? If you cannot click Restore for an asset, the asset's parent folder is also in trash. Restore the parent folder first, then restore the asset. ### What is the difference between “Restore With Assets” and “Restore without Assets”? “Restore With Assets” restores the folder and the assets that were inside the folder when you deleted it, while “Restore without Assets” restores only the folder and leaves the assets in trash. ### Will “Restore With Assets” restore assets deleted before the folder was deleted? No. “Restore With Assets” restores only the assets that were inside the folder at the time you deleted the folder. Assets deleted individually before deleting the folder remain separate items in trash and must be restored individually. --- ## URL: https://www.contentstack.com/docs/assets/search-assets --- title: "Search Assets" description: "Easily find assets using Basic, Advanced, or Quick Search in Assets. Tailor your search for precise results with minimal effort." url: "https://www.contentstack.com/docs/assets/search-assets" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: search-assets.md --- # Search Assets Search in Assets allows you to quickly locate assets. Whether you need a single file or a group of related assets, you can use Basic Search for quick lookups or Advanced Search for precise, multi-condition queries. ## Basic Search Basic Search scans across various fields to help you find assets with minimal effort. 1. Navigate to **Assets** through “App Switcher”. 2. Locate the search bar at the top of the asset listing page. 3. Use the dropdown to choose your search scope: * **All**: Searches across all available fields of all assets. * **Title**: Limits search to asset titles only. * **URL**: Limits search to the URL field of assets. Example: To find a PDF asset titled “Product Catalog 2025”, select **Title**, type “Product Catalog 2025”, and the results display the matching assets. **Tip:** You can also use partial search. * Type the beginning of a keyword (e.g., “cat”) to match “catalog” or “category”. * Use an asterisk (\*) for suffix/infix matches (e.g., “\*alog” matches “catalog”). ## Advanced Search Advanced Search gives you fine-grained control by allowing you to build queries with multiple conditions. 1. On the asset listing page, click **Advanced Search** next to the search bar. 2. Choose whether to **Match All Conditions** (AND logic) or **Match Any Condition** (OR logic). 3. Define your search conditions by selecting: * **Field**: Options include asset type, published environment, published by, created at, modified by, tags, UID, and more. * **Operator**: Depends on the data type (equals, contains, empty, and more). * **Value**: The specific input to match. 4. Add more conditions with **\+ New Condition**, or group logic with **\+ New Sub-condition**. 5. Click **Search** to run the query. Example: Build a query to find: * All JPEG images (Asset Type = JPEG) * Uploaded by John Doe (Created By = John Doe) * Between January 1–March 31, 2025 (Created At between dates) **Additional Resource:** Refer to the [Real-world Scenarios](/docs/headless-cms/localization-operator-real-world-scenarios) section for more advanced search examples. ## Quick Search You can also perform a quick search from anywhere in Asset Management or your stack. 1. Press Ctrl + K (Windows/Linux) / ⌘ + K (Mac) or click the “Quick search” icon to open quick search. 2. Select **Assets** from the dropdown. 3. Enter your search terms. --- ## URL: https://www.contentstack.com/docs/assets/unlocalize-an-asset --- title: "[AM2.0] - Unlocalize an Asset" description: Unlocalizing an asset removes its language-specific customization and restores inheritance from the default language. url: https://www.contentstack.com/docs/assets/unlocalize-an-asset product: Contentstack doc_type: how-to audience: - developers - content-managers version: AM2.0 last_updated: 2026-03-25 filename: unlocalize-an-asset.md --- # [AM2.0] - Unlocalize an Asset This page explains how to unlocalize an asset so it stops using language-specific metadata/content and inherits values from the default language again. It is intended for users managing localized assets and should be used when a localized version is no longer needed or needs to be realigned with the master language. ## Unlocalize an Asset Unlocalizing an asset removes its language-specific customization and restores inheritance from the default language. After unlocalization, the asset no longer maintains independent metadata or content for that language and instead fetches all values from the default language again. This is useful when a localized version is no longer needed or when you want to realign the asset with the master language. To unlocalize an asset, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps given below: - Navigate to **Assets**. - Open the required asset from the **Assets** section. - From the language selector, select the localized language you want to remove. - Click the horizontal ellipsis in the top-right corner of the asset details page. - Select **Unlocalize**. - In the confirmation dialog, click **Unlocalize** to confirm the action. Once the asset is unlocalized: - The asset reverts to the default language version for the selected language. - All localized metadata and content are permanently discarded. - The asset resumes inheriting content from the default language. **Note:** The language continues to be available for future localization if required. ## Common questions **Q: What happens to localized metadata and content after unlocalizing an asset?** A: All localized metadata and content are permanently discarded. **Q: Does unlocalizing remove the language from being used again later?** A: No. The language continues to be available for future localization if required. **Q: Where do the asset values come from after unlocalization?** A: The asset fetches all values from the default language again. **Q: When should I unlocalize an asset?** A: When a localized version is no longer needed or when you want to realign the asset with the master language. --- ## URL: https://www.contentstack.com/docs/assets/upload-assets --- title: "Upload Assets" description: "Easily manage and upload diverse media assets in Contentstack. Keep content organized and accessible with drag-and-drop and filtering features." url: "https://www.contentstack.com/docs/assets/upload-assets" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: upload-assets.md --- # Upload Assets You can upload assets directly to the assets listing page. Assets supports a wide range of file types, including images, videos, documents, and other media files. Uploading assets ensures your content and media remain organized, accessible, and reusable across projects. To upload assets, log in to your [Contentstack account](https://www.contentstack.com/login/) and perform the steps below: 1. Navigate to the **Assets** listing page within your space. 2. Drag and drop files from your computer into the listing area, or click **\+ New** and click **Upload File**. **Note:** Select or drag and drop up to **100 assets** at once. The size of an asset should not exceed **1.5 GB**. 3. Browse your local system and select the files you want to upload. 4. Click **Open**. **Note:** You cannot drag and drop folders. Instead, [create a folder](/docs/assets/create-a-folder) and upload files into it. Uploaded assets appear in the assets listing. You can apply filters, sort, or organize them into folders. --- ## URL: https://www.contentstack.com/docs/assets/view-system-metadata --- title: "View System Metadata" description: "Discover the essentials of system metadata in Contentstack. Learn how it tracks asset history, identity, and more for seamless governance and audit." url: "https://www.contentstack.com/docs/assets/view-system-metadata" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: view-system-metadata.md --- # View System Metadata Every asset in Contentstack automatically includes system metadata. This metadata is generated and maintained by the system, ensuring accuracy and consistency. It is non-editable, meaning you cannot change it manually. System metadata provides details such as file identity, type, size, and activity history. It supports traceability, governance, and audit requirements by capturing who created, modified, and last updated the asset. ## How to View System Metadata 1. Open the asset you want to review. 2. In the right-hand panel, click the “Non-Editable Metadata” icon. 3. The **System Metadata** section displays all system-managed fields. ## Common System Metadata Fields * **File Name**: Original name of the uploaded file. * **UID**: Unique identifier automatically generated by Contentstack. * **File URL**: Automatically generated based on the filename and follows the pattern: ``` https://{base_url}/spaces/{space_uid}/assets/{asset_uid}/{file_uid}/{file_name}?locale={locale}&organization_uid={org_uid} ``` * **Permanent URL**: Once generated, the URL remains constant, even after modifications to the asset. **Note:** Every save or update creates a new asset version. The permanent URL remains the same across all versions, ensuring a consistent reference point. * **MIME Type**: Technical content type (e.g., image/jpeg, application/pdf). * **Asset Type**: System or custom type assigned (e.g., jpeg\_jpg). * **File Size**: File size in kilobytes (KB) or megabytes (MB). * **Created By / Modified By**: Users who created and last modified the asset. * **Created At / Last Modified At**: System timestamps for asset creation and modification. System metadata provides a trusted source of truth for asset identity, history, and technical details. --- ## URL: https://www.contentstack.com/docs/assets/whats-changed-for-admins-and-developers --- title: "[AM2.0] - What’s Changed for Admins and Developers" description: Changes in AM2.0 affecting admins and developers, including asset organization, governance, permissions, and stack-to-space linking. url: https://www.contentstack.com/docs/assets/whats-changed-for-admins-and-developers product: Contentstack Assets doc_type: article audience: - admins - developers - asset-managers version: AM2.0 last_updated: 2026-03-25 filename: whats-changed-for-admins-and-developers.md --- # [AM2.0] - What’s Changed for Admins and Developers This page explains what changed in Contentstack Assets AM2.0 for admins and developers, focusing on how assets are organized, governed, and reused across stacks and spaces. Read this when you are planning migrations, updating governance/permissions, or implementing cross-stack asset reuse. ## What’s Changed for Admins and Developers Contentstack Assets rethinks how assets are organized, governed, and reused across Contentstack. Instead of being tightly coupled to individual stacks, assets are now managed in a dedicated system designed for scale, reuse, and intelligent discovery. This shift benefits everyday users, admins, developers, and asset managers in different but meaningful ways. Better separation between CMS and assets: - Asset permissions are managed independently from CMS content roles. - This avoids over-permissioning users who only need asset access. New Assets Hub section in stack settings: - Stacks can now be linked to one or more spaces. - Assets are consumed by stacks, not owned by them, enabling true cross-stack reuse. Contentstack Assets treats digital properties as a first-class system, not a side feature of CMS, making assets easier to find, reuse, and govern, while supporting real-world use cases like multi-site reuse, campaigns, and localization; this scales cleanly for growing teams and complex organizations, making it not just an upgrade, but a foundation for managing digital assets at scale. ## Common questions ### Do stacks still own assets in AM2.0? No. Assets are consumed by stacks, not owned by them, enabling true cross-stack reuse. ### How are permissions handled differently in AM2.0? Asset permissions are managed independently from CMS content roles, which avoids over-permissioning users who only need asset access. ### Where do I configure stack-to-space linking? In the new Assets Hub section in stack settings, where stacks can be linked to one or more spaces. ### Who benefits from this change? Everyday users, admins, developers, and asset managers benefit in different but meaningful ways. --- ## URL: https://www.contentstack.com/docs/assets/whats-changed-for-asset-managers --- title: "[AM2.0] - What’s Changed for Asset Managers" description: Changes in Contentstack Assets AM2.0 for asset managers, including spaces as asset repositories and workspaces for safe iteration. url: https://www.contentstack.com/docs/assets/whats-changed-for-asset-managers product: Contentstack Assets doc_type: overview audience: - asset-managers - admins - developers - users version: AM2.0 last_updated: 2026-03-25 filename: whats-changed-for-asset-managers.md --- # [AM2.0] - What’s Changed for Asset Managers This page explains what changed in Contentstack Assets AM2.0 for asset managers and related roles, focusing on how assets are organized and governed using spaces and workspaces. Read this when adopting AM2.0 or planning asset organization, reuse, and iteration workflows across stacks and teams. ## What’s Changed for Asset Managers Contentstack Assets rethinks how assets are organized, governed, and reused across Contentstack. Instead of being tightly coupled to individual stacks, assets are now managed in a dedicated system designed for scale, reuse, and intelligent discovery. This shift benefits everyday users, admins, developers, and asset managers in different but meaningful ways. ## Spaces as asset repositories - Assets are organized into spaces that act as central repositories for brands, teams, or initiatives. - A single space can serve multiple stacks or act as a global brand asset library. ## Workspaces for safe iteration - Every space starts with a default (primary) workspace. - Additional workspaces can be created to experiment with assets without affecting the main set. - This model works like branching, allowing controlled updates and future merges. Contentstack Assets treats digital properties as a first-class system, not a side feature of CMS, making assets easier to find, reuse, and govern, while supporting real-world use cases like multi-site reuse, campaigns, and localization; this scales cleanly for growing teams and complex organizations, making it not just an upgrade, but a foundation for managing digital assets at scale. ## Common questions ### What is the main change in AM2.0 for asset organization? Assets are no longer tightly coupled to individual stacks and are instead managed in a dedicated system designed for scale, reuse, and intelligent discovery. ### What is a space used for? Spaces act as central repositories for assets for brands, teams, or initiatives, and a single space can serve multiple stacks or act as a global brand asset library. ### Why would I create additional workspaces? Additional workspaces can be created to experiment with assets without affecting the main set, enabling controlled updates and future merges. ### How do workspaces relate to branching? The workspace model works like branching, allowing safe iteration and controlled updates before merging changes into the primary workspace. --- ## URL: https://www.contentstack.com/docs/assets/whats-changed-for-users --- title: "[AM2.0] - What’s Changed for Users" description: Changes in Contentstack Assets (AM2.0) that affect everyday users, including asset discovery, details, and stack listing updates. url: https://www.contentstack.com/docs/assets/whats-changed-for-users product: Contentstack Assets doc_type: article audience: - users - admins - developers - asset-managers version: AM2.0 last_updated: 2026-03-25 filename: whats-changed-for-users.md --- # [AM2.0] - What’s Changed for Users This page explains what’s changed in Contentstack Assets (AM2.0) for users who find, manage, and reuse assets across Contentstack. Read this if you work with asset discovery, metadata, image understanding, or need to understand how the shift from stack-coupled assets to spaces impacts day-to-day workflows. ## What’s Changed for Users Contentstack Assets rethinks how assets are organized, governed, and reused across Contentstack. Instead of being tightly coupled to individual stacks, assets are now managed in a dedicated system designed for scale, reuse, and intelligent discovery. This shift benefits everyday users, admins, developers, and asset managers in different but meaningful ways. Finding assets is faster and more intuitive: - The asset listing page now includes powerful filters such as asset type, size, dimensions, color, language, creator, and user-defined metadata. - Custom size and dimension ranges make it easier to narrow down large image libraries. - Filters appear as chips, so refining or clearing searches is simple. Clearer asset details: - Editable metadata (title, description, tags, custom fields) is separated from system metadata (file size, URLs, UID). - AI-powered suggestions help generate tags and descriptions automatically. - Visual markups and bounding boxes improve how images can be understood and reused. Stack listing changes: - Asset counts are no longer shown on stack cards, since assets now live in spaces and may be shared across multiple stacks. Contentstack Assets treats digital properties as a first-class system, not a side feature of CMS, making assets easier to find, reuse, and govern, while supporting real-world use cases like multi-site reuse, campaigns, and localization; this scales cleanly for growing teams and complex organizations, making it not just an upgrade, but a foundation for managing digital assets at scale. ## Common questions **What is the main change in AM2.0 for assets?** Assets are no longer tightly coupled to individual stacks and are now managed in a dedicated system designed for scale, reuse, and intelligent discovery. **What new ways can users filter and find assets?** Users can use filters such as asset type, size, dimensions, color, language, creator, and user-defined metadata, including custom size and dimension ranges, with filters displayed as chips. **What’s different about asset details and metadata?** Editable metadata (title, description, tags, custom fields) is separated from system metadata (file size, URLs, UID), and AI-powered suggestions can help generate tags and descriptions automatically. **Why don’t stack cards show asset counts anymore?** Asset counts are no longer shown on stack cards because assets now live in spaces and may be shared across multiple stacks. --- ## URL: https://www.contentstack.com/docs/brand-kit --- title: "Brand Kit" description: "Centralize your brand's identity with Contentstack Brand Kit: define voice profiles, build a knowledge vault, and deliver consistent on-brand content." url: "https://www.contentstack.com/docs/brand-kit" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-03-16" filename: brand-kit.md --- # Brand Kit A one-stop-shop for managing and showcasing your brand's unique identity. ## Explore Brand Kit ### Get Started with Brand Kit Set up Brand Kit and create your first kit to start generating consistent, on‑brand content. [Learn more](https://www.contentstack.com/brand-kit/get-started-with-brand-kit) ### Manage Brand Kits Create, edit, or delete Brand Kits, and invite collaborators to manage access and ownership. [Learn more](https://www.contentstack.com/brand-kit/about-brand-kit) ### Voice Profiles Define and manage your brand voice: create, edit, delete, and import/export voice profiles. [Learn more](https://www.contentstack.com/brand-kit/about-voice-profile) ### Knowledge Vault Build your brand knowledge base: add, update, remove, and import/export approved source material. [Learn more](https://www.contentstack.com/brand-kit/about-knowledge-vault) ### Explore APIs Use Brand Kit APIs to manage Brand Kits, Voice Profiles, and Knowledge Vault content programmatically. [Learn more](https://www.contentstack.com/docs/developers/apis/brand-kit-management-api) ### More about Brand Kit Use Brand Kit with AI Assistant, integrate using the Brand Kit Connector, and refer to FAQs when needed. [Learn more](https://www.contentstack.com/brand-kit/faqs) --- ## URL: https://www.contentstack.com/docs/brand-kit/about-brand-kit --- title: "[Brand Kit] - About Brand Kit" description: Overview of Contentstack Brand Kit as a centralized repository for brand identity and guidelines. url: https://www.contentstack.com/docs/content-managers/brand-kit/about-brand-kit product: Contentstack doc_type: overview audience: - content-managers version: current last_updated: 2026-03-26 filename: about-brand-kit.md --- # [Brand Kit] - About Brand Kit This page explains what Contentstack’s Brand Kit is and what it’s used for. It’s intended for content managers and content creators who need to understand how Brand Kit supports creating consistent, on-brand content and guidelines across digital channels. ## About Brand Kit Contentstack's Brand Kit serves as a centralized repository for your organization's brand identity and guidelines, offering a comprehensive array of product details and overall brand persona. With Brand Kit, you can start creating content closely aligned with the organization's linguistic identity. This information can be tailored to your specific needs, preferences, and how you represent your product. Brand Kit allows you to consolidate, style rules, tone of voice, and other key branding elements, which helps content creators to generate personalized, on-brand materials that maintain a consistent, authentic brand experience across all digital touchpoints. ## Common questions ### Who should use Brand Kit? Content managers and content creators who need a centralized place for brand identity, guidelines, and tone of voice to create consistent content. ### What kind of information does Brand Kit centralize? Your organization's brand identity and guidelines, including product details, overall brand persona, style rules, and tone of voice. ### What is the main benefit of using Brand Kit? It helps generate personalized, on-brand materials that maintain a consistent, authentic brand experience across all digital touchpoints. --- ## URL: https://www.contentstack.com/docs/brand-kit/about-knowledge-vault --- title: "About Knowledge Vault" description: "Explore the Knowledge Vault - a centralized repository that stores all your brand-related content." url: "https://www.contentstack.com/docs/brand-kit/about-knowledge-vault" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: about-knowledge-vault.md --- # About Knowledge Vault The Knowledge Vault is a powerful tool designed to help create on-brand AI-generated content by storing critical company information, such as brand-related documents, data and content, and making it available to generative AI for content creation. Unlike a traditional database that stores exact copies of images, documents and text, the Knowledge Vault is a vector database, which stores data as numerical representations, or vectors, that capture the meaning and context of information instead. A vector database enables more intelligent searches based on the meaning behind the words, known as a semantic search. This allows AI to understand and retrieve information that is contextually relevant for the content that is being created, even if the exact words don't match. ## How does Knowledge Vault Work? When you upload content to the Knowledge Vault, it doesn't store the full document in its original format like a PDF file. Instead, it extracts the text from your content and converts it into vectors, positioning it in a **vector space** based on its semantic meaning. This enables AI to perform more nuanced searches and generate content that is more aligned with your brand's voice and guidelines. So, while you won't be able to retrieve the original file directly from the Knowledge Vault, if you store the external ID from a separate Digital Asset Management (DAM) system, you could, in theory, retrieve the associated file from there. The AI will still use the embedded knowledge to create content that accurately reflects your brand's identity and messaging. ## Knowledge Vault Features The following are the key features of the Knowledge Vault: 1. **Centralized Repository**: Consolidates all your brand's documents, data, and content into one easily accessible location, ensuring everything is organized and within reach. 2. **Brand Information Storage**: Securely stores essential materials, including brand guidelines, product details, help center information, and historical content, safeguarding your brand's legacy and identity. 3. **Generative AI Reference**: Acts as an authoritative source for Contentstack's generative AI, ensuring that any generated content is consistent with your brand's voice, style, and identity. 4. **Consistency and Accuracy**: Maintains uniformity and precision across all digital platforms by centralizing all brand information, thereby reinforcing your brand's integrity. 5. **Content Creation Support**: Allows content creators, developers, and marketers to easily access and reference essential brand information while developing new content. ## Ingesting Items into the Knowledge Vault There are three methods to add content in to the Knowledge Vault: * **Using the Knowledge Vault Interface**: You can add and update items in the Knowledge Vault via its interface. For more details, refer to the [Add Item in Knowledge Vault](/docs/brand-kit/add-item-in-knowledge-vault) and [Edit Item in Knowledge Vault](/docs/brand-kit/edit-item-in-knowledge-vault) guides. * **Using the Automate Brand Kit Connector**: You can load items into the Knowledge Vault by using the [Create an Item in Knowledge Vault](/docs/agent-os/brand-kit#create-an-item-in-knowledge-vault) action within the Automate [Brand Kit](/docs/agent-os/brand-kit) Connector. * **Using the Knowledge Vault API**: You can add items into the Knowledge Vault by using the [Ingest Content](/docs/developers/apis/knowledge-vault-api/knowledge-vault#ingest-content-item) request in the [Knowledge Vault](/docs/developers/apis/knowledge-vault-api/knowledge-vault) API. ## Related Resource * [Knowledge Vault API](/docs/developers/apis/knowledge-vault-api/knowledge-vault) ## Tutorial Video --- ## URL: https://www.contentstack.com/docs/brand-kit/about-voice-profile --- title: "About Voice Profiles" description: "Understand the Contentstack voice profile and tone of communication to maintain consistent brand messaging across all channels and content types." url: "https://www.contentstack.com/docs/brand-kit/about-voice-profile" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: about-voice-profile.md --- # About Voice Profiles Contentstack’s Brand Kit lets you define your brand’s unique voice with Voice Profiles. These go beyond just tone and style, capturing the personalities that give your brand its voice. Each Voice Profile details writing styles, preferred tones, and even quirks of the people who shape your brand’s communication. This lets you personify your brand and ensure all content feels authentic and human-like. Brand Kit's AI Voice Profiles can learn your brand's language and style. These AI-generated voices can then be applied to your content, to ensure consistent and authentic communication across all your digital channels. The **Playground** feature within Voice Profiles offers a space to experiment and refine your Voice Profiles. By inputting prompts and observing how various settings influence content generation, you can make real-time adjustments. Furthermore, the integration of **Knowledge Vault** enhances brand alignment, ensuring your content remains consistent with your brand's voice. To create Voice Profiles, follow the instructions provided in the [Create a Voice Profile](/docs/brand-kit/create-a-voice-profile) documentation. ## Related Resource * [Brand Kit Management API: Voice Profile](/docs/developers/apis/brand-kit-management-api/voice-profile) ## Tutorial Video --- ## URL: https://www.contentstack.com/docs/brand-kit/add-item-in-knowledge-vault --- title: "Add Item in Knowledge Vault" description: "Learn to store, manage, access content across channels with Contentstack's Knowledge Vault and add text or upload PDFs." url: "https://www.contentstack.com/docs/brand-kit/add-item-in-knowledge-vault" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: add-item-in-knowledge-vault.md --- # Add Item in Knowledge Vault The Knowledge Vault provides a centralized repository for storing, managing, and accessing content across various channels. You can easily add items into the Knowledge Vault by using its intuitive UI, the [Brand Kit Connector](/docs/agent-os/brand-kit/) in Automate, or the [Knowledge Vault APIs](/docs/developers/apis/knowledge-vault-api/knowledge-vault). In this guide, we will learn how to add items into the Knowledge Vault using the UI. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Brand Kit-enabled Organization with [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to add an item using Manual Text Entry. * How to add an item by uploading a PDF or TXT file. * How to organize items into folders. * How to move items between folders. ## Steps for Execution To add an item in Brand Kit Knowledge Vault, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to App Switcher in the top-right corner and select **Brand Kit**. 2. Select the **Brand Kit** in which you want to add a Knowledge Vault item. 3. Click **Knowledge Vault**. **Additional Resource**: To import an item in Knowledge Vault, refer to the [Import Item in Knowledge Vault](/docs/brand-kit/import-item-in-knowledge-vault) document. 4. In the **Add Item** modal, you have two options to add items into the Knowledge Vault:![4-Knowledge-Vault-Add-Item](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted4d956928c93975/66d86366bbafa70ee55d1036/4-Knowledge-Vault-Add-Item.png) 1. **Manual Text Entry**: Select **Manual Text Entry** and click **Add** to directly add text in the corresponding screen that opens. Enter **Name**, **Text Content** in the editor, and click **Save** to add the item in the Knowledge Vault.![5-Knowledge-Vault-Add-Item-Via-Manual-Text-Entry](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt54975859eef6c2f9/66d86430e13d362105fcac3c/5-Knowledge-Vault-Add-Item-Via-Manual-Text-Entry.png) 2. **File Upload**: Select **File Upload** to upload a text document and click **Add** to proceed to the corresponding screen. Now, perform the following steps: 1. Enter the **Name** and upload a PDF or TXT file. After uploading the file, the text is extracted from the uploaded document using the **Text Generation** process.![6-Knowledge-Vault-Add-Item-File-Upload-Details](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta13bb3163bf617f9/66ebd7490cec2051acf3c0c4/6-Knowledge-Vault-Add-Item-File-Upload-Details.png) **Note**: * The file must not be empty and must contain some textual content. * If the **Name** field is empty, an auto-generated title will be applied to the item upon saving. 2. If the Text Generation process fails, click the **Retry** button to reinitiate the process. 3. After successful text extraction, review the text in the **Preview File Text** field. You can also update the text.![7-Knowledge-Vault-Add-Item-File-Upload-Preview](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt558033b95b0bc394/66ebd7498e312b02ba20c0c1/7-Knowledge-Vault-Add-Item-File-Upload-Preview.png) 4. Click **Save** to add the item in the Knowledge Vault.![8-Knowledge-Vault-Add-Item-File-Upload-Save](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6c59fd14adcdac2c/66ebd74a36f3bd2027406cf9/8-Knowledge-Vault-Add-Item-File-Upload-Save.png) 5. You can also add the subfolders for grouping items in Knowledge Vault by clicking the **Folder** icon from the top-right corner.![Knowledge-Vault-Folder](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2f30d1cf8acdfb7b/6800f1e99dd5cf88899a2257/Knowledge-Vault-Folder.png) In the **New Folder** modal, enter the **Name** and click **Save** to create a new folder. ![Knowledge-Vault-Folder-Modal](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt305191d023b6310e/6800f1e90bdcf1c18e5f897c/Knowledge-Vault-Folder-Modal.png) Now you can add items in the newly created folder. 6. You can also move the items in a folder or from one folder to another. Click the corresponding vertical ellipses under the **Actions** tab, and then click the **Move To** option.![Knowledge-Vault-Items-Move-To-Option](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltae93aa19291d651f/6800f1ea15d4c54621922b22/Knowledge-Vault-Items-Move-To-Option.png) In the **Move To** modal, you can search for a folder, apply filters, or add a new folder to move the items respectively. ![Knowledge-Vault-Items-Filter-And-Add-Folder](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6cdca49a2063d348/6800f1e9e7161ece7aa29b44/Knowledge-Vault-Items-Filter-And-Add-Folder.png) Select the preferred folder and then click the **Move here** button to relocate the item to the selected folder. ![Knowledge-Vault-Items-Move-Here](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt92fc2beee5678add/6800f1e90bdcf153935f8980/Knowledge-Vault-Items-Move-Here.png) 7. After successfully adding items and folders, you can view them in the Knowledge Vault dashboard.![Knowledge-Vault-Items-And-Subfolders](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdd5408958ebcbcf2/6800f1eae696da87e35a4869/Knowledge-Vault-Items-And-Subfolders.png) ## Related Resource * [Knowledge Vault API: Ingest Content Item](/docs/developers/apis/knowledge-vault-api/knowledge-vault#ingest-content-item) --- ## URL: https://www.contentstack.com/docs/brand-kit/create-a-brand-kit --- title: "Create a Brand Kit" description: "Create and set up your Brand Kit with this step-by-step guide." url: "https://www.contentstack.com/docs/brand-kit/create-a-brand-kit" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: create-a-brand-kit.md --- # Create a Brand Kit Brand Kit helps you organize all your voice profiles in one location in an organized manner. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Brand Kit-enabled Organization with [Owner or Admin](/docs/administration/about-administration-roles) permissions ## Steps for Execution To create a Brand Kit, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to App Switcher in the top-right corner and select **Brand Kit**. 2. You will be directed to the Brand Kits landing page where you will find your previously created Brand Kits. To create a new one, click the **\+ New Brand Kit** button. 3. In the **Create Brand Kit** modal, enter the **Brand Kit Name** and **Description** (optional). Then, **Select Stack(s)** from the dropdown and click **Create Brand Kit**.![3-Create-Brand-Kit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta2b1aa20ca843f52/665640d0e4a73285f497789f/3-Create-Brand-Kit.png) This creates your Brand Kit, and it now appears on the Brand Kits landing page or the dashboard. **Note**: * If you are a member of an organization with Brand Kit enabled, you can only view or manage the Brand Kits you create or collaborate on. * The organization admins have access to all Brand Kits created within the organization and can perform CRUD (Create, Read, Update, Delete) operations on them. * Selecting one or multiple stacks (during the stack selection step as discussed above) will sync the stack variables in the Environments settings. * The maximum number of Brand Kits allowed per organization is **50**. After successfully creating the Brand Kit, you can start [creating Voice Profiles](/docs/brand-kit/create-a-voice-profile) in it. ## Related Resource * [Brand Kit Management API: Create Brand Kit](/docs/developers/apis/brand-kit-management-api/brand-kit#create-brand-kit) ## Tutorial Video --- ## URL: https://www.contentstack.com/docs/brand-kit/create-a-voice-profile --- title: "Create a Voice Profile" description: "Create distinct Voice Profiles for your brand by adding tone and styles with our Contentstack Brand Kit." url: "https://www.contentstack.com/docs/brand-kit/create-a-voice-profile" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: create-a-voice-profile.md --- # Create a Voice Profile Voice Profiles allows you to define unique AI-generated brand voices that you can apply to your content. **Note**: Each organization can create a maximum of **100 Voice Profiles** within each Brand Kit. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Brand Kit-enabled Organization with [Owner or Admin](/docs/administration/about-administration-roles) permissions, or as [Collaborator](/docs/brand-kit/invite-collaborators) ## Steps for Execution To create a Voice Profile in Brand Kit, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to App Switcher in the top-right corner and select **Brand Kit**. 2. Select the **Brand Kit** in which you want to create a Voice Profile. 3. You will be navigated to the **Voice Profile** landing page. If there are any Voice Profiles already created, they will appear here. To create a new one, click the **\+ New Voice Profile** button and select **Add Manually**.![3-Click-+-New-Voice Profile](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2b98f792d543302e/687fb4f5febffa33c9528bf3/3-Click-_-New-Voice_Profile.png) **Additional Resource**: To import the Voice Profile, refer to the [Import a Voice Profile](/docs/brand-kit/import-a-voice-profile/) document 4. ### Create a Voice Profile On the **Create Voice Profile** page, enter the following details: 1. **Voice Profile Name** (required): Enter a suitable name for your Voice Profile. 2. **Description** (optional): Enter an appropriate Voice Profile description.![4-Create-Voice-Profile-Name-And-Description](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc7e8d1bdf2c12676/665652f61f92d13c162804df/4-Create-Voice-Profile-Name-And-Description.png) 3. **Communication Style Mixer**: The Communication Style Mixer is a critical element of your brand identity, defining how your organization interacts with customers. In this section, you can set the following parameters: * **Formality Level**: You can set the formality level from **None**, **Casual**, **Business**, to **Professional**. Let’s discuss in detail: * **None**: Generic content without any specifications * **Casual**: Uses an informal but engaging tone that makes content more compelling. **Example**: "It’s true, nobody really enjoys grocery shopping. Here's five ways to make it less painful." * **Business**: Employs clear and concise language that maintains a tone suitable for business settings, you can set this parameter accordingly. **Example**: "Please note that customer support is available 24/7 via our online customer portal." * **Professional**: Uses polished language often found in legal documents or important announcements. **Example**: "We are pleased to announce the official launch of our new product line." * **Tone Of Voice**: You can set the tone of voice from **None**, **Informative**, **Assertive**, to **Persuasive**. Let’s discuss in detail: * **None**: Generic content without any specifications. * **Informative**: Delivers facts in a neutral way, without opinions or personal slants. **Example**: "The report shows a 15% increase in sales." * **Assertive**: Presents arguments and ideas with confidence, making clear recommendations. **Example**: "This method is the most effective based on our research." * **Persuasive**: Uses strong arguments and emotional appeals to influence action or belief. **Example**: "Upgrade now and unlock exclusive features to transform your experience!" * **Humor Level**: You can set the humor level from **None**, **Serious**, **Subtle**, to **Lighthearted**. Let’s discuss in detail: * **None**: Generic content without any specifications. * **Serious**: Maintains a strictly professional tone, avoiding humor altogether. **Example**: "Lack of data security can have serious consequences." * **Subtle**: Uses light touches of humor or wit to keep the audience engaged without compromising professionalism. **Example**: "Here are ten tips for writing email subject lines that won’t end up in the dreaded spam folder." * **Lighthearted**: Incorporates relevant humor to connect with the audience and create a more playful atmosphere. **Example**: "Sometimes my biggest accomplishment of the day is simply remembering to mute myself during a virtual meeting." * **Language Complexity Level**: You can set the language complexity level from **None**, **Plain**, **Straightforward**, to **Technical**. Let’s discuss in detail: * **None**: Generic content without any specifications. * **Plain**: Uses everyday words that are clear and understandable to a broad audience. **Example**: "Turn on the device and follow the on-screen instructions." * **Straightforward**: Employs clear communication, potentially including industry-specific terms relevant to the target audience. **Example**: "The ROI of this investment is significant." * **Technical**: Leverages advanced concepts and specialized vocabulary for audiences with prior knowledge. **Example**: "The software leverages machine learning algorithms for optimization." ![5-Create-Voice-Profile-Communication-Style-Mixer](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt623be74270db84ed/665652fc20b6e04e62facf15/5-Create-Voice-Profile-Communication-Style-Mixer.png) 4. **Custom Details**: Custom Details includes two entities: **Insights** and **Sample Content**: * **Insights**: Insights are the additional information that you can provide to the AI model. **Example**: Monitor industry trends, experiment with new content formats and strategies, incorporate ethical AI practices. * **Sample Content**: You can provide sample content to your Voice Profile to generate similar content in action. **Example**: Navigating the AI Landscape: Essential Insights for Aspiring Bloggers. Explore the fundamentals of AI, uncover your niche, leverage AI tools, engage with the community, and address ethical considerations to succeed as an AI blogger. ![6-Create-Voice-Profile-Custom-Details](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta43340d766df8275/66565303cac129fb3a4b07a8/6-Create-Voice-Profile-Custom-Details.png) 5. ### Playground in Voice Profile Playground lets you experiment with prompts to test and refine your Voice Profiles. Inside this section, you can perform the following operations: 1. **Enable Knowledge Vault**: Enable this button to generate content through the Knowledge Vault. 2. **Enter Prompt**: Enter your topic or content idea into the **Provide Prompt** field. 3. **Generate Response**: Click the **Generate Response in Playground** button to generate the content.![7-Playground](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7afe86d11c7bb0fc/66d8ac181be6e16206246a6b/7-Playground.png) The content generation initiated in the right side **Playground** panel. ![8-Playground-Panel](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdaf864ab5f0a401c/66d8ac1896357f332bfd31d1/8-Playground-Panel.png) 4. **Stop Content Generation** (optional): Click **Stop Generating Response** option to halt the process.![9-Playground-Stop-Generating-Response](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt624902504d954ff3/66d8ac18661b345fc0b36cf5/9-Playground-Stop-Generating-Response.png) 5. **View/Hide Response**: Use the highlighted icon, to toggle the response display.![10-Playground-Icon](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc781513ca1ced287/66d8ac1926adee0692f69c32/10-Playground-Icon.png) 6. **Regenerate or Copy Generated Content**: After the content is generated, you can see two options: 1. **Regenerate**: This option allows you to regenerate the content. 2. **Copy**: Copy the content to clipboard and use it further if required. ![11-Playground-Regenerate-And-Copy](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4c7020adfb1e48e5/66d8ac19d742976ae6623069/11-Playground-Regenerate-And-Copy.png) 7. **Clear Prompt**: Click **Clear Prompt** to start a new prompt.![12-Playground-Clear-Prompt](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt087a8f2c8b2e27cc/66d8ac1964f9c8d690a73803/12-Playground-Clear-Prompt.png) **Warning**: The generated content will not be saved in the history and will be cleared once you click the **Save** button. 6. Once you have added these details to your Voice Profile, click **Save**.![13-Save-Voice-Profile](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt54d8c06e9046551b/66d8ac19a2a54f1297fd9493/13-Save-Voice-Profile.png) You will get a success message after the Voice Profile is created. You can view its details by clicking the **Information** icon on the right-side navigation panel. ![14-View-Voice-Profile](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt115768431b0cad08/66d8ac19250400fb8bf529bb/14-View-Voice-Profile.png) **Additional Resource**: To generate content specifically in the entry’s [fields](/docs/headless-cms/about-fields), refer to the [AI Assistant with Brand Kit](/docs/marketplace/ai-assistant-with-brand-kit) documentation. ## Related Resource * [Brand Kit Management API: Create Voice Profile](/docs/developers/apis/brand-kit-management-api/voice-profile#create-voice-profile) --- ## URL: https://www.contentstack.com/docs/brand-kit/delete-a-brand-kit --- title: "Delete a Brand Kit" description: "Delete your Brand Kit and associated Voice profiles within Contentstack by following our step-by-step guide." url: "https://www.contentstack.com/docs/brand-kit/delete-a-brand-kit" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: delete-a-brand-kit.md --- # Delete a Brand Kit In this guide, we will discuss the steps required to delete a Brand Kit. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Brand Kit-enabled Organization with [Owner or Admin](/docs/administration/about-administration-roles) permissions **Note**: Organization **Owner** and **Admin** can delete Brand Kits, whereas Organization **Member** can view the associated Brand Kits. * An existing [Brand Kit](/docs/brand-kit/create-a-brand-kit) ## Steps for Execution **Warning**: Deleting a Brand Kit deletes all its associated Voice Profiles as well. This action automatically unlinks the Brand Kit from its associated stacks. Once deleted, you cannot recover the Brand Kit and its Voice profiles. To delete a Brand Kit, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to App Switcher in the top-right corner and select **Brand Kit**. 2. Select the **Brand Kit** that you want to delete. 3. Click Brand Kit **Settings**. 4. Scroll down to the **Delete Brand Kit** section. Read the instructions carefully and click the **Delete Brand Kit** button to delete the Brand Kit.![4-Delete-Brand-Kit-Button](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt44460f92e89917e9/66564ded6bf5e07e52af44d0/4-Delete-Brand-Kit-Button.png) 5. In the **Delete Brand Kit** modal, type **DELETE** in the text field and click the **Delete** button to delete the Brand Kit permanently.![5-Brand-Kit-Delete-Button](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2a54d322f3cec1b7/66564df43a9364f5228c8daa/5-Brand-Kit-Delete-Button.png) You will get a success message when the Brand Kit is deleted. **Note**: No email notification is triggered after deleting the Brand Kit. ## Related Resource * [Brand Kit Management API: Delete Brand Kit](/docs/developers/apis/brand-kit-management-api/brand-kit#delete-brand-kit) --- ## URL: https://www.contentstack.com/docs/brand-kit/delete-a-voice-profile --- title: "Delete a Voice Profile" description: "Delete a Voice Profile from Brand Kit using our step-by-step guide." url: "https://www.contentstack.com/docs/brand-kit/delete-a-voice-profile" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: delete-a-voice-profile.md --- # Delete a Voice Profile In this guide, we will discuss the steps required to delete a Voice Profile from Brand Kit. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Brand Kit-enabled Organization with [Owner or Admin](/docs/administration/about-administration-roles) permissions **Note**: Only Organization [Owner or Admin](/docs/administration/about-administration-roles), and Stack [Owner](/docs/headless-cms/types-of-roles#owner) can delete Voice Profiles. * An existing [Voice Profile](/docs/brand-kit/create-a-voice-profile) ## Steps for Execution To delete a Voice Profile, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to App Switcher in the top-right corner and select **Brand Kit**. 2. Select the **Brand Kit** whose Voice Profile you want to delete. 3. Under the **Actions** tab, click the vertical ellipses corresponding to the Voice Profile that you want to delete and then select **Delete**.![3-Delete-Voice-Profile](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltca3fc2738141668b/66566193e4a73213e29779a7/3-Delete-Voice-Profile.png) 4. In the **Delete Voice Profile** modal, click **Delete** to permanently delete the Voice Profile.![4-Delete-Voice-Profile-Button](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd04fa1027e9db3f1/6656619acac1293f854b0809/4-Delete-Voice-Profile-Button.png) You will get a success message after the Voice Profile is deleted from the Brand Kit. ## Related Resource * [Brand Kit Management API: Delete Voice Profile](/docs/developers/apis/brand-kit-management-api/voice-profile#delete-voice-profile) --- ## URL: https://www.contentstack.com/docs/brand-kit/delete-item-in-knowledge-vault --- title: "Delete Item in Knowledge Vault" description: "Learn how to delete items in the Knowledge Vault effectively and manage your data with ease and precision." url: "https://www.contentstack.com/docs/brand-kit/delete-item-in-knowledge-vault" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: delete-item-in-knowledge-vault.md --- # Delete Item in Knowledge Vault If a Knowledge Vault item is no longer required, or becomes outdated or unnecessary, you can delete it from the Knowledge Vault. In this guide, we will discuss how to delete a Knowledge Vault item. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Brand Kit-enabled Organization with [Owner or Admin](/docs/administration/about-administration-roles) permissions, or as [Collaborator](/docs/brand-kit/invite-collaborators) **Note**: Only Brand Kit **Owner** or **Admin** can delete items in the Knowledge Vault. * An existing [Knowledge Vault Item](/docs/brand-kit/add-item-in-knowledge-vault) ## What You Will Learn * How to permanently delete a single item from the Knowledge Vault. * How to delete a folder and all the items it contains. ## Steps for Execution To delete a Knowledge Vault item, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to App Switcher in the top-right corner and select **Brand Kit**. 2. Select the **Brand Kit** whose Knowledge Vault item you want to delete. 3. Click **Knowledge Vault**. 4. Under the **Actions** tab, click the vertical ellipses corresponding to the Knowledge Vault item that you want to delete and then select **Delete**.![4-Knowledge-Vault-Delete-Item](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte3395febc816efb8/6800f7cadac258beb1adde65/4-Knowledge-Vault-Delete-Item.png) 5. In the **Delete Item** modal, click **Delete** to permanently delete the Knowledge Vault item.![5-Knowledge-Vault-Delete-Item-Delete-Button](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt452659117331cfdc/66d87b4aa2a54f9b09fd916f/5-Knowledge-Vault-Delete-Item-Delete-Button.png) 6. To delete the subfolder from the Knowledge Vault, click the **Delete** option. You can also delete selected items from the folder.![4-a-Knowledge-Vault-Delete-Folder](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3ccea8903019adee/6800f7caf2c808f54f1ad2f9/4-a-Knowledge-Vault-Delete-Folder.png) **Warning**: If you delete a folder, all items within the folder will be deleted. 7. In the **Delete Folder** modal, click the **Delete** button to permanently delete the Knowledge Vault folder.![4-b-Knowledge-Vault-Delete-Folder-Modal](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt762b786f86555557/6800f7ca1930db1a08e277c6/4-b-Knowledge-Vault-Delete-Folder-Modal.png) You will get a success message once the item or folder is deleted from the Knowledge Vault. ## Related Resource * [Knowledge Vault API: Delete Content Item](/docs/developers/apis/knowledge-vault-api/knowledge-vault#delete-content-item) --- ## URL: https://www.contentstack.com/docs/brand-kit/edit-a-brand-kit --- title: "Edit a Brand Kit" description: "Edit your Brand Kit by updating the name or description, adding stacks, or unlinking them within Contentstack." url: "https://www.contentstack.com/docs/brand-kit/edit-a-brand-kit" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: edit-a-brand-kit.md --- # Edit a Brand Kit You can edit certain details of a Brand Kit from the Brand Kit settings page. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Brand Kit-enabled Organization with [Owner or Admin](/docs/administration/about-administration-roles) permissions **Note**: Organization **Owner** and **Admin** can edit Brand Kits, whereas Organization **Member** can view the associated Brand Kits. * An existing [Brand Kit](/docs/brand-kit/create-a-brand-kit) ## Steps for Execution To edit a Brand Kit, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to App Switcher in the top-right corner and select **Brand Kit**. 2. Select the **Brand Kit** that you want to edit. 3. Click the Brand Kit **Settings**. 4. On the **Settings** page, inside **General**, you can edit the **Brand Kit Details**, such as its name and description. Once you have done that, click **Save**.![4-Edit-Brand-Kit-Details](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcf686735aa4b3504/665649fa0d6347585a7a0010/4-Edit-Brand-Kit-Details.png) 5. On the same page, under the **Stack Details** section, you can add multiple stacks or unlink the already added stack to the Brand Kit. 1. To add more stacks, click the **\+ Add Stacks**.![5-Edit-Stack-Details](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2886f3dfad3dbfd7/665649ffe4a73248f49778fa/5-Edit-Stack-Details.png) From the dropdown that opens, select the desired stack and click **Save**. ![6-Edit-Add-Stack](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt41a3b7ef16fac15d/66564a04672d19fd12dc9079/6-Edit-Add-Stack.png) 2. To unlink an added stack from the Brand Kit, click the **Unlink** icon as shown in the screenshot below, and click **Save**.![7-Edit-Unlink-Stack](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt646cf9900c60221f/66564a09e429493e47a7867b/7-Edit-Unlink-Stack.png) **Note**: * At least one stack should be linked to the Brand Kit at any given time. * If you have only one stack linked to the Brand Kit, the **Unlink** icon will not be visible. 6. In the **API Key Details** section, you can select how you want to configure Brand Kit settings. Below are the two ways in which you can configure: 1. **Managed by Contentstack**: You can configure the app using the Contentstack-powered API keys.![8-Brand-Kit-API-Key-Details-Managed-By-Contentstack](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta102702a540f4684/672cc98077c00da55da12c0d/8-Brand-Kit-API-Key-Details-Managed-By-Contentstack.png) 2. **Custom Credentials**: You can configure the app using third-party API credentials. Select the **API Key Provider** from the available options (**OpenAI**, **Azure OpenAI Service**, **AWS Bedrock**, or **Google Vertex AI**.), provide the required credentials, and click the **Save Custom Credentials** button to save the settings.![9-Brand-Kit-API-Key-Details-Custom-Credentials](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0610c166a26e7a9c/672cc98090cfa3614cfd8cf0/9-Brand-Kit-API-Key-Details-Custom-Credentials.png) While switching from **Custom Credentials** to **Managed by Contentstack**, the credentials will be removed. Click **Proceed** to change the API Key configuration settings. ![10-Brand-Kit-API-Key-Details-Manage-API-Keys.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8b807450f8fb0939/672ccd6acc425110d2a22950/10-Brand-Kit-API-Key-Details-Manage-API-Keys.png) ## Related Resource * [Brand Kit Management API: Update Brand Kit](/docs/developers/apis/brand-kit-management-api/brand-kit#update-brand-kit) --- ## URL: https://www.contentstack.com/docs/brand-kit/edit-a-voice-profile --- title: "Edit a Voice Profile" description: "Edit your Voice Profile's name, style, communication style mixer settings, and custom details for on-brand content." url: "https://www.contentstack.com/docs/brand-kit/edit-a-voice-profile" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: edit-a-voice-profile.md --- # Edit a Voice Profile You can edit the specifications of your Voice Profile, such as its name and description, communication style mixer, and custom details (Insights and Sample Content). ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Brand Kit-enabled Organization with [Owner or Admin](/docs/administration/about-administration-roles) permissions, or as [Collaborator](/docs/brand-kit/invite-collaborators) **Note**: Only the respective Brand Kit **Owner** can edit the Voice Profiles inside it. * An existing [Voice Profile](/docs/brand-kit/create-a-voice-profile) ## Steps for Execution To edit a Voice Profile, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to App Switcher in the top-right corner and select **Brand Kit**. 2. Select the **Brand Kit** whose Voice Profile you want to edit. 3. You can edit a Voice Profile by clicking your voice profile to open it or by clicking the corresponding vertical ellipses under the **Actions** section and selecting **Edit**.![3-Edit-Voice-Profile](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf16940a90668e3ed/6656616f693345baf9c24264/3-Edit-Voice-Profile.png) 4. Make changes to the **Voice Profile Name** and **Description** and update the **Communication Style Mixer** details, such as **Formality Level**, **Tone Of Voice**, **Humor Level**, and **Language Complexity Level**. You can also update **Custom Details**, such as **Insights** and **Sample Content** as required and try generating content using **Playground** to refine the Voice Profiles. 5. Once you have done that, click **Save** to save the changes.![4-Save-Edited-Voice-Profile](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta34f7c2e8fc83691/6656617586ba8b3f0e1d681b/4-Save-Edited-Voice-Profile.png) You will get a success message after the Voice Profile is edited. ## Related Resource * [Brand Kit Management API: Update Voice Profile](/docs/developers/apis/brand-kit-management-api/voice-profile#update-voice-profile) --- ## URL: https://www.contentstack.com/docs/brand-kit/edit-item-in-knowledge-vault --- title: "Edit Item in Knowledge Vault" description: "Learn how to edit items in your Knowledge Vault to keep your documents and data organized and up-to-date." url: "https://www.contentstack.com/docs/brand-kit/edit-item-in-knowledge-vault" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: edit-item-in-knowledge-vault.md --- # Edit Item in Knowledge Vault Update and manage items in the Knowledge Vault to keep your documents and data organized and up-to-date. You can manually update the text in the editor and change the already uploaded file. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Brand Kit-enabled Organization with [Owner or Admin](/docs/administration/about-administration-roles) permissions, or as [Collaborator](/docs/brand-kit/invite-collaborators) **Note**: Only Brand Kit **Owner** or **Admin** can edit items in the Knowledge Vault. * An existing [Knowledge Vault Item](/docs/brand-kit/add-item-in-knowledge-vault) ## What You Will Learn * How to open a Knowledge Vault item for editing. * How to update an item's text or its uploaded file. * How to rename a subfolder in the Knowledge Vault. ## Steps for Execution To edit an existing item in Knowledge Vault, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to App Switcher in the top-right corner and select **Brand Kit**. 2. Select the **Brand Kit** in which you want to update a Knowledge Vault item. 3. Click **Knowledge Vault**. 4. You can edit a Knowledge Vault item by clicking the item to open it, or by clicking the corresponding vertical ellipses under the **Actions** column and selecting **Edit**.![4-Knowledge-Vault-Edit-Item](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt46bbb5a912687760/6800f64f9dd5cf16ac9a229e/4-Knowledge-Vault-Edit-Item.png) 5. Edit the text manually or update the existing file, preview the updated text, then click **Save** to save the changes. You can also update the text in the **Preview File Text** box.![5-Knowledge-Vault-Edit-Item-Save](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2a9a82ec81e8331e/66ebd4ec1644882aa9fd5c01/5-Knowledge-Vault-Edit-Item-Save.png) 6. You can also edit the items within folders. To update the subfolder name in the Knowledge Vault, click the corresponding vertical ellipses under the **Actions** tab, and then click the **Edit** option.![4-a-Knowledge-Vault-Edit-Folder](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7fa5eaf3e3f75719/6800f64f1930db75cfe277ae/4-a-Knowledge-Vault-Edit-Folder.png) You will get a success message after the Knowledge Vault item is edited. ## Related Resource * [Knowledge Vault API: Update Content Item](/docs/developers/apis/knowledge-vault-api/knowledge-vault#update-content-item) --- ## URL: https://www.contentstack.com/docs/brand-kit/export-a-voice-profile --- title: "Export a Voice Profile" description: "Learn how to export Contentstack Voice Profiles to simplify voice configuration reuse, backups, and environment migrations." url: "https://www.contentstack.com/docs/brand-kit/export-a-voice-profile" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: export-a-voice-profile.md --- # Export a Voice Profile Exporting a Voice Profile in Contentstack helps you reuse your brand’s tone and language settings across different stacks or environments. Whether you are backing it up, migrating to a new project, or ensuring consistency across teams, this feature simplifies the process and saves you time. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Brand Kit-enabled Organization with [Owner or Admin](/docs/administration/about-administration-roles) permissions, or as [Collaborator](/docs/brand-kit/invite-collaborators) * An existing [Voice Profile](/docs/brand-kit/create-a-voice-profile) ## What You Will Learn * How to export a single Voice Profile from the Actions menu. * How to export multiple Voice Profiles at once. * The file format of an exported Voice Profile. ## Steps for Execution To export a Voice Profile, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to App Switcher in the top-right corner and select **Brand Kit**. 2. Select the **Brand Kit** that contains the Voice Profile you want to export. 3. Under **Actions**, click the vertical ellipsis next to the desired Voice Profile and select **Export** to download the Voice Profile.![3-Import-Voice-Profile-Export](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaf3e3656e49d0942/687fbb102a594b079878bd97/3-Import-Voice-Profile-Export.png) 4. To export multiple Voice Profiles, select the checkboxes for the desired Voice Profiles and click **Export** from the floating bar.![4-Import-Voice-Profile-Export-From-Toolbar](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1883d225c7a47f62/687fbb10086c36fd62294c42/4-Import-Voice-Profile-Export-From-Toolbar.png) The selected Voice Profiles will be downloaded as .json files. ## Related Resource * [Brand Kit Management API: Export Voice Profile](/docs/developers/apis/brand-kit-management-api/voice-profile#export-voice-profile) --- ## URL: https://www.contentstack.com/docs/brand-kit/export-item-from-knowledge-vault --- title: "Export Item from Knowledge Vault" description: "Learn how to export items from your Knowledge Vault to back up your data, reuse configurations, and maintain consistency across environments." url: "https://www.contentstack.com/docs/brand-kit/export-item-from-knowledge-vault" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: export-item-from-knowledge-vault.md --- # Export Item from Knowledge Vault You can export items from the Knowledge Vault to download a copy of the content in JSON format. This feature allows you to back up data, share configurations, or migrate items between environments readily. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Brand Kit-enabled Organization with [Owner or Admin](/docs/administration/about-administration-roles) permissions, or as [Collaborator](/docs/brand-kit/invite-collaborators) * An existing [Knowledge Vault Item](/docs/brand-kit/add-item-in-knowledge-vault) ## What You Will Learn * How to export a single Knowledge Vault item as a JSON file. * How to export multiple Knowledge Vault items at once. ## Steps for Execution To export a Knowledge Vault item, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to App Switcher in the top-right corner and select **Brand Kit**. 2. Select the **Brand Kit** containing the Knowledge Vault item you want to export. 3. Click **Knowledge Vault**. 4. Under **Actions**, click the vertical ellipses corresponding to the Knowledge Vault item that you want to export, and then select **Export**.![4-Knowledge-Vault-Item-Export](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9d0190838e3d4d02/687fba7d10717c32d0cfce5f/4-Knowledge-Vault-Item-Export.png) **Note**: Subfolders cannot be exported. 5. To export multiple items, select the checkboxes for the desired Knowledge Vault Items and click **Export** from the floating bar.![5-Knowledge-Vault-Item-Export-From-Toolbar](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt16d7da4b44aad9d4/687fba7d8584d569deafff96/5-Knowledge-Vault-Item-Export-From-Toolbar.png) The selected items will be downloaded as .json files. ## Related Resource * [Knowledge Vault API: Export Content Item](/docs/developers/apis/knowledge-vault-api/knowledge-vault#export-content-item) --- ## URL: https://www.contentstack.com/docs/brand-kit/faqs --- title: "Brand Kit FAQs" description: "Learn more about Contentstack Brand Kit, including voice profiles, knowledge vault, stack association, and managing on-brand AI-generated content." url: "https://www.contentstack.com/docs/brand-kit/faqs" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: faqs.md --- # Brand Kit FAQs ### What is a Brand Kit? [Brand Kit](/docs/brand-kit/about-brand-kit/) is a cutting-edge platform designed to ensure AI-generated content aligns with a customer's brand, style, and messaging. It enables the creation of brand-specific profiles and provides access to relevant company information, ensuring consistent, on-brand AI-generated content. ### Who is Brand Kit for? Brand Kit is designed for organizations and content teams that prioritize brand consistency and integrity in their digital content. It is ideal for organizations aiming to maintain a distinctive brand voice across all AI-generated content. ### How are Brand Kits associated with Stacks? In Contentstack, a Brand Kit can be associated with one or more stacks, allowing consistent branding across multiple digital properties. Each Brand Kit is connected to a single Knowledge Vault, providing a centralized source of truth for all brand assets and guidelines. ### How can I create and use a Brand Kit as a first-time Contentstack user? Refer to the [Get Started with Brand Kit](/docs/brand-kit/get-started-with-brand-kit) documentation to create and use a new Brand Kit. ### How do I delete an existing Brand Kit? To permanently delete an existing Brand Kit, go to the Brand Kit settings and click the **Delete Brand Kit** button. Refer to the [Delete a Brand Kit](/docs/brand-kit/delete-a-brand-kit) documentation for more information. ### What are Voice Profiles? [Voice Profiles](/docs/brand-kit/about-voice-profile/) in Contentstack's Brand Kit enables you to create custom guidelines for the tone, style, and language of the AI-generated content. This ensures that your brand's voice remains authentic and engaging across all digital touchpoints. ### How do I set the Communication Style Mixer to create a Voice Profile? To create a Voice Profile in Contentstack's Brand Kit, adjust the Communication Style Mixer settings, including the Formality Level, Tone of Voice, Humor Level, and Language Complexity Level. These settings help define how your brand's AI-generated content should sound and engage with the audience. For more details, refer to the [Create a Voice Profile](/docs/brand-kit/create-a-voice-profile) documentation. ### How do I delete an existing Voice Profile? To delete an existing Voice Profile from a Brand Kit, go to the Voice Profiles dashboard. Click the **Delete** option under the **Actions** tab to permanently delete the Voice Profile. For more information, refer to the [Delete a Voice Profile](/docs/brand-kit/delete-a-voice-profile) documentation. ### What is the Knowledge Vault? The [Knowledge Vault](/docs/brand-kit/about-knowledge-vault/) is a centralized repository where you can store, manage, and organize brand-related documents, data, and content. This vector database stores a curated collection of factual information specific to a company. The Knowledge Vault is a trusted source for AI, allowing it to generate content that is not only tonally consistent but also grounded in accurate and relevant company data. ### What content should you include in my Knowledge Vault? Your Knowledge Vault should include factual, company-specific information such as background, products/services, industry knowledge, customer data, documentation, and marketing data to ensure AI-generated content aligns with your brand's identity and offerings. ### What kind of content should I avoid including in my Knowledge Vault? You should avoid including irrelevant, outdated, confusing, sensitive, or mislabeled data that could introduce errors or inconsistencies in AI-generated content. You should try including only accurate, up-to-date, and clearly labeled brand assets and information to maintain the integrity and coherence of your digital presence. --- ## URL: https://www.contentstack.com/docs/brand-kit/get-started-with-brand-kit --- title: "Get Started with Brand Kit" description: "Get up and run with Brand Kit and generate brand-specific content through its integration with the AI Assistant app." url: "https://www.contentstack.com/docs/brand-kit/get-started-with-brand-kit" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: get-started-with-brand-kit.md --- # Get Started with Brand Kit This step-by-step guide explains how to create a Brand Kit and Voice Profile in Contentstack, and how to utilize them within the AI Assistant app. You will learn the following: 1. **Create a Brand Kit**: Create a centralized repository for your organization's identity. 2. **Define a Voice Profile**: This Voice Profile can be applied to your content to ensure a consistent brand voice across your digital experiences. 3. **Integrate the Brand Kit and Voice Profile into the AI Assistant app**: The AI-powered natural language processing platform can transform your content with accuracy and efficiency. By the end of this guide, you will have the knowledge and skills to leverage Contentstack's powerful branding tool to elevate your digital presence and deliver a cohesive, on-brand experience to your audience. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Brand Kit-enabled Organization with [Owner or Admin](/docs/administration/about-administration-roles) permissions ## What You Will Learn * How to create a Brand Kit as a centralized repository for your organization's identity. * How to define a Voice Profile and apply it to keep a consistent brand voice across your digital experiences. * How to integrate the Brand Kit and Voice Profile into the AI Assistant app to generate content. ## Steps for Execution 1. [Create a Brand Kit](#create-brand-kit) 2. [Create a Voice Profile](#create-voice-profile) 3. [Install the AI Assistant app from the Contentstack Marketplace](#install-the-ai-assistant-app-from-the-contentstack-marketplace) 4. [Use the Brand Kit in the AI Assistant app](#use-brand-kit-in-the-ai-assistant-app) 1. ## Create a Brand Kit As a first step, you need to create a Brand Kit. To do so, log in to your [Contentstack account](https://www.contentstack.com/login/) and follow the steps given below: 1. Navigate to App Switcher in the top-right corner and select **Brand Kit**. 2. Click the **\+ New Brand Kit** button to create a new Brand Kit. 3. In the **Create Brand Kit** modal, enter the **Brand Kit Name** and **Description** (optional). Then, **Select Stack(s)** from the dropdown and click **Create Brand Kit**. **Note**: When creating a Brand Kit, selecting one or multiple stacks will synchronize the associated stack content and its environment settings. ![3-Get-Started-With-Brand Kit-Create-Brand-Kit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5861cf03d5a27dac/665632c036a794362360b2c6/3-Get-Started-With-Brand_Kit-Create-Brand-Kit.png) This creates your Brand Kit. 2. ## Create a Voice Profile Let's now create a Voice Profile for this Brand Kit by following the steps given below: 1. Select the **Brand Kit** in which you want to create a Voice Profile. 2. Click the **\+ New Voice Profile** button to create a new Voice Profile. 3. On the **Create Voice Profile** page, enter the following details: 1. Enter a suitable **Voice Profile Name** and **Description**. 2. Set the **Communication Style Mixer** using the **Formality Level**, **Tone Of Voice**, **Humor Level**, and **Language Complexity Level** slider bars. It defines how your content generation will be styled. 3. Inside the **Custom Details** section, you can provide **Insights** and **Sample Content**. Inside the **Insights** section, you can provide additional information to the AI model. You can give sample content to your Voice Profile to generate similar content in action. 4. Generate content in the **Playground** based on the Voice Profile settings. Enter the prompt in the **Provide Prompt** field and click the **Generate Response in Playground** button to view the generated response in the right-side slider. You can refine the Voice Profiles by evaluating the content specifications. 4. After filling out the details, click **Save** to create a voice profile.![5-Get-Started-With-Brand Kit-Save-Voice-Profile](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4bcf8841ef10c5de/665632d3693345772fc24087/5-Get-Started-With-Brand_Kit-Save-Voice-Profile.png) After the Voice Profile is created, you will receive a success message. You can view its details by clicking the **Information** icon on the right-side navigation panel. ![6-Get-Started-With-Brand Kit-View-Voice-Profile](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta75866195ba433b2/665632d90d6347256179ff2b/6-Get-Started-With-Brand_Kit-View-Voice-Profile.png) 3. ## Install the AI Assistant app from the Contentstack Marketplace AI Assistant is an app available in Contentstack Marketplace. It provides AI-powered features to streamline content creation and management processes within the Contentstack platform. It offers functionalities such as SEO metadata generation, content optimization suggestions, blog post content generation, user persona tag creation, and more. To install and configure the AI Assistant app, follow the step-by-step process defined in the [AI Assistant with Brand Kit](/docs/marketplace/ai-assistant-with-brand-kit#install-the-ai-assistant-app-in-marketplace) documentation. **Note**: To use Brand Kit efficiently, select the **Managed by Contentstack** option under **Platform Configuration** settings on the AI Assistant app **Configuration** page and then enable the **Brand Kit: On-brand Generative AI** settings. ![7-Get-Started-With-Brand Kit-AI-Assistant-App-Configuration-For-Enabling-Brand-Kit](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4afb67756350c83e/664ba0d8941bc828bd9df568/7-Get-Started-With-Brand_Kit-AI-Assistant-App-Configuration-For-Enabling-Brand-Kit.png) 4. ## Use the Brand Kit in the AI Assistant app To use Brand Kit within the AI Assistant app within an entry of your stack, follow the steps given below: 1. [Create a content type](/docs/headless-cms/create-a-content-type/) by adding relevant details as displayed below and click the **Save and proceed** button.![8-Get-Started-With-Brand Kit-AI-Assistant-App-Content-Type](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3915ff63007168e6/664ba17e55b397df68604747/8-Get-Started-With-Brand_Kit-AI-Assistant-App-Content-Type.png) 2. To use the AI Assistant app, create an entry for the above content type. In the left navigation panel, navigate to the [Entries](/docs/headless-cms/create-an-entry/) page, click **\+ New Entry** to create a new entry for the above content type, and then click **Proceed**. 3. You can see the AI Assistant app icon in the [Field Modifier Location](/docs/developer-hub/field-modifier-location).![9-Get-Started-With-Brand Kit-AI-Assistant-App-Field-Modifier-Location](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltad1b1a2e33f7bdec/664ba17f76a5b568ce31af67/9-Get-Started-With-Brand_Kit-AI-Assistant-App-Field-Modifier-Location.png) 4. To generate Brand Kit specific content, provide the following details: 1. Select the **Brand Kit** from the dropdown. 2. Select the relevant **Voice Profile** from the dropdown. 3. Enable or disable the **Knowledge Vault** to fetch the desired data. 4. Write a prompt and press **enter** to generate content in the respective field. ![10-Get-Started-With-Brand Kit-AI-Assistant-App-Working](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt82ba1046abd063f5/664ba17ee2c16b7ce29bc528/10-Get-Started-With-Brand_Kit-AI-Assistant-App-Working.png) 5. This starts generating your content. Click **Accept** to accept the newly generated content. To rephrase the content, click **Try Again**. To remove the content, click **Cancel**.![11-Get-Started-With-Brand Kit-AI-Assistant-App-Works](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4b1dd3070c785551/664ba17f707c0661cd81fe7d/11-Get-Started-With-Brand_Kit-AI-Assistant-App-Works.png) 6. After adding the content, **Save** and **Publish** your entry. **Additional Resource**: * For details on the Brand Kit, refer to the [Brand Kit](/docs/brand-kit/about-brand-kit), [Voice Profile](/docs/brand-kit/about-voice-profile), and [Knowledge Vault](/docs/brand-kit/about-knowledge-vault) documentation. * For AI Assistant app related information, refer to the [AI Assistant with Brand Kit](/docs/marketplace/ai-assistant-with-brand-kit) documentation. * For more queries, refer to the [Brand Kit FAQs](/docs/headless-cms/faqs) documentation. --- ## URL: https://www.contentstack.com/docs/brand-kit/import-a-voice-profile --- title: "Import a Voice Profile" description: "Learn how to easily import a Voice Profile in Contentstack to streamline content creation and maintain consistent brand voice across environments." url: "https://www.contentstack.com/docs/brand-kit/import-a-voice-profile" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: import-a-voice-profile.md --- # Import a Voice Profile Brand Kit allows you to import preconfigured voice profiles into your stack. This is useful when migrating configurations, sharing profiles across environments, or onboarding new teams. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Brand Kit-enabled Organization with [Owner or Admin](/docs/administration/about-administration-roles) permissions, or as [Collaborator](/docs/brand-kit/invite-collaborators) **Note**: Only the respective Brand Kit Owners can import the Voice Profiles. * An existing [Voice Profile](/docs/brand-kit/create-a-voice-profile) ## What You Will Learn * How to open the Brand Kit that will receive an imported Voice Profile. * How to import a Voice Profile from a JSON file. * Which file format the import supports. ## Steps for Execution To import a Voice Profile, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to App Switcher in the top-right corner and select **Brand Kit**. 2. Select the **Brand Kit** that contains the Voice Profile you want to import. 3. To import a Voice Profile, click the **\+ New Voice Profile** button and select the **Import** option.![3-Import-Voice-Profile](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt898656e198817a83/687fb8bd87ef1a5d143826e0/3-Import-Voice-Profile.png) 4. In the **Import** modal, click the **Upload File** to browse and select the .json file containing your Voice Profile, then click **Proceed**.![4-Upload-Voice-Profile](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt29f867e5d2f0d9a7/687fb8bd4b419586e225be87/4-Upload-Voice-Profile.png) **Note**: * Import supports only valid JSON files that follow the Contentstack Voice Profile format. * You can import Voice Profiles across different organizations to reuse settings and ensure consistency. You will get a success message after the Voice Profile is imported. ![5-Voice-Profile-Imported](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2f4d460c5f294fb0/687fb8bd54ac0d4db590dc7a/5-Voice-Profile-Imported.png) ## Related Resource * [Brand Kit Management API: Import Voice Profile](/docs/developers/apis/brand-kit-management-api/voice-profile#import-voice-profile) --- ## URL: https://www.contentstack.com/docs/brand-kit/import-item-in-knowledge-vault --- title: "Import Item in Knowledge Vault" description: "Learn how to import items into your Knowledge Vault to keep your content structured, current, and consistent across environments, all in one place." url: "https://www.contentstack.com/docs/brand-kit/import-item-in-knowledge-vault" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: import-item-in-knowledge-vault.md --- # Import Item in Knowledge Vault Import previously exported items into the Knowledge Vault to restore configurations, migrate setups between environments, or reuse saved data. This ensures consistency and simplifies setup, especially when managing multiple stacks or projects. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Brand Kit-enabled Organization with [Owner or Admin](/docs/administration/about-administration-roles) permissions, or as [Collaborator](/docs/brand-kit/invite-collaborators) **Note**: Only Brand Kit **Owner** or **Admin** can import items into the Knowledge Vault. * An existing [Knowledge Vault Item](/docs/brand-kit/add-item-in-knowledge-vault) ## What You Will Learn * How to import a previously exported Knowledge Vault item from a JSON file. * How to reuse Knowledge Vault items across different organizations. ## Steps for Execution To import an item in Knowledge Vault, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to App Switcher in the top-right corner and select **Brand Kit**. 2. Select the **Brand Kit** in which you want to import a Knowledge Vault item. 3. Click **Knowledge Vault**. 4. To import an item in the Knowledge Vault, click the **\+ New Item** button and select the **Import** option.![4-Import-Knowledge-Vault-Item-Button](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt75bae38102525157/687fb9e626a74d052e25754c/4-Import-Knowledge-Vault-Item-Button.png) 5. In the **Import** modal, click the **Upload File** to browse and select the .json file containing your Knowledge Vault item, then click **Proceed**.![5-Knowledge-Vault-Item-Import-Modal](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5d47353d20127a54/687fb9e66668e3476e5767ba/5-Knowledge-Vault-Item-Import-Modal.png) **Note**: * Import supports only valid JSON files that follow the Contentstack Knowledge Vault Item format. * You can import Knowledge Vault items across different organizations to reuse configurations and maintain consistency. You will get a success message after the item is imported. ![6-Knowledge-Vault-Item-Imported](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt11cfcba4512da284/687fb9e6de171665b89bd823/6-Knowledge-Vault-Item-Imported.png) ## Related Resource * [Knowledge Vault API: Import Content Item](/docs/developers/apis/knowledge-vault-api/knowledge-vault#import-content-item) --- ## URL: https://www.contentstack.com/docs/brand-kit/invite-collaborators --- title: "Invite Collaborators" description: "Invite collaborators to your Brand Kit to manage permissions, ensuring a consistent brand voice across content." url: "https://www.contentstack.com/docs/brand-kit/invite-collaborators" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: invite-collaborators.md --- # Invite Collaborators Collaborators are individuals to whom you can give permission to help and manage your Brand Kit. Specifically, they can create, update, and even delete Voice Profiles within the Brand Kit, including those created by the Brand Kit owner or other collaborators. This helps in ensuring that your brand's voice stays consistent across all your content irrespective of who's working on it. **Note**: Only the Brand Kit [Owner or Admin](/docs/administration/about-administration-roles) can add or remove the collaborators. ## What You Will Learn * How to invite one or more Collaborators to a Brand Kit. * How to remove a Collaborator from a Brand Kit. ## Steps for Execution To add a Collaborator in Brand Kit, log in to your [Contentstack account](https://www.contentstack.com/login) and perform the following steps: 1. Navigate to App Switcher on the top-right corner and select **Brand Kit**. 2. Select the **Brand Kit** in which you want to add a Collaborator. 3. Click the Brand Kit **Settings**. 4. On the **Settings** page, click **Collaborators**. 5. Click the **\+ Invite Collaborator** button to add collaborators in the Brand Kit.![5-Invite-Collaborator](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt74a0b1cbb5fce398/66c5b06a3bab110a97a2d239/5-Invite-Collaborator.png) 6. In the **Invite Collaborator** modal, enter the emails and click **Invite** to grant access. You can add multiple email addresses to invite collaborators in bulk. Optionally, you can add a message to the invitees.![6-Invite-Collaborator-Dialog-Box](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt84893f75ef8e2f19/66c5b06a33f9a5f29b7a94f3/6-Invite-Collaborator-Dialog-Box.png) The added Collaborators receive an invitation through an email. After they accept the invite and get authorized, the status will update to **Accepted** and they access the Voice Profiles. ![7-Collaborator-Accepted-Invite](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9d587e8c64fa901f/66c5b06ab506aac585c6efc0/7-Collaborator-Accepted-Invite.png) ## Remove a Collaborator 1. To remove a Collaborator, you can click three ellipses under the **Actions** section and select the **Remove** option.![8-Remove-Collaborator](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltead2eda6c732aac7/66c5b06a5c9bfe20de0f190a/8-Remove-Collaborator.png) 2. Click the **Remove** button again to successfully remove the Collaborator.![9-Remove-Collaborator-Dialog-Box](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc9a999b05d5ca66c/66d89637d74297522f622e96/9-Remove-Collaborator-Dialog-Box.png) --- ## URL: https://www.contentstack.com/docs/brand-kit/limitations --- title: "Brand Kit Limitations" description: "Explore the limitations of Brand Kit, including customizations via support and API rate limit restrictions." url: "https://www.contentstack.com/docs/brand-kit/limitations" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-23" filename: limitations.md --- # Brand Kit Limitations * The maximum number of Brand Kits allowed per organization is **50**. To increase this limit, please contact our [Support](mailto:support@contentstack.com) team. By Contentstack permissions, they can be extended till **250** per organization. * You can create a maximum of **100 Voice Profiles** within each Brand Kit. To increase this limit, please contact our [Support](mailto:support@contentstack.com) team. * There are certain API rate limits: **API Request** **Rate Limit** Brand Kit Read (GET) and Write (POST/PUT/DELETE) requests 10 requests per second per organization GenAI Write (POST) requests 10 requests per second per organization Knowledge Vault Write (POST) requests 10 requests per second per organization --- ## URL: https://www.contentstack.com/docs/data-and-insights/create-data-and-insights-lytics-integration --- title: "Create a Data & Insights (Lytics) Integration" description: "Learn how to set up Contentstack's Data & Insights (Lytics) to deliver real-time, personalized digital experiences at scale." url: "https://www.contentstack.com/docs/data-and-insights/create-data-and-insights-lytics-integration" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: create-data-and-insights-lytics-integration.md --- # Create a Data & Insights (Lytics) Integration This guide explains how to integrate **Data & Insights (Lytics)** with your stack using built-in Contentstack products. This integration enables the platform to collect behavioral data, enrich audience profiles, and deliver personalized experiences through [Personalize](https://www.contentstack.com/docs/personalize#personalize-overview). Without this authorization, Data & Insights (Lytics) cannot collect events, and Personalize cannot receive audience data. Personalize relies on this data to segment audiences and deliver relevant, tailored experiences at scale. ## Prerequisites * Data & Insights enabled for your organization * Your self-hosted site deployed * Stack connected to the deployed site * [Personalize project](/docs/personalize/create-personalize-project) created ## Integrate Data & Insights (Lytics) Once DAL is enabled for your organization, create a new DAL configuration as follows: 1. In the top navigation bar, click the **App Switcher** icon and then click **Administration**. 2. Click **Data Activation Layer**. 3. If this is your first time, you will be presented with the **Set Up Data Activation Layer** page, click the **\+ New DAL Configuration** button to connect your Contentstack organization to Data & Insights (Lytics).![1\. Set up a new Data Activation Layer.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltba8ec72a8b08f66e/69b9d63cdafe75074090618a/1._Set_up_a_new_Data_Activation_Layer.png) 4. Mark the checkbox to accept the Data Privacy terms and conditions as shown below and then click the **Proceed** button.![2\. Data privacy confirmation step in DAL setup.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt70132a8d5d301753/69b9d63c56a5ae48f0b838d6/2._Data_privacy_confirmation_step_in_DAL_setup.png) 5. In the modal that appears, enter the following details: 1. **Title:** Enter a suitable name for your DAL. Spaces in the title are allowed. 2. **Domain:** Enter the domain name of your website. Ensure that you enter the **production URL** where your content resides. For example, https://www.redpandaresorts.com/ 3. **CMS Stacks:** Add your CMS stack if you’ve set it up for this specific Launch project or website. 4. **Launch Projects:** (Optional) Select the Launch project where you want to integrate Event Tracking (Data & Insights (Lytics)). 5. **Personalize Projects:** Add your [Personalize](/docs/personalize/about-personalize) project if you’ve set it up for this specific Launch project or website. You can leverage Personalize to deliver tailored experiences using [Entry Variants](/docs/headless-cms/about-entry-variants#work-with-entry-variants), to optimize engagement and conversions. 6. **Data & Insights (Lytics) Account:** Create a new Data & Insights (Lytics) account by clicking the **\+ New Lytics Account** button, OR select an existing Data & Insights (Lytics) account from the drop-down list to connect the appropriate Data & Insights (Lytics) account to your DAL. **Note:** To connect your pre-existing Data & Insights (Lytics) account, please contact the [support team](mailto:support@contetstack.com). 7. **Add additional DAL Managers** (Optional): You can grant users in your Contentstack organization access to the configuration. 1. Click **\+ Add users**. 2. In the Select Users modal, choose one or more users from your organization. 1. Use the search bar to filter the list if needed. 2. Only users with the Admin or Member role appear in the list. 3. Click **Add Users**. 4. Review the list of added users displayed under Added Users.![3\. New\_data\_activation\_layer\_setup.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbfa1ab28065c6588/69b9d63c2a26b8140871b297/3._New_data_activation_layer_setup.png) **Note:** Ideally, each DAL should be connected to a **single website** for optimal tracking and data consistency. 6. Click the **Test Connection** button to ensure the setup was successful.![4\. Connection test success for RedPandaResorts.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt54f8bab0fc71f00d/69b9d63c8f08478396bbdcdd/4._Connection_test_success_for_RedPandaResorts.png) 7. Click **Save** to finalize your DAL configuration. The DAL has been created successfully. ### Add Non-Admin Users to Existing Data & Insights (Lytics) Account 1. In the top navigation bar, click the **App Switcher** icon and then click **Administration**. 2. Click **Data Activation Layer**. 3. In the list of configurations, find the Data Activation Layer you want to update. 4. In the **Actions** column, click the vertical ellipsis and then click **Edit**. 5. In the **Edit Data Activation Layer (DAL)** modal, scroll down to the **Add additional DAL Managers** section. 6. Click **\+ Add Users**. 7. In the **Select Users** modal, choose one or more users from your organization. 1. Use the search bar to filter the list if needed. 2. Only users with the Admin or Member role appear in the list. 8. Click **Add Users**. 9. Review the list of added users displayed under **Added Users**. 10. Click **Update** to save your changes. ### Authorize and Configure Content Classification for your DAL Connection The first time you access Data & Insights after setting up the DAL configuration, you will need to configure shared authorization. To do this, follow these steps: 1. In the top navigation bar, click the **App Switcher** icon and then click **Data & Insights**. 2. Click the **Select** button for the Data & Insights account you want to access.![5\. Account selection screen.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt975d36aa7e57186a/69b9d63c7d3ec052722ffa79/5._Account_selection_screen.png) 3. Click the preferred Contentstack organization in the OAuth modal.![6\. Organization selection screen.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2600d42b910b13a3/69b9d63c50ca695bddd3f46d/6._Organization_selection_screen.png) 4. Click the **Authorize** button to complete the setup. After successful authorization, you will be redirected to your Data & Insights dashboard. The first time you access it, you will be guided through the initial setup to ensure a personalized and efficient experience.  ![7\. Welcome to Lytcis.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta2b747a19704adde/69b9d63cee827a2f8320528a/7._Welcome_to_Lytcis.png) When prompted, verify the domain(s) you want classified. This step is important. It tells Data & Insights where to access your website so it can associate content interactions with your visitors. ![8\. Confirm Domains.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt32e607194d5c7452/69b9d63c3a4db2778ccab4d9/8._Confirm_Domains.png) Once you have enabled and configured DAL, your first DAL has been created. All existing audiences from your Data & Insights (Lytics) account are [automatically synced and displayed](https://docs.lytics.com/docs/using-your-dal#personalization) within the Personalize Audience module. ![9\. Synced Audience List.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte0a8631a38b9ad8a/69b9d63dee9a64e40c4b0a91/9._Synced_Audience_List.png) **Note:** After authorization, [enable the **JavaScript Tag** plugin](/docs/lytics/understanding-your-lytics-project-setup) for Contentstack. --- ## URL: https://www.contentstack.com/docs/developer-hub --- title: "Developer Hub" description: "Explore APIs, SDKs, and tools in the Contentstack Developer Hub for efficient headless CMS development." url: "https://www.contentstack.com/docs/developer-hub" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-03-16" filename: developer-hub.md --- # Developer Hub Build and manage custom applications for Contentstack. Developer Hub includes app development APIs, SDKs, and tools to create, deploy, and maintain apps that integrate seamlessly with Contentstack. ## Explore Developer Hub ### The Basics Learn core concepts, explore app architecture, and build your first app using quickstart guides and templates. [Learn more](https://www.contentstack.com/developer-hub/about-developer-hub) ### App Building Learn how to develop, test, release, and maintain apps across their lifecycle. [Learn more](https://www.contentstack.com/developer-hub/installing-your-app-via-developer-hub) ### App Framework Understand app configuration, UI locations, hosting, authentication, webhooks, versioning, and release management. [Learn more](https://www.contentstack.com/docs/developer-hub/about-ui-locations) ### Resources Use the App SDK, design components, boilerplates, and support resources to build, customize, and troubleshoot apps efficiently. [Learn more](https://www.contentstack.com/docs/developer-hub/marketplace-app-boilerplate) ### Developer Hub Guides Learn by example with ready-to-use apps and guided tutorials. [Learn more](https://www.contentstack.com/docs/developer-hub/introduction-to-contentstack-applications) --- ## URL: https://www.contentstack.com/docs/developer-hub/about-developer-hub --- title: "About Developer Hub" description: "Understanding about Contentstack Developer Hub" url: "https://www.contentstack.com/docs/developer-hub/about-developer-hub" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: about-developer-hub.md --- # About Developer Hub Contentstack Developer Hub is an app development framework/portal that developers can leverage to rapidly build, host, and publish ready-to-use private or public apps. ## What Developer Hub provides The Contentstack App Framework consists of app development APIs, SDKs, and other tools that help you build apps with ease. Using this framework, you can create **private** apps (only for your organization) and **public** apps (listed in Public marketplace for any of the CS customers to use, for example, third-party integrations, Contentstack apps, and so on). ## Prerequisites for Working with Developer Hub Here are some basic prerequisites that you need to have before you start creating apps in Developer Hub: * Access to Contentstack App Framework and Contentstack App SDK * Organization [Owner or Admin](/docs/administration/about-administration-roles) or Stack [Owner](/docs/headless-cms/types-of-roles#owner) or [Admin](/docs/headless-cms/types-of-roles#admin) permissions * A thorough knowledge of app development * [Node.js](https://nodejs.org/en/) version 20 or above ## Open Developer Hub To access Developer Hub, log in to your [Contentstack account](https://www.contentstack.com/login/). Navigate to **App Switcher** on the top-right corner and select **Developer Hub**. ![Developer\_Hub\_Landing\_Page](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1e1654d312bdca3e/65b7af5cd791ca6019765ee8/Developer_Hub_Landing_Page.png) Now, let’s get started with [creating apps in Developer Hub](/docs/developer-hub/creating-an-app-in-developer-hub). --- ## URL: https://www.contentstack.com/docs/developer-hub/about-ui-locations --- title: "About UI Locations" description: "Learn how to use UI Locations in Contentstack to customize the interface and integrate custom widgets via the extension SDK." url: "https://www.contentstack.com/docs/developer-hub/about-ui-locations" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-24" filename: about-ui-locations.md --- # About UI Locations An application is a container of one or more UI locations that allow you to extend the Contentstack platform to facilitate integrations, add new functionality, and customize the platform experience You can use different locations within a single app to build an immersive experience that integrates third-party applications or introduces custom functionality and workflows for users. After you create an app, you can distribute it as a single application based on the app's use case. The Contentstack App Framework currently supports the following UI locations: * [App Config Location](/docs/developer-hub/app-config-location) * [Asset Sidebar Location](/docs/developer-hub/asset-sidebar-location) * [Custom Field Location](/docs/developer-hub/custom-field-location) * [Content Type Sidebar Location](/docs/developer-hub/content-type-sidebar-location) * [Stack Dashboard Location](/docs/developer-hub/dashboard-location) * [Entry Sidebar Location](/docs/developer-hub/sidebar-location) * [Field Modifier Location](/docs/developer-hub/field-modifier-location/) * [Full Page Location](/docs/developer-hub/full-page-location/) * [Global Full Page Location](/docs/developer-hub/global-full-page/) * [RTE Location](/docs/developer-hub/rte-location) ## Apps Permissions To add the apps permissions In the UI Locations tab, follow these steps: 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. On the Dashboard page, click the **Developer Hub** icon. 3. Select the application for which you want to add the permissions or click the **+ New App** button to [create](/docs/developer-hub/creating-an-app-in-developer-hub) a new application. 4. Click the **UI Locations** tab. 5. Go to the **Permissions** section in the **UI Locations** tab. 6. Select all the permissions you wish to add. **Note:** By default, no permissions are selected. ![permissions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9bbd9a5843b9bad8/68a6bd5f9319d8bfc187e46b/permissions.png) 7. Once you have selected the desired permissions, click the **Save** button. **Additional Resource:** Refer to the [OAuth Scopes](/docs/developer-hub/oauth-scopes) document to learn more about the app and user token scopes. --- ## URL: https://www.contentstack.com/docs/developer-hub/api-integration-in-developer-hub-apps --- title: "API Integration in Developer Hub Apps" description: "Learn how to use App SDK in Developer Hub Apps for internal and external API calls with authentication, variables, and advanced settings." url: "https://www.contentstack.com/docs/developer-hub/api-integration-in-developer-hub-apps" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: api-integration-in-developer-hub-apps.md --- # API Integration in Developer Hub Apps The Contentstack App SDK .api() method offers a unified approach for making internal API calls to Contentstack services as well as external calls to third-party services. It automatically manages authentication, routing, and security, so you can focus on building functionality instead of handling infrastructure. ## What You Will Learn * When to use internal versus external API calls. * How to configure App Permissions and make internal calls to Contentstack APIs. * How to configure Advanced Settings Variables, Mappings, and Rewrites for external calls. * Best practices and troubleshooting for API integration. ### When to Use Each Approach * **Internal API Calls:** Access [Contentstack APIs](/docs/developers/apis) such as content management, releases, and webhooks with automatic authentication handled through App Permissions. * **External API Calls:** Connect to third-party services such as AI, Slack, or payment processors using Advanced Settings for secure credential management. ## Prerequisites Before making API calls, ensure the following: * A [Developer Hub](/docs/developer-hub) App already created * **For internal calls**, App Permissions properly configured in the [app manifest](/docs/developer-hub/app-manifest/) * **For external calls**, [Advanced Settings](/docs/developer-hub/introduction-to-advanced-settings) set up with Variables, Mappings, and Rewrites as needed * The **App SDK** initialized in your application **Additional Resource:** Refer to the [App SDK](https://github.com/contentstack/app-sdk-docs/) documentation to learn more. ## Internal API Calls to Contentstack Internal API calls use Contentstack’s built-in authentication via App Permissions, eliminating the need for separate credential management. ### App Permissions Configuration Start by declaring the required permissions. In your Developer Hub application, go to the **UI** tab and select all the permissions your app needs. For this example, the following permissions are used: * **Content Types:** Read, Write * **Entries:** Read, Write * **Releases:** Read, Write ### Read/Write Operations Example The App SDK .api() method simplifies how Developer Hub Apps integrate with APIs. It enables seamless interaction with Contentstack’s platform APIs using configured permissions, and with external APIs through the rewrite rules defined in Introduction to [Advanced Settings](/docs/developer-hub/introduction-to-advanced-settings) document. The example below demonstrates how to read and write content and releases: ``` async function getContentTypes() { try { // Get all content types const contentTypesRes = await appSdk.api( `${appSdk.endpoints.CMA}/v3/content_types`, { method: 'GET', headers: {Ç 'Content-Type': 'application/json' } } ); return contentTypesRes.json(); } catch (error) { console.error('Error fetching content types:', error); throw error; } } async function createContentType(contentTypeData) { try { const contentTypesRes = await appSdk.api( `${appSdk.endpoints.CMA}/v3/content_types`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: contentTypeData } ); return contentTypesRes.json(); } catch (error) { console.error('Error creating content type:', error); throw error; } } ``` ## Integrate Third-party Services External API calls use Advanced Settings configurations to securely manage credentials and simplify URL routing. **Note:** This example only uses AI. You can integrate any API. ### Advanced Settings Configuration #### Step 1: Configure Variables (for API keys) In Developer Hub, under **Advanced Settings > Variables**, define your AI key variables as shown below: ``` { "AI_API_KEY": "sk-your-default-ai-api-key", "AI_MODEL": "gpt-3.5-turbo" } ``` #### Step 2: Configure Mappings (for customer customization) In Developer Hub, under **Advanced Settings > Mappings**, define mappings that allow end users to provide their credentials for the application. ``` { "CUSTOMER_AI_KEY": "integrations.ai.apiKey", "PREFERRED_MODEL": "integrations.ai.model" } ``` #### Step 3: Configure Rewrites (for clean URLs) In Developer Hub, under **Advanced Settings > Rewrites**, define rewrites to simplify the API calls made by your application. ``` { "/ai-chat": "https://api.ai.com/v1/chat/completions", "/ai-models": "https://api.ai.com/v1/models" } ``` ### AI Integration Example The following is a complete example of how to integrate with the AI API: ``` async function generateAIContent(userPrompt) { try { // Get available models first const modelsRes = await appSdk.api('/ai-models', { method: 'GET', headers: { 'Authorization': 'Bearer {{map.CUSTOMER_AI_KEY}}', 'Content-Type': 'application/json' } }); const models = await modelsRes.json(); console.log('Available Models:', models.data); // Generate AI content const aiResponse = await appSdk.api('/ai-chat', { method: 'POST', headers: { 'Authorization': 'Bearer {{map.CUSTOMER_AI_KEY}}', 'Content-Type': 'application/json' }, body: JSON.stringify({ model: '{{map.PREFERRED_MODEL}}', messages: [ { role: 'system', content: 'You are a helpful content writing assistant for a CMS.' }, { role: 'user', content: userPrompt } ], max_tokens: 500, temperature: 0.7 }) }); const data = await aiResponse.json(); console.log('AI Response:', data); return { generatedContent: data.choices[0].message.content, usage: data.usage, model: data.model }; } catch (error) { console.error('Error generating AI content:', error); // Handle specific error cases if (error.status === 401) { throw new Error('Invalid API key. Please check your AI configuration.'); } else if (error.status === 429) { throw new Error('Rate limit exceeded. Please try again later.'); } throw error; } } ``` ## Best Practices ### Error Handling Ensure that you are always implementing comprehensive error handling: ``` async function makeApiCallWithRetry(url, options, maxRetries = 3) { for (let attempt = 1; attempt <= maxRetries; attempt++) { try { const response = await appSdk.api(url, options); return response.json(); } catch (error) { console.warn(`Attempt ${attempt} failed:`, error.message); if (attempt === maxRetries) { throw error; } // Wait before retrying (exponential backoff) await new Promise(resolve => setTimeout(resolve, Math.pow(2, attempt) * 1000)); } } } ``` ### Security Guidelines * Never hardcode credentials in your application code * Use **Variables** to store sensitive information such as API keys * Use **Mappings** for values that customers can configure * Always validate API responses before processing * Log errors for debugging, but never include sensitive data in logs ### Performance Optimization * **Cache API responses** when it improves performance * **Use batch operations** for handling multiple related API calls * **Implement request debouncing** for actions triggered by user input * **Monitor rate limits** and apply backoff strategies when needed ## Troubleshooting ### Internal API Calls * **403 Forbidden:** Check App Permissions in the app manifest * **404 Not Found:** Verify the API endpoint and that the resource exists * **422 Validation Error:** Ensure the request body format and required fields are correct ### External API Calls * **401 unauthorized:** Confirm Variable and Mapping configurations for API keys * **Rewrite not working:** Review the syntax and order of your Rewrite rules * **CORS errors:** Make sure you are using the .api() method instead of a direct fetch ### Debugging Tips 1. **Enable verbose logging** during development 2. **Test API calls** in isolation before integrating into your app 3. **Verify your Advanced Settings** configuration in Developer Hub 4. Use the browser’s **network** tab to inspect request and response details 5. Wrap API calls in **try-catch** blocks with detailed error logging for better traceability ### Getting Help * Refer to the [App Permissions](/docs/developer-hub/build-an-app-using-app-permissions) documentation * Refer to the [Introduction to Advanced Settings](/docs/developer-hub/introduction-to-advanced-settings) in Developer Hub * Contact the [support team](mailto:support@contentstack.com) with specific error messages and request details --- ## URL: https://www.contentstack.com/docs/developer-hub/app-config-location --- title: "App Config Location" description: "Manage app settings in the App Configuration Location for easy, secure access across all installations." url: "https://www.contentstack.com/docs/developer-hub/app-config-location" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: app-config-location.md --- # App Config Location The App Config UI Location allows you to manage all the settings for your app centrally. You need to configure it once and all the other locations (where the app is installed) can access these configurations. The app configuration page is a separate entity that allows you to configure your application. Setting up an app configuration page allows you to store all the config settings for your application and secure their access from a single location. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * An app created in Developer Hub * A hosted app URL (Launch or custom hosting) ## What You Will Learn * The difference between the App Config and Server Config configuration types. * Best practices for building an app config page. * How to add an App Config location to your app through the Developer Hub console. ## Types of configurations There are two types of configurations that Contentstack supports: 1. **App Config:** The app config type of configuration is a public configuration that you can share with all locations. You can view these configurations in your API response. **Note:** It is recommended not to store any sensitive data in the app config as anyone can access it via the APIs. 2. **Server Config:** The server config contains sensitive configurations of your app. It is directly shared with the backend server. Suppose you register a webhook to capture app installation update events. After the installation is updated, the information is directly sent to the backend apps via the [webhook](/docs/developer-hub/managing-webhooks-in-an-app/). **Note:** It is recommended to use server config for configurations that should be kept private and can be accessed only by the admins. ## Best Practices for Building an App Config Page Your app config page should be straightforward, giving the users a clear idea of the details they need to provide to set up an application. It would be best if you have a simple interface so users can easily interact with your app. Your app should allow users to manage all the other UI locations from your app. You should capture sensitive information using the server configuration type. Capture non-sensitive details using the app configuration type. **Note:** The UI need not show the difference between server and app configurations. ## Create an App Config Page Let's see how to add app config location to your app: * **Via the Developer Hub Console:** To add the app config location to your app via the Developer Hub console, login to your [Contentstack Account](https://www.contentstack.com/login) and follow the steps given below: 1. Navigate to **App Switcher** on the top-right corner and select **Developer Hub**. 2. Select the application for which you want to set up the configuration page. 3. Click the **UI Locations** tab. To set the **App URL**, click the **View Hosting** link. You will be redirected to the **Hosting** tab. ![View\_Hosting.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf879b2d8d0af9821/68343990c589ead0184bdd34/View_Hosting.png) 4. In the **Hosting** tab, you can select [Hosting with Launch](/docs/developer-hub/app-hosting#hosting-with-launch) or[Custom Hosting](/docs/developer-hub/app-hosting#custom-hosting) options. Select the **Custom Hosting** option to enter the hosted URL of your application. Click the **Save** button to save your hosting configuration. ![App\_URL.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt37093a3aeb3377a9/68343990d6011e50b9ed53c9/App_URL.png) 5. Navigate to the **UI Locations** tab to configure the App Config UI location. 6. Hover over the **App Configuration** location, and click the **\+ Add UI Location** button. ![Add\_App\_Config\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7acdbaa7d6872ded/683439903291d22df86485d0/Add_App_Config_Location.png) 7. On the resulting **Configuration** page, set up the configurations for your application by providing details such as **Path**, and **Description**. You can also enable the configuration using the **Enabled** toggle button. Properties that can be specified for this UI location: * **Signed (optional)**: When enabled, Contentstack adds a JWT token to the initial HTTP request made for your app's first page. This token can be used to verify that the request originated from Contentstack. For more information, please refer to [Signed Locations](/docs/developer-hub/securing-your-app/). * **Path (optional)**: Enables you to define the location relative to the base URL where the app is hosted. This is particularly useful when the developer intends the app to appear in multiple locations. * **Enabled (optional)**: Determines whether the location is visible after the app installation. If not specified, the location is enabled by default. Users can manage this option post-installation via the UI Locations tab on the app’s configuration screen. You can configure any UI location as **mandatory** using the **Required** toggle. If the toggle is enabled, the location becomes mandatory and cannot be disabled. Whereas, if the toggle is disabled, the UI location is available to use but not mandatory. **Additional Resource:** Refer to the [Marketplace App Manifest](/docs/developer-hub/app-manifest) documentation for comprehensive details. ![App\_Configuration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta4a6392be4f17457/68343990cf52ee31ccaed0a2/App_Configuration.png) 8. Finally, click the **Save** button to save the configuration details. You will see the details of the configured UI location on the **UI Locations** tab in the **App Configuration** screen after installing the app. You can enable or disable the non-required UI locations. Apps which have the App Config location configured will be visible in the configuration screen. ![App\_Configuration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf072c893d5b40b29/65b68b97fd23e559e67d971a/App_Configuration.png) **Note:** Each app can have only **one** app config location. You can create custom app config locations by writing your custom code, or you can use the prebuilt [boilerplate](/docs/developer-hub/marketplace-app-boilerplate) and modify the given code to suit your requirements. --- ## URL: https://www.contentstack.com/docs/developer-hub/app-development-best-practices --- title: "App Development Best Practices" description: "Best Practices for App Developers" url: "https://www.contentstack.com/docs/developer-hub/app-development-best-practices" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-24" filename: app-development-best-practices.md --- # App Development Best Practices Contentstack provides an App Framework that makes it easy to build mobile apps for [Contentstack Marketplace](/docs/marketplace/about-marketplace). This document explores some best practices to help app developers quickly build high-performing apps. Developers can follow these guidelines and simplify the app developing, managing, reviewing and the approval process for their apps. Here are the some recommended methods: 1. [Use Venus Component Library](#use-venus-component-library) 2. [Define Project Structure](#define-project-structure) 3. [Follow Naming Conventions](#follow-naming-conventions) 4. [Thorough Code Testing](#thorough-code-testing) 5. [Logging and Monitoring](#logging-and-monitoring) 6. [App Security](#app-security) 7. [Incidence Response](#incidence-response) 8. [App Documentation](#app-documentation) ## Use Venus Component Library We highly recommend you to use the [Venus React Component Library](/docs/headless-cms/venus-component-library) to build Contentstack-based applications. The Venus framework offers a comprehensive collection of Contentstack's UI components, helping you keep consistency throughout the app development process. ## Define Project Structure * While building a project, defining a scalable project structure is essential. The project architecture and folder structure depends on the complexity of your project. Here are some factors to consider while creating a good project structure. * The folder layout should be designed according to the requirements of the project. You can use the component-centric file structure, the file grouping method or any other structure method of your choice. * Developers can add CSS to style and theme large projects easily. * Transform a component into a higher order by reusing the component logic in the render method. ## Follow Naming Conventions Throughout the project, follow standard naming conventions. Developers can use the Pascal case to name components and Camel case to name the functions/ methods inside the components. ## Thorough Code Testing * Avoid potential errors in your code by automating the testing process. You can also use the linter process to analyze the code and fix language code style related errors automatically. * To ensure your application provides a quality experience to the end users, you can add end to end test cases to try and verify the flow of the app. * Automated testing allows you to run thousands of automated test cases simultaneously which will help you achieve an extensive test coverage. In addition, you can conduct automated testing on a regular basis to ensure high quality and performance of apps. ## Logging and Monitoring * Writing logs can help you to analyze the app, monitor the performance, find bugs and troubleshoot errors in your app. * Follow some best logging practices like using the suitable logging library, including structured logging, writing detailed log event messages, and avoid logging sensitive information of your app. * Furthermore, logs can also be used to audit the performance of your system and generate useful behavioral statistics of your app. * Frequent app monitoring is essential to provide uninterrupted service to the users. This can be achieved with periodic health checks and monitoring downtime. * Monitor the speed and wait-time of your app’s API Latency, to ensure low wait time on the loading speed. ## App Security * The app should be scanned for potential vulnerability at regular intervals on production infrastructure. The vulnerability scan results should be triaged and a timeline to remediate the vulnerability should be provided. * Apps should have the capability to encrypt data exchanged over the internet using HTTPS. A valid TLS certificate, or SSH, should also be present. * Store client ID and client secret keys securely. We suggest you store them as environmental variables. * Apps should be able to delete all user data within 30 days when such request is received from the user. * Tokens, client IDs, and client secrets should be encrypted by the app. * It is mandatory for OAuth Apps to authenticate using an OAuth token. ## Incidence Response * Before listing the app on Contentstack Marketplace, provide a clear incident response plan to the users. It is best if the incident response team works within the organization to work on the issues. * Inform the Contentstack Marketplace team within 24 hours of any confirmed incident. Provide users with instructions on what to do when an incident occurs. ## App Documentation * The app should have supported documents to guide the users through the app installation, set up and usage process. * Support your documentation with Screenshots and Videos wherever possible to help users understand the app features and process in detail. * Lastly, you must try out, verify and review the content before publishing it on your website. --- ## URL: https://www.contentstack.com/docs/developer-hub/app-hosting --- title: "App Hosting in Developer Hub" description: "Effortlessly fetch or create new projects in Launch for deployment, and even customize your app URL for integration with third-party web hosting providers." url: "https://www.contentstack.com/docs/developer-hub/app-hosting" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: app-hosting.md --- # App Hosting in Developer Hub [UI Locations](/docs/developer-hub/about-ui-locations) are integral to the customization of the Contentstack that allow you to enhance the Contentstack user interface with custom-built elements, providing an enriched user experience. They refer to specific places within the Contentstack dashboard where custom UI components can be embedded. To ensure these components operate seamlessly, their corresponding UI code must be hosted properly. The App Hosting feature in Contentstack enables you to host your app via Contentstack’s [Launch](/docs/launch#launch-overview) platform or an external web hosting provider. Contentstack Developer Hub offers two hosting options to cater to your specific needs: * Custom Hosting * Hosting with Launch Let’s take a look at the benefits, scenarios and procedure of using the two App Hosting options for hosting the user interface code associated with UI Locations within the Contentstack Developer Hub. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * An app created in the Developer Hub ## What You Will Learn * How to choose between Custom Hosting and Hosting with Launch. * How to configure Custom Hosting with your own app URL. * How to host your app with a Launch project. * How to disconnect a Launch project or open it in Launch. ## Custom Hosting A self-managed solution if you require hosting on your own servers or need specific configurations. **Why should you choose Custom Hosting?** * Complete control over the hosting environment. * Organizations with specific hosting policies and resources. **Scenarios Custom Hosting is ideal for** * Complex UI Locations that need specialized server setups. * Custom implementations with dedicated infrastructure. * Organizations with specific hosting policies and resources. ### Steps for Custom Hosting Log in to your [Contentstack account](https://www.contentstack.com/login), [create an app](/docs/developer-hub/creating-an-app-in-developer-hub/) in the Developer Hub and follow the steps below to host your app: 1. Navigate to the app you created. In the left navigation panel, you will find the icon for **Developer Hub**. Click the icon to navigate to Developer Hub. 2. You will be directed to the app dashboard where you will see all apps created so far. Select an app to get started. 3. In the left navigation panel, click the **Hosting** tab. ![Hosting\_Tab.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt80484a4e2b1ee5d5/69008571fbd2d5fb00bb0473/Hosting_Tab.png) 4. In the **Hosting Type**, select **Custom Hosting**. 5. In the **Custom Hosting** option, enter the **App URL** where your app is hosted.![Custom\_Hosting.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt70f292d077e2401c/690088956e50037055d2b297/Custom_Hosting.png) 6. Click the **Save** button. ## Hosting with Launch Managed hosting solution recommended for those who wish to leverage Contentstack’s infrastructure for ease of deployment. **Why should you choose Hosting with Launch?** * Quick and easy setup, allowing for immediate deployment. * A managed service that reduces the overhead of self-hosting. * Automatic scaling and security provided by Contentstack. **Scenarios Hosting with Launch is ideal for** * Standard UI Locations that do not require complex backend logic. * Developers who prioritize ease of maintenance and support. * Quick integration within the Contentstack ecosystem. ### Steps for Hosting with Launch 1. Navigate to the app you created. In the left navigation panel, you will find the icon for **Developer Hub**. Click the icon to navigate to Developer Hub. 2. You will be directed to the app dashboard where you will see all apps created so far. Select an app to get started. 3. In the left navigation panel, click the **Hosting** tab. ![Hosting\_Tab.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt80484a4e2b1ee5d5/69008571fbd2d5fb00bb0473/Hosting_Tab.png) 4. In the Hosting Type, select **Hosting with Launch**. ![Hosting\_with\_Launch.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt733255d1f59845b9/69008571ef3c8724310e3d99/Hosting_with_Launch.png) 5. Select a **Launch Project** from the dropdown. This will fetch all the projects deployed in your Launch platform.![Select\_Create\_Project.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc790d7ab63c3e1a8/690085713a6db2633de47d27/Select_Create_Project.png) To create a new project in Launch, follow the steps below: 1. Click **+ Create a New Project**. **Additional Resource:** Launch allows you to create a project by importing the website code from GitHub or by uploading a zip file. Please refer to the [Create a Project using GitHub](/docs/launch/import-project-using-github/) and [Create a Project using File Upload](/docs/launch/import-project-using-file-upload/) documentation for detailed step by step. 2. You will see a pop-up to fetch the project from GitHub/Bitbucket or upload a zip file. Click **Next** to proceed further. ![Create\_New\_Project\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta72e68442dcd343c/6900857100b0546ce8f041ca/Create_New_Project_Button.png) **Note:** When deploying an app via **Launch** in **Developer Hub**, the default output directory is ./build. Depending on the selected **Framework** **Preset**, this may automatically update (for example, to ./dist). Users can always **override** or **modify** the output directory as needed to match their framework’s build configuration. Once the project is successfully selected or created, you will see **Status** for the project. **Live** status shows successful deployment of the project whereas **Failed** status denotes that the deployment failed. ![Live\_Project.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0c8abba42010193f/69008571f845e47b58d25d5c/Live_Project.png) 6. Click the **Save** button. #### Disconnecting Launch Project and Opening in Launch After saving, you will see a three dots icon besides the **Select Launch Project** dropdown. You can **Disconnect Launch Project** or **Open in Launch**. ![Disconnect.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3a47f0a3c9cd25a3/690085714114f63b38db715e/Disconnect.png) 1. To disconnect, click the three dots icon besides the **Select Launch Project** dropdown and then click the **Disconnect Launch Project**. 2. In the pop-up. Click **Yes, Disconnect** to disconnect the project. ![Disconnect\_Project.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8b485b4f021bda74/69008571aeaf65c96324ef40/Disconnect_Project.png) 3. To open a project in launch, click **Open in Launch**. You are redirected to the Launch projects landing page as shown below: ![Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt812542724b72a46b/69008571cdded84f4bd15fb6/Output.png) With App Hosting, Contentstack empowers developers with the flexibility to host UI code for UI Locations in a manner that best suits their project requirements. Select the hosting option that best facilitates the deployment and optimal functioning of your custom UI components within the Contentstack platform. --- ## URL: https://www.contentstack.com/docs/developer-hub/app-manifest --- title: "Marketplace App Manifest" description: "Discover the essential properties of an App Manifest file, including name, type, description, icon, target type, framework version, and version." url: "https://www.contentstack.com/docs/developer-hub/app-manifest" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: app-manifest.md --- # Marketplace App Manifest The App Manifest represents an app within Contentstack, encapsulating the app's identity, locations, and permissions within the ecosystem. This foundational entity holds crucial metadata necessary for the installation, management, and behavior of an app while it operates within Contentstack. Users can view the app’s manifest by clicking the respective app and navigating to the “App Manifest” section. Users who can manage the app have access to the full view of the manifest, while other users in the organization can access the basic view of the app manifest. Highlighted below is a comprehensive guide to understanding the significance, structure and management of App Manifest components such as the app's name, description, visibility settings, event interactions, and authorization scopes. Supported Attributes for App Manifest: * [UID (System Defined)](#uid-system-defined) * [Name (Required)](#name-required) * [Description (Optional)](#description-optional) * [Target Type (Optional)](#target-type-optional) * [Framework Version (System Defined)](#framework-version-system-defined) * [Version (System Defined)](#version-system-defined) * [Visibility (System Defined)](#visibility-system-defined) * [UI Location (Optional)](#ui-location-optional) * [Webhook (Optional)](#webhook-optional) * [OAuth (System Defined)](#oauth-system-defined) * [Advanced Settings (Optional)](#advanced-settings-optional) * [Hosting (System Defined)](#hosting-system-defined) * [Organization UID (System Defined)](#organization-uid-system-defined) * [Created By (System Defined)](#created-by-system-defined) * [Updated By (System Defined)](#updated-by-system-defined) * [Created At (System Defined)](#created-at-system-defined) * [Updated At (System Defined)](#updated-at-system-defined) ## App Manifest Example Let’s look at an example of an App Manifest. ``` { "uid": "659e7d2a3079300012b23803", "name": "My Awesome App", "description": "This app does wonders", "target_type": "stack", "visibility": "private", "framework_version": "1.0", "version": 2, "ui_location": { "locations": [ { "type": "cs.cm.stack.sidebar", "meta": [ { "uid": "659e7e0cf****5626786803e", "path": "/sidebar", "enabled": true, "required": false, "signed": true, "description": "This app provides some wonderful insights about your entry" } ] } ] }, "webhook": { "enabled": true, "custom_headers": [], "http_basic_auth": "username", "http_basic_password": "password", "target_url": "https://example.com/webhook", "channels": [ "cs.apps.installations.install", "content_types.entries.create" ], "notifiers": [], "branch_scope": "$all" }, "oauth": { "client_id": "ox_Hxe74BKqBo-DQ", "client_secret": "dWhzhSIccR******-***ShB8wLtzUA", "redirect_uri": "https://example.com/oauth/callback", "user_token_config": { "enabled": false, "scopes": [], "allow_pkce": false }, "app_token_config": { "enabled": false, "scopes": [] } }, "hosting": { "provider": "external", "deployment_url": "http://localhost:3000" }, "advanced_settings": { "variables": { "AI_API_KEY": "app_ai_api_key" }, "mappings": { "WEBHOOK_URL": "notifications.webhook" }, "rewrites": [ { "source": "/v1/*rest", "destination": "https://api.ai.com/v1/*rest" } ] }, "organization_uid": "blte***e9b6abc4d33c", "created_by": { "uid": "blt0c2c***ec5a7bde6" }, "updated_by": { "uid": "blt0c2c***ec5a7bde6" }, "created_at": "2024-01-10T11:19:06.029Z", "updated_at": "2024-01-10T11:22:52.268Z" } ``` ## Manifest Properties ### **UID** (System Defined) **Type:** string **Description:** Specifies the unique identity of the app. **Code:** "uid": "659e7d2a3079300012b23803" ### Name (Required) **Type:** string **Description:** Specifies a name of the app. This name is used across multiple locations where the app appears. **Minimum length:** 3 **Maximum length:** 20 **Code:** name: "My Awesome App" ### Description (Optional) **Type:** string **Description:** Specifies a short description of the app. **Maximum length:** 2000 **Code:** description: "This app does wonders" ### Target Type (Optional) **Type:** string **Description:** Specifies the [type](/docs/developer-hub/types-of-apps) of the app. The Target Type property can be defined as either "stack" or "organization". This specifies whether the app can be installed at the stack level or organization level. If this property is not specified, the app is considered a stack app by default. This property once defined, **cannot** be modified later. **Code:** target\_type: "stack" ### Framework Version (System Defined) **Type:** string **Description:** Specifies the framework version used while creating your app. The Contentstack Apps Framework uses versioning to maintain compatibility with existing applications, ensuring that framework modifications do not disrupt apps unexpectedly. **Code:** "framework\_version": "1.0" ### Version (System Defined) **Type:** number **Description:** Specifies the version number of the app. The version number will be displayed next to your app's name during the app installation. Initially, the app is generated with the version number 1 and thereafter, it auto-increments with each subsequent update. **Code:** "version": 1 ### Visibility (System Defined) **Description:** Specifies whether the app is private or not. The Visibility property can be defined as private, public, or public\_unlisted. By default, newly created apps are set as private, allowing installation only within the app developer's organization. When an app is marked as public or public\_unlisted, it becomes available for installation in any Contentstack organization. Public apps are listed on the Contentstack Marketplace, while public\_unlisted apps require the developer to provide the installation URL for access. **Code:** visibility: "private" ### UI Location (Optional) **Description:** Specifies where the app will be visible. The UI Location specifies where the app appears in the product interface, and enables configuration of location-specific options. You can specify multiple locations for an app. Also, some framework APIs are available only to apps in certain locations. See [About UI Locations](/docs/developer-hub/about-ui-locations) for more information. The ui\_location configuration contains a list of _locations_, each specifying its type and individual meta configurations. Let's take a look at the list of all location types supported by an **organization** app: **Location** **Configuration** App Config Location cs.org.config Now, let's explore the list of all location types supported by a **stack** app: **Location** **Configuration** Custom Field UI Location cs.cm.stack.custom\_field Dashboard UI Location cs.cm.stack.dashboard Asset Sidebar Location cs.cm.stack.asset\_sidebar App Config Location cs.cm.stack.config RTE Location cs.cm.stack.rte Full Page Location cs.cm.stack.full\_page Field Modifier Location cs.cm.stack.field\_modifier Sidebar Location cs.cm.stack.sidebar Properties that may be specified for each location: * name _(optional)_: Specifies the name of the location. This will be displayed at the location after app installation. If this property is not specified, the app name is used as the location name. For multiple configurations of the same location, ensure each has a distinct and appropriate unique name. * signed _(optional)_: When enabled, Contentstack adds a JWT Token to the initial HTTP request made for your app's first page. This token can be used to verify if the request originated from Contentstack. Please refer [Signed Locations](/docs/developer-hub/securing-your-app/) for more information. * path (optional): Enables you to define the location relative to the base URL where the app is hosted. This is particularly useful when the developer intends the app to appear in multiple locations. * enabled _(_optional_)_: Allows you to define whether the location is visible after the app installation. By default, a location without this property is treated as enabled. Users can manage this option post-installation by accessing the UI Locations tab on the configuration screen. * required _(optional)_: When enabled, the location becomes mandatory and cannot be disabled after the app's installation. Locations without this property are, by default, considered optional. **Code:** ``` "ui_location": { "locations": [ { "type": "cs.cm.stack.sidebar", "meta": [ { "uid": "659e7e0cf****5626786803e", "path": "/sidebar", "enabled": true, "required": false, "signed": true, "description": "This app provides some wonderful insights about your entry" } ] } ] } ``` ### Webhook (Optional) A [webhook](/docs/developer-hub/managing-webhooks-in-an-app) provides a mechanism or a method for enabling real-time communication and data exchange between Contentstack and your application. Properties that can be specified for a webhook: * enabled _(_required_)_: Allows you to define whether the webhook is active after the app installation. Users can view execution logs of the webhook post-installation by accessing the Webhook tab on the configuration screen. * target\_url _(required)_: This URL will receive a notification when the webhook is triggered. Only HTTPS endpoints are allowed, and localhost is not supported. To secure the target\_url with basic authorization, provide the necessary details in the http\_basic\_auth and http\_basic\_password fields. You can also provide _custom\_headers_ to further secure the URL. * channels (_required)_: Channels describe the list of all events for which the webhook is subscribed. Below is a complete list of all events supported by the Contentstack App Framework: **Method** **Description** cs.apps.installations.install App installed cs.apps.installations.uninstall App uninstalled cs.apps.installations.update App installation updated cs.apps.installations.upgrade App version updated content\_types.entries.create Any entry is created content\_types.entries.update Any entry is updated content\_types.entries.delete Any entry is deleted content\_types.entries.environments.publish.success An entry is successfully published in any environment content\_types.entries.environments.unpublish.success An entry is successfully unpublished from any environment content\_types.create New content type is created content\_types.update Any content type is updated content\_types.delete Any content type is deleted assets.create New asset is created assets.environments.publish.success An asset is successfully published in any environment assets.update Any asset is updated assets.delete Any asset is deleted assets.environments.unpublish.success An asset is successfully unpublished from any environment global\_fields.create New global field is created global\_fields.update Any global field is updated global\_fields.delete Any global field is deleted releases.environments.deploy Any release deployed on all environments branch.create-initiated When branch creation is initiated branch.create-completed When branch creation is completed branch.delete-initiated When the branch deletion is initiated branch.delete-completed When the branch deletion is completed branch\_alias.assigned When the branch alias is assigned branch\_alias.unassigned When the branch alias is unassigned * notifiers _(optional)_: Notifiers specify the list of email addresses to notify whenever the [Circuit Breaker](/docs/headless-cms/webhook-circuit-breaker) disables the webhook. By default, the creator of the app and the user who installs it will receive notifications. However, for additional users to receive alerts, configuration is necessary. Contentstack sends the email alert to the specified user(s). **Code:** ``` "webhook": { "enabled": true, "custom_headers": [], "http_basic_auth": "username", "http_basic_password": "password", "target_url": "https://example.com/webhook", "channels": [ "cs.apps.installations.install", "content_types.entries.create" ], "notifiers": [], "branch_scope": "$all" } ``` ### OAuth (System Defined) Contentstack enables external applications and services to access its APIs using the OAuth 2.0 protocol. During app creation, OAuth configuration is set, and users can later update details like redirect URL and scopes for both user and app token configurations. These settings are essential for generating an access token, granting access to the Contentstack APIs. Properties that can be specified for a configuring OAuth: * client\_id _(system defined)_: Identifies your application and frequently appears in the OAuth negotiation URLs. * client\_secret _(system defined)_: Acts as a secret credential when exchanging tokens with Contentstack. * redirect\_uri _(required)_: The Redirect URL is where the authorization server sends users after they've successfully authorized the app. It's important to keep this URL secure to prevent redirection to random places. Developers need to register one or more redirect URLs when setting up the app. Users can set up to **10** redirect URLs, and the first one listed becomes the default. * user\_token\_config _(system defined)_: Specifies the scopes and allow\_pkce options for user token flow. * app\_token\_config _(system defined)_: Specifies the scopes for app token flow. **Code:** ``` "oauth": { "client_id": "ox_Hxe74BKqBo-DQ", "client_secret": "dWhzhSIcc***********B8wLtzUv", "redirect_uri": "https://example.com/oauth/callback", "user_token_config": { "enabled": false, "scopes": [], "allow_pkce": false }, "app_token_config": { "enabled": false, "scopes": [] } } ``` ### Advanced Settings (Optional) **Note:** This document contains technical information about the structure of advanced settings. ``` { "advanced_settings": { "variables": { "AI_API_KEY": "app_ai_api_key" }, "mappings": { "WEBHOOK_URL": "notifications.webhook" }, "rewrites": [ { "source": "/v1/*rest", "destination": "https://api.ai.com/v1/*rest" } ] }, } ``` **Description:** Settings to make secure external API calls from apps without maintaining backend servers. Advanced settings include the following properties: #### Variables (Optional) **Description:** [Variables](/docs/developer-hub/introduction-to-advanced-settings#variables) provide a secure way to store sensitive information, such as API keys, tokens, and secrets, as encrypted key–value pairs. These credentials are never exposed in the frontend and are automatically shared across all installations of an app. **Purpose:** Used to securely inject secrets into API requests made with appSdk.api(), eliminating the need to hardcode credentials in frontend code or maintain a custom backend for secret management. #### Mappings (Optional) **Description:** [Mappings](/docs/developer-hub/introduction-to-advanced-settings#mappings) act as dynamic references to values defined in the **Server Configuration**. At runtime, each mapping automatically resolves to an installation-specific or environment-specific value. **Purpose:** Enables app administrators or customers to define flexible, context-dependent values, such as webhook URLs or tenant-specific API keys, without exposing them in frontend code. #### Rewrites (Optional) **Description:** [Rewrites](/docs/developer-hub/introduction-to-advanced-settings#rewrites) define rules that transform incoming API request paths into destination URLs. They provide cleaner, consistent request patterns within the app while abstracting complex or changing external endpoints. **Purpose:** Simplifies and secures API routing by mapping user-friendly paths to complex or environment-specific endpoints behind the scenes. Each rewrite rule has two parts: Field Description source The relative request path pattern your app uses (e.g., /users/:userId/profile) destination The absolute URL or mapping that the request should be rewritten to (e.g., https://api.example.com/v1/accounts/:userId/profile) At runtime, when a call is made to the source path, Contentstack rewrites the request to the destination URL. ##### **Supported Pattern Types:** Pattern type Syntax Description Example Path Parameter :param Matches a single path segment /user/:id matches /user/123 Wildcard \*param Matches one or more segments /docs/\*path matches /docs/setup/api Optional {/:param} Defines optional segments /help{/:lang}/faq matches /help/faq and /help/en/faq ##### **Example Rewrite Rules** **User profile API** ``` { "source": "/users/:userId/profile", "destination": "https://api.myapp.com/v1/accounts/:userId/profile" } ``` /users/123/profile → https://api.myapp.com/v1/accounts/123/profile **Product details** ``` { "source": "/products/:sku", "destination": "https://catalog.example.com/items/:sku" } ``` /products/ABC123 → https://catalog.example.com/items/ABC123 **Optional language parameter** ``` { "source": "/help{/:lang}/faq", "destination": "https://support.example.com/docs{/:lang}/faq" } ``` /help/faq → https://support.example.com/docs/faq /help/en/faq → https://support.example.com/docs/en/faq **Admin dashboard with optional section** ``` { "source": "/admin{/:section}", "destination": "https://internal.api.com/dashboard{/:section}" } ``` /admin/settings → https://internal.api.com/dashboard/settings /admin → https://internal.api.com/dashboard **Wildcard for nested documentation** ``` { "source": "/docs/*path", "destination": "https://docs.example.com/en/*path" } ``` /docs/guides/api/setup → https://docs.example.com/en/guides/api/setup ##### **Rewrite Rule Constraints:** * Source Path must: * Be relative (starts with /) * Use only supported patterns: :, \*, {} * Source Path must not: * Include query parameters (?key=value) * Use absolute URLs * Destination Path must: * Be an absolute URL * Use placeholders that match the source pattern ##### **Rule Execution:** * Rules are **evaluated top-down** in the order defined. * The **first matching rule is applied**. * Place **specific rules before generic** wildcard-based ones to avoid unintended matches. **Code:** ``` { "advanced_settings": { "variables": { "AI_API_KEY": "app_ai_api_key" }, "mappings": { "WEBHOOK_URL": "notifications.webhook" }, "rewrites": [ { "source": "/v1/*rest", "destination": "https://api.ai.com/v1/*rest" } ] }, } ``` ### Hosting (System Defined) For an app to be accessible, Contentstack needs to know the URL of the app. Initially, during app creation, the default URL is set to ``` http://localhost:3000 ``` . You can later update it to match wherever your app is running. For frontend apps, there's also the option to [host directly with Launch](/docs/developer-hub/app-hosting#hosting-with-launch). Properties that may be required to be specified when configuring hosting: * provider _(required)_: A provider determines the type of hosting option you have configured. Currently, we support two providers: launch and external. When configuring hosting with Launch, you must provide details such as project\_uid, environment\_uid, and the deployment URL. However, if you opt for an external provider, only the deployment URL needs to be specified. * deployment\_url _(required)_: Contentstack uses this public URL to access your application. During development, you may choose to use localhost. However, for the app to be accessible to others, it needs to be hosted on the internet. **Code:** ``` "hosting": { "provider": "external", "deployment_url": "http://localhost:3000" } ``` ### Organization UID (System Defined) **Description:** Specifies the organization in which the app is created. **Code:** "organization\_uid": "bltb00c436e709d1865" ### Created By (System Defined) **Description:** Specifies the identity of the user who created this app. **Code:** "created\_by": {"uid":"blt65a\*\*\*\*e72183ade"} ### Updated By (System Defined) **Description:** Specifies the identity of the user who last updated the app. **Code:** "updated\_by": {"uid":"blt65a\*\*\*\*e72183ade"} ### Created At (System Defined) **Description:** Specifies the timestamp when the app was created. **Code:** "created\_at": "2021-07-06T05:02:58.868Z" ### Updated At (System Defined) **Description:** Specifies the timestamp when the app was last updated. **Code:** "updated\_at": "2021-07-06T05:02:58.868Z" --- ## URL: https://www.contentstack.com/docs/developer-hub/app-releases --- title: "App Releases" description: "Track changes and streamline your app management with Contentstack's App Releases in the Developer Hub." url: "https://www.contentstack.com/docs/developer-hub/app-releases" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: app-releases.md --- # App Releases **Note:** App Releases are only available for Public applications. To submit your private application for public listing, reference the [App Submission and Approval Guide](/docs/marketplace/app-submission-and-approval-guide). App Releases let you mark milestones in your app's development, communicate updates to users through release notes and in-app notifications, and test changes before they go live. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * A public application in the Developer Hub ## What You Will Learn * What App Releases are and why they matter. * The release types (Major, Minor, Patch) and statuses (Draft, Review, Live, Historical). * How to view the Releases table for an app. * How to create a release and submit it for review. ## Role of Releases in App Development Building a complex application is an ongoing project. New features, bug fixes, and refinements happen regularly. **Releases serve as milestones**, marking progress and providing a clear record of changes. Every update to your application creates a new version - some are minor tweaks, while others are significant improvements. Releases help capture and organize these moments, ensuring a structured development process. With Releases, you can build and experiment without revealing changes publicly until you are ready. Unreleased updates remain visible **only to your team**, while your app users see only the current live release. ## Why Releases Matter? * **Track Progress:** Monitor your app’s evolution and key milestones. * **Innovate Safely:** Develop and test new features without affecting live users. * **Communicate Updates:** Keep users informed about changes and improvements. ## Communicate Changes Previously, incremental versioning provided limited insights around application updates to your users. **App** **Releases** improve communication about app updates by providing **release** **notes** and **in-app notifications** to users, clarifying changes and prompting updates when needed. Even if the app manifest remains unchanged, App Releases allow you to communicate functional enhancements. Since multiple releases can exist for the same app version, you have the flexibility to inform users about important updates whenever needed. ## App Releases To view complete details of all the releases, follow the steps below: 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. From the left navigation panel, click the **Developer Hub** icon. 3. You will be directed to the Apps Dashboard page, where you see all the apps created so far. Select an app to get started. 4. By default, the app's **Basic Information** page will open. 5. In the left navigation panel, click the **Releases** tab. ![Select\_Releases\_Tab.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta2f23d6ce93e7d4f/663b845770ebbab5ceab902f/Select_Releases_Tab.png) 6. If you have created releases previously, you will see the list of all the releases created for the app. The different columns along with relative information will be as shown below: 1. **Release:** Displays the release associated with the version. 2. **Title:** Displays the custom title assigned to the release. 3. **Type:** Displays the type of release, **Major**, **Minor**, or **Patch**. 4. **App Version:** Displays the associated app version number. 5. **Status:** Displays the status of the release, **Review**, **Live**, **Draft** or **Historical**. 1. **Draft:** Recently created release, that has not been submitted for approval. 2. **Review:** When the release is submitted for approval. 3. **Live:** The current available release of your application after approval. After approval, a release in the review state transitions to live, making it available for all users to try out. At any given time, there will only be one live release for an app. 4. **Historical:** After approval, a new release goes live, and the previous one transitions to "Historical" status. Only one release can be live at a time, while all past releases are marked as historical. 6. **Created By:** Displays the name of the user who created the version. 7. **Created At:** Displays the date and time of creation. 7. In the **Actions** column, click the ellipses to view the release details. 8. Click the **View** icon. A pop-up modal appears where you can view the release details. ![View\_Relese.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt71ecf99dfad96c88/663dc79cc37e3456a9ad0677/View_Relese.png) ## Create a Release To create a new release, follow the steps below: 1. From the top right corner, click the **\+ New Release** button to create the release notes associated with the version. ![\_New\_Release.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt50f4583a85540828/663b845644cc74a10359550f/_New_Release.png) 2. Enter a suitable **Title** for the release. 3. Select a **Version** from the dropdown. You can create a release on the same version or the version that exceeds the current version of the latest release. For example, If you create a release for version 5, you cannot make a release for historical versions below 5, i.e., version 4, version 3, etc. 4. Provide a **Type** from the dropdown, i.e., **Major**, **Minor**, or **Patch**. With tag types, you can define the severity of the changes made to the app. 1. **Major** releases typically introduce significant changes to an app. This could involve introducing new features, making substantial improvements, or even changing the overall direction of the application. Major releases may not be backward compatible. This means that the changes introduced could break compatibility with earlier versions. Developers should notify users of any breaking changes in their release notes. For example, overhauling the application's architecture for better performance, introducing a new UI, or enabling a new UI location. If the current application version is one and you select version two while creating a release, you will only be presented with the options for major and minor types. 2. **Minor** releases typically introduce incremental updates to an application. These could be new features, enhancements, or improvements that keep the application's core functionality the same. For example, adding a new tool to an existing feature set or introducing new app configuration options. Minor releases must maintain backward compatibility with previous versions. 3. **Patch** releases are typically minor, quick updates to fix bugs or make other minor improvements. They do not add new features or make noticeable changes to the software's functionality. For example, correcting a user interface issue, resolving performance bugs, or minor tweaks to improve usability or stability. 5. The **Tag** field is automatically incremented and generated based on the selected release type. 1. **Major:** Increments from 1.0.0 to 2.0.0 2. **Minor:** Increments from 1.1.0 to 1.2.0 3. **Patch:** Increments from 1.1.1 to 1.1.2 6. In the **Release Note** field, enter the details of the update made to the app's current version. This helps the users understand the latest changes made to your app and will be the public record of your apps release history. ![Create\_Release.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte1f0ef1b0647d78c/663b8457f8baf05434a75914/Create_Release.png) 7. Click the **Create Release** button. 8. After the release is created successfully, the pop-up modal closes. You can see the latest changes in the releases table. The release status is automatically changed to the “Draft” mode upon creation. ![Draft\_Mode.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6b6542ea98d7bbb1/663b84565f24855438d0d626/Draft_Mode.png) 9. In the **Actions** column, click the ellipses to edit, delete, or submit the app for review. Contentstack’s Marketplace team will review your app upon submission. Users are required to wait for a duration of 21 days to receive the status of their [app submission](/docs/marketplace/app-submission-and-approval-guide). You will be notified about the status via email. ![Three\_Dots.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt37e523992a116116/663b84575f2485e2ccd0d62a/Three_Dots.png) **Note:** You cannot revoke or delete your app submission request. Reach out to our [Support Team](mailto:support@contentstack.com) if you have any concerns or queries. 10. Click the **Edit** icon. A pop-up screen appears. You can only update the **Title** and the **Release Note** of the release. Once a release is submitted for review, editing it is not possible. However, if the app releases submission is rejected, you can make edits to the releases. ![Edit\_Release.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd55924e5591ea4db/663b8457aea3293cb260e3b2/Edit_Release.png) 11. Once done, click **Save Changes** to update the release. The approved release notes of your application will now be visible publicly on your application’s Releases tab in the Marketplace. You can view the detailed app model by navigating to _Marketplace -> Discover -> Search_ for your Application and click to open the App Details modal. Furthermore, as soon as an app release is approved by Contentstack, users who have previously installed your application will receive an in-app notification if the release requires an update of their application. This provides a way for Developers to communicate to their users when an application update is required in order to adopt changes to the application. --- ## URL: https://www.contentstack.com/docs/developer-hub/app-versioning --- title: "App Versioning" description: "Track changes and manage app versions with Contentstack's Version Logs in the Developer Hub." url: "https://www.contentstack.com/docs/developer-hub/app-versioning" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: app-versioning.md --- # App Versioning Developer Hub will help you manage your application over time, allowing you to look back on historical changes and even restore back to previous versions. **Note:** * Refer to our [App Manifest](/docs/developer-hub/app-manifest) documentation to manage app versions effectively. Let's go over the basics of Version Logs. A new manifest version is automatically generated when you save an update to your application, such as adding a new UI location or updating the [OAuth](/docs/developer-hub/contentstack-oauth) settings. When a new version is created, it is available as an update for private apps. * Developer Hub handles changes made to the application’s manifest. It cannot detect any modifications the developer makes to the application code, referred to as the App URL in [Hosting](/docs/developer-hub/app-hosting). Changes to your application code will take effect immediately and be accessible to your users. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * An app created in the Developer Hub ## What You Will Learn * How to browse the versions of an app. * How to preview a specific version. * How to restore a version and set it as the latest. * How to view the Version Logs. ## Browse and Restore Versions Let’s take a closer look at how versions can be browsed. To view and create versions of an app via the Developer Hub interface, login to your [Contentstack account](https://www.contentstack.com/login/) and follow the steps given below: 1. Navigate to the app you created. In the left navigation panel, click the **Developer Hub** icon to navigate to it.  2. You will be directed to the app dashboard where you will see all the apps created so far. Select an app to get started. For example, click **Sample** to view the app information. 3. By default, the app's **Basic Information** page will open. You will see a **Version** drop-down with the latest version selected. ![Basic\_Info\_Version.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbed2c03845c6ce27/659e7a27fadb3aad42c39fcc/Basic_Info_Version.png) 4. Click the **Version** dropdown, to see a list of all the versions created for the app. You can preview a specific version of your app by clicking the preferred version from the dropdown. ![Versions\_Dropdown.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltda208d3a4d29cb82/659e7a27d838b37db39d7f81/Versions_Dropdown.png) Details such as version number, creator name, date, and the version creation date and time is displayed for individual versions in the dropdown. 5. To restore your app to this selected version and set it as the latest version, click the **Yes,** **Restore** button. ![Basic\_Information.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5bb3ac98a076ce2e/68493da8b037914d232b5f0c/Basic_Information.png) 6. A confirmation pop-up appears, click **Yes, Restore** to confirm the changes. ## Version Logs To view complete details of all the versions, follow the steps below: 1. In the left navigation of the app's dashboard page, click the **Version Logs** tab. 2. You will see the details and list of all the versions created for the app in a tabular format. The different columns with relative information are as follows: 1. **Version:** Displays the version number. 2. **Created By:** Displays the name of the user who created the version. 3. **Created At:** Displays the date and time of creation. 4. **Actions:** On clicking the three dots, you will see one option: * **View:** Displays all details of a version. You can go back and check the details of a particular version. * ![Version\_Logs\_Table.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt510952e2a5b0d662/659e7a27363d3f0f8445784f/Version_Logs_Table.png) 3. Clicking **View** redirects you to the **Basic Information** page to preview that specific version. Now you can browse the application manifest for that particular version and restore it as latest if required. --- ## URL: https://www.contentstack.com/docs/developer-hub/app-visibility-status --- title: "App Visibility Status" description: "App Visibility Status" url: "https://www.contentstack.com/docs/developer-hub/app-visibility-status" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: app-visibility-status.md --- # App Visibility Status App Visibility Status, as the name suggests, defines the visibility of your app in terms of whether it will be **private** (visible to only you) or **public** (visible to all). Let’s look at them in detail. ## Private Apps Private apps are available only within a specific organization and are not visible in the Contentstack Marketplace. Any user with organization owner/admin or stack owner/admin roles can install them. **Note**: You cannot install private apps in another organization. ## Public Apps Public apps are available for everyone to install. There are two types of public apps, namely listed public apps and unlisted public apps. * **Listed Public Apps:** These apps are available in the Contentstack Marketplace. Any user with the organization owner/admin role can install the listed public apps. * **Unlisted Public Apps:** Unlisted apps are not available in the Contentstack Marketplace. Unlisted apps are beneficial if the integration starts from the developer's website or for apps like OAuth which need access to multiple regions. For details on submission and approval of Contentstack Marketplace public apps, please refer to our [App Submission and Approval Guide](/docs/marketplace/app-submission-and-approval-guide). --- ## URL: https://www.contentstack.com/docs/developer-hub/asset-sidebar-location --- title: "Asset Sidebar Location" description: "Manage and optimize your assets in the Asset Sidebar Location to enhance their functionality for your needs." url: "https://www.contentstack.com/docs/developer-hub/asset-sidebar-location" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: asset-sidebar-location.md --- # Asset Sidebar Location The Asset Sidebar Location lets you create customized sidebar widgets that extend the functionality of your [assets](/docs/headless-cms/about-assets) and enhance their editorial experience to suit your needs. You can efficiently manage, transform, and optimize the assets in your [stack](/docs/headless-cms/about-stack). ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * An app created in Developer Hub * A hosted app URL (Launch or custom hosting) ## What You Will Learn * How to add an Asset Sidebar location to your app through the Developer Hub console. * Which properties you can configure for the location. * Where the location appears in the Assets section after installation. ## Add an Asset Sidebar Location to your App Let's see how to add asset sidebar location to your app: * **Via the Developer Hub Console:** To add the asset sidebar location to your app via the Developer Hub console, login to your [Contentstack Account](https://www.contentstack.com/login) and follow the steps given below: 1. Navigate to **App Switcher** on the top-right corner and select **Developer Hub**. 2. Select an application for which you want to add the asset sidebar location. 3. Click the **UI Locations** tab. To set the **App URL**, click the **View Hosting** link. You will be redirected to the **Hosting** tab. ![View\_Hosting.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4502661279fd5aa6/68303235980bb6ba0872715f/View_Hosting.png) 4. In the Hosting tab, you can select [Hosting with Launch](/docs/developer-hub/app-hosting#hosting-with-launch) or [Custom Hosting](/docs/developer-hub/app-hosting#custom-hosting) options. Select the **Custom Hosting** option to enter the hosted URL of your application. Click the **Save** button to save your hosting configuration. ![App\_URL.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc0ab1619e05e9133/68303234bcb194e9539ac1d6/App_URL.png) 5. Navigate to the **UI Locations** tab to configure the Asset Sidebar Modifier UI location. 6. Hover over the **Asset Sidebar** location, and click the **\+ Add** **UI Location** button. ![Add\_Asset\_Sidebar\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt04c721fe28ecc758/683571082e344b0ced49e7f7/Add_Asset_Sidebar_Location.png) 7. On the resulting **Configuration** page, set up the configurations for asset sidebar location by providing details such as **Name**, **Path**, **Width**, **Blur**, and **Description**. You can also enable the configuration using the **Enabled** toggle button. Properties that can be specified for this UI location: * **Name (optional)**: Specifies the name of the UI location. This name will be displayed at the location after the app is installed. If not provided, the app name will be used. Ensure unique names for multiple configurations of the same location. * **Signed (optional)**: When enabled, Contentstack adds a JWT token to the initial HTTP request made for your app's first page. This token can be used to verify that the request originated from Contentstack. For more information, please refer to [Signed Locations](/docs/developer-hub/securing-your-app/). * **Path (optional)**: Enables you to define the location relative to the base URL where the app is hosted. This is particularly useful when the developer intends the app to appear in multiple locations. * **Enabled (optional)**: Determines whether the location is visible after the app installation. If not specified, the location is enabled by default. Users can manage this option post-installation via the UI Locations tab on the app’s configuration screen. You can configure any UI location as **mandatory** using the **Required** toggle. If the toggle is enabled, the location becomes mandatory and cannot be disabled. Whereas, if the toggle is disabled, the UI location is available to use but not mandatory. **Additional Resource:** Refer to the [Marketplace App Manifest](/docs/developer-hub/app-manifest) documentation for comprehensive details. ![Asset\_Sidebar\_Configuration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt88224a9e2e66f62f/683571081a3931529d53d036/Asset_Sidebar_Configuration.png) 8. Finally, click the **Save** button to save the asset sidebar location’s configuration details. You will see the details of the configured UI location on the **UI Locations** tab in the **App Configuration** screen after installing the app. You can enable or disable the non-required UI locations. Apps which have the Asset Sidebar location configured will be visible in the [**Assets**](/docs/headless-cms/about-entries#create-and-manage-assets) section. Navigate to a particular asset and in the right navigation panel, click **Widgets**. For example, the app can be viewed in the Asset Sidebar location as shown below: ![App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5998a7a7f8dc45e8/65b6821afd23e57b087d970c/App.png) **Note:** A single app supports up to **three** asset sidebar locations. You can create new asset sidebar locations by writing your custom code, or you can use the prebuilt [boilerplate](/docs/developer-hub/marketplace-app-boilerplate) and modify the given code to suit your requirements. --- ## URL: https://www.contentstack.com/docs/developer-hub/build-an-app-using-app-permissions --- title: "Build an App using App Permissions" description: "Learn how to build a secure Contentstack Stack app using App Permissions." url: "https://www.contentstack.com/docs/developer-hub/build-an-app-using-app-permissions" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: build-an-app-using-app-permissions.md --- # Build an App using App Permissions This guide walks through building an example app, a Quick Info Dashboard App, that uses Apps Permissions to securely call Contentstack APIs and display stack-level statistics in a Stack Dashboard location. ## Why App Permissions Matter Marketplace apps often interact with Contentstack APIs. **Apps Permissions** ensure apps only have defined access to the resources they need; improving security, trust, and governance. **Benefits for different roles:** * **Developers:** Clear APIs, fewer errors, smoother builds. * **Security/Compliance:** Least privilege access, better auditability. * **PM/Admins:** Safer [Marketplace apps,](/docs/marketplace) well defined access. ## Overview In this guide, we will walk through building an app example for a Quick Info Dashboard App. We will demonstrate how an app can leverage [Apps Permissions](/docs/developer-hub/about-ui-locations#apps-permissions) to securely interact with Contentstack APIs. This example app highlights a real-world scenario where stack-level statistics (content types, entries, and assets) are displayed in a Dashboard location. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login) with access to Developer Hub * Understanding [Contentstack App Development](/docs/developer-hub) * Understanding of [Contentstack Management SDK](https://github.com/contentstack/app-sdk-docs) * Quick Info Dashboard app [GitHub](https://github.com/contentstack/marketplace-quick-info-dashboard-app) Repository * Marketplace App Boilerplate [GitHub](https://github.com/contentstack/marketplace-app-boilerplate) Repository ## What You Will Learn * Why Apps Permissions matter and how they enforce least-privilege access. * How to register a Standard app and add a Stack Dashboard UI location in Developer Hub. * How to configure read permissions for content types, entries, and assets. * How to fetch stack statistics with the Management SDK and handle permission errors. * How to install and test the app with full and limited permissions. ## Quick Info Dashboard App The Quick Info Dashboard App displays stack-level statistics (for example, Content Types, Entries, and Assets). ![Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt095509beca4881fe/690cb010dcc3415b5ca5ec27/Output.png) ### Create an App The best place to start a new project is by cloning the Marketplace App Boilerplate. It has all the components you need for rapid dashboard UI Location development. Clone the [Marketplace Boilerplate](https://github.com/contentstack/marketplace-app-boilerplate) repository and run the following commands: ``` npm install npm run dev ``` ### Register the App in Developer Hub To register an app in Developer Hub, perform the steps given below: 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. On the Dashboard page, click the **Developer Hub** icon. 3. Click the **+ New App** button. 4. Contentstack supports two types of Apps based on two categories: [Standard and Machine to Machine](/docs/developer-hub/introduction-to-contentstack-applications). Here, we will use the **Standard** application. **Additional Resource:** Refer to the [Creating an App in Developer Hub](/docs/developer-hub/creating-an-app-in-developer-hub) documentation to know more about **Standard** and **Machine to Machine** app categories. 5. In the **Create Standard App** modal, select the **App Type**, and give a suitable app **Name** (Quick Info Dashboard) and an optional **Description** as shown below:![Creating\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2d100cb6ae8a5c74/690cb00f37acae5d285ac578/Creating_App.png) 6. Click **Create**. You are redirected to the **UI Locations** landing page.![UI\_Locations\_Tab.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt30d73620fa4eac08/690cb01903a5096137730a6e/UI_Locations_Tab.png) 7. Navigate back to the UI Locations tab, click the vertical ellipses, then click the **\+ Add UI Location** button to add as needed.![Add\_UI\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd809c9bbccb90c3b/690cb00f6e7c72992e0a16d6/Add_UI_Location.png) * **Stack Dashboard:** Enter a **Name**, use /stack-dashboardas the **Path**, and select the **Default** **Width**, then click **Save** to apply and store your configuration. This setup ensures your app appears on the Stack Dashboard. **Note:** The name for each UI Location is optional, and can be used to override the default app name. ![Stack\_Dashboard\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7a12dc1893faf892/690df44e6702621d2a7f045a/Stack_Dashboard_Location.png) **Note:** The **Save** button becomes active once all required fields are completed. 8. Navigate to the **Hosting** tab. You will see [Hosting with Launch](/docs/developer-hub/app-hosting#hosting-with-launch) or [Custom Hosting](/docs/developer-hub/app-hosting#custom-hosting) options. Select the **Custom Hosting** option to enter the hosted URL of your application. Enter the **App URL** and click **Save** to apply and confirm your hosting configuration. While running the application locally, select Custom Hosting and use your local app URL (for example, (http://localhost:3000). After development, you can host your application using **Contentstack** [**Launch**](/docs/launch). ![Custom\_Hosting.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc5f14a9cdecebaff/690cb00f72ff6ed35bbd4fc6/Custom_Hosting.png) ### Configure Permissions [Permissions](/docs/developer-hub/about-ui-locations) control which Contentstack APIs your app can access. For the Quick Info App, configure the following permissions in Developer Hub. To do so, follow the steps below: 1. Click the **UI Locations** tab. 2. Go to the **Permissions** section. ![Permissions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfc236517c33fee36/690cb010e56f96c13b5a06c6/Permissions.png) 3. Select all the permissions you want to add.![Selected\_Permissions.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt06f8a0cc6f45a911/69133634edf5c29a70b573f7/Selected_Permissions.png) Module Access Endpoint Content Types Read ▼ /v3/content\_types Entries Read ▼ /v3/content\_types/{uid}/entries Assets Read ▼ /v3/assets #### Security Best Practices: * Rotate tokens periodically (do not rely on long-lived tokens). * Use .env files and add them to .gitignore (never commit secrets). * Log permission errors (403s) for audit tracking. * Review permissions regularly, remove unused ones. ### Implement API Integration Run the following command to navigate to the Dashboard Widget folder: ``` cd src/containers/DashboardWidget ``` Create a new file named StackMetrics.tsx and add the following code snippet. This component fetches stack statistics for Content Types, Entries, and Assets using the Contentstack Management SDK and displays them in a widget format. ``` import { useState, useEffect, useCallback } from "react"; import { useAppSdk } from "../../common/hooks/useAppSdk"; import { useManagementClient } from "../../common/hooks/useManagementClient"; export const StackMetrics = () => { const appSdk = useAppSdk(); const managementClient = useManagementClient(); const [stats, setStats] = useState({ contentTypes: 0, entries: 0, assets: 0 }); const fetchStackStats = useCallback(async () => { if (!appSdk || !managementClient) return; const stack = managementClient.stack({ api_key: appSdk.ids.apiKey }); const { count: contentTypeCount } = await stack.contentType().query({ include_count: true }).find(); const { count: assetCount } = await stack.asset().query({ include_count: true }).find(); // Fetch all content types and count total entries const contentTypes = await stack.contentType().query().find(); const entryCounts = await Promise.all( contentTypes.items.map(async (ct) => { const res = await stack.contentType(ct.uid).entry().query({ include_count: true }).find(); return res.count ?? 0; }) ); setStats({ contentTypes: contentTypeCount, entries: entryCounts.reduce((a, b) => a + b, 0), assets: assetCount, }); }, [appSdk, managementClient]); useEffect(() => { fetchStackStats(); }, [fetchStackStats]); return (

    Stack Metrics

    • Content Types: {stats.contentTypes}
    • Entries: {stats.entries}
    • Assets: {stats.assets}
    ); }; ``` **Note:** For the complete implementation, refer to the StackMetrics [GitHub](https://github.com/contentstack/marketplace-quick-info-dashboard-app/blob/main/src/components/StackMetrics.tsx) repo. **Import your component:** Open ./src/containers/DashboardWidget/StackDashboard.tsx and import your component. You need to replace the entire code with the following code snippet: ``` import "../index.css"; import "./StackDashboard.css"; import { StackMetrics } from "./StackMetrics"; const StackDashboardExtension = () => { return (
    ); }; export default StackDashboardExtension; ``` **Warning:** Without the Content Types: Read permission, this call will fail with a 403 permission denied error. ### Install and Test Your App #### Local development: To install and test the app, follow the steps below: 1. Initiate your development server by running the following commands: ``` npm run dev ``` 2. Now, install the Quick Info Dashboard app using the following steps: 1. Navigate to [Developer Hub](/docs/developer-hub) in Contentstack. 2. Go to the app, and click the **Install App** button. ![Install\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf34a2797ee0fd4c1/690cb00f9d9a5717c8825f8f/Install_App.png) 3. On the permissions screen, select a **Stack** and mark the checkbox to accept the **Terms of Service** and **Privacy Policy**. Once done, click the **Authorize and Install** button. ![Authorize\_and\_Install.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8dced953478ef46a/690cb00fd0bcbe4313c50456/Authorize_and_Install.png) 3. You will see the Stack Dashboard UI location configured for the app. Click **Open Stack** to view the app on the Stack Dashboard. ![Open\_Stack.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt02844987273ed11e/690cb01072ff6e8fbebd4fca/Open_Stack.png) 4. You will see the **Quick Info Dashboard** app as shown below: ![Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt095509beca4881fe/690cb010dcc3415b5ca5ec27/Output.png) If you do not use the [example app configuration](https://github.com/contentstack/marketplace-quick-info-dashboard-app), the Marketplace App Boilerplate shows the following configuration on the Stack Dashboard. ![Dashboard\_Boilerplate.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6b52585563272e2c/690cb43fd3077f3594d631b4/Dashboard_Boilerplate.png) The app is now available as a Stack Dashboard app that utilizes the Permissions feature in conjunction with Management SDK and the AppSDK Adapter. **Full permissions test:** * Enable all required permissions in Developer Hub * Verify all statistics display correctly * Test navigation links to [Content Types](/docs/headless-cms/about-content-types), [Entries](/docs/headless-cms/about-entries), and [Assets](/docs/headless-cms/about-assets) **Limited permissions test:** * Disable specific permissions (e.g., Assets) * Verify graceful error handling * Check that permission error messages are clear and actionable ## Troubleshooting * **UI Location not visible:** Check [UI Location](/docs/developer-hub/about-ui-locations) in Developer Hub. * **App SDK not initialized:** Ensure provider wraps components + installs the app. * **403 errors:** Verify [Permissions](#configure-permissions) in Developer Hub. * **CORS/network errors:** Match hosting URL with Developer Hub configuration. ## Resources and Links * [Permission](/docs/developer-hub/about-ui-locations/) Overview * [Marketplace App Boilerplate](/docs/developer-hub/marketplace-app-boilerplate/) --- ## URL: https://www.contentstack.com/docs/developer-hub/build-an-app-with-advanced-settings --- title: "Build an App with Advanced Settings" description: "Learn how to configure Advanced Settings in Contentstack to integrate external APIs securely using Contentstack Developer Hub." url: "https://www.contentstack.com/docs/developer-hub/build-an-app-with-advanced-settings" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: build-an-app-with-advanced-settings.md --- # Build an App with Advanced Settings Building Marketplace apps for Contentstack often requires connecting to external APIs such as AI models, analytics tools, webhooks, or SaaS integrations. Managing these integrations securely and efficiently can be challenging when handling API keys, endpoints, and customer-specific values. Advanced Settings in Developer Hub simplifies this process by allowing developers to manage configurations, credentials, and API interactions directly within Contentstack without maintaining a custom backend. ## What You Will Learn * How to register a Standard app in Developer Hub with App Configuration and Entry Sidebar UI locations. * How to configure Advanced Settings Mappings and Rewrites for an external API. * How to call an external API securely from an app using the App SDK .api() method. * How to install and test the app in a stack. ### When to use Advanced Settings: * The app integrates with third-party APIs. * You want per-customer configuration. * You want to avoid managing backend infrastructure. **Additional Resources:** Refer to the [Introduction to Advanced Settings](/docs/developer-hub/introduction-to-advanced-settings) document to learn more. This guide will take you through building an application using Advanced Settings. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login) with access to Developer Hub * [Peekalink account](https://www.peekalink.io/) for API key * Understanding [Contentstack App Development](/docs/developer-hub) * Understanding of [Contentstack App SDK](https://github.com/contentstack/app-sdk-docs) * Understanding of [Server Configuration](/docs/developer-hub/app-config-location) * Marketplace App Boilerplate [GitHub](https://github.com/contentstack/marketplace-app-boilerplate) Repository ## Quick Web Lookup The Quick Web Lookup is an app that uses an entry sidebar widget to quickly preview links in an entry. The app uses [Peekalink API](https://www.peekalink.io/) to fetch metadata like the page title, description, and preview image. This enriches content creation by automating data entry and ensuring consistency. ## Steps 1. [Create an App](#create-an-app) 2. [Register the App in Developer Hub](#register-the-app-in-developer-hub) 3. [Configure Advanced Settings](#configure-advanced-settings) 4. [Calling External APIs](#calling-external-apis) ### Create an App The best place to start a new project is by cloning Marketplace App Boilerplate. It includes necessary components for rapid app development. Clone the [Marketplace Boilerplate](https://github.com/contentstack/marketplace-app-boilerplate) repository and run the following commands: ``` npm install npm run dev ``` ### Register the App in Developer Hub To register an app in Developer Hub, perform the steps given below: 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. On the Dashboard page, click the **Developer Hub** icon. 3. Click the **+ New App** button. 4. Contentstack supports two types of Apps based on two categories: [Standard and Machine to Machine](/docs/developer-hub/introduction-to-contentstack-applications). Here, we will use the **Standard** application. **Additional Resource:** Refer to the [Creating an App in Developer Hub](/docs/developer-hub/creating-an-app-in-developer-hub) documentation to know more about **Standard** and **Machine to Machine** app categories. 5. In the **Create Standard App** modal, select the **App Type**, and give a suitable app **Name** (Quick Web Lookup) and an optional **Description** as shown below: ![Create\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt221595105fdee051/690a03d94f0dee6fb8efbea0/Create_App.png) 6. Click **Create**. You are redirected to the **UI Locations** landing page.![UI\_Locations\_Tab.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdbaaa4597cd51f87/690a03d9d3150529396abe1d/UI_Locations_Tab.png) 7. Navigate back to the UI Locations tab, click the vertical ellipses in the App Configuration UI location, then click the **\+ Add UI Location** button to add as needed. ![Add\_UI\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9c8db3ffeb3f2841/690a0527249d496c8de05c78/Add_UI_Location.png) * **App Configuration:** Enter /app-configurationas the **Path**, then click **Save** to apply and store your configuration. This setup displays a dedicated app configuration page (after app installation) where you can manage app configuration. **Note:** The **App Configuration** UI location lets you add a **Peekalink API** key for the Quick Web Lookup app. ![App\_Config\_Screen.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3df86a8627d15f23/690a03d8edbe82113bb501e4/App_Config_Screen.png) * **Entry Sidebar:** Enter a **Name** and use /entry-sidebar as the **Path**, then click **Save** to apply and store your configuration. This setup ensures your app appears in the sidebar of the entry editor, allowing you to perform actions or view information related to an entry. **Note:** The Entry Sidebar UI location allows you to view the app in the Entry Sidebar of an entry. ![Entry\_Sidebar\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt89f3f40f64d046dc/690a03d9c1ae535009f89a05/Entry_Sidebar_Location.png) 8. Navigate to the **Hosting** tab. You will see [Hosting with Launch](/docs/developer-hub/app-hosting#hosting-with-launch) or [Custom Hosting](/docs/developer-hub/app-hosting#custom-hosting) options. Select the **Custom Hosting** option to enter the hosted URL of your application. Enter the **App URL** and click **Save** to apply and confirm your hosting configuration. While running the application locally, select Custom Hosting and use your local app URL (for example, http://localhost:3000). After development, you can host your application using Contentstack [Launch](/docs/launch). ![Hosting.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1235ad67d0567c86/690a03d858d2e52534c2de11/Hosting.png) ### Configure Advanced Settings Advanced Settings comprises three features: **Variables**, **Mappings**, and **Rewrites**. **Additional Resource:** Refer to the [Introduction to Advanced Settings](/docs/developer-hub/introduction-to-advanced-settings) document to learn more. **Configure Mappings:** For the Quick Web Lookup app, configure a new mapping, API\_KEY which will be linked to peekalink\_api\_key stored in the server configuration. Later, we will use the same key to store the configuration in the next step. ![Mappings\_Value.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta02de3c757419857/690a03d94f0deed415efbea4/Mappings_Value.png) **Configure Rewrites:** Configure a Rewrite rule which calls the peekalink\_api\_key, prefixed with **/preview** as shown below:  ![Rewrites\_Value.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb7d8502eeec35382/690a03da5ba74c09048699db/Rewrites_Value.png) ### Calling External APIs 1. **Setup configuration** Quick Web Lookup application needs peekalink\_api\_key to be configured earlier to be stored in server configuration. Let’s design an app configuration screen where the user can enter his peekalink api key. **Additional Resource:** Refer to [this](https://github.com/contentstack/marketplace-quick-web-lookup-app/blob/main/src/containers/AppConfiguration/AppConfiguration.tsx) document for the reference code of peekalink\_api\_key. The following code sets up the App Configuration UI with the Peekalink API key: ``` import React, { useRef } from 'react'; // useInstallationData hook will help to get and set server configurations. // Server configurations are required when you need installation specific sensitive data import { useInstallationData } from '../../common/hooks/useInstallationData'; const AppConfiguration: React.FC = () => { const { installationData, setInstallationData } = useInstallationData(); const peekalinkApiKeyInputRef = useRef(null); const updateConfig = async () => { if (typeof setInstallationData !== 'undefined') { setInstallationData({ configuration: {}, serverConfiguration: { peekalink_api_key: peekalinkApiKeyInputRef.current?.value, }, }); } }; return ( // Render UI ); }; export default AppConfiguration; ``` 2. **Fetch and show link preview** 1. Iterate through all URLs in the entry and fetch meta data from Peekalink API for preview details. **Additional Resource:** Refer to [this](https://github.com/contentstack/marketplace-quick-web-lookup-app/blob/main/src/containers/SidebarWidget/EntrySidebar.tsx) document to check the Reference code for fetching API using Contentstack App [SDK](/docs/developer-hub/api-integration-in-developer-hub-apps). ``` import React from 'react'; import { useAppSdk } from '../../common/hooks/useAppSdk'; import { useEntry } from '../../common/hooks/useEntry'; // Implement this function, to extract URLs from a JSON Object import { extractUrls } from '../../utils/urlExtractor'; const EntrySidebarExtension: React.FC = () => { // gets data from current entry const { entryData } = useEntry(); // gets app sdk const appSdk = useAppSdk(); // gets urls from entry data const urls = entryData ? extractUrls(entryData) : []; // fetch link preview from peekalink api const fetchLinkPreview = async (url: string): Promise => { const response = await appSdk?.api(`/preview`, { method: 'POST', headers: { Authorization: `Bearer {{map.API_KEY}}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ link: url }), }); return response?.json(); }; return ( // Render UI here <> ); }; ``` **Note:** The App SDK API method is designed to simplify how Contentstack apps integrate with APIs. It allows apps to interact with Contentstack's platform APIs using the configured permissions, and with external APIs using the Rewrite rules set up as part of Advanced Settings. ### Install and Test Your App To install and test the app, follow the steps below: 1. Navigate to [Developer Hub](/docs/developer-hub) in Contentstack. 2. Go to the app, and click the **Install App** button.![Install\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0a8d997f432ae39e/690a03d936c0886041db3d81/Install_App.png) 3. On the permissions screen, select a **Stack** and mark the checkbox to accept the **Terms of Service** and **Privacy Policy**. Once done, click the **Install** button.![Authorize\_Install.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1b41dff3aee8fdcb/690a03d9aef8bb61324fb8c9/Authorize_Install.png) 4. You will be redirected to the **App Configuration** Screen. Enter the Peekalink API Key and click **Save**. Click **Open Stack**. **Additional Resource:** Refer to the [Peekalink site](https://www.peekalink.io/) to fetch the API Key. You **must** create an account to get the API Key. ![Peekaling\_Config.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9694f1e6a562f41f/690a070cd3150585086abe2c/Peekaling_Config.png) 5. Navigate to the [Entries](/docs/headless-cms/about-entries) page. Open any entry with a URL. From the right-hand side panel, click the **Apps** icon.![Apps\_Icon](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7843abe5cb0ed8f8/69384315b5ddb922fac24002/Apps_Icon.png) 6. Click the **Quick Web Lookup** app under the **All Apps** section. 7. You will see previews of all the links present in your entry, fetched securely without exposing sensitive front-end data by the app.![Output](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3a9bcef3a0619a78/693846da8943a3e20a70c403/Output.png) This app connects to third-party APIs securely using Contentstack’s app and server configuration, without building or deploying a custom backend or worrying about future maintenance. ## Security and Best Practices * **Rotate API keys** regularly. * Never hardcode keys in repo or .env; store them in **Server Configurations** or **Variables** only. * Always use **Rewrites** instead of direct API calls to third-party services. * **Validate inputs** (length, regex) before sending to external APIs. * Respect Retry-After headers (429) to avoid bans. * Keep API error messages generic in UI (avoid leaking information). ## Common Issues and Fixes * **401 unauthorized:** Check that the Peekalink API key is correctly saved in configuration. * **429 too many requests:** Implement exponential backoff and honor Retry-After headers. * **App not visible in the sidebar:** Confirm the Entry Sidebar location is registered correctly in manifest. * **Configuration not saved:** Ensure setInstallationData is called on the config screen whenever user input is changed. * **CORS errors** * Verify the /preview rewrite. * The client should never call Peekalink directly. ## Further Resources and Links * [Advanced Settings Overview](/docs/developer-hub/introduction-to-advanced-settings) * [How to Use Advanced Settings](/docs/developer-hub/api-integration-in-developer-hub-apps) * [Marketplace App Boilerplate](/docs/developer-hub/marketplace-app-boilerplate) --- ## URL: https://www.contentstack.com/docs/developer-hub/configuring-an-app --- title: "Configuring an App" description: "Learn how to configure an app in Contentstack's Developer Hub with step-by-step instructions." url: "https://www.contentstack.com/docs/developer-hub/configuring-an-app" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: configuring-an-app.md --- # Configuring an App As soon as you install an app, you are redirected to the **App Configuration** screen. Without providing configuration details, you might not be able to use it. This page uses the Algolia app as an example. ## Prerequisites * An app installed in your stack ## What You Will Learn * How to provide configuration details for an installed app. * How to save an app's configuration. * How to uninstall an app from the configuration screen. ## Configure the app Here, you need to provide the configuration details of your Algolia account such as the **Application ID**, **Index Name**, and the **API Key** to let your app fetch details to and from Algolia. These details are configured when you set up your respective app configurations. ![Algolia\_Configuration\_Screen.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3ee94f8c35fd52aa/67ceb6c917c8000e7ecd4b5e/Algolia_Configuration_Screen.png) Once done, you can choose one of the following actions: * Simply **Save** the configuration details * Click **Open Stack** to directly navigate to the stack. * Click the “More Options” icon (three ellipses) and select **Uninstall the App** to uninstall your app from the stack. ![Uninstall\_Save\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt36dc43a6c7039d34/67ceb6c9a4b93f5ff8099612/Uninstall_Save_Button.png) --- ## URL: https://www.contentstack.com/docs/developer-hub/content-type-sidebar-location --- title: "Content Type Sidebar Location" description: "Use the Content Type Sidebar to access TypeScript API type definitions for seamless integration." url: "https://www.contentstack.com/docs/developer-hub/content-type-sidebar-location" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: content-type-sidebar-location.md --- # Content Type Sidebar Location The Content Type Sidebar Location provides the ability to access and analyze the content type data from the sidebar. For example, the Developer Tools app, provides content type definitions directly from the Content Type Sidebar. By utilizing this location, you can enhance content types with additional capabilities, allowing you to build applications that aid in your content modeling. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * An app created in Developer Hub * A hosted app URL (Launch or custom hosting) ## What You Will Learn * How to add a Content Type Sidebar location to your app through the Developer Hub console. * Which properties you can configure for the location. * Where the location appears in the Content Models section after installation. ## Add a Content Type Sidebar Location to your App Let’s see how to add Content Type Sidebar location to your app: * **Via the Developer Hub Console:** To add the Content Type Sidebar location to your app via the Developer Hub console, login to your [Contentstack Account](https://www.contentstack.com/login) and follow the steps given below: 1. Click the **Developer Hub** icon on the left navigation panel. ![Welcome\_to\_Developer\_Hub.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5c63262317460a13/665eb3af653cb9d069a7f067/Welcome_to_Developer_Hub.png) 2. Select an application for which you want to add the Content Type Sidebar location. 3. Click the **UI Locations** tab. To set the **App URL**, click the **View Hosting** link. You will be redirected to the **Hosting** tab.![UI Locations\_Tab.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltcf1c395d7883c236/67a32605434730c4fa9966f2/UI_Locations_Tab.png) 4. In the **Hosting** tab, you can select [Hosting with Launch](/docs/developer-hub/app-hosting#hosting-with-launch) or [Custom Hosting](/docs/developer-hub/app-hosting#custom-hosting) options. Select the **Custom Hosting** option to enter the hosted URL of your application. Click the **Save** button to save your hosting configuration. ![App\_URL.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9daacf4b9b6f5fa5/65b7b097c025ee8846b87e82/App_URL.png) 5. Navigate to the UI Locations tab to configure the Content Type Sidebar location. 6. Click the three dots and click the **+ Add UI Location** button as shown below: ![Add\_Content\_Type\_Sidebar.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd22ef3e62a599ee7/6835750d3f2d8558e58c2187/Add_Content_Type_Sidebar.png) 7. On the resulting **Configuration** page, set up the configurations for the Content Type Sidebar location by providing details such as **Name**, **Path**, and **Description**. You can also enable the configuration using the **Enabled** toggle button. Properties that can be specified for this UI location: * **Name (optional)**: It specifies the name of the UI location. This name will be displayed at the location after the app is installed. If not provided, the app name will be used. Ensure you use unique names for multiple configurations of the same location. * **Signed (optional)**: When enabled, Contentstack adds a JWT token to the initial HTTP request made for your app's first page. This token can be used to verify that the request originated from Contentstack. For more information, please refer to [Signed Locations](/docs/developer-hub/securing-your-app/). * **Path (optional)**: This property enables you to define the location relative to the base URL where the app is hosted. This is particularly useful when the developer intends the app to appear in multiple locations. * **Enabled (optional)**: It determines whether the location is visible after the app is installed. If not specified, the location is enabled by default. Users can manage this option post-installation via the **UI** **Locations** tab on the app’s configuration screen. You can configure any UI location as **mandatory** using the **Required** toggle button. If the toggle is enabled, the location becomes mandatory and cannot be disabled. Whereas, if the toggle is disabled, the UI location is available to use but not mandatory. **Additional Resource:** Refer to the [Marketplace App Manifest](/docs/developer-hub/app-manifest) documentation for comprehensive details. ![Content\_Type\_Sidebar.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt49d0a519f95cf78d/68357463d0f38546e144d4e8/Content_Type_Sidebar.png) 8. Finally, click **Save** to save the Content Type Sidebar location’s configuration details. You will see the details of the configured UI location on the **UI** **Locations** tab in the **App** **Configuration** screen after installing the app. You can enable or disable the non-required UI locations. Apps which have the Content Type Sidebar location configured will be visible in the **Content Models** section. Navigate to a particular content type and in the right navigation panel, click **Apps**. For example, the app can be viewed in the Content Type Sidebar location as shown below: ![Three\_Dots\_Developer\_Tools.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3a0bdddcdc3aedbe/67a3262612289946da3b1237/Three_Dots_Developer_Tools.png) --- ## URL: https://www.contentstack.com/docs/developer-hub/contentstack-app-lifecycle-a-developers-guide --- title: "Contentstack App Lifecycle: A Developer's Guide" description: "This guide walks you through the complete app lifecycle for Standard and Machine-to-Machine apps, from setup to deployment." url: "https://www.contentstack.com/docs/developer-hub/contentstack-app-lifecycle-a-developers-guide" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: contentstack-app-lifecycle-a-developers-guide.md --- # Contentstack App Lifecycle: A Developer's Guide Contentstack applications offer powerful ways to extend the platform's functionality and customize your content management experience. This documentation will guide you through the lifecycle of your app, depending on whether you are building a Standard app or a Machine-to-Machine app. ## Standard App Lifecycle 1. **Creation and Setup (Developer Hub):** 1. **App Definition:** Define your app's name, description, and scope. 2. **Development:** Using Contentstack's APIs and SDKs, you will build the core functionality of your app, design its user interface using the Venus design components, and integrate it with any necessary systems. 2. **App Hosting (Developer Hub):** 1. **Hosting Options:** You can choose any hosting solution, but we recommend using Contentstack Launch for seamless integration with the Contentstack ecosystem. 1. You can also host your app locally during initial development or use your own hosting solution. 3. **Installation and Testing (Developer Hub):** 1. **Installation:** Install your app within your organization from Developer Hub. 1. This requires Admin access to the Organization or Stack, depending on the app type. 2. **Testing:** Thoroughly test your app in a test stack to ensure it works as intended. **Note:** If you don’t plan to list your application publicly, then you can ignore the next step and use your app privately in your organization. 4. **Public Listing and Release (Optional):** 1. **Public Listing Submission:** If you want to release your app publicly, you will need to submit it to Contentstack for review and approval. Contentstack's team will assess your app to ensure it meets their quality and functionality standards. 1. You can find details on the submission process here: [Submit your app for review](/docs/marketplace/app-submission-and-approval-guide/) 2. **Marketplace Discovery:** Once your app is approved and listed in the Marketplace, it becomes discoverable to all Contentstack users. Users can browse and find your app based on its category, features, or other criteria. 5. **App Updates and Changes (Developer Hub):** 1. **Versioning and Updates:** As your app evolves and as you make changes to your app, new app Versions will be generated. 1. **Private apps** will have these versions immediately available to update your app. 2. **Public apps** will require you to submit your app for review for any changes you would like to make public. ## Machine to Machine App Lifecycle 1. **Creation and Setup (Developer Hub):** 1. **App Definition:** Define your app's purpose and scope. You will be creating a Machine to Machine app that does not have a user interface. 2. **Development:** Using Contentstack's APIs and SDKs, you will build the core functionality of your app and integrate it with any necessary systems. 3. **App Configuration:** Set up your app's permissions and OAuth 2.0 integrations to define its access and behavior. 2. **Authorization**: 1. **Authorization:** Contentstack admins can authorize the app to access their data or resources. This process typically involves authentication using OAuth 2.0. ## Important Considerations for All Apps * **Security:** Contentstack provides robust security measures, but developers should implement secure coding practices and handle sensitive data responsibly. * **Documentation:** Clear and concise documentation is crucial for both app developers and end users. * **Support:** Providing ongoing support for your app is crucial to ensure user satisfaction and maintain a positive experience. --- ## URL: https://www.contentstack.com/docs/developer-hub/contentstack-oauth --- title: "Contentstack OAuth" description: "Implement secure OAuth 2.0 authentication with Contentstack for controlled API access and seamless integration." url: "https://www.contentstack.com/docs/developer-hub/contentstack-oauth" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: contentstack-oauth.md --- # Contentstack OAuth Contentstack OAuth uses the OAuth 2.0 protocol that allows external applications and services to access Contentstack APIs on behalf of a user. You can implement an OAuth connection to Contentstack by creating apps in the [Developer Hub](https://app.contentstack.com/#!/developerhub) console. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * An app created in [Developer Hub](/docs/developer-hub/creating-an-app-in-developer-hub) ## What You Will Learn * When to use Contentstack OAuth and how App tokens and User tokens differ. * How to integrate and configure OAuth for your app in Developer Hub. * How to construct an authorization URL and exchange an authorization code for an access token. * How to refresh access tokens and authorize Machine-to-Machine (M2M) apps. * How to introspect a token to check its validity and scopes. ## When to use Contentstack OAuth? Contentstack OAuth allows the resource owner (user) to share the protected data from the Contentstack resource server (API) without sharing their credentials. For that matter, the Contentstack OAuth server issues access tokens (App & User tokens) that the client applications can utilize to access restricted data on behalf of the resource owner. Some scenarios in which you can use Contentstack OAuth are as follows: 1. When you want an external application to authenticate a user or an application without sharing user credentials. 2. When you want an external application to authenticate a user or an application without sharing the management token. 3. When you want an external application to only gain access to a subset of APIs and not the entire collection of APIs. 4. When you want an application to be transparent about the permissions, it requests. ## Multiple Region Support Since Contentstack is hosted at multiple data centers, the API domain URL varies for each data center. Learn more about [Contentstack Regions](/docs/administration/about-regions/). Private apps only authorize specific organization members in which the app is developed. Suppose you want your application to execute OAuth capabilities across all regions/data centers. In that case, you need to publish your app either as a Public App or a Public Unlisted App. **Additional Resource:** Learn more about [app visibility status](/docs/developer-hub/app-visibility-status/). Here, the developers need to identify which data center the client has authorized the app from and the region the organization is hosted. After authorization, developers can identify the region using the **location parameter** in the redirected URL. The regional parameters are as follows: **Region** **Parameter** North America NA Europe EU Azure North America AZURE\_NA Azure Europe AZURE\_EU GCP North America GCP\_NA GCP Europe GCP\_EU This is required as all Contentstack API’s are scoped to the region. ## Types of Contentstack OAuth Tokens There are two types of OAuth tokens that you can generate with your applications: * App Tokens * User Tokens ### App Token The App Token is associated with installed applications. The scope of an app token differs from that of a user token. Here are a few properties of the app token: * Actions performed using an app token are tagged to the app installation, not the user who authorized and installed it. * Deprovisioning the user who installed the app does not revoke the app token. * Uninstalling an application revokes its app token. * Server-to-server and long-lived communications should use the app tokens. ### User Token The User Token is associated with the users who authorized it. The scope of a user token differs from that of an app token. Here are a few properties of the user token: * Actions performed by user token are tagged to the user who authorized it. * Deprovisioning the user revokes all the user tokens authorized by them. * Users can manually revoke any authorized tokens from the marketplace's **Manage** > **Authorized Apps** section. * Organization Admins can revoke all tokens by any organization member from the **Manage** > **Authorized Apps** section of the marketplace. ### Token expiry Currently, user tokens and app tokens are valid for **60 minutes** only. You can generate new tokens by following the [Refresh Token](#refresh-token) flow. ## Integrate your Apps with Contentstack OAuth You can create custom applications in Developer Hub. It provides the necessary tools to develop an app. While developing apps, you can integrate your application with the Contentstack OAuth.  To integrate your app with Contentstack OAuth, log in to your [Contentstack account](https://www.contentstack.com/login) and follow the steps below: 1. On the left navigation panel, you will find a new icon for **Developer Hub** (as shown below). Click the icon to go to the Developer Hub. ![Welcome\_to\_Developer\_Hub.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfe12cce20145a8ad/65b7a9dffd23e528627d99cd/Welcome_to_Developer_Hub.png) 2. Click the **\+ New App** button. 3. In the resulting **New App** modal, select the **Type of App** and enter the following details: * **Name**: Enter the app's name (for example, Sample App). * **Description** (optional): Enter a description for your app. 4. Click the **Create** button. 5. On the **Basic Information** screen, you can view general details about your app, such as name, description, and app UID. 6. You can add an icon for your app by clicking on the **Upload a new file** button. 7. Click the **Save** button. ## Configuring Contentstack OAuth Configuring OAuth and its scopes allows your app to perform tasks in your development workspace. You can configure and select scopes through the **OAuth** option available in your app. To configure OAuth, log in to your Contentstack account and follow the steps below: 1. [Create a new App](/docs/developer-hub/creating-an-app-in-developer-hub) or click the app you want to configure. 2. On the left navigation panel, click the **OAuth** tab. ![Click\_OAuth.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt68b918104520da5b/65b288018fc5c0802b0bb67f/Click_OAuth.png) 3. In the **OAuth Details** page, the following options are displayed for your app: * **Client ID**: The Client ID identifies your application and frequently appears in the OAuth negotiation URLs. You can freely share client IDs in code and emails, but you cannot use them alone to perform actions on behalf of your app. * **Client Secret**: The Client Secret acts as a secret credential when exchanging tokens with Contentstack. You should not share the client secret keys via emails, distributed native applications, client-side javascript, or public code repositories. * **Redirect URL**: The authorization server directs users to the Redirect URL once they have successfully granted authorization to the app. Maintaining the security of this URL is crucial to avoid redirection to unauthorized locations. When configuring the app, developers must register one or more Redirect URLs. Users have the flexibility to configure up to **10** redirect URLs, with the initial one serving as the default. If desired, users can easily alter the default with a simple drag-and-drop method to rearrange the URLs. ![Redirect\_URL.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt120eeb7c8e8091ac/659e74de43e8cb506ba4ad61/Redirect_URL.png) 4. Add the relevant [app or user token scopes](/docs/developer-hub/oauth-scopes/). 5. Click **Save** to save your OAuth configurations. **Note:** User permission scopes can be passed dynamically in the Authorization URL while authorizing a user. 6. Next, you can check out how to add the App and User Token Scopes. ### Add App Token Scopes In the OAuth page, you will find the App Token section that lets you add app-related permission scopes. To do so, perform the following steps: 1. Click **\+ App Scopes**. 2. From the resulting **Select App Token Scopes** pop-up window, select the permission you want to set up for your application.![Select\_Scope.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc7e7fef4415a9848/65b288019274060174eb5a77/Select_Scope.png) 3. Once done, click **Choose Scope(s)**. ### Add User Token Scopes In the OAuth page, you will find the **User Token** section that lets you add user-related permission scopes. To do so, perform the following steps: 1. Click the **\+ User Scopes** button. 2. From the resulting **Select User Token Scopes** pop-up window, select the permissions you want to set up for your users.![User\_Read\_Scope.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdf93813987ccda18/65b2880168334a912cc605c0/User_Read_Scope.png) 3. Once done, click **Choose Scope(s)**. **Additional Resource:** Learn more about the app and user token scopes from the [OAuth Scopes](/docs/developer-hub/oauth-scopes/) document. ## Authorizing Standard App ![OAuthFlow\_2.0.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt349d3dc49fa78fc7/63ea4a7e520e5b22386b8bc0/OAuthFlow_2.0.png) 1. ### Construct your authorization URL The following parameters describe the Authorization URL: * **BaseURL:** The base URL of Contentstack where your app is installed. This will be different for each Region. Please use the relevant one where the user organization is located. BaseURL for different regions supported by Contentstack are: * North America: https://app.contentstack.com * Europe: https://eu-app.contentstack.com * Azure NA: https://azure-na-app.contentstack.com * Azure EU: https://azure-eu-app.contentstack.com * GCP NA: https://gcp-na-app.contentstack.com * GCP EU: https://gcp-eu-app.contentstack.com * **client\_id**: The app’s client ID. * **redirect\_uri**: The redirect URL where Contentstack will send the user. * **scope**: The permission scopes set for your application. The scopes configured in the app are used directly for the App token. Whereas, for the User token, the scopes in the authorization URL should be a subset of the scopes configured in the app. **Additinal Resource:**Refer to the [OAuth Scopes](/docs/developer-hub/oauth-scopes/) document for a list of all the permission scopes for Contentstack OAuth. * **state**: The URL where your app is hosted. **Note:** You can find the App UID in the basic information section of the app. All query parameters should be URL-encoded. **App Token:** ``` {BASE_URL}/apps/{app_uid}/install ``` For instance, for North America (NA) region, the Authorization URL will look something like this: ``` https://app.contentstack.com/apps/627e126bbe975e0*********/install ``` **User Token:** ``` {BASE_URL}/apps/{app_uid}/authorize?response_type=code&client_id={client_id}&redirect_uri={redirect_uri}&scope={scope}&state={state} ``` For instance, for North America (NA) region, the Authorization URL will look something like this: ``` https://app.contentstack.com/apps/627e126bbe975e0*********/authorize?response_type=code&client_id=428ub0q0w*******&redirect_uri=https://example.com/oauth/callback&scope=user:read ``` 2. ### Request for an Authorization Code Implement the flow described below to obtain an authorization code using App and User token. Once you get the authorization code > exchange it for an access token. #### **Authorize OAuth Apps using App Token** 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. Navigate to the application you want to generate an app token for and click **Install**. 3. Once you install your app, the authorization page appears that contains the authorization URL. Through this page, you request access and permission scopes. Alternatively, you can visit the URL formed in the previous section. For instance: ``` https://app.contentstack.com/apps/627e126bbe975e0*********/install ``` 4. Install or cancel installation based on scopes requested on the OAuth authorization page. 5. Accepting the authorization leads the user to the configured redirect URI along with the authorization code. An example of the redirect URI with authorization code and location: ``` https://example.com/oauth/callback?code={authorization_code}&location=NA ``` 6. **Note:** This code is only valid for 60 seconds. #### **Authorize OAuth Apps using User Token** 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. Request for auth code against a client ID having a redirect URI and for a list of scopes. 3. Visit the Authorization URL formed in the previous step. For instance: ``` https://app.contentstack.com/apps/627e126bbe975e0*********/authorize?response_type=code&client_id=428ub0q0w*******&redirect_uri=https://example.com/oauth/callback&scope=user:read ``` 4. Accept or deny permissions (scopes) requested on the OAuth authorization page. 5. Accepting the authorization leads the user to the configured redirect URI along with the authorization code. An example of the redirect URI with authorization code and location: ``` https://example.com/oauth/callback?code={authorization_code}&location=NA ``` **Note:** \- This code is only valid for 60 seconds. \- If a user requests re-authorization for the same set or subset of scopes that were once granted, the user is automatically redirected to the redirect URL. 3. ### Exchange Auth Code for Access Token Exchange the authorization code for the access token by calling the token endpoint having the grant type of **authorization\_code** and the parameter **code** containing the newly generated code from the previous step. For instance: ``` POST {BASE_URL}/apps-api/token Headers: Content-Type: application/x-www-form-urlencoded Request Body: grant_type:authorization_code client_id:{client_id} client_secret:{client_secret} redirect_uri:{redirect_uri} code:{authorization_code} ``` The request in curl takes the following form: ``` curl --location --request POST 'https://app.contentstack.com/apps-api/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=authorization_code' \ --data-urlencode 'client_id=your_client_id' \ --data-urlencode 'client_secret=your_client_secret' \ --data-urlencode 'redirect_uri=your_redirect_uri' \ --data-urlencode 'code=your_auth_code' ``` On the success of the token call, an access token is provided along with the refresh token. The response will look something like this: ``` { "access_token": "c89977e8de8bafcac88d************", "refresh_token": "e5998ca04d0b2f72b72c************", "token_type": "Bearer", "expires_in": 3600, "location": "NA", "organization_uid": "bltbab185**********", "authorization_type": "app", } ``` **Note:**This token is only valid for 60 minutes. 4. ### Use access token with Contentstack APIs Your access token allows you to call the methods described by the permission scopes you set during authorization. For instance: **Scope**: [cm.stacks.management:read](/docs/developers/apis/content-management-api/stacks#get-a-single-stack) **API Call:** API\_BASE\_URL for different regions supported by Contentstack are: * US (North America, or NA): https://api.contentstack.io * Europe (EU): https://eu-api.contentstack.com * Azure NA: https://azure-na-api.contentstack.com * Azure EU: https://azure-eu-api.contentstack.com You can use the endpoint as per the designated region. ``` GET {API_BASE_URL}/v3/stacks Headers: authorization: Bearer your_access_token organization_uid: your_organization_uid ``` The request in curl takes the following form: ``` curl --location --request GET 'https://api.contentstack.io/v3/stacks' \ --header 'authorization: Bearer your_access_token' \ --header 'organization_uid: your_organization_uid' ``` 5. ### Refresh Token The OAuth flow begins with a user interacting with your app and ends with your app authorized to access Contentstack resources in a way dictated by the user. The access token allows you to access the app's data. With a regular expiration for your access token, the danger of the token falling into the wrong hands is reduced. But to maintain control over app data, your app needs a way to request a new access token regularly. A refresh token allows your app to rotate its access tokens seamlessly, using the same token endpoint to acquire a new access token with the help of previously generated refresh token. On the access token expiry, pass the refresh token obtained from the previous access token call in the code parameter. For instance: ``` POST {BASE_URL}/apps-api/token Headers: Content-Type: application/x-www-form-urlencoded Request Body: grant_type:refresh_token client_id:{client_id} client_secret:{client_secret} redirect_uri:{redirect_uri} refresh_token:{refresh_token} ``` The request in curl takes the following form: ``` curl --location --request POST 'https://app.contentstack.com/apps-api/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=refresh_token' \ --data-urlencode 'client_id=your_client_id' \ --data-urlencode 'client_secret=your_client_secret' \ --data-urlencode 'redirect_uri=your_redirect_uri' \ --data-urlencode 'refresh_token=your_refresh_token' ``` ## Authorizing Machine to Machine Apps Standard apps use the authorization\_code and refresh\_token grant types. Additionally, our OAuth framework supports the client\_credentials grant type, designed specifically for Machine-to-Machine (M2M) apps. **Additional Resource:** For more details on M2M apps, refer to the [Machine-to-Machine Apps](/docs/developer-hub/machine-to-machine-apps) documentation. The client\_credentials grant allows Machine-to-Machine (M2M) apps to obtain an access token without user interaction. This is ideal for applications that need to access resources autonomously. ### Obtaining an Access Token To obtain a token using the client\_credentials grant, send a POST request to the token endpoint with the following parameters: ``` POST {BASE_URL}/apps-api/token Headers: Content-Type: application/x-www-form-urlencoded Request Body: grant_type: client_credentials client_id: {client_id} client_secret: {client_secret} ``` Upon successful authentication, the token endpoint returns a JSON response containing the access token. This token can then be included in the authorization header of subsequent API requests to access protected resources. You can check the [Use access token with Contentstack APIs](#use-access-token-with-contentstack-apis) section. This flow enables Machine-to-Machine (M2M) applications to securely authenticate and access resources without requiring user credentials. To maintain security, it is essential to protect the client\_secret from unauthorized access. The request in curl takes the following form: ``` curl --location --request POST 'https://app.contentstack.com/apps-api/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'client_id=your_client_id' \ --data-urlencode 'client_secret=your_client_secret' \ ``` ## Token Introspection The recommended approach for applications to retrieve access token details is through the Token Introspection endpoint. This endpoint allows clients to verify a token's validity and, if valid, determine its associated scopes. ### Introspecting a Token To introspect a token, send a POST request to the introspection endpoint with the following parameters: ``` POST {BASE_URL}/apps-api/introspect Headers: Content-Type: application/x-www-form-urlencoded Request Body: token:{token_value} token_type_hint:access_token ``` \- token: The access token to be introspected. \- token\_type\_hint (Optional): A hint about the type of the token. For refresh tokens, use refresh\_token. By default all tokens are considered access\_token Response: If the token is valid, the response will include the "active" field as true and may also provide additional details, such as the token's associated scopes. ``` { "active": true, "scope": "user:read user:write" } ``` If the token is invalid or expired, the response will only contain: ``` { "active": false } ``` Applications should use the active field to verify a token's validity before accessing protected resources. If _active_ is _false_, the token is invalid, and the application should request a new one. If _active_ is _true_, the application can use the token and leverage additional response details, such as scope, to enforce authorization policies. This endpoint offers a standardized and secure method for applications to manage and validate access tokens, playing a crucial role in maintaining API security. --- ## URL: https://www.contentstack.com/docs/developer-hub/creating-an-app-in-developer-hub --- title: "Creating an App in Developer Hub" description: "Learning how to create an app in Developer Hub" url: "https://www.contentstack.com/docs/developer-hub/creating-an-app-in-developer-hub" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: creating-an-app-in-developer-hub.md --- # Creating an App in Developer Hub Developer Hub lets you create an app that extends Contentstack. You can create a Standard app or a Machine to Machine app, then open its Basic Information page to configure it. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Organization [Owner or Admin](/docs/administration/about-administration-roles) permissions, to create Machine to Machine or Organization apps ## What You Will Learn * How to create a Standard app in Developer Hub. * How to create a Machine to Machine app. * The difference between the Standard and Machine to Machine app categories. ## Create an app To create a new app, log in to your [Contentstack account](https://app.contentstack.com/#!/login) and follow the steps below: 1. Navigate to **App Switcher** in the top-right corner and select **Developer Hub**. 2. Click the **\+ New App** button. 3. In the **Create New App** modal, select the category of app you want to create, i.e., **Standard** or **Machine to Machine**. 1. **Standard:** You can create a versatile app with UI Locations, Webhooks, OAuth 2.0 Integrations, and App Hosting capabilities. 2. **Machine to Machine:** You can create an OAuth-only app for seamless machine-to-machine interactions with Contentstack’s API. Only organization Admin(s) or the owner have the option to create both Standard and Machine-to-Machine applications. Other users can only create Standard applications. For more information about the different application categories, please refer to the "[Introduction to Contentstack Applications.](/docs/developer-hub/introduction-to-contentstack-applications)" ### Standard Category 4. You can create both Organization and Stack apps within the Standard category. Please note that only organization admin(s)/owner can create organization apps. 5. In the **Create New App** modal, add the following details to create an app under the Standard Category: 1. **App Type (required):** Select the type of app you want to create: Organization or Stack. Read more about [Types of App](/docs/developer-hub/types-of-apps/). 2. **Name (required):** Enter a suitable name for your app (for example, Sample App). 3. **Description (optional):** Enter a description for your app. ![Create\_Standard\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0b26142e1ad9e51a/66e3cc3ebc8b1c457e3aab5f/Create_Standard_App.png) 4. Click the **Create** button. 5. Once you create the app, you will be navigated to the Basic Information page, where you will find the details of the apps. 6. On the left navigation panel, you will find [OAuth](/docs/developer-hub/contentstack-oauth), [UI Locations](/docs/developer-hub#managing-ui-locations), [Webhooks](/docs/developer-hub/managing-webhooks-in-an-app), [Hosting](/docs/developer-hub/app-hosting), App [Manifest](/docs/developer-hub/app-manifest), and [Version Log](/docs/developer-hub/app-versioning/) options. By using the **App Manifest** and **Version** options, you can view the current and previous versions of the app, whereas the remaining options let you configure or define the app. ![Standard\_App\_Page.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte009e563bf1ca422/66e3cc3ec91aebc9c86104c5/Standard_App_Page.png) **Note:** Once the app is created, you can manage and update it. Refer to the “More Articles” section to know more about it. ### Machine to Machine Category 6. You can create Organization apps within the Machine to Machine category. 7. Let’s see how to create a Machine to Machine Organization app. 1. **Name (required):** Enter a suitable name for your app (for example, Sample App). 2. **Description (optional):** Enter a description for your app. ![Create\_M2M\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4c2bf206baef6612/66e3cc3e07e58b072c800525/Create_M2M_App.png) 3. Click the **Create** button. 4. Once you create the app, you will be navigated to the **Basic Information** page, where you will find the details of the app. 5. In the left navigation panel, you will find the OAuth tab, which allows you to further configure the **OAuth** settings for your app. ![M2M\_App\_Page.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt16afb3986ff49fe3/66e3cc3f4623eb04bd2b3bfd/M2M_App_Page.png) You created an app in Developer Hub under the Standard or Machine to Machine category and reached its Basic Information page, where you can configure it further. --- ## URL: https://www.contentstack.com/docs/developer-hub/custom-field-location --- title: "Custom Field Location" description: "Use the Custom Field location to enhance your content types and integrate with apps like Bynder and Shopify." url: "https://www.contentstack.com/docs/developer-hub/custom-field-location" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: custom-field-location.md --- # Custom Field Location The Custom Field Location of an app lets you add/ create custom fields that you can use in your content type. Apart from using the default [fields](/docs/headless-cms/about-fields) such as "Single-line textbox", "Rich Text Editor", and so on, you can integrate with numerous business applications, such as "[Bynder](https://www.bynder.com/en/products/digital-asset-management/)", "[Cloudinary](https://cloudinary.com/)", "[Shopify](https://help.shopify.com/en/manual/intro-to-shopify)", by adding them as [custom](/docs/headless-cms/custom) fields to your stack's content type. **Additional Resource:** Refer to the App SDK [Custom Field](https://github.com/contentstack/app-sdk-docs?tab=readme-ov-file#customfield) Location documentation to learn more. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * An app created in Developer Hub * A hosted app URL (Launch or custom hosting) ## What You Will Learn * How to add a Custom Field location to your app through the Developer Hub console. * Which properties you can configure for the location. * Where the location appears in an entry's custom fields after installation. ## Add a Custom Field Location to your App Let's see how to add custom field location to your app: * **Via the Developer Hub Console:** To add the custom field location to your app via the Developer Hub console, login to your [Contentstack Account](https://www.contentstack.com/login/) and follow the steps given below: 1. Navigate to **App Switcher** on the top-right corner and select **Developer Hub**. 2. Select an application for which you want to add the custom field location. 3. Click the **UI Locations** tab. To set the **App URL**, click the **View Hosting** link. You will be redirected to the **Hosting** tab. ![View\_Hosting.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4502661279fd5aa6/68303235980bb6ba0872715f/View_Hosting.png) 4. In the **Hosting** tab, you can select [Hosting with Launch](/docs/developer-hub/app-hosting#hosting-with-launch) or [Custom Hosting](/docs/developer-hub/app-hosting#custom-hosting) options. Select the **Custom Hosting** option to enter the hosted URL of your application. Click the **Save** button to save your hosting configuration. ![App\_URL.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc0ab1619e05e9133/68303234bcb194e9539ac1d6/App_URL.png) 5. Navigate to the **UI Locations** tab to configure the Custom Field location. 6. Hover over the **Custom Field** location, and click the **\+ Add** **UI Location** button. ![Add\_Custom\_Field\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta6ce7cfb2b9b7cad/68341c6042d6ef56ab91e363/Add_Custom_Field_Location.png) 7. On the resulting Configuration page, set up the configurations for custom field location by providing details such as **Name**, **Path**, **Data Type**, and **Description**. You can also enable the configuration using the **Enabled** toggle button. Properties that can be specified for this UI location: * **Name (optional):** Specifies the name of the UI location. This name will be displayed at the location after the app is installed. If not provided, the app name will be used. Ensure unique names for multiple configurations of the same location. * **Signed (optional):** When enabled, Contentstack adds a JWT token to the initial HTTP request made for your app's first page. This token can be used to verify that the request originated from Contentstack. For more information, please refer to [Signed Locations](/docs/developer-hub/securing-your-app). * **Path (optional):** Enables you to define the location relative to the base URL where the app is hosted. This is particularly useful when the developer intends the app to appear in multiple locations. * **Enabled (optional)**: Determines whether the location is visible after the app installation. If not specified, the location is enabled by default. Users can manage this option post-installation via the UI Locations tab on the app’s configuration screen. You can configure any UI location as **mandatory** using the **Required** toggle button. If the toggle is enabled, the location becomes mandatory and cannot be disabled. Whereas, if the toggle is disabled, the UI location is available to use but not mandatory. With the **Multiple** field, you can save input values in array. **Additional Resource:** Refer to the [Marketplace App Manifest](/docs/developer-hub/app-manifest) documentation for comprehensive details. ![Config\_Screen\_New.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb9638281bc9697dc/665eb2844ddc4b422a09ccd7/Config_Screen_New.png) 8. Finally, click the **Save** button to save the custom field location’s configuration details. You will see the details of the configured UI location on the **UI Locations** tab in the **App Configuration** screen after installing the app. You can enable or disable the non-required UI locations. Apps which have the Custom Field location configured will be visible in the custom fields of an entry. Navigate to the entries page to view the app on the Custom Field location. ![Custom\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltec6e5ee50d1f2411/65b66c6a568d54e20a35d0a5/Custom_App.png) **Note:** A single app supports up to **ten** custom field locations. You can create new custom field locations by writing your custom code, or you can use the prebuilt [boilerplate](/docs/developer-hub/marketplace-app-boilerplate) and modify the given code to suit your requirements. --- ## URL: https://www.contentstack.com/docs/developer-hub/dashboard-location --- title: "Stack Dashboard Location" description: "Use the Dashboard Location to create widgets for real-time stack usage, published entries, and daily to-dos." url: "https://www.contentstack.com/docs/developer-hub/dashboard-location" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: dashboard-location.md --- # Stack Dashboard Location The Dashboard Location is a type of location that lets you create widgets for your [stack dashboard](/docs/headless-cms/about-stack-dashboard). Using this location, you can create several useful widgets. Consider a widget that does the following operations: * Shows real-time data of stack usage * Lists all the entries published recently * Allows you to add your "To-Dos" for the day or take notes. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * An app created in Developer Hub * A hosted app URL (Launch or custom hosting) ## What You Will Learn * How to add a Dashboard location to your app through the Developer Hub console. * Which properties you can configure for the location. * Where the location appears on your stack homepage after installation. ## Add a Dashboard Location to your App Let's see how to add Dashboard Location to your app: * **Via the Developer Hub Console:** To add the Dashboard Location to your app via the Developer Hub console, log in to your [Contentstack Account](https://www.contentstack.com/login) and follow the steps given below: 1. Navigate to **App Switcher** on the top-right corner and select **Developer Hub**. 2. Select an application for which you want to add the Dashboard Location. 3. Click the **UI Locations** tab. To set the **App URL**, click the **View Hosting** link. You will be redirected to the **Hosting** tab. ![View\_Hosting.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4502661279fd5aa6/68303235980bb6ba0872715f/View_Hosting.png) 4. In the **Hosting** tab, you can select [Hosting with Launch](/docs/developer-hub/app-hosting#hosting-with-launch) or [Custom Hosting](/docs/developer-hub/app-hosting#custom-hosting) options. Select the **Custom Hosting** option to enter the hosted URL of your application. Click the **Save** button to save your hosting configuration. ![App\_URL.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc0ab1619e05e9133/68303234bcb194e9539ac1d6/App_URL.png) 5. Navigate to the **UI Locations** tab to configure the Dashboard location. 6. Hover over the **Dashboard** location, and click the **\+ Add UI Location** button. ![Add\_Dashboard\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteaea15ddee6577f0/68342164076eb31d745c3f6d/Add_Dashboard_Location.png) 7. On the resulting Configuration page, set up the configurations for Dashboard Location by providing details such as **Name**, **Path**, **Description** and **Default Width** to select the size of the widget. You can also enable the configuration using the **Enabled** toggle button. Properties that can be specified for this UI location: * **Name (optional)**: Specifies the name of the UI location. This name will be displayed at the location after the app is installed. If not provided, the app name will be used. Ensure unique names for multiple configurations of the same location. * **Signed (optional)**: When enabled, Contentstack adds a JWT token to the initial HTTP request made for your app's first page. This token can be used to verify that the request originated from Contentstack. For more information, please refer to [Signed Locations](/docs/developer-hub/securing-your-app/). * **Path (optional)**: Enables you to define the location relative to the base URL where the app is hosted. This is particularly useful when the developer intends the app to appear in multiple locations. * **Enabled (optional)**: Determines whether the location is visible after the app installation. If not specified, the location is enabled by default. Users can manage this option post-installation via the UI Locations tab on the app’s configuration screen. You can configure any UI location as **mandatory** using the **Required** toggle button. If the toggle is enabled, the location becomes mandatory and cannot be disabled. Whereas, if the toggle is disabled, the UI location is available to use but not mandatory. **Additional Resource:** Refer to the [Marketplace App Manifest](/docs/developer-hub/app-manifest) documentation for comprehensive details. ![Stack\_Dashboard\_Config\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5c9e664531e9f62f/68342163e962ac1867f8aec0/Stack_Dashboard_Config_Location.png) 8. Finally, click the **Save** button to save the Dashboard Location’s configuration details. You will see the details of the configured UI location on the **UI Locations** tab in the **App Configuration** screen after installing the app. You can enable or disable the non-required UI locations. Apps which have the Dashboard location configured will be visible in your stack homepage. For example, the app can be viewed in the Dashboard Location as shown below: ![Dashboard\_Location\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt04823daaa690ba8f/65b67e5cebfd035ce53d0b85/Dashboard_Location_App.png) **Note:** A single app supports up to **three** Dashboard Locations. Once you create a dashboard location, it is reflected on the stack’s dashboard page. Contentstack also allows you to [customize your dashboard view](/docs/headless-cms/customize-your-dashboard-view) and arrange widgets as per your requirements. --- ## URL: https://www.contentstack.com/docs/developer-hub/deleting-an-app --- title: "Deleting an App" description: "Deleting an App" url: "https://www.contentstack.com/docs/developer-hub/deleting-an-app" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: deleting-an-app.md --- # Deleting an App You can permanently delete an app you own in Developer Hub. This page shows how to delete the app and what happens to it and its resources afterward. **Warning:** Once an app is deleted, it is permanently removed from the stack or the organization it was installed in. To use the app again, you will have to install it again in the required stack or organization. ## Prerequisites * An app in Developer Hub ## What You Will Learn * How to delete an app from Developer Hub. * What happens to an app and its resources after deletion. ## Delete the App To delete an app, perform the steps given below: 1. Click the App you want to delete. 2. In the **Basic Information** section of your app, click the **Delete App** button at the top. ![Delete\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4657416b047e573f/67cec1abb8764ed97fe8c9c3/Delete_Icon.png) 3. You will be prompted to enter the App name and click **Delete**.![Delete\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltec71fc57d3883b27/67cec1ab6a793e32d0982148/Delete_App.png) This will permanently delete the app and all its resources. **Note:** Before deleting an app, remember to uninstall all the instances of that app from the respective stack. --- ## URL: https://www.contentstack.com/docs/developer-hub/faqs --- title: "Developer Hub FAQs" description: "Understand key Deve features through expert FAQs covering apps, SDKs, etc." url: "https://www.contentstack.com/docs/developer-hub/faqs" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: faqs.md --- # Developer Hub FAQs ### What is Developer Hub? [Contentstack Developer Hub](/developer-hub) is an app development framework/portal that developers can leverage to build, host, and publish ready-to-use private or public apps. In addition, it includes app development [API](/docs/developers/apis)s, [SDK](/docs/developers/sdks)s, and other tools that can help developers build apps with ease. ### What is the Contentstack Developer Hub Framework? [Contentstack Developer Hub](/developer-hub/about-developer-hub) Framework is an app development platform you can use to build, host, and publish apps. It lets you define further details for your app by adding [UI locations](/developer-hub#managing-ui-locations), Integrating [OAuth](/developer-hub/contentstack-oauth/), and setting up [Webhooks](/developer-hub/managing-webhooks-in-an-app/). ### What are apps in Contentstack CMS? Apps and other resources help you extend the capabilities of our core CMS and customize its functionalities. They allow you to enhance the Contentstack experience by connecting to various third-party services in simple one-click solutions. ### Who can develop apps? Contentstack supports two types of apps: 1. **Stack Apps:** Users registered as the [owners](/headless-cms/types-of-roles#owner)/[admins](/headless-cms/types-of-roles#admin) of the stack, or owners/admins of the corresponding organization can create and install stack apps. 2. **Organization Apps:** Only the [owners](/docs/administration/about-administration-roles#organization-owner)/[admins](/docs/administration/about-administration-roles#organization-admin) of the corresponding organization can develop and install the apps. ### How many apps can be developed in one organization? Currently, the limit is 50 apps. To increase the limit, please contact [customer support](mailto:support@contentstack.com). ### How do I secure my application? Your apps communicate with Contentstack via two major touchpoints: **Webhooks** and **UI Locations**. Contentstack provides signed support for both integrations. The [signed feature for webhooks](/docs/headless-cms/secure-your-webhooks#webhook-signature) allows developers to verify whether the webhook requests originated from Contentstack. Also, the signed feature for UI Locations enables the initial page load calls to contain a [JWT token](/docs/developer-hub/securing-your-app) that is further used to verify whether the page load request originated from Contentstack itself. While communication to Contentstack from outside resources, use [OAuth support token](/developer-hub/contentstack-oauth) instead of user session tokens or management token. These are easy to manage and scale as per the app developer’s demand. ### How do I submit apps to be published on the Marketplace? The [Contentstack Marketplace](/docs/marketplace/app-submission-and-approval-guide/) team accepts apps from Contentstack-certified partners. A dedicated team reviews these apps before publishing them on the Contentstack Marketplace platform. The end-to-end process for app submission and approval involves these steps: 1. Agree to Contentstack Terms of Service. 2. The Marketplace team provides detailed documentation to guide the developers about [app creation](/docs/developer-hub/creating-an-app-in-developer-hub/) and submission. 3. Fill out the metadata content form and submit a clone of your app for review. 4. The marketing content for your app will be created by collaborating efforts made by you and the Marketplace team. 5. The Marketplace team conducts app reviews along with the marketing content. 6. App testing and security checks. 7. Publish the app. ### What is the difference between apps and extensions? Apps are the future for integrating and implementing third-party solutions within our [headless CMS](/docs/headless-cms/what-is-headless-cms). Unlike extensions, apps offer advanced functionalities, enhancing all the features of extensions and more for seamless integration with your favorite third-party platforms. Contentstack apps provide an interactive UI for managing custom app configurations. Apps can be reused across multiple stacks, whereas extensions are limited to a specific stack. Learn more about the differences here. For developers, creating complex functions with apps is easier, faster, and more feature-rich. ### Are apps encrypted? Yes. Contentstack Marketplace Apps require TLS 1.2 or higher communications, including HTTPS. ### What are the regions supported by Contentstack? Contentstack currently supports three regions: **AWS North America**, **AWS Europe**, **Azure Europe**, and **Azure North America**. Contentstack-supported regions are hosted in the following data centers: * For AWS North America, our central region is **Oregon**, **US (us-west-1)**, and the backup region is **North Virginia**, **US (us-east-1)**. * For AWS Europe, our main center is **Ireland**, **Europe (eu-west-1)**, and the backup is **Frankfurt**, **Europe (eu-central-1)**. * For Azure North America, our primary region is **West US 2** and our backups are configured in **US East region (MongoDB Database backups)**, and the **West US region (Assets backups)**. * For Azure Europe, our primary region is **West Europe** **(Netherlands)** and our backup region is **EU Central 1** (Frankfurt). ### Where can I find guides and documentation related to Developer Hub? Here is the list of guides that walks you through how to build apps using Developer Hub. * [About Developer Hub](/developer-hub/about-developer-hub) * [Creating an App in Developer Hub](/docs/developer-hub/creating-an-app-in-developer-hub) * [Installing your App via Developer Hub](/developer-hub/installing-your-app-via-developer-hub) * [Configuring an App](/docs/developer-hub/configuring-an-app) * [Managing your Apps](/developer-hub/managing-your-apps) * [Managing OAuth](/developer-hub/contentstack-oauth#configuring-contentstack-oauth) * For more guides and documentation, visit our [Developer Hub](/developer-hub) page. --- ## URL: https://www.contentstack.com/docs/developer-hub/field-modifier-location --- title: "Field Modifier Location" description: "Learn how to easily add the Entry Field location for your app via the Developer Hub Console." url: "https://www.contentstack.com/docs/developer-hub/field-modifier-location" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: field-modifier-location.md --- # Field Modifier Location The Field Modifier location is a type of UI location which extends the capabilities of the entry fields. With the Field Modifier UI location, you can create apps that add custom functionalities to entry fields, allowing content managers to do a lot more with their content. You can use Field Modifier across a variety of fields such as Text, JSON, Number, File, Reference etc. Try out this UI location through one of Contentstacks own implementations, like AI Assistant. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * An app created in Developer Hub * A hosted app URL (Launch or custom hosting) ## What You Will Learn * How to add a Field Modifier location to your app through the Developer Hub console. * Which properties you can configure for the location. * Where the location appears in entry fields after installation. ## Add a Field Modifier Location to your App To add the Field Modifier UI location to your app via the Developer Hub console, login to your Contentstack account and follow the steps given below: **Via the Developer Hub Console:** To add the Field Modifier UI location to your app via the Developer Hub console, login to your [Contentstack account](https://www.contentstack.com/login/) and follow the steps given below: 1. Navigate to **App Switcher** on the top-right corner and select **Developer Hub**. 2. Select an application for which you want to add the Field Modifier UI location. 3. Click the **UI Locations** tab. To set the **App URL**, click the **View Hosting** link. You will be redirected to the **Hosting** tab. ![View\_Hosting.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf879b2d8d0af9821/68343990c589ead0184bdd34/View_Hosting.png) 4. In the Hosting tab, you can select [Hosting with Launch](/docs/developer-hub/app-hosting#hosting-with-launch) or [Custom Hosting](/docs/developer-hub/app-hosting#custom-hosting) option. Select the **Custom Hosting** option to enter the hosted URL of your application. Click the **Save** button to save your hosting configuration. ![App\_URL.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt37093a3aeb3377a9/68343990d6011e50b9ed53c9/App_URL.png) 5. Navigate to the **UI Locations** tab to configure the Field Modifier UI location. 6. Hover over the **Field Modifier** location, and click the **\+ Add UI Location** button. ![Add\_FIeld\_Modifier\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc3ab7b903f319a80/683572c1d35cbe7c805c669e/Add_FIeld_Modifier_Location.png) 7. On the resulting **Configuration** page, set up the configurations for Field Modifier location by providing details such as **Name**, **Path**, **Allowed Field Types**, and **Description**. You can also enable the location by default using the **Enabled** toggle button. Properties that can be specified for this UI location: * **Name (optional)**: Specifies the name of the UI location. This name will be displayed at the location after the app is installed. If not provided, the app name will be used. Ensure unique names for multiple configurations of the same location. * **Signed (optional)**: When enabled, Contentstack adds a JWT token to the initial HTTP request made for your app's first page. This token can be used to verify that the request originated from Contentstack. For more information, please refer to [Signed Locations](/docs/developer-hub/securing-your-app/). * **Path (optional)**: Enables you to define the location relative to the base URL where the app is hosted. This is particularly useful when the developer intends the app to appear in multiple locations. * **Enabled (optional)**: Determines whether the location is visible after the app installation. If not specified, the location is enabled by default. Users can manage this option post-installation via the UI Locations tab on the app’s configuration screen. You can mark any UI location as **mandatory** using the **Required** toggle. If the toggle is enabled, the location becomes mandatory to your app users and cannot be disabled. Whereas, if the toggle is disabled, the UI location is available to use but not mandatory. **Additional Resource:** Refer to the [Marketplace App Manifest](/docs/developer-hub/app-manifest) documentation for comprehensive details. ![Field\_Modifier\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt10c721877e00de43/683572c10d50b3c615e74de6/Field_Modifier_Location.png) 8. Finally, click the **Save** button to save the Field Modifier location’s configuration details. You will see the details of the configured UI location on the **UI Locations** tab in the **App Configuration** screen after installing the app and will have the option to enable or disable the non-required UI locations. Apps which have the Field Modifier location configured on different field types will be visible in the [entry](/docs/headless-cms/about-entries) fields of the content type. Navigate to the entries page to view the app on the Field Modifier UI location. For example, the AI Assistant app can be viewed in the Field Modifier UI location as shown below: ![AI\_Assistant\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt81afddea4830f2de/65b6968468334a80c3c61060/AI_Assistant_App.png) **Additional Resources:** For more information, refer to the [AI Assistant](/marketplace/ai-assistant) documentation. --- ## URL: https://www.contentstack.com/docs/developer-hub/full-page-location --- title: "Full Page Location" description: "Learn how to easily add the Full Page location for your app via the Developer Hub Console." url: "https://www.contentstack.com/docs/developer-hub/full-page-location" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: full-page-location.md --- # Full Page Location The Full Page UI location is amongst the most versatile UI locations available in Developer Hub, as it allows you to create custom apps that function as separate, independent pages or modules (unlike other UI locations that are restricted to and are part of other modules). This powerful element provides you with a blank canvas, to create, customize and optimize your users stack experience. Examples of this location in action can be viewed through Contentstacks Workflow Board or Calendar apps. Once you install an app that utilizes a Full Page location, you will see it appear on the main left navigation bar within your stack. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * An app created in Developer Hub * A hosted app URL (Launch or custom hosting) ## What You Will Learn * How to add a Full Page location to your app through the Developer Hub console. * Which properties you can configure for the location. * Where the location appears in the stack's left navigation after installation. ## Add a Full Page Location to your App Here’s how you can add the Full Page location to your app: **Via the Developer Hub Console:**To add the Full Page location to your app via the Developer Hub console, log in to your [Contentstack account](https://www.contentstack.com/login/) and follow the steps given below: 1. Navigate to **App Switcher** on the top-right corner and select **Developer Hub**. 2. Select an application for which you want to add the Full Page location. 3. Click the **UI Locations** tab. To set the App URL, click the **View Hosting** link. You will be redirected to the **Hosting** tab. ![View\_Hosting.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf879b2d8d0af9821/68343990c589ead0184bdd34/View_Hosting.png) 4. In the **Hosting** tab, you can select [Hosting with Launch](/docs/developer-hub/app-hosting#hosting-with-launch) or [Custom Hosting](/docs/developer-hub/app-hosting#custom-hosting) options. Select the **Custom Hosting** option to enter the hosted URL of your application. Click the **Save** button to save your hosting configuration. ![App\_URL.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt37093a3aeb3377a9/68343990d6011e50b9ed53c9/App_URL.png) 5. Navigate to the **UI Locations** tab to configure the Full Page UI location. 6. Hover over the **Full Page** location, and click the **\+ Add** **UI Location** button. ![Add\_Full\_Page\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltaf4c674536b6e944/683571cc1a39315dc053d042/Add_Full_Page_Location.png) 7. On the resulting **Configuration** page, set up the configurations for Full Page location by providing details such as **Name**, **Path**, **Location Icon**, and **Description**. You can also enable the location by default using the **Enabled** toggle button. Properties that can be specified for this UI location: * **Name (optional)**: Specifies the name of the UI location. This name will be displayed at the location after the app is installed. If not provided, the app name will be used. Ensure unique names for multiple configurations of the same location. * **Signed (optional)**: When enabled, Contentstack adds a JWT token to the initial HTTP request made for your app's first page. This token can be used to verify that the request originated from Contentstack. For more information, please refer to [Signed Locations](/docs/developer-hub/securing-your-app/). * **Path (optional)**: Enables you to define the location relative to the base URL where the app is hosted. This is particularly useful when the developer intends the app to appear in multiple locations. * **Enabled (optional)**: Determines whether the location is visible after the app installation. If not specified, the location is enabled by default. Users can manage this option post-installation via the UI Locations tab on the app’s configuration screen. You can mark any UI location as **mandatory** using the **Required** toggle. If the toggle is enabled, the location becomes mandatory to your app users and cannot be disabled. Whereas, if the toggle is disabled, the UI location is available to use but not mandatory. **Note:** The location icon file size must be less than **1 MB** and must be in **.svg** format. **Additional Resource:** Refer to the [Marketplace App Manifest](/docs/developer-hub/app-manifest) documentation for comprehensive details. ![Full\_Page\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbda85a5b08a0e0bd/683571cc11e9dd7c637c4650/Full_Page_Location.png) 8. Finally, click the **Save** button to save the Full Page location’s configuration details. You will see the details of the configured UI location on the **UI Locations** tab in the **App Configuration** screen after installing the app and will have the option to enable or disable the non-required UI locations. Apps which have the Full Page Modifier location configured will be visible in the Full Page UI location. Navigate to the [stack](/docs/headless-cms/about-stack). In the left navigation, you will see the installed app in the Full Page UI location. For example, the [Healthcheck app](/marketplace/healthcheck) can be viewed in the Full Page location **Note:** Contentstack Marketplace currently offers the **Healthcheck** app which can be viewed on the Full Page location. For more information, refer to the [Healthcheck App Installation Guide](/docs/marketplace/healthcheck#overview). --- ## URL: https://www.contentstack.com/docs/developer-hub/getting-started-with-your-first-app --- title: "Getting Started with your First App" description: "Use this guide to build a simple app in Developer Hub." url: "https://www.contentstack.com/docs/developer-hub/getting-started-with-your-first-app" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-05" filename: getting-started-with-your-first-app.md --- # Getting Started with your First App In this section, we will learn how to build a simple **“Color Picker”** app using the Contentstack App Framework. This app contains a [Custom Field UI location](/docs/developer-hub/custom-field-location), which provides a native color picker polyfill that Contentstack users can use as an input field. This step-by-step guide explains how to create a Color Picker app and use it to select color as an input within an entry. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) with access to Developer Hub * Organization or Stack Admin access * [Node.js](https://nodejs.org/en/) version 18 or above * CLI [installed](/docs/headless-cms/install-the-cli/v1) on your machine * [Apps CLI Plugin](/docs/headless-cms/apps-cli-plugin/v1) configured for Contentstack CLI * Understanding of [App SDK](https://github.com/contentstack/app-sdk-docs) * Understanding of React.js * [Venus Component Library](/docs/headless-cms/venus-component-library/) installed on your machine ## What You Will Learn * How to set up and register a Color Picker app with the Contentstack Apps CLI Plugin. * How to install and configure the app in a stack. * How to implement the Color Picker custom field logic. * How to prepare the app for hosting and publishing. ## Overview of Steps: 1. [Set up and Register an App](#set-up-and-register-an-app) 2. [Install and Configure the App](#install-and-configure-the-app) 3. [Implement your Business Logic](#implement-your-business-logic) 4. [Next Steps](#next-steps) 1. ### Set up and Register an App As a first step, you need to create a project directory where you can work in. You can use the Contentstack [Apps CLI Plugin](/docs/headless-cms/apps-cli-plugin/v1) to clone the Marketplace App Boilerplate for creating your project. 1. This command allows you to create or register an app in [Developer Hub](/docs/developer-hub/) and optionally clone a boilerplate locally. Open a terminal and execute the following command: ``` csdx app:create ``` 2. You will be prompted to enter a name for the app. ![App\_Name.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte53e962915817136/65b23c279515001817a71f66/App_Name.png) 3. Enter a name for your app and click enter. As per our example, we are using color picker. ![App\_Name\_Colorpicker.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte80c6789bf945e0c/65b23c2741787580ea674512/App_Name_Colorpicker.png) 4. You will be prompted to choose an organization. ![Organization\_Name.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt815897af4bfe2f90/65f82eb0edb2c70b17371d50/Organization_Name.png) 5. Enter **Y** i.e. Yes, if you want to fetch the app template from GitHub (recommended). This clones the latest Marketplace App Boilerplate for stack apps. ![Fetch\_Template.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3525551d154b8be3/65b23c275cdaec184a3b76a8/Fetch_Template.png) Your boilerplate will be cloned locally in the color-picker directory and the app is automatically registered in Developer Hub. 6. Switch to the newly created project directory from CLI using the following command. ``` cd color-picker ``` 7. Run the following command to install all the node modules. ``` npm install ``` 8. Run the following command to start the project. ``` npm run dev ``` This hosts your application on http://localhost:3000. We will connect to this through the Contentstack web app. 2. ### Install and Configure the App The boilerplate app has sample pages for all the supported [UI locations](/docs/developer-hub/about-ui-locations) in the source code. To test the app, Install the app in one of the stacks. 1. Run the following commands in a **separate console window** to keep the server running. Run the following command to install the app. You can also perform the same installation via Developer Hub. ``` csdx app:install ``` 2. The CLI prompts you to select the organization and stack to install the app. ![Select\_Stac.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltefa339780863e963/65b23c2860a275c5747fb6e9/Select_Stac.png) 3. Once done, you will see the stack URL for quick access to the stack. Open the Stack via the URL displayed in the terminal. ![Terminal\_URL.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte9b7f9cfd3fc715d/65b23c28292a0ebb6487c184/Terminal_URL.png) 4. Go to the stack in which you have installed the app. Create a new content type or navigate to an existing one. Select the **Sample Custom** field to add the Color Picker app. ![Select\_Custom\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3cf58a5358e2ebb4/65b23c2824ea49a6c8de4a4c/Select_Custom_Field.png) 5. In the **Select Extensions or App** popup, select the Color Picker app. ![Select\_Extension\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfdf29e9b4df4ce74/65b23c288fc5c0e55b0bb447/Select_Extension_App.png) 6. Click **Proceed**. 7. Click **Save or Save and Close** to update and save your changes to the content type. 8. Navigate to the entries page. Create an entry for the above content type to see the app in action. ![Custom\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt575eb671d8ff4c1e/65b23c286f1607451c394e30/Custom_Field.png) You will see a custom field as shown above. 3. ### Implement your Business Logic 1. For the Color Picker app, you **must** install some dependencies. Run the following command on a terminal to install the dependencies. ``` npm i reactcss react-color @contentstack/venus-components npm i --save-dev @types/react-color ``` 2. Add the **Color Picker** type to the **Types** in src/common/types/types.ts ``` export interface ColorPickerData { showPicker: boolean; pickerColor: { r: string; g: string; b: string; a: string; }; } ``` 3. Replace the custom field code with the code given below in the following folder src/containers/CustomField/CustomField.tsx ``` /* eslint-disable @typescript-eslint/no-explicit-any */ /* Import Node modules */ import React from "react"; import { useEffect, useState } from "react"; import { Color, SketchPicker } from "react-color"; import reactCSS from "reactcss"; import { InstructionText } from "@contentstack/venus-components"; import { isEmpty } from "lodash"; /* Import our modules */ import localeTexts from "../../common/locales/en-us/index"; import { ColorPickerData } from "../../common/types/types"; import { useCustomField } from "../../common/hooks/useCustomField"; /* Import our CSS */ import "./styles.css"; const CustomFieldUILocation = () => { const { customField, setFieldData }: any = useCustomField(); const [stateColor, setColor] = useState({ showPicker: false, pickerColor: { r: "108", g: "92", b: "231", a: "100", }, }); const styles = reactCSS({ default: { color: { width: "70px", height: "30px", borderRadius: "4px", background: `rgba(${stateColor.pickerColor.r}, ${stateColor.pickerColor.g}, ${stateColor.pickerColor.b}, ${stateColor.pickerColor.a})`, }, }, }); const togglePickerVisibility = () => { setColor((prev) => ({ showPicker: !prev.showPicker, pickerColor: prev.pickerColor, })); }; const closePicker = () => { setColor((prev) => ({ showPicker: false, pickerColor: prev.pickerColor, })); }; const pickerColorChanged = (color: any) => { setColor((prev) => ({ showPicker: prev.showPicker, pickerColor: color.rgb, })); setFieldData(color); }; useEffect(() => { if (!isEmpty(customField) && customField !== null) { setColor({ showPicker: false, pickerColor: customField.rgb, }); } }, [customField]); return (
    {localeTexts.CustomField.instruction}
    {stateColor.showPicker ? (
    ) : null}
    ); }; export default CustomFieldUILocation; ``` 4. Create a new file styles.css and add the custom field CSS with the code given below in the following path src/containers/CustomField/ ``` .layout-container { padding: 5px; margin: -28px 0; } .layout-container .InstructionText { text-align: left; color: #647696; display: block; font-family: Inter; font-size: 0.75rem; line-height: 1.5; } .layout-container .swatch { padding: 5px; background: #fff; border-radius: 1px; box-shadow: 0 0 0 1px rgb(0 0 0 / 10%); display: inline-block; cursor: pointer; } ``` 5. Add new strings to Custom Field object node in locales in src/common/locales/en-us/index.ts ``` CustomField: { . . . instruction: "Pick a Color", }, ``` 6. Stop and restart your **React** project. ``` npm start ``` 7. Revisit the entry page to see the Color Picker loaded into the custom field. ![Revisit\_Image.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7d7d877ebc4e7e5c/65b23c29316f0d0675aa0c7f/Revisit_Image.png) 8. Save any color and reload, and verify if the app is saving data and fetching it on reload. 4. ### Next Steps 1. **Host the app on Launch:** Now that your app is ready, you can [host it on Launch](/docs/developer-hub/app-hosting) for your team to use. You can also choose to host the app on external services like Netlify, Vercel, etc. 2. **Secure your application:** Using the [signed support](/docs/developer-hub/securing-your-app/), you can learn how to secure calls to outgoing APIs from the Contentstack UI and backend using the Contentstack App Framework. 3. **Submit for publishing on Marketplace:** Once your application is production-ready and you want to share the solution with Contentstack Marketplace, you can check the [App Submission and Approval Guide](/docs/marketplace/app-submission-and-approval-guide). --- ## URL: https://www.contentstack.com/docs/developer-hub/global-full-page --- title: "Global Full Page" description: "Build full-page apps across stacks with Global UI Location in Contentstack. Ideal for dashboards, workflows, and integrated organization-level tools." url: "https://www.contentstack.com/docs/developer-hub/global-full-page" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-05" filename: global-full-page.md --- # Global Full Page The **Global Full Page UI Location** is a new interface option for app developers that enables building full-page applications at the **Organization level**. Unlike the **Stack Full Page UI Location**, which limits scope to a single stack, this global variant provides access to APIs and data across **multiple stacks and Contentstack products** within the organization. This makes it ideal for developing **cross-stack applications** such as: * Admin dashboards * Workflow management tools * Content governance or review systems ## Example Use Cases Let’s see some use cases to understand how Global Full Page UI location is useful: 1. **Centralized Admin Dashboard for Content Management** Build a unified admin interface to review and approve entries, manage workflows, and moderate comments across multiple stacks. Include features like bulk actions and cross-stack visibility to streamline content operations. 2. **Embed Third-Party Services** Develop a full-page app that integrates external tools such as **Confluence**, **Jira**, or **business intelligence dashboards** that are all accessible directly within the Contentstack platform. 3. **Internal Intranet, Guides and Documentation Hub**Create a centralized knowledge base for content editors to easily access company-wide **best** **practices**, **editorial guidelines**, and **workflow documentation** across stacks. ## Setting up your Global Full Page App ### Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * Developer Hub-enabled Organization with [Admin](/docs/administration/about-administration-roles) or Stack [Admin](/docs/headless-cms/types-of-roles#admin) permissions * [Node.js](https://nodejs.org/en/download/) (v20 or above) installed. * Contentstack CLI [installed](/docs/headless-cms/install-the-cli/v1) and configured. ### Create your App The **Global Full Page UI Location** enables developers to build standalone, full-page apps at the **Organization** **level**, with access to APIs and data across **multiple** **stacks** and all **Contentstack** **products**. Unlike other UI locations tied to specific modules or single stacks, it offers greater flexibility for cross-stack development. Installed apps appear in the left-hand navigation, ensuring seamless access across your organization. Here is how you can add the Global Full Page location to your app: **Via the Developer Hub Console:**To add the Global Full Page location to your app via the Developer Hub console, log in to your [Contentstack account](https://www.contentstack.com/login/) and follow the steps given below: 1. Click the **Developer Hub** icon in the left navigation panel. 2. Select an application for which you want to add the Global Full Page location. 3. Click the **UI Locations** tab. To set the App URL, click the **View Hosting** link. You will be redirected to the **Hosting** tab. ![UI\_Screen.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd320d58f58a4464a/68184482ae96e72088d3893c/UI_Screen.png) 4. In the **Hosting** tab, you can select [Hosting with Launch](/docs/developer-hub/app-hosting#hosting-with-launch) or [Custom Hosting](/docs/developer-hub/app-hosting#custom-hosting) options. Select the **Custom Hosting** option to enter the hosted URL of your application. Click the **Save** button to save your hosting configuration. 5. Navigate to the **UI Locations** tab to configure the Global Full Page UI location. 6. Click the three vertical dots and then, click **\+ Add UI Location.**![image4.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf93b6d37d9ad105c/68184482a6dd34245b226e2c/image4.png) 7. On the resulting **Configuration** page, set up the configurations for Global Full Page location by providing details such as **Name**, **Path**, **Location Icon**, and **Description**. You can also enable the location by default using the **Enabled** toggle button. Properties that can be specified for this UI location: * **Name (optional)**: Specifies the name of the UI location. This name will be displayed at the location after the app is installed. If not provided, the app name will be used. Ensure unique names for multiple configurations of the same location. * **Signed (optional)**: When enabled, Contentstack adds a JWT token to the initial HTTP request made for your app's first page. This token can be used to verify that the request originated from Contentstack. For more information, please refer to [Signed Locations](/docs/developer-hub/securing-your-app#securing-ui-locations). * **Path (optional)**: Enables you to define the location relative to the base URL where the app is hosted. This is particularly useful when the developer intends the app to appear in multiple locations. * **Enabled (optional)**: Determines whether the location is visible after the app installation. If not specified, the location is enabled by default. Users can manage this option post-installation via the UI Locations tab on the app’s configuration screen. You can mark any UI location as **mandatory** using the **Required** toggle. If the toggle is enabled, the location becomes mandatory to your app users and cannot be disabled. Whereas, if the toggle is disabled, the UI location is available to use but not mandatory. ![Configuration\_Screen.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc45d8f8ac42f7033/681844829b09250e54def651/Configuration_Screen.png) **Note:** The location icon file size must be less than **1 MB** and must be in **.svg** format. **Additional Resource:** Refer to the [Marketplace App Manifest](/docs/developer-hub/app-manifest) documentation for comprehensive details. 8. Finally, click the **Save** button to save the Global Full Page location’s configuration details. You will see the details of the configured UI location on the **UI Locations** tab in the **App Configuration** screen after installing the app and will have the option to enable or disable the non-required UI locations. Navigate to the stack. In the left navigation, you will see the installed app in the Full Page UI location.![Output\_Screen.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbd3716c1d1bbf2cd/681844820307cd80b7edfa92/Output_Screen.png) ### Customize and Deploy Refer to the [Marketplace App Boilerplate](/docs/developer-hub/marketplace-app-boilerplate) to learn more. --- ## URL: https://www.contentstack.com/docs/developer-hub/guide-to-convert-contentstack-extensions-to-marketplace-apps --- title: "Guide to Convert Contentstack Extensions to Marketplace Apps" description: "Guide to Convert Contentstack Extensions to Marketplace Apps" url: "https://www.contentstack.com/docs/developer-hub/guide-to-convert-contentstack-extensions-to-marketplace-apps" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: guide-to-convert-contentstack-extensions-to-marketplace-apps.md --- # Guide to Convert Contentstack Extensions to Marketplace Apps This comprehensive guide will help you convert your existing Contentstack extension to a marketplace app. **Note:** Refer to the [Difference Between Apps and Extensions](/docs/marketplace/difference-between-marketplace-apps-and-extensions) document to know more about the difference between them. ## What You Will Learn * How to remove an existing extension from a stack. * How to develop a Marketplace app frontend (and optional backend) against app-sdk. * How to create and install the app in Developer Hub. * How to use the app in content types and entries. ## Prerequisites * Contentstack account with **Admin** role to stack * **Important:** Get access to app-sdk repository from a concerned technical person of Contentstack * Development requirements: * Node.js - v20 * Npm - v8.1.4 * Your own development requirements, for example - React.js, Express.js, etc. * Rest API client, such as [Postman](https://www.postman.com/) ## Steps to Convert Contentstack extension to a Marketplace App 1. [Remove Existing Extension from the Stack](#remove-existing-extension-from-the-stack) 2. [Develop your Marketplace App](#develop-your-marketplace-app) 3. [Create an App in Contentstack Developer Hub](#creating-an-app-in-contentstack-developer-hub) 4. [Install the App](#install-the-app) 5. [Use your App in Content Types and Entries](#using-your-app-in-content-types-and-entries) Let’s look at the steps in detail. 1. ## Remove Existing Extension from the Stack The first step to convert an extension into a marketplace app is to remove your existing extension. Log in to your [Contentstack account](https://app.contentstack.com/#!/login) and perform the following steps to remove your extension: 1. Click the “Stacks” icon and select the stack where you’ve created your extension. 2. Click “Settings” and select “Extensions”. You’ll get a list of all the extensions that you’ve created. 3. Hover over the extension that you want to convert into an app and click the “Delete” icon. 4. Click “Delete” again to confirm your action. 2. ## Develop your Marketplace App When developing a Marketplace app, there are two parts that you need to work on: frontend and backend. You can skip the backend part if your app doesn’t require server-side processing or logic. While the backend could be built in any programming language or framework of your choice, make sure to develop the frontend of your app in a JavaScript environment. This is to ensure that your app can communicate with the NPM module app-sdk . Let’s get started with the setup of your UI app. 1. Create your app’s root directory. 2. Open your terminal/ command line, and navigate to your app’s root directory. 3. Run npm init to initialize your project to start using npm packages. 4. Navigate to your app’s root directory via the terminal/ command prompt, and run this command to install app-sdk: ``` npm install @contentstack/app-sdk ``` 5. Click “Delete” again to confirm your action. 6. First, you must initialize app-sdk using the following code snippet, you can also refer to the example section which is at the end of this documentation: ``` ContentstackAppSdk.init().then(function (appSdk) { // Add your UI logic here }); ``` 7. A Marketplace app could have one or more UI locations in Contentstack. The UI locations are as follows: * [Custom Field](/docs/developer-hub/custom-field-location) * [Sidebar Widget](/docs/developer-hub/asset-sidebar-location) * [Dashboard Widget](/docs/developer-hub/dashboard-location) * [RTE - Rich Text Editor](/docs/developer-hub/rte-location) * Config Screen with Webhooks **Note:** In an extension, you can only add one Contentstack UI location. Please make sure that your UI app has the respective URL routing for the selected locations: **Sl. No.** **Contentstack Location** **Your app’s URL** 1. Custom Field https://{yourwebsite.com}/custom-field 2. Sidebar Widget https://{yourwebsite.com}/sidebar-widget 3. Dashboard Widget https://{yourwebsite.com}/dashboard-widget 4. Config Screen https://{yourwebsite.com}/config 4. RTE - Rich Text Editor https://{yourwebsite.com}/rte 3. After successfully developing your app, deploy both the frontend and backend code of your app on any cloud platform of your choice and make a note of the URL where your app is hosted. Based on the location, your app’s Base URL will change accordingly. For example, if you're building a marketplace app for a custom field, your Base URL will look like this: https://{yourwebsite.com}/custom-field. Contentstack will then render this URL on its webpage. 4. ## Creating an App in Contentstack Developer Hub It’s time to put your newly built app into action. Connect your deployed app to Contentstack. For that, you need to create a Marketplace app. To create an app in Marketplace, perform the steps given in the [Create an App in Marketplace](/docs/developer-hub/creating-an-app-in-developer-hub) document. Once done, your Marketplace app is now ready. 5. ## Install the App Now let’s install the Marketplace app in one of your stack. To install your app, perform the steps covered in the [Installing an App in Developer Hub](/docs/developer-hub/installing-your-app-via-developer-hub) guide. Once done, your app is now installed and ready to use. 6. ## Use your App in Content Types and Entries Once your app is installed, navigate to the respective UI locations and check the rendering of your app in its defined locations. For example, if your app has a “Custom Field” location, let’s see how you can use it in your content type: 1. Navigate to the stack where the app is installed. 2. Create a content type with the custom field or [add your app as a custom field](/docs/headless-cms/custom) in your existing content type. 3. Finally, start add an entry for that content type using your app. Similarly, test the app in other locations where you have installed it. This concludes the setup guide of converting Contentstack extensions to marketplace apps. ## Example Code Featuring extension-sdk and app-sdk Let’s say you have an extension with a custom field as its UI location, and it stores some data in Contentstack and retrieves it back. You need to convert it into its corresponding Marketplace app. Here’s a simple extension that stores and retrieves some data from/ to Contentstack: ``` ``` Here’s the code for the Marketplace app built using React.js with TypeScript, for the above extension: ``` import React, { useEffect, useState } from 'react'; import ContentstackAppSdk from '@contentstack/app-sdk'; import { isEmpty } from 'lodash'; import { TypeDataSDK } from '../../common/types'; import InputElement from '../../components/inputelement/index'; const CustomField: React.FC = function () { const [state, setState] = useState({ config: {}, location: {}, appSdkInitialized: false, }); const [inputData, setInputData] = useState(''); useEffect(() => { ContentstackAppSdk.init().then(async appSdk => { const config = await appSdk?.getConfig(); setState({ config, location: appSdk.location, appSdkInitialized: true, }); appSdk.location.CustomField?.frame.updateHeight(300); const initialData = appSdk.location.CustomField?.field.getData(); if (initialData && !isEmpty(initialData)) { setInputData(initialData); } }); }, []); const onChangeSave = (saveData: any) => { state.location?.CustomField?.field?.setData(saveData.toString()); }; return (
    {state.appSdkInitialized && ( )}
    ); }; export default CustomField; ``` --- ## URL: https://www.contentstack.com/docs/developer-hub/installing-your-app-via-developer-hub --- title: "Installing your App via Developer Hub" description: "Installing Your App via Developer Hub" url: "https://www.contentstack.com/docs/developer-hub/installing-your-app-via-developer-hub" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: installing-your-app-via-developer-hub.md --- # Installing your App via Developer Hub Once your app is ready, you can test the app by installing it in your preferred stack. ## Prerequisites * An app created in Developer Hub * Stack [Admin](/docs/headless-cms/types-of-roles#admin) or [Owner](/docs/headless-cms/types-of-roles#owner) permissions, or Organization [Admin](/docs/administration/about-administration-roles) permissions **Note** * Stack Admins can install any app in the stacks they own. * Organization Admins can install the app in any stack that they are a member of. ## What You Will Learn * How to install a stack app. * How to install (authorize) an organization app. * Where to find installed apps to update or uninstall them. ## Install an app 1. Click the app card to go to the app’s **Basic information** page. 2. Click the **Install App** button on the top-right side. Another quick step is to open this URL in a browser: https://app.contentstack.com/!#/apps/{appUID}/install. ![Basic\_Information.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd21ef2cb3254df88/678517ad7dbc19079cf9f128/Basic_Information.png) 3. In the case of a stack app, you are prompted to select the stack within which you want to install the app. Select the stack and click **Install**. ![Install\_App](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb0ae4fb1175f9c22/64b60843bbf1d065769db7b9/Install_App.png) **Note**: If you are not a stack admin or owner, you will see a **Request Install** button instead. Clicking this button will send a request to the stack admin to install this app for you. 4. You will be redirected to the configuration page to fill in the required information related to the App to complete the installation (as seen in the [Configuring an App](/docs/developer-hub/configuring-an-app) section). After adding the details, click the **Save** button. 5. In the case of an organization app, you will be asked to allow access to specific modules of your Contentstack account. Click **Authorize & Install** to proceed. Once you install an app, you can find the app in **Marketplace** > **Manage** > **Installed Apps**. You can hover on the app and update the app configuration, and uninstall it. **Note**: An app can only be installed once per stack. To reinstall an app, you need to uninstall it from the stack first, and then reinstall it. --- ## URL: https://www.contentstack.com/docs/developer-hub/introduction-to-advanced-settings --- title: "Introduction to Advanced Settings" description: "Securely manage API keys, configure routing, and streamline calls for API integrations with Contentstack's Advanced Settings." url: "https://www.contentstack.com/docs/developer-hub/introduction-to-advanced-settings" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-24" filename: introduction-to-advanced-settings.md --- # Introduction to Advanced Settings Developing applications in the Contentstack platform often requires integration with third-party services that depend on secret credentials. Traditionally, this has meant building and maintaining complex backend systems to manage sensitive data and execute API calls. Advanced Settings simplifies this process by eliminating the need for a custom backend. You can securely call external APIs that require sensitive information, without exposing those credentials to the frontend, ensuring both enhanced security and flexibility across your applications. **Additional Resource:** To learn more about the API call implementation, refer to the [API Integration in Developer Hub Apps](/docs/developer-hub/api-integration-in-developer-hub-apps) documentation. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login) with access to Developer Hub * Understanding [Contentstack App Development](/docs/developer-hub) * Understanding of [Contentstack App SDK](https://github.com/contentstack/app-sdk-docs) * Understanding of [Server Configuration](/docs/developer-hub/app-config-location) ## Why Use Advanced Settings? Many apps need sensitive settings like API keys to function properly. Instead of building a backend to manage them, **Advanced** **Settings** lets you securely store and use these values directly in API calls, no backend required. Use **Advanced Settings** in the following scenarios: 1. When your application needs to connect to external APIs outside of Contentstack 2. When you want to avoid managing your own infrastructure for storing sensitive data and making API calls to external services. ### Key Features of Advanced Settings Advanced Settings includes three integrated features that work together to streamline API integrations: 1. [**Rewrites**](#rewrites)**:** Enable your application to make calls to external endpoints outside of Contentstack, supporting seamless integration with third-party services. 2. [**Variables**](#variables)**:** Securely store essential data such as API keys and other sensitive information as key-value pairs. These values are stored on the platform and never exposed on the frontend, ensuring strong security. 3. [**Mappings**](#mappings)**:** Link a symbolic name to a path within the [server configuration](/docs/developer-hub/app-config-location). This allows applications to reference stored values dynamically, enabling developers to securely access installation-specific sensitive data without exposing it in the frontend. ### How to Add Advanced Settings? To use Advanced Settings, perform the following steps: 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. On the Dashboard page, click the **Developer Hub** icon as shown below:![Developer\_Hub\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd183a670891dc235/6908cfb85e75bb3ef8ed9139/Developer_Hub_Icon.png) 3. Click the **\+ New App** button. 4. Contentstack supports two types of Apps based on two categories: [Standard and Machine to Machine](/docs/developer-hub/introduction-to-contentstack-applications). **Additional Resource:** Refer to the [Creating an App in Developer Hub](/docs/developer-hub/creating-an-app-in-developer-hub) document to know more about Standard and Machine to Machine app categories. 5. In the **Create Standard App** modal, select the **App Type**, and give a suitable app **Name** and an optional **Description.**![Create\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltec6001966cfb17c4/6909de707973062fe7a2a348/Create_App.png) 6. Click **Create**. You will be redirected to the UI Locations landing page. 7. To continue, go to the **Advanced** section. You will see the three integrated features, i.e., **Variables**, **Mappings**, and **Rewrites**. ![Left\_navigation.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt13d9bc8370323800/6909dd8e4d6a6bd93683e419/Left_navigation.png) Each section is explained in more detail below. ## Rewrites **Rewrites** are the only way to call external API endpoints using the appSdk.api method. They let you transform request URLs, so you can use clean, simple paths that map to more complex external URLs behind the scenes. Contentstack automatically rewrites the request URL before sending it to the external service, making your code cleaner and easier to manage. App developers can set up rewrite rules in **Advanced Settings → Rewrites**. When a request matches a defined source path, it is rewritten to the destination URL before being sent out. ![Rewrite\_DH.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltdd029faa141c8720/6909dd96f62560b5caa7abfe/Rewrite_DH.png) **When to use:** * Route requests to backend endpoints without exposing them in the frontend * Call external APIs outside of Contentstack from your application ![Rewrites\_New.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1ff4898c4f33ceea/690b07d4dcc341ccf5a5e316/Rewrites_New.png) ## Variables With **Variables**, you can securely store API keys and other sensitive credentials without exposing them in the frontend. These values are encrypted, stored on Contentstack infrastructure, and kept fully secure from client-side access. **Note:** Variables are app-specific, meaning all installations of the app share the same values. To store installation-specific or user-specific secret configurations, use [server configuration](/docs/developer-hub/app-config-location) instead. **Variable** **substitution** is supported in the appSdk.api method, allowing you to reference secure environment variables (such as API keys) in your API requests. Instead of hardcoding secrets, use the syntax {{var.VARIABLE\_NAME}} in request headers, URLs, or bodies. At runtime, these placeholders are replaced with the actual values stored in your app’s **Advanced** **Settings** **→** **Variables**. ![Variables.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt09a2f2833251d240/6909dd96529fa0259e5b963d/Variables.png) **When to use:** * Store API keys for third-party services * Manage authentication tokens and passwords * Secure database connection strings ![Rewrites\_New.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1ff4898c4f33ceea/690b07d4dcc341ccf5a5e316/Rewrites_New.png) ## Mappings **Mappings** allow dynamic value substitution in API requests, so app administrators can configure URLs, endpoints, or other values that change across installations or environments. Each mapping refers to a value stored in [server configuration](/docs/developer-hub/app-config-location) and can be used in the appSdk.api method with the syntax {{map.MAPPING\_NAME}}. At runtime, this placeholder is replaced with the installation-specific value. ### Accessing nested values Mapping paths use dot notation to navigate nested objects and arrays in the server configuration. Each dot-separated segment goes one level deeper, you can mix object keys and array positions in the same path. For example, given this server configuration: ``` { "apiKey" : "api-key", "credentials": { "apiKey": "secret-abc" }, "regions": ["us-east-1", "eu-west-1", "ap-south-1"], "accounts": [ { "key": "first-acc-key" }, { "key": "second-acc-key" } ] } ``` Mapping Path Resolved Value apiKey api-key credentials.apiKey secret-abc regions.2 ap-south-1 (third item, zero-indexed) accounts.0.key first-acc-key ![Mappings\_DH.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt12470ca027d9122f/6909dd8edca6d34b01c14303/Mappings_DH.png) **When to use:** * Collect credentials from the App Config screen * Set customer-specific webhook URLs * Define environment-specific API endpoints (e.g., staging, production) * Allow customers to customize values as needed ![Gemini\_Generated\_Image\_12kauq12kauq12ka.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt001d2d2fb4848bf7/69f2fede5ab0e4d1793bd0b1/Gemini_Generated_Image_12kauq12kauq12ka.png) ## Template Substitution Template Substitution is the mechanism that resolves {{var.NAME}} and {{map.NAME}} placeholders at runtime. When a request is made using the appSdk.api method, the Contentstack platform scans the outbound request and replaces all recognized placeholders with their resolved values before forwarding it to the external service. ### Supported locations Placeholders can be placed in any of the following parts of a request: Location Example URL path /api/{{var.API\_VERSION}}/users Query string /search?limit={{var.LIMIT}}&offset={{var.OFFSET}} Request headers Authorization: Bearer {{var.TOKEN}} Request body (JSON) {"userId": "{{var.USER\_ID}}", "apiKey": "{{map.API\_KEY}}"} ### Missing Placeholders If a placeholder references a variable or mapping that has not been configured, the original placeholder syntax is preserved unchanged in the outbound request. No error is thrown. For example, {{var.UNDEFINED\_VAR}} in a header would be sent as {{var.UNDEFINED\_VAR}} to the external service. ## Transitioning Existing Apps to Advanced Settings ### Evaluate Your Current Architecture * List all API calls currently routed through your backend * Identify calls that exist only to manage or inject credentials * Inventory sensitive credentials handled on the server side * Highlight complex API endpoints that could be simplified with rewrites ### Plan Your Migration Strategy * Begin with simple API calls that require only credential injection * Progress to advanced integrations using **Mappings** and **Rewrites** * Allow a parallel run period to test and validate the new setup * Define a rollback plan to quickly revert if needed ## Security Considerations #### Credential Protection * **Frontend Isolation:** API keys and sensitive data are never exposed in frontend code * **Encrypted Storage:** All variables are encrypted at rest using industry-standard encryption * **Secure Transmission:** Credential injection occurs server-side over encrypted channels * **Access Control:** Only authorized apps can access their configured variables #### Request Validation * **URL Restriction:** Rewrites block unauthorized URL manipulation and API access * **Permission Enforcement:** App permissions restrict access to only declared scopes * **Rate Limiting:** Prevents abuse through built-in usage throttling * **Request Sanitization:** Automatically validates and cleans request parameters #### Best Practices * **Use Least Privilege:** Store only the credentials necessary for the task * **Separate Environments:** Maintain distinct variables for dev, staging, and production * **Declare Minimal Permissions:** Grant only the scopes your app truly needs #### Common Security Pitfalls to Avoid * Avoid including backup credentials in variable names or descriptions * Avoid storing multiple secrets in a single variable * Regularly review and delete unused variables or configurations * Always use Rewrites instead of direct URLs for improved security ## Conclusion Advanced Settings represent a significant leap forward in how developers build and deploy applications on the Contentstack platform. By eliminating backend complexity while enhancing security and flexibility, it allows you to focus on delivering exceptional user experiences instead of managing infrastructure. The combination of the .api() method, **Variables**, **Mappings**, and **Rewrites** provides a powerful toolkit that scales from simple API calls to complex, enterprise-grade integrations. When combined with the new App Permissions system, you gain full transparency and control over how your applications interact with external services. --- ## URL: https://www.contentstack.com/docs/developer-hub/introduction-to-contentstack-applications --- title: "Introduction to Contentstack Applications" description: "Explore Contentstack applications, offering powerful tools to extend and customize your platform." url: "https://www.contentstack.com/docs/developer-hub/introduction-to-contentstack-applications" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-24" filename: introduction-to-contentstack-applications.md --- # Introduction to Contentstack Applications Contentstack allows you to connect to and extend its functionality through applications. Applications are small programs that extend Contentstack's functionality, enabling you to customize your experience and business operations across the platform. Let's review some key concepts of an application. Contentstack applications can be categorized into two groups based on their intended functionality: * **Standard** * **Machine to Machine** The scope level of your application is defined by the **App Type**: * **Stack App** - Stack scope apps are only available to users who have access to the specific stack where the app is installed. * **Organization App** \- Organization scope apps are available to all users within an organization. Apps can also have three different Visibility States: * **Private:** This is the default visibility for all newly created applications. These apps are private to the organization they are created in. * **Public:** These apps are available in our public marketplace for any customer to install and configure. Only Contenstack can convert an application to Public. [Learn More](/docs/marketplace/app-submission-and-approval-guide) here to see how you can get your app listed. * **Public Unlisted:** These applications are not listed publicly in the Marketplace, but are available for installation if the installation URL is shared with you. This status is generally reserved for applications in a **beta** state. Let's explore these concepts in more detail. ## Standard Applications Standard Applications are the most versatile type of application. They offer a variety of features and capabilities, including: * **UI Locations:** Allows you to create custom user interfaces across the platform. Learn more about all of the available UI locations [here](/docs/developer-hub/about-ui-locations/). * **Webhooks:** Allows you to trigger actions in your application when certain events happen in Contentstack. This enables you to build logic into your application based on user interactions and events in the platform. * **OAuth 2.0 Integrations:** Allows you to connect your application to third-party services using OAuth 2.0, making it easy to exchange data and authenticate users. * **App Hosting:** Allows you to host your application's code directly in [Launch](/docs/developer-hub/app-hosting#hosting-with-launch). This provides a convenient and quick way to stand up your application without having to bring your own hosting solution to the table. ## Machine to Machine Applications Machine to Machine (M2M) Applications are designed specifically for server-to-server communication. They do not require a user interface and are primarily used for tasks like: * **Automating content updates and other tasks** * **Integrating with third-party systems that don't have a user interface** * **Performing secure data transfers between systems** M2M Applications in Contentstack are OAuth-only applications, meaning they use the OAuth 2.0 protocol for authentication and authorization. This makes them highly secure and reliable for machine-to-machine interactions. **Here's a quick breakdown of the key differences between Standard and M2M apps:** Feature Standard Machine to Machine App Type Organization or Stack Only Organization Visibility Can be Public, Private or Public Unlisted Private Only UI Locations Supported Not supported Webhooks Supported Not supported OAuth 2.0 Integrations Supported Supported (OAuth-only) Launch Hosting Supported Not supported # So what app category should I use? It can be a little confusing to figure out which app category is right for you. So, let's break it down with some real-world examples: ## Standard: Think of the Standard app category as the "Swiss Army Knife" of Contentstack apps. They're versatile and can do a lot of different things. Here's when you'd want to use a Standard App: * **Commerce Integration:** You're a busy marketer juggling thousands of product listings. A standard app can query and display products for selection into your entries from a third party system, saving you a ton of time by working out of one system * **Search Indexing:** You want to provide your customers with search results from multiple sources. Through an app like Algolia, you can index your entries so can retrieve the exact product they are looking for * **Custom Content Editor:** You want to create a content editor that perfectly matches your unique workflow. Standard apps let you design a content editor that feels just right for your team, streamlining your content creation process. ## Machine to Machine Apps: M2M apps are the behind-the-scenes heroes of Contentstack. They're designed to work seamlessly with other systems without human interaction. Think of them as the "silent powerhouses" of your Contentstack setup: * **Data Sync:** You need to keep your Contentstack data in sync with your CRM or e-commerce platform. An M2M app can automate this process, making sure your data is always up-to-date across all your systems. No manual data entry needed, just smooth, consistent data flow! * **Custom Jobs:** You need to run backend services that perform automated tasks, like nightly data syncs or content backups, without user interaction. M2M apps can handle these tasks efficiently and securely using client credentials for authentication. The best app category for you depends on your specific needs. If you're looking for something with more flexibility and a user interface, Standard Apps are your best bet. If you need a powerful solution for server-to-server interactions, go with a Machine to Machine app. --- ## URL: https://www.contentstack.com/docs/developer-hub/machine-to-machine-apps --- title: "Machine to Machine Apps" description: "Learn about Machine-to-Machine (M2M) Apps in Contentstack for secure server-to-server communication and task automation." url: "https://www.contentstack.com/docs/developer-hub/machine-to-machine-apps" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: machine-to-machine-apps.md --- # Machine to Machine Apps **Note:** _This feature is in Beta. Contact your Account Manager to enable it._ **Machine-to-Machine (M2M) Apps** are designed for secure server-to-server communication, eliminating the need for user intervention. These apps use the [OAuth 2.0](/docs/developer-hub/contentstack-oauth) protocol for authentication and authorization, making them highly secure and reliable for machine-to-machine interactions. ### Use Cases Here are some practical applications of Machine-to-Machine apps to automate tasks and integrate with other systems: * **User Management:** Automate the creation, updating, and deletion of users in Contentstack. This ensures user directories stay in sync with your HR system. * **Invitation Management:** Simplify the process of inviting new users to your organization. * **Data Sync:** Synchronize user data with other systems such as your CRM. * **Workflow Automation:** Create complex workflows to automate repetitive user management tasks. ### Scopes Machine-to-Machine Apps currently have limited scope access but we plan to expand these with future updates. Below are the available scopes: Scope Level Description scim:manage SCIM Manage users and groups using SCIM, keeping user directories synchronized between Contentstack and other systems. organization.share:read Organization View details of organization invitations shared with users. organization.share:write Organization Update or remove organization invitation shares to manage user access. analytics:read Organization View organization analytics. auditlog:read Audit Log View details of organization audit log. launch:manage Launch Manage Contentstack Launch projects. launch.projects:read Launch View all projects. launch.projects:write Launch Create and update projects. launch.projects:delete Launch Delete projects. launch.gitproviders:manage Launch Manage external Git providers in Launch. teams:read Team View all teams. teams:write Team Create, update and delete teams. --- ## URL: https://www.contentstack.com/docs/developer-hub/managing-webhooks-in-an-app --- title: "Managing Webhooks in an App" description: "Managing Webhooks in an App" url: "https://www.contentstack.com/docs/developer-hub/managing-webhooks-in-an-app" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: managing-webhooks-in-an-app.md --- # Managing Webhooks in an App A webhook provides a mechanism or a method for enabling real-time communication and data exchange between Contentstack and your application. **Additional Resource:** For more information on how Webhooks work, refer to the documentation on [Set Up Webhooks](/docs/headless-cms/about-webhooks). ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * An app created in the Developer Hub ## What You Will Learn * How to enable a webhook for an app. * How to configure the webhook URL, authentication, events, branch scope, and notification recipients. * How to disable a webhook. ## Steps to Enable Webhook 1. After logging into your [Contentstack account](https://www.contentstack.com/login/), click the **Developer Hub** icon and select the desired app. 2. From the left navigation menu, click the **Webhooks** option. ![Enable\_Webhooks\_.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd3b767fa98f5a155/65b7adf5e5c1f3d765d956cc/Enable_Webhooks_.png) 3. To enable the webhook, use the **Enable Webhook** toggle button. Once the webhook is enabled, you can configure it for your app by entering the following details: * Enter a valid **URL to Notify** (mandatory fields). * To secure the **URL to Notify**, provide necessary details in the **HTTP Basic Auth Username** and **HTTP Basic Auth Password** fields. You can also provide unique **Custom Headers** for securing the URL further. ![Enabled\_Webhook\_Options.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd89fea87e30c9470/65b7adf45f12ed2b4be21a9e/Enabled_Webhook_Options.png) 4. Next, select the events you want to be notified of. * Stack apps have **App Events** as well as **Stack Events**: ![3.jpg](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt637717e6721d1e69/6380654e7140e510ae4aa339/3.jpg) * Whereas, organization apps have only **App Events**: ![4.png](https://images.contentstack.io/v3/assets/blt23180bf2502c7444/blt4392e542f25b387d/627de73a5d936230ca8ed0eb/4.png) * **Branch-level Scope** will allow the webhook event to be triggered on the selected branch only, i.e. Main Branch, All branches. * Webhook will be triggered for any **Branch Event(s)** such as Created and Deleted. * Webhook will be triggered on any **Branch Alias(es) Event(s)** such as assigned and unassigned. ![Branch-Support.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf331365861190888/65263de6600b651cb935b547/Branch-Support.png) 5. You can specify the email addresses of the users under the **User(s) to Notify** section whenever the [Circuit Breaker](/docs/headless-cms/webhook-circuit-breaker) disables any webhook. Contentstack sends the email alert to the specified user(s). ![users\_to\_notify](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbf4b06c31f260883/653b96ce56bf7b0407d2c7f4/Users_to_notify.png) 6. Configure the webhook information. 7. Click **Save** to save your webhook details in the manifest. You will see the details of the webhook logs on the **Webhooks** tab in the **App Configuration** screen after installing the app. You can update the branch for which you want to trigger the webhooks from the **Branch** dropdown. ## Steps to Disable Webhook 1. In the left navigation panel, click the **Webhooks** tab. ![Disable\_Webhook\_Button.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt1743b061022abf90/65b7adf48fc5c0e7d50bc573/Disable_Webhook_Button.png) 2. Click the **Enable Webhook** toggle button to disable the webhook, and then click the **Disable webhook** button in the modal. Once the webhook is disabled, the **Configure Webhook** section will disappear, but the details added previously will remain saved. And, no notifications will be sent to the target URL any more. **Note**: Users can enable/disable the webhook anytime they want. --- ## URL: https://www.contentstack.com/docs/developer-hub/managing-your-apps --- title: "Managing your Apps" description: "Learn how to manage your apps in Contentstack's Developer Hub with step-by-step instructions." url: "https://www.contentstack.com/docs/developer-hub/managing-your-apps" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: managing-your-apps.md --- # Managing your Apps You can manage all your installed/authorized apps and installation requests from the **Manage** section (tab next to **Discover** in the left navigation panel). ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) ## What You Will Learn * How to reach the Manage section. * Where to find your installed apps. * Where to find your authorized apps. ## View your Apps To see the installed/authorized apps in your stack, follow the steps below: 1. Log in to your [Contentstack Account](https://app.contentstack.com/#!/login). 2. Navigate to App Switcher in the top-right corner and select **Marketplace**. 3. On the screen that appears, click the **Manage** button.![Marketplace\_Screen.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte84889fd696083d0/67cebaa0ef4ce649edd21f21/Marketplace_Screen.png) 4. Under the **Manage** \> **Installed Apps** section, you will find your installed apps. Here you can configure or uninstall your apps as needed. 5. Under the **Manage** \> **Authorized Apps** section, you will find your authorized apps. --- ## URL: https://www.contentstack.com/docs/developer-hub/marketplace-app-boilerplate --- title: "Marketplace App Boilerplate" description: "Quickly build Contentstack apps using the Marketplace App Boilerplate with support for custom fields, entry sidebars, dashboards, and secure integrations." url: "https://www.contentstack.com/docs/developer-hub/marketplace-app-boilerplate" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-08-11" filename: marketplace-app-boilerplate.md --- # Marketplace App Boilerplate A boilerplate is a fitting template to describe distinct repetitive segments of a project to help build projects quickly and efficiently. They can define project-level elements or standard methods for one or more projects. For more details about the **Marketplace App Boilerplate**, [download](https://github.com/contentstack/marketplace-app-boilerplate) the GitHub repository. ## What You Will Learn * How to install and run the Marketplace App Boilerplate locally. * How to create an app in Developer Hub and add UI locations. * How to install and configure the app in a stack. * How to integrate the Venus Component Library and set up public key verification. ## Why You Should Use the Marketplace App Boilerplate? 1. The boilerplate code includes all categories of applications you can create in Contentstack, i.e., custom fields, sidebar extensions, and dashboard extensions. 2. You can quickly create an application since the routes and infrastructure are already built for you. 3. We have built a boilerplate that incorporates best practices to help you build your Contentstack application. 4. With this template, you can save a considerable amount of development time. 5. You can use the JSON RTE plugin within the Boilerplate App. For more information, please refer to the [JSON RTE plugin](/docs/developer-hub/rte-location/) documentation. 6. The boilerplate now includes native support for signed requests using the reusable useVerifyAppToken hook. This enhancement allows for secure API integrations, particularly when working with protected server routes or external services that require authentication or sensitive token validation. ## Structure of the Marketplace App Boilerplate The boilerplate folder structure consists of relative files and references, making it easy to acclimate within your project. This structure also allows the boilerplate to be thoroughly portable between different stacks in Contentstack. Below is the folder structure of the boilerplate: ``` MARKETPLACE-APP-BOILERPLATE/ │ ├── e2e/ │ ├── pages/ │ │ ├── AssetPage.ts │ │ ├── EntryPage.ts │ │ ├── GlobalFullpage.ts │ │ └── LoginPage.ts │ ├── tests/ │ │ ├── app-flow.spec.ts │ │ └── org-app-flow.spec.ts │ ├── types.ts │ └── utils/ │ └── helper.ts │ ├── public/ │ ├── default-app-icon.svg │ ├── favicon.ico │ ├── logo192.png │ ├── logo512.png │ ├── manifest.json │ └── robots.txt │ ├── src/ │ ├── assets/ │ │ ├── appconfig.svg │ │ ├── Asset-Sidebar-Logo.svg │ │ ├── assetsidebar.svg │ │ ├── close-button.svg │ │ ├── Content-Type-Sidebar-Logo.svg │ │ ├── Custom-Field-Logo.svg │ │ ├── customfield.svg │ │ ├── Entry-Sidebar-Logo.svg │ │ ├── Field_Modifier.svg │ │ ├── Field-Modifier-Icon.svg │ │ ├── Full-Page-Logo.svg │ │ ├── fullscreen.svg │ │ ├── fullScreenGraphics.svg │ │ ├── GearSix.svg │ │ ├── help_icon.svg │ │ ├── Icon.svg │ │ ├── JsonView.svg │ │ ├── lock.svg │ │ └── sidebarwidget.svg │ │ │ ├── common/ │ │ ├── contexts/ │ │ │ ├── appConfigurationExtensionContext.ts │ │ │ ├── customFieldExtensionContext.ts │ │ │ ├── entrySidebarExtensionContext.ts │ │ │ └── marketplaceContext.ts │ │ ├── hooks/ │ │ │ ├── useAppConfig.test.tsx │ │ │ ├── useAppConfig.ts │ │ │ ├── useAppLocation.ts │ │ │ ├── useAppSdk.test.tsx │ │ │ ├── useAppSdk.tsx │ │ │ ├── useCustomField.test.tsx │ │ │ ├── useCustomField.tsx │ │ │ ├── useEntry.tsx │ │ │ ├── useFrame.ts │ │ │ ├── useHostUrl.ts │ │ │ ├── useInstallationData.tsx │ │ │ ├── useSdkDataByPath.test.tsx │ │ │ ├── useSdkDataByPath.ts │ │ │ └── useVerifyAppToken.tsx │ │ ├── locales/ │ │ │ └── en-us/ │ │ │ └── index.ts │ │ ├── providers/ │ │ │ ├── AppConfigurationExtensionProvider.tsx │ │ │ ├── CustomFieldExtensionProvider.tsx │ │ │ ├── EntrySidebarExtensionProvider.tsx │ │ │ └── MarketplaceAppProvider.tsx │ │ ├── types/ │ │ │ └── types.ts │ │ └── utils/ │ │ └── functions.ts │ │ │ ├── components/ │ │ ├── ConfigModal/ │ │ │ ├── ConfigModal.css │ │ │ └── ConfigModal.tsx │ │ ├── AppFailed.tsx │ │ └── ErrorBoundary.tsx │ │ │ ├── containers/ │ │ ├── 404/ │ │ │ └── 404.tsx │ │ ├── App/ │ │ │ └── App.tsx │ │ ├── AppConfiguration/ │ │ │ ├── AppConfiguration.module.css │ │ │ └── AppConfiguration.tsx │ │ ├── AssetSidebarWidget/ │ │ │ ├── AssetSidebar.css │ │ │ └── AssetSidebar.tsx │ │ ├── ContentTypeSidebar/ │ │ │ ├── ContentTypeSidebar.css │ │ │ └── ContentTypeSidebar.tsx │ │ ├── CustomField/ │ │ │ ├── CustomField.css │ │ │ ├── CustomField.test.tsx │ │ │ └── CustomField.tsx │ │ ├── DashboardWidget/ │ │ │ ├── StackDashboard.css │ │ │ └── StackDashboard.tsx │ │ ├── FieldModifier/ │ │ │ ├── FieldModifier.module.css │ │ │ └── FieldModifier.tsx │ │ ├── FullPage/ │ │ │ ├── FullPage.css │ │ │ └── FullPage.tsx │ │ ├── GlobalFullPage/ │ │ │ ├── GlobalFullPage.css │ │ │ └── GlobalFullPage.tsx │ │ ├── SidebarWidget/ │ │ │ ├── EntrySidebar.css │ │ │ ├── EntrySidebar.test.tsx │ │ │ └── EntrySidebar.tsx │ │ ├── Tooltip/ │ │ │ ├── Tooltip.module.css │ │ │ └── Tooltip.tsx │ │ ├── index.css │ │ └── index.tsx │ │ │ ├── test-utils/ │ │ └── test-utils.tsx │ │ │ ├── cssModules.d.ts │ ├── custom.d.ts │ ├── env.d.ts │ ├── index.css │ ├── main.tsx │ ├── react-app-env.d.ts │ └── setupTests.ts │ ├── CODEOWNERS ├── global-setup.ts ├── global-teardown.ts ├── index.html ├── LICENSE ├── manifest.json ├── package.json ├── package-lock.json ├── playwright.config.ts ├── README.md ├── SECURITY.md ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts ``` Below are the app routes for each location in App.tsx: You can check the folder containing the file as shown below: src/containers/App/App.tsx ``` function App() { return ( } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ); } export default App; ``` ## Using the Marketplace App Boilerplate to Develop Custom Applications To get started with building applications using the boilerplate, follow the steps given below: ### Prerequisites 1. [Contentstack account](https://www.contentstack.com/login) 2. Contentstack App Framework and knowledge of app development 3. Reference to [App SDK](https://github.com/contentstack/app-sdk) 4. [Node.js 20.17.0](https://nodejs.org/en/download/current/) or higher for Venus-components and boilerplate ### Install Dependencies 1. Navigate to the root directory of the downloaded zip file. 2. Run the following command to install the necessary packages: ``` npm install ``` 3. After you install the packages, run the following command to get started: ``` npm run dev ``` The following output appears in your browser once the localhost is running. This indicates everything is working as expected. ![Output.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt9edee2ac610347c1/6908cfc60edfcf82a6cf5a48/Output.png) ### Creating a Project Using the Boilerplate To use your application, you need to upload it to Contentstack. To do so, follow the steps given below: 1. Log in to your [Contentstack account](https://www.contentstack.com/login/). 2. On the Dashboard page, click the **Developer Hub** icon as shown below: ![Developer\_Hub\_Icon.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd183a670891dc235/6908cfb85e75bb3ef8ed9139/Developer_Hub_Icon.png) 3. Click the **\+ New App** button. 4. Contentstack supports two types of Apps based on two categories: [Standard and Machine to Machine](/docs/developer-hub/introduction-to-contentstack-applications). **Additional Resource:** Refer to the [Creating an App in Developer Hub](/docs/developer-hub/creating-an-app-in-developer-hub) document to know more about Standard and Machine to Machine app categories. 5. In the **Create Standard App** modal, select the **App Type**, and give a suitable app **Name** and an optional **Description**.![Create\_Standard\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc532d72938e03f3d/6908cfb8e09550293e84218b/Create_Standard_App.png) 6. Click **Create**. You will be redirected to the **UI Locations** landing page. 7. To continue, go to the **Manage** section and select the **Basic** **Information** tab. 8. On the resulting **Basic** **Information** page, upload your app’s icon and **Save** the changes. **Note:** The **Save** button is **enabled only** after you edit the app’s editable details. ![Basic\_Information.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt61d8ccb8a4caa74c/6908cfb800b05480f8f06209/Basic_Information.png) 9. Click the **UI Locations** tab. To set the **App URL**, click the **View** **Hosting** link. You will be redirected to the **Hosting** tab.![View\_Hostin.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt885d513fa56db29b/6908cfc6a45e96e25fb5aeeb/View_Hostin.png) 10. In the **Hosting** tab, you can select [Hosting with Launch](/docs/developer-hub/app-hosting#hosting-with-launch) or [Custom Hosting](/docs/developer-hub/app-hosting#custom-hosting) options. Select the **Custom** **Hosting** option to enter the hosted URL of your application. Enter the **App URL** and click **Save** to confirm your hosting configuration.![Hosting.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt10375b557d636598/6908cfb8a15f04f883b5e0c1/Hosting.png) 11. Navigate back to the UI Locations tab, click the vertical ellipses, then click the **\+ Add UI Location** button to add as needed.![Adding\_UI\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb8fd692a702aff29/6908cfb8f373fd8866fa9d8c/Adding_UI_Location.png) 12. Add the below routes for each UI Location to get the desired results. **Note:** The name for each UI Location is optional, and can be used to override the default app name. 1. **Stack Dashboard** Enter a **Name**, use /stack-dashboard as the **Path**, and select the **Default** **Width**, then click **Save** to apply and store your configuration. This setup ensures your app appears as a widget on the Stack Dashboard. **Note:** The **Save** button becomes active once all required fields are completed. ![Stack\_Dashboard.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte8ad5d43684aa065/6908cfc6377457619c0e30e7/Stack_Dashboard.png) 2. **Asset Sidebar** Enter a **Name** and use /asset-sidebar as the **Path**, then click **Save** to apply and store your configuration. This setup ensures your app appears in the sidebar of the Asset panel, allowing users to interact with asset-related functionality. ![Asset\_Sidebar.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt30c5cb97542ad91e/6908cfb88310e88286ad81e5/Asset_Sidebar.png) 3. **Custom Field** Enter a **Name**, use /custom-field as the **Path**, and select the **Data Type**, then click **Save** to apply and store your configuration. This setup ensures your app appears as a custom field within entries, allowing users to input or display data through your app’s interface. **Note:** The **Save** button becomes active once all required fields are completed. ![Custom\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt250bf04f5c88ba24/6908cfb805649120eb6c9501/Custom_Field.png) 4. **Entry Sidebar** Enter a **Name** and use/entry-sidebaras the **Path**, then click **Save** to apply and store your configuration. This setup ensures your app appears in the sidebar of the entry editor, allowing users to perform actions or view information related to an entry. ![Entry\_Sidebar.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt50ab20b36b39be0b/6908cfb95e75bb4ce1ed913d/Entry_Sidebar.png) 5. **App Configuration** Enter /app-configuration as the **Path**, then click **Save** to apply and store your configuration. This setup allows your app to display a dedicated app configuration page (after app installation) where users can manage app configuration. ![App\_Config.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7d4d084a178686c8/6908cfb88d96912a226675a8/App_Config.png) 6. **Full Page** Enter a **Name** and use /full-page as the **Path**, then click **Save** to apply and store your configuration. This setup enables your app to appear as a standalone full-page view within the stack. ![Full\_Page\_Boilerplate.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt53d5e337d737c477/6909d655aad664849ce34e2d/Full_Page_Boilerplate.png) 7. **Field Modifier** Enter a **Name**, use /field-modifier as the **Path**, and select the **Allowed Field Types**, then click **Save** to apply and store your configuration. This setup ensures your app can modify the specified field types within entries. **Note:** The **Save** button becomes active once all required fields are completed. ![Field\_Modifier.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc756e6991bb38aa6/6909d8130570b2059f99b089/Field_Modifier.png) 8. **Content Type Sidebar** Enter a **Name** and use /content-type-sidebar as the **Path**, then click **Save** to apply and store your configuration. This setup ensures your app appears in the sidebar of the Content Type editor, allowing users to manage content type settings directly through your app. ![Content\_Type\_Sidebar.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb2ebf2ae87e253fb/6909d655198de80a383b9991/Content_Type_Sidebar.png) 9. **Global Full Page** Enter a **Name** and use /global-full-page as the **Path**, then click **Save** to apply and store your configuration. This setup enables your app to appear as a full-page view accessible across all stacks in the organization. **Note:** You **must** create an **Organization app** to use this UI location. ![Global\_Full.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt787fd47b1ea5a26f/6908cfb8531ab074072818c0/Global_Full.png) 13. **Note:** After saving the locations, on the **UI Locations** screen, click **Install App** to install the app in a stack. 14. Select the stack where you want to install the app and click the **Install** button.![Install\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt97db2fa23e46faf5/6908cfc60564912ab86c9505/Install_App.png) 15. You will be redirected to the configuration page of the app. **Note:** The **App Configuration** page is visible **only** if the **App Configuration** UI Location is set up. Not all apps (for example, the [Color Picker](/docs/marketplace/color-picker) app) require this configuration. Set up the App Configuration location **only if** your app needs any configuration. ![Sample\_App\_Configuration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5842694232731756/6908cfc6a15f0471cfb5e0c9/Sample_App_Configuration.png) 16. On the **App Configuration** page, enter the values for **Sample App Configuration** field and **Sample Server Configuration** field. Let’s understand the configuration fields: 1. **Sample App Configuration:** You can save non-sensitive data that you want to show in different UI locations. For example, if you want to create a form with Username, Date, Email Address, etc. then, you can add the value in the field and view the data in the configured UI location(s). 2. **Sample Server Configuration:** You can save sensitive data. For example, if you want to create a form with Password, Client Secret, and Client ID then, you can enter a value in the Sample Server Configuration Field and the value will be stored in the backend via webhooks. **Additional Resource:** To learn more, refer to the [App Configuration](/docs/developer-hub/app-config-location) document. ![Sample\_Configuration\_with\_Values.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc056ff1e328e2bac/6908cfc65e75bb9aa1ed9151/Sample_Configuration_with_Values.png) **Note:** The values entered in the **Sample App Configuration** and **Sample Server Configuration** fields are displayed across all UI locations configured for the app. Let’s understand how you can use the Sample App Configuration and Sample Server Configuration fields. These fields act as a template to use before developing an application. You can save the values in these fields based on the requirement (sensitive and non-sensitive) and view them in the configured UI location(s). Here is a sample code snippet for **Sample App Configuration** and **Sample Server Configuration** fields: Add the code in the ../src/containers/AppConfiguration/AppConfiguration.tsx file. ``` import React, { useRef } from "react"; import Icon from "../../assets/GearSix.svg"; import localeTexts from "../../common/locales/en-us/index"; import parse from "html-react-parser"; import styles from "./AppConfiguration.module.css"; import { useInstallationData } from "../../common/hooks/useInstallationData"; import Tooltip from "../Tooltip/Tooltip"; const AppConfigurationExtension: React.FC = () => { const { installationData, setInstallationData } = useInstallationData(); const appConfigDataRef = useRef(null); const serverConfigDataRef = useRef(null); const updateConfig = async () => { if (typeof setInstallationData !== "undefined") { setInstallationData({ configuration: { sample_app_configuration: appConfigDataRef.current?.value }, serverConfiguration: { sampl_server_configuration: serverConfigDataRef.current?.value }, }); } }; return (
    icon

    {localeTexts.ConfigScreen.title}

    Use this field to share non-sensitive configurations of your app with other locations.

    Use this field to store sensitive configurations of your app. It is directly shared with the backend via webhooks.

    {parse(localeTexts.ConfigScreen.body)}

    {localeTexts.ConfigScreen.button.text}
    ); }; export default AppConfigurationExtension; ``` 17. Click **Save** and click **Open Stack** to start using the application. 18. Navigate to the stack where your application is installed and view your application in the configured UI location. **Note:** You **must** open the app in the configured UI location to view it. 19. ### Installing JSON RTE Plugin 20. To install the JSON RTE Plugin, refer to the [RTE Location](/docs/developer-hub/rte-location) documentation. 21. ## Integrating Venus Component Library 22. [Venus Component Library](https://venus-storybook.contentstack.com/) is Contentstack’s official React-based UI library that offers a collection of pre-built, reusable components designed to ensure consistency and accessibility across **Marketplace** apps and **Developer** **Hub** tools. 23. The library includes ready-to-use components such as buttons, modals, inputs, dropdowns, tables, and form controls, all built in alignment with Contentstack’s design system and accessibility guidelines. 24. [Venus](/docs/headless-cms/venus-component-library) components can be seamlessly integrated into any React project, regardless of the build tool, including Vite, Webpack, or other modern bundlers. 25. Follow the instructions given below to integrate the components with existing UI extensions built using React. 26. **Note:** The following code snippet is provided for demonstration purposes only and is not available in the GitHub repository. You can use this code as a reference for integration. 27. #### Installation 28. Run the following command to install the Venus Component Library elements: 29. ``` npm i @contentstack/venus-components ``` 30. Use the following code snippet to import the css styles for the venus components. 31. ``` import @contentstack/venus-components/build/main.css; ``` 32. #### Usage 33. Navigate to ../src/containers/DashboardWidget/StackDashboard.tsxand use the following code snippet to integrate the venus components into your file. 34. ``` import { Heading, Button } from "@contentstack/venus-components"; import "@contentstack/venus-components/build/main.css"; import "../index.css"; import "./StackDashboard.css"; const StackDashboardExtension = () => { return (
    ); }; export default StackDashboardExtension; ``` 35. **Using Modal Component for Fullscreen View:** 36. A modal component for fullscreen view can be added for any of the UI locations. Let us consider **Stack Dashboard** UI location as an example here: 37. **Step 1:** Go to /src/components/ and create a Fullscreen component “DashBoardModal.tsx” to integrate within your app 38. ``` import React from "react"; import { Icon } from "@contentstack/venus-components"; import "@contentstack/venus-components/build/main.css"; export type DashBoardModalProps = { closeModal: () => void; children: React.ReactNode; }; const DashBoardModal: React.FC = ({ closeModal, children }) => { return (
    FullScreen View
    { closeModal(); }} />
    {children}
    ); }; export default DashBoardModal; ``` 39. **Step 2:** Create a **ModalComponent.tsx** file inside /src/components/ which will be used to render in the fullscreen mode. 40. ``` const ModalComponent = () => { return (

    Title

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolore, ducimus doloremque eum, a dolorum repudiandae, nostrum quas quae dolor tenetur saepe. Voluptas eaque praesentium ab velit consequatur deserunt totam, hic quidem, ipsam blanditiis vitae tempore nostrum officia tempora magni repudiandae consectetur laborum sint adipisci ex minima quas soluta esse id? Cupiditate saepe corporis suscipit! Molestias maiores quae blanditiis ipsa possimus, repudiandae cum? Iure deserunt quam blanditiis et?

    ); }; export default ModalComponent; ``` 41. **Step 3:** Go to /src/containers/DashboardWidget/StackDashboard.tsx file and add the following: 42. ``` import { useEffect, useRef, useState } from "react"; import { Button, cbModal } from "@contentstack/venus-components"; import { useAppSdk } from "../../common/hooks/useAppSdk"; import DashBoardModal from "../../components/DashBoardModal"; import ModalComponent from "../../components/ModalComponent"; interface StackDashboardExtensionProps { fullScreen?: boolean; } /** Stack Dashboard page component. */ const StackDashboardExtension = ({ fullScreen }: StackDashboardExtensionProps) => { const ref = useRef(null); const appSdk = useAppSdk(); const [entries, setEntries] = useState([]); const selectedEnvironmentUid = "bltccf267c55327a117"; const contentTypeUid = "content_type_changes"; useEffect(() => { if (!fullScreen) { // @ts-ignore window.iframeRef = ref.current; } appSdk?.location.DashboardWidget?.frame.updateHeight(600); // Fetch entries const fetchEntries = async () => { if (!appSdk?.stack) return; const searchQuery = { type: "entries", include_publish_details: true, // query: { content_type_uid: contentTypeUid }, limit: 100, skip: 0, }; try { const searchResults = await appSdk.stack.search(searchQuery); console.log("searchResults", searchResults); const filteredEntries = searchResults.items ?.filter((entry: any) => entry.publish_details?.some((detail: any) => detail.environment === selectedEnvironmentUid) ) .map((entry: any) => ({ ...entry, publish_details: entry.publish_details?.filter( (detail: any) => detail.environment === selectedEnvironmentUid ), })); console.log("Entries published to environment:", filteredEntries); setEntries(filteredEntries || []); } catch (error) { console.error("Search error:", error); } }; fetchEntries(); }, [appSdk, fullScreen]); const openModal = () => { cbModal({ component: (modalProps: any) => ( ), modalProps: { size: "customSize", }, }); }; let dynamicClassName = fullScreen ? "fullScreenWrapper" : "h-screen"; return (
    {!fullScreen && ( )}
    ); }; export default StackDashboardExtension; ``` 43. ### Public Key Verification Setup for Signed Feature 44. To enable JWT verification for signed requests, you must configure a specific environment variable in your .env file. 45. **Step 1: Add Environment Variable** 46. Add the following line to your .env file: 47. ``` VITE_PUBLIC_KEY_BASE_URL=https://app.contentstack.com ``` 48. **Step 2: Understand the Configuration** 49. **What This Does** 50. This variable specifies the **base URL** from which your application retrieves the **public key** used to verify JWT (JSON Web Token) signatures. By default, it points to Contentstack's **AWS North America (NA) region**. 51. **Region-specific Configuration** 52. If you are working with a Contentstack instance hosted in a different region, you can update this URL to reflect the appropriate region-specific endpoint. 53. ## Next Step 54. Next, you can refer to the [Get Started with Building Apps using Contentstack’s App SDK](/docs/developer-hub/getting-started-with-your-first-app) guide to start creating apps using the Contentstack App SDK. --- ## URL: https://www.contentstack.com/docs/developer-hub/marketplace-dam-app-boilerplate --- title: "Marketplace DAM App Boilerplate" description: "Marketplace DAM App Boilerplate provides a template to configure and create your DAM app and use it within Contentstack." url: "https://www.contentstack.com/docs/developer-hub/marketplace-dam-app-boilerplate" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: marketplace-dam-app-boilerplate.md --- # Marketplace DAM App Boilerplate A boilerplate streamlines your workflow with pre-configured templates, ensuring rapid development and seamless integration within the [Contentstack's Developer Hub](/docs/developer-hub). It elevates digital asset management capabilities and enhances content delivery across diverse platforms. They can define project-level elements or standard methods for one or more projects. The following guide shows how to build a DAM (Digital Asset Management) Marketplace app using our Marketplace DAM App Boilerplate. For more information about the Marketplace DAM App Boilerplate, you can check the GitHub repository [here](https://github.com/contentstack/marketplace-dam-boilerplate-app). ## What You Will Learn * How to install and run the boilerplate UI and JSON RTE servers locally. * How to create a DAM app in Developer Hub and add UI locations. * How to update root\_config and rte\_config for a third-party DAM. * How to use the DAM app in a custom field and in the JSON RTE within an entry. ## Why should you use the Marketplace DAM App Boilerplate? * The DAM app boilerplate provides a standard code structure for all the required [UI locations](/docs/developer-hub/about-ui-locations) of a DAM app. You can quickly start developing the app by changing the root\_config files as needed for the third-party DAM application. * Creating an application is quick since you only need to modify the required functions in root\_config for your UI locations to work. * We have built a boilerplate that incorporates all the best practices you can use while building your application in Contentstack. * With this boilerplate, you can save a considerable amount of development time when building a third-party DAM Application. * The boilerplate uses the [Venus Components Library](https://venus-storybook.contentstack.com/) to make your application correspond with our Contentstack user interface. ## Structure of the Marketplace App Boilerplate The boilerplate folder structure consists of relative files and references, making it easy to acclimate within your project. **Additional Resource**: To view the folder structure, please refer to the [README.md](https://github.com/contentstack/marketplace-dam-boilerplate-app/blob/main/README.md) file. Below are the app routes for each location in App.tsx: ``` function App() { return ( }> } /> }> } /> }> } /> ); } ``` ## Using Marketplace DAM App Boilerplate to Develop Custom Applications To get started with building applications using the boilerplate, follow the steps given below: ### Prerequisites * [Contentstack account](https://www.contentstack.com/login) * Knowledge of ReactApp Framework and App Development * Reference to [App SDK](https://github.com/contentstack/app-sdk-docs) ### Install Dependencies * Navigate to the root directory of the downloaded zip [file](https://github.com/contentstack/marketplace-dam-boilerplate-app/blob/main/TEMPLATE.md). * Run the following command to install the necessary packages: In the terminal, go to the APP\_DIRECTORY and install the necessary dependencies. ``` cd ``` ``` npm i ``` **For UI** 1. To install the necessary packages for the UI, navigate to the UI folder. ``` cd /ui ``` ``` npm i ``` 2. Once the packages are installed, run the following command in the UI folder to get started. The UI server will start at port 4000. For Linux/MacOS: ``` npm run start ``` For Windows: ``` npm run winStart ``` **For RTE** 1. To install the necessary packages for the JSON RTE, navigate to the RTE folder. ``` cd /ui/rte ``` ``` npm i ``` 2. After you install the packages, run the following command in the RTE folder to get started. The RTE server will start at port 1268. ``` npm run start ``` **Note**: Add .env files to UI and JSON RTE before starting the server. The .env values are mentioned in the [README.md](https://github.com/contentstack/marketplace-dam-boilerplate-app/blob/main/README.md) file. **Warning**: The UI and RTE are accessible on different ports. ### Creating a Project Using The Boilerplate To use your application, you need to set it up in Contentstack. To do so, perform the steps given below: 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. In the left-hand-side primary navigation, click the **Developer Hub** icon to go to the Developer Hub. 3. Click the **\+ New App** button. 4. In the **New App** modal, select **Stack App** as the **Type of App**. Enter a suitable **Name** for your app and an optional **Description**, and then click the **Create** button. By default, the **Status** of the created app will be **Private**. ![DAM-Biolerplate-Create-New-App](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt80aed3ac76d45231/6567905c2d2f23288ff3dcb6/DAM-Biolerplate-Create-New-App.png) **Warning**: While selecting the **Type of App** in the above step, ensure you select **Stack App**, as this boilerplate supports stack apps only. 5. On the resulting **Basic information** page, upload your app’s icon and **Save** the changes. ![Baisc\_Information.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta0034dffa9ea7108/65b7d9971be7ff87855da256/Baisc_Information.png) 6. Click the **UI Locations** tab. To set the **App URL**, click the **View Hosting Settings** link. You will be redirected to the **Hosting** tab. On the resulting page, enter the **App URL**. In the development phase, this will be the UI server URL i.e, http://localhost:4000/# ![UI\_Locations.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt38db2e08ff92ad55/65b7d997292a0ed66887d241/UI_Locations.png) 7. Add the UI locations for your app, as per your requirement, inside the **App location(s)** option. The DAM template supports the following 3 UI locations: 1. App Configuration 2. Custom Field 3. JSON RTE 8. Add the below routes for each UI Location to get the desired results. **Note**: The name for each UI location is optional. By default, the app name is the UI location name. 1. **App Configuration**: In the App Configuration UI location, use /config for Path. ![App\_Config.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc2fc6122feb21150/65b75f13c6000541ead5a8a9/App_Config.png) 2. **Custom Field**: In the Custom Field UI location, use  for Name and /custom-field for Path. Select the **Data Type** as **JSON** to store JSON data in your entry. ![Custom\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5ca358bf3dd72966/65b75f14d2067b9be28c45cc/Custom_Field.png) **Note**: For configuring JSON RTE UI location, please refer to the [Add JSON RTE UI Location](#add-json-rte-ui-location) section, as it works on different ports. 9. After saving the recently added UI locations, click the **Install App** button to install the DAM app. 10. Select the stack where you want to install the app, accept the terms of service, and click the **Install** button. ![DAM-Biolerplate-Install-Sample-DAM-App](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3cf566341217a68a/656799a76a1419b99f416ceb/DAM-Biolerplate-Install-Sample-DAM-App.png) 11. You will be redirected to the configuration page of the app. On the **Configuration** page, enter the following details: 1. **Text input**: You can enter the input text for the Sample DAM app and save the data. You can also use any other app configuration as per your DAM website. 2. **Select input**: You can use the Select input field to select any option from the dropdown options. 3. **DAM radio input**: You can use the radio input field to choose an option from the given options (**Single Select** or **Multi Select**). **Note**: You can customize the app configuration with your dedicated fields. 4. **Save in Entry** \[Mandatory\]: If you select the **Custom Fields** option, you can select the structure of the data you want to save in the entry. If the **All Fields** option is selected, you might be able to add limited products in the custom field depending on the size of the data (Refer to the [Custom Fields Location](/docs/developer-hub/custom-field-location) documentation for more details). ![Configuration\_Screen\_DAM.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt08e958834f245001/68a6b8fb65a024956f5543f8/Configuration_Screen_DAM.png) 12. Click the **Save** button and then click **Open Stack** to start using the application. **Additional Resource**: To learn more, refer to the [App Configuration](/docs/developer-hub/app-config-location) document. Having the basic DAM app setup ready, you can now update root\_config files in the UI directories. **Note**: You can go through the [Template.MD](https://github.com/contentstack/marketplace-dam-boilerplate-app/blob/main/TEMPLATE.md) file in our code repository documentation for complete details on root\_config and update it as per the DAM platform that you are trying to integrate. ### Add JSON RTE UI Location Before adding the JSON RTE UI Location, you have to update the **App URL** i.e. http://localhost:1268 **Warning**: After changing the port for JSON RTE UI location, you will be unable to view the Configuration screen and Custom field. The app configuration settings were already saved at the time of configuring the app, but will not be visible In the development phase. In the JSON RTE UI Location, use  for Name and /dam.js for Path. ![JSON\_RTE\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt071025cae3c32e7e/65b75f149274064d69eb6600/JSON_RTE_Location.png) Having the basic DAM app setup ready, you can now update rte\_config files in the UI directories. **Note**: You can go through the [Template.MD](https://github.com/contentstack/marketplace-dam-boilerplate-app/blob/main/TEMPLATE.md) file in our code repository documentation for complete details on rte\_config and update it as per the DAM platform that you are trying to integrate. ## Use the DAM Application within your Stack To use the DAM application within an entry of your stack, follow the steps given below: 1. Go to your stack, click the [Content Models](/docs/marketplace/about-content-models) icon in the left navigation panel, and click the **\+ New Content Type** button. 2. [Create a content type](/docs/headless-cms/create-a-content-type) by adding relevant details as displayed below:![DAM-Biolerplate-Content-Type](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltee354d55bc8c985d/6567905c1204cdc284ca69e8/DAM-Biolerplate-Content-Type.png) ### Steps to use the DAM App within the Custom Field 1. In the **Content Type Builder** page, add a [Custom](/docs/headless-cms/custom/) field in your content type by clicking the **Insert a field** link represented by a + sign. 2. Under **Select Extension/App**, select names defined for the Custom Field UI location and click the **Proceed** button. ![DAM-Biolerplate-Add-App-In-Custom-Field](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte55b13c19c5aa9f1/6567905cac4c413a8194da09/DAM-Biolerplate-Add-App-In-Custom-Field.png) This adds the DAM app in the custom field. ![DAM-Biolerplate-Added-App-In-Custom-Field](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta3b6b13a3407cea8/6567905c5af539a7b959fd8c/DAM-Biolerplate-Added-App-In-Custom-Field.png) 3. After adding the app in a custom field, click **Save** or **Save and Close** to save your changes. 4. To use the DAM app, create an entry for this newly created content type. To do this, in the left navigation panel, navigate to the **Entries** page, click **\+ New Entry** to [create a new entry](/docs/headless-cms/create-an-entry) for the above content type, and then click **Proceed**. You can see the DAM app’s custom field on your entry page as shown below: ![DAM-Biolerplate-Custom-Field-Sample-Entry](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blted94ee14828c2658/656799a7753911eb69d065ee/DAM-Biolerplate-Custom-Field-Sample-Entry.png) 5. Click the **\+ Choose Asset(s)** button. ![DAM-Biolerplate-Custom-Field-Choose-Assets](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt77e018a7c564a09e/656799a71204cdc692ca6ab3/DAM-Biolerplate-Custom-Field-Choose-Assets.png) 6. Select assets from the third-party DAM website to add them to your entry. ![DAM\_Assets.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5f9244e0e1d29409/68a6b523026f3dd05e1dd20b/DAM_Assets.png) 7. The asset(s) you selected are referenced within your entry. You can reorder the assets to arrange them in required order in both **Thumbnail** and **List** views. ![DAM-Biolerplate-Custom-Field-With-Assets](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt7ebbf42e7bee9d77/656799a7753911b851d065f2/DAM-Biolerplate-Custom-Field-With-Assets.png) 8. Click **Save** to save the entry. ### Steps to use the DAM App within the JSON RTE 1. In the **Content Type Builder** page, add a [JSON Rich Text Editor](/docs/headless-cms/about-json-rich-text-editor) field in your content type by clicking the **Insert a field** link represented by a + sign. 2. Under **Select JSON RTE Plugin(s)**, choose the names defined for the JSON RTE UI location, and then click the **Add Plugin(s)** button. ![DAM-Biolerplate-Add-App-In-JSON-RTE](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf45412ce1e1d16d4/6567905c399417cf82b4a21d/DAM-Biolerplate-Add-App-In-JSON-RTE.png) This adds the DAM app in the JSON RTE. ![DAM-Biolerplate-Added-Plugin-In-JSON-RTE](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc09aa6167ff01620/6567905cdd39861d631453b0/DAM-Biolerplate-Added-Plugin-In-JSON-RTE.png) 3. After adding the app in a custom field, click **Save** or **Save and Close** to save your changes. 4. To use the DAM app, create an entry for this newly created content type. To do this, in the left navigation panel, navigate to the **Entries** page, click **\+ New Entry** to [create a new entry](/docs/headless-cms/create-an-entry) for the above content type, and then click **Proceed**. You can see the DAM app’s icon in the JSON RTE on your entry page as shown below: ![DAM-Biolerplate-JSON-Sample-Entry](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt6cdcbe39b5c266b9/656799a8d411313e3c249aed/DAM-Biolerplate-JSON-Sample-Entry.png) 5. Click the DAM app's icon. ![DAM-Biolerplate-JSON-DAM-Icon](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt144b96a353d07875/656799a7df428296402f0578/DAM-Biolerplate-JSON-DAM-Icon.png) 6. Select assets from the third-party DAM website to add them to your entry. ![DAM\_Assets.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5f9244e0e1d29409/68a6b523026f3dd05e1dd20b/DAM_Assets.png) 7. The asset(s) you select are referenced within your entry. You can reorder the assets to arrange them in the required order within the JSON RTE. ![DAM-Biolerplate-JSON-With-Assets](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbddc25938e964f93/656799a894e6c952d4216b33/DAM-Biolerplate-JSON-With-Assets.png) 8. Click **Save** to save the entry. ## How to Use Predefined Examples in the Marketplace DAM App Boilerplate You can check examples of some DAM (Digital Asset Management) apps, such as Bynder and Cloudinary in the GitHub code you downloaded to get started. To do so, follow the steps below: 1. Select the app example and configure the changes: **For UI** 1. Navigate to the ui > example > sample\_dam\_app folder and copy the root\_config folder. 2. Navigate to the ui > src folder and replace the root\_config folder with the ui > example > sample\_dam\_app > root\_config folder. **For RTE** 1. Navigate to the ui > example > sample\_dam\_app folder and copy the rte\_config folder. 2. Navigate to the ui > rte > src folder and replace the rte\_config folder with the ui > example > sample\_dam\_app > rte\_config folder. 2. After configuration, restart both the servers for UI and RTE using the npm command as shown in the [Install Dependencies](#install-dependencies) section. 3. Navigate to the stack where your application is installed and view your application in the configured UI location. **Note**: * You must open the app in the configured UI location to view it. * The screenshots shown in this document are using **example/sample\_dam\_app** from the UI directory. **Additional Resource**: To learn about the use of **Bynder** and **Cloudinary** DAM apps, please refer to the [Bynder App Installation Guide](/marketplace/bynder) and [Cloudinary App Installation Guide](/docs/marketplace/cloudinary). --- ## URL: https://www.contentstack.com/docs/developer-hub/marketplace-ecommerce-app-boilerplate --- title: "Marketplace Ecommerce App Boilerplate" description: "Marketplace Ecommerce App Boilerplate provides a template to configure and create your ecommerce app and use it within Contentstack." url: "https://www.contentstack.com/docs/developer-hub/marketplace-ecommerce-app-boilerplate" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: marketplace-ecommerce-app-boilerplate.md --- # Marketplace Ecommerce App Boilerplate A boilerplate is a fitting template to describe distinct repetitive segments of a project to help build projects quickly and efficiently. They can define project-level elements or standard methods for one or more projects. The following guide shows how to build an ecommerce marketplace app using our Marketplace Ecommerce App Boilerplate. For more information about the Marketplace Ecommerce App Boilerplate, you can check the GitHub repository [here](https://github.com/contentstack/marketplace-ecomm-boilerplate-app). ## What You Will Learn * How to install and run the boilerplate UI and API locally. * How to create an ecommerce app in Developer Hub and add UI locations. * How to update root\_config for a third-party ecommerce platform. * How to use the ecommerce custom fields and sidebar widget within an entry. ## Why should you use the Marketplace Ecommerce App Boilerplate? 1. The ecommerce app boilerplate provides a standard code structure for all the required [UI locations](/docs/developer-hub/about-ui-locations) of the app. You can quickly start developing the app by changing the root\_config files as needed for the third-party ecommerce system. 2. Creating any application is prompt since you only need to use the required routes and corresponding components. 3. We have built a boilerplate that incorporates all the best practices you can use while building your application in Contentstack. 4. With this template, you can save a considerable amount of development time. 5. The boilerplate also provides the [Venus Components Library](https://venus-storybook.contentstack.com/) to make your application correspond with our Contentstack user interface. ## Structure of the Marketplace Ecommerce App Boilerplate The boilerplate folder structure consists of relative files and references, making it easy to acclimate within your project. This structure also allows the boilerplate to be thoroughly portable between different stacks in Contentstack. Below is the folder structure of the boilerplate: ``` marketplace-ecomm-boilerplate-app |-- api |-- constants | |-- index.js |-- handler | |-- index.js |-- root_config | |-- index.js |-- .eslintrc.js |-- index.js |-- package-lock.json |-- package.json |-- example |-- sapcc | |-- api | | |-- root_config | | |-- index.js | |-- ui | | |-- root_config | | |-- index.js |-- bigcommerce | |-- api | | |-- root_config | | |-- index.js | |-- ui | | |-- root_config | | |-- index.js |-- ui |-- public | |-- favicon.ico | |-- index.html |-- .env |-- src | |-- assets | | |-- Logo.svg | |-- common | | |-- constants | | |-- index.ts | | |-- contexts | | |-- appConfigurationExtensionContext.ts | | |-- categoryCustomFieldExtensionContext.ts | | |-- customFieldExtensionContext.ts | | |-- entrySidebarExtensionContext.ts | | |-- marketplaceContext.ts | | |-- productCustomFieldExtensionContext.ts | | |-- selectorExtensionContext.ts | | |-- hooks | | |-- useAppConfig.ts | | |-- useAppLocation.ts | | |-- useAppSdk.tsx | | |-- useCategoryCustomField.tsx | | |-- useCustomField.tsx | | |-- uuseFrame.ts | | |-- useInstallationData.tsx | | |-- useProductCustomField.tsx | | |-- useSdkDataByPath.ts | | |-- locale | | |-- index.ts | | |-- providers | | |-- AppConfigurationExtensionProvider.tsx | | |-- CategoryCustomFieldExtensionProvider.tsx | | |-- CustomFieldExtensionProvider.tsx | | |-- EntrySidebarExtensionProvider.tsx | | |-- MarketplaceAppProvider.tsx | | |-- ProductCustomFieldExtensionProvider.tsx | | |-- SelectorExtensionProvider.tsx | | |-- types | | |-- index.ts | | |-- utils | | | |-- index.tsx | |-- components | | |-- ErrorBoundary | | |-- index.tsx | | |-- WarningMessage | | |-- index.tsx | | |-- styles.scss | |-- containers | | |-- App | | | |-- index.tsx | | | |-- styles.scss | | |-- CategoryField | | | |-- index.tsx | | |-- ConfigScreen | | | |-- index.spec.tsx | | | |-- index.tsx | | | |-- styles.scss | | |-- CustomField | | | |-- Category.tsx | | | |-- DeleteModal.tsx | | | |-- DraggableGrid.tsx | | | |-- DraggableListItem.tsx | | |-- DraggableListItemCategory.tsx | | | |-- index.spec.tsx | | | |-- index.tsx | | | |-- ListItem.tsx | | | |-- Product.tsx | | | |-- RenderList.tsx | | | |-- styles.scss | | |-- ProductsField | | | |-- index.tsx | | |-- SelectorPage | | | |-- index.tsx | | | |-- styles.scss | | |-- SidebarWidget | | | |-- index.tsx | | | |-- ProductDescription.tsx | | | |-- styles.scss | |-- root_config | | |-- index.ts | |-- services | | |-- index.ts | |-- types | | |-- index.d.ts | |-- index.css | |-- index.tsx | |-- react-app-env.d.ts | |-- reportWebVitals.ts | |-- .babelrc |-- .eslintrc |-- config.overides.js |-- jest.config.js |-- jest.CSStub.js |-- jest.setup.js |-- package-lock.json |-- package.json |-- tsconfig.json |-- update-app-info.json └─ .gitignore └─ LICENSE └─ README.md └─ SECURITY.md └─ build.sh └─ package.lock.json └─ package. json ``` Below are the app routes for each location in App.tsx: ``` function App() { return ( } /> } /> } /> } /> } /> } } ); } ``` ## Using Marketplace Ecommerce App Boilerplate to Develop Custom Applications To get started with building applications using the boilerplate, follow the steps given below: ### Prerequisites 1. [Contentstack account](https://www.contentstack.com/login) 2. Contentstack App Framework and knowledge of app development 3. Reference to [App SDK](https://github.com/contentstack/app-sdk) Create a .env file and provide the URLs to configure the app. For example: 1. REACT\_APP\_API\_URL: http://localhost:8080/ 2. REACT\_APP\_UI\_URL: http://localhost:4000/ ### Install Dependencies 1. Navigate to the root directory of the downloaded zip file. 2. Run the following command to install the necessary packages: In the terminal, go to the APP\_DIRECTORY and install the necessary dependencies. ``` cd ``` ``` npm i ``` **For UI** 1. To install the necessary packages for the UI, navigate to the UI folder. ``` cd /ui ``` ``` npm i ``` 2. After you install the packages, run the following command in the UI folder to get started. ``` npm run start ``` 3. For Windows operating system, use the following command: ``` npm run startWin ``` **For API** 1. To install the necessary packages for the API, navigate to the API folder. ``` cd /api ``` ``` npm i ``` 2. After you install the packages, run the following command in the API folder to get started. ``` npm run dev ``` 3. All the backend APIs are handled in a handler file inside the api/handler/index.js and all the UI API calls are handled inside the ui/src/services/index.tsx file. ### Creating a Project Using The Boilerplate To use your application, you need to upload it to Contentstack. To do so, perform the steps given below: 1. Log in to your [Contentstack account](https://www.contentstack.com/login). 2. In the left-hand-side primary navigation, you will find a new icon for Developer Hub (as shown below). Click the icon to go to the **Developer Hub**. ![Welcome\_to\_Developer\_Hub.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltfe12cce20145a8ad/65b7a9dffd23e528627d99cd/Welcome_to_Developer_Hub.png) 3. Click the **\+ New App** button. 4. In the **New App** modal, select **Stack App** as the **Type of App**. Enter a suitable **Name** for your app and an optional **Description**, and then click the **Create** button. By default, the **Status** of the created app will be **Private**. ![Install\_Stack\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd6cb3909311101d8/64fa02ea68d8e1286460287d/Install_Stack_App.png) **Warning**: While selecting the **Type of App** in the above step, ensure you select **Stack App**, as this boilerplate supports stack apps only. 5. Click **Create**. 6. On the resulting **Basic Information** page, upload your app’s icon and **Save** the changes. ![Basic\_Information.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte8a927be837a9df4/65b7d85c55a88a0bc9da6b45/Basic_Information.png) 7. Click the **UI Locations** tab. To set the **App URL**, click the **View Hosting Settings** link. You will be redirected to the **Hosting** tab. ![UI\_Locations\_Configuratio.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta4ac8e296d5e4cf5/65b7d8c8c025ee4a08b87f9b/UI_Locations_Configuratio.png) 8. Add the UI Locations as per your requirement. 9. Add the below routes for each UI Location to get the desired results. **Note:** The name for each UI Location is optional, and can be used to override the default app name. * **Custom Field** You must add two custom locations to view the Product and Category for the products in your Contentstack entry. In the Custom Field 1, use - Product for Name and /product-field for Path. In the Custom Field 2, user  - Category for Name and /category-field for Path. Select the Data Type as JSON to fetch JSON data in your entry.  ![Custom\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt0f3905eeb04cf7a4/65b75ee15f12ed00a6e218ae/Custom_Field.png) * **Entry Sidebar** For the Entry Sidebar UI Location, use /sidebar-widget for Path. ![Entry\_Sidebar.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt88259b4f5e04c2ce/65b75ee093cdf1d9357ca785/Entry_Sidebar.png) * **App Configuration** For the App Configuration UI Location, use /config for Path. ![App\_Config.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt4106414a17b6274c/65b75edf30d47ec25d521b03/App_Config.png) **Note:** After adding each route **save** and **install** the app in any stack. 10. Select the stack where you want to install the app and click the **Install** button. ![Install\_the\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt08a567e20ce0e5ff/64fa02eb9da01596a61eb191/Install_the_App.png) 11. You will be redirected to the configuration page of the app. ![Configuration\_Page.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt20c455f6d08a62b6/64fa02dd7db54e3536c18f03/Configuration_Page.png) 12. On the **Configuration** page, enter the values for **Sample Ecommerce App Client ID** and **Sample Ecommerce App Client Secret**.  Let’s understand the configuration fields: 1. **Sample Ecommerce App Client ID** You can enter the Client ID fetched from the third-party ecommerce website and save the data. You can also use any other app configuration as per your ecommerce website. **Note:** This configuration is a template for the user to understand how they can add/update/remove the config fields and add customized fields based on their requirement. 2. **Sample Ecommerce App Client Secret:** You can use this field to enter Client Secret fetched from third-party ecommerce websites. You can also customize the app configuration with your dedicated fields. ![Configuration\_page\_with\_highlights.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blte33689110897123d/64fa02ddea4b5d2213510b63/Configuration_page_with_highlights.png) **Note:** With **Save in Entry** field, If you select the ''Custom Fields'' option, you can select the structure of the data you want to save in the entry. If the 'All Fields' option is selected, you might be able to add limited products in the custom field depending on the size of the data (Refer to the [Custom Fields Location](/docs/developer-hub/custom-field-location) documentation, for more details). To increase this limit, **Items Per Page** defines the number of products to be displayed on the selector screen. **Additional Resource:** To learn more, refer to the [App Configuration](/docs/developer-hub/app-config-location) document. Having the basic ecommerce app setup ready, you can now update root\_config files in the UI and API directories. You can go through the [Template.MD file in our code repository](https://github.com/contentstack/marketplace-ecomm-boilerplate-app/blob/main/TEMPLATE.md) documentation for complete details on root\_config and update it as per the ecommerce platform that you are trying to integrate. **Note:** In the root\_config file, you can add the name of your app, the selector page information, etc. You can add details about the configuration screen as well. You can check examples of some ecommerce websites, such as BigCommerce and SAP Commerce Cloud in the GitHub code you downloaded to get started. To do so, follow the steps below: **For API** * Navigate to the example -> app\_name/index.tsx file. * Copy the code present in index.tsx file. * Navigate to the root\_config and paste the code inside index.tsx file. **For UI** * Navigate to the example -> app\_name -> index.tsx file. * Copy the code present in index.tsx file. * Navigate to the src -> root\_config folder and paste the code inside index.tsx file. Restart both the servers for UI and API using the npm command as shown above. 13. Click **Save** and click **Open Stack** to start using the application. 14. Navigate to the stack where your application is installed and view your application in the configured UI location. **Note:** You **must** open the app in the configured UI location to view it. 15. ## Use the Ecommerce application within your Stack 16. To use the Ecommerce application within an entry of your stack, follow the steps given below: 1. Go to your stack and click the “Content Models” icon on the left navigation panel, and click the **\+ New Content Type** button. 2. Create a content type by adding relevant details as displayed below: ![Save\_Proceed\_Content\_Type.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5e449ddc676c8c38/64fa02eab8c6d6741d0e41b7/Save_Proceed_Content_Type.png) 3. In the Content Type Builder page, add a Custom field in your content type by clicking on the “Insert a field” link represented by a + sign. 4. Under **Select Extension/App**, select names defined for the Custom Field UI locations and click **Proceed**. ![Select\_Extension\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blteee23927efa8ed72/64fa02fe1d03ad077cdf2fd9/Select_Extension_App.png) 5. After adding the app, click either **Save** or **Save and Close** to save your changes. 6. To use the Ecommerce app, create an entry for this content type, and you will see this Ecommerce custom fields on your entry page as shown below: ![Custom\_Field\_on\_Entry\_Page.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8dc3ad1c2d4dfc58/64fa02dd1c72d86d028af121/Custom_Field_on_Entry_Page.png) 7. Click the **\+ Add Product(s)** button and select the products you want to add from the third-party ecommerce website. ![Products\_Selector\_Page.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8622fc3b83571837/64fa02ebc40f775e7da51e97/Products_Selector_Page.png) 8. You will see the products fetched within your entry. You can drag and drop the products to arrange them in required order in both **Thumbnail** and **List** views. ![CustomProducts\_Selection.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5c0a00e731190cda/64fa02eb8606a805e1c853e7/CustomProducts_Selection.png) ![CustomFieldCategory.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltbd88c4da65b218ff/64fa02ebe60bfc77f3d3cff1/CustomFieldCategory.png) 9. Click the **Save** button. 10. You can view more product details in **Sidebar Widget**. ![Sidebar\_Widget\_Select\_App.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3eb4656035b0f9fc/64fa02fd9bf261fb486bac99/Sidebar_Widget_Select_App.png) 11. In the **Sidebar Widget**, enter the product name in the dropdown field to search and view the product details. ![Sidebar\_Widget\_Product\_Details.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltd6b07771a471e9dd/64fa02feec93375676ec5720/Sidebar_Widget_Product_Details.png) --- ## URL: https://www.contentstack.com/docs/developer-hub/oauth-scopes --- title: "OAuth Scopes" description: "OAuth Scopes" url: "https://www.contentstack.com/docs/developer-hub/oauth-scopes" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-30" filename: oauth-scopes.md --- # OAuth Scopes **Scopes** **Description** **Associated Apis** **Supports Tokens** organizations:read View details of all organizations associated with the user [Get all organizations](/docs/developers/apis/administration-api/organizations#get-all-organizations) user token organization:read View details of an organization [Get a single organization](/docs/developers/apis/administration-api/organizations#get-a-single-organization) user token     [Get all stacks in an Organization](/docs/developers/apis/administration-api/organizations#get-all-stacks-in-an-organization) user token organization.logs:read View organization logs [Get organization log details](/docs/developers/apis/administration-api/organizations#get-organization-log-details) user token     [Get organization log item](/docs/developers/apis/administration-api/organizations#get-organization-log-item) user token organization.ownership:write Create, update of organization ownership [Transfer Organization ownership](/docs/developers/apis/administration-api/organizations#transfer-organization-ownership) user token organization.roles:read View organization level roles [Get all roles in an Organization](/docs/developers/apis/content-management-api/roles#get-all-roles-in-an-organization) user token organization.share:write Update, remove organization invitation shares [Add users to Organization](/docs/developers/apis/administration-api/organizations#add-users-to-organization) user token     [Remove users from organization](/docs/developers/apis/administration-api/organizations#remove-users-from-organization) user token     [Resend pending Organization invitation](/docs/developers/apis/administration-api/organizations#resend-pending-organization-invitation) user token organization.share:read View details of organization invitations shared with users [Get all Organization invitations](/docs/developers/apis/administration-api/organizations#get-all-organization-invitations) user token         user:read View user details [Get user](/docs/developers/apis/administration-api/users#get-user) user token user:write Update user details [Update user](/docs/developers/apis/administration-api/users#update-user) user token user.assignments:read View user assignments [Get all Tasks](/docs/developers/apis/content-management-api/workflows#get-all-tasks) user token         cm.stacks.management:read View all stacks [Get a single stack](/docs/developers/apis/content-management-api/stacks#get-a-single-stack) user token         cm.stacks.management:write Create, update, remove stacks [Create stack](/docs/developers/apis/content-management-api/stacks#create-stack) user token     [Update stack](/docs/developers/apis/content-management-api/stacks#update-stack) user token     [Delete stack](/docs/developers/apis/content-management-api/stacks#delete-stack) user token cm.stack.users:read View users associated with a stack [Get all users of a stack](/docs/developers/apis/content-management-api/stacks#get-all-users-of-a-stack) user token, app token cm.stack.users:write Update user roles and user associations with a stack [Update User Role](/docs/developers/apis/content-management-api/stacks#update-user-role) user token cm.stack.management:write Update stack management properties [Transfer stack ownership to other users](/docs/developers/apis/content-management-api/stacks#transfer-stack-ownership-to-other-users) user token cm.stack.settings:read Update stack settings [Add stack settings](/docs/developers/apis/content-management-api/stacks#add-stack-settings) user token     [Reset stack settings](/docs/developers/apis/content-management-api/stacks#reset-stack-settings/) user token cm.stack:share Share stack invitation with users [Share a stack](/docs/developers/apis/content-management-api/stacks#share-a-stack) user token cm.stack:unshare Unshare stack invitations [Unshare a stack](/docs/developers/apis/content-management-api/stacks#unshare-a-stack) user token cm.stack.delivery-tokens:read View delivery tokens associated with a stack [Get all delivery tokens](/docs/developers/apis/content-management-api/tokens#get-all-delivery-tokens) user token     [Get a single delivery token](/docs/developers/apis/content-management-api/tokens#get-a-single-delivery-token) user token cm.stack.delivery-tokens:write Create, update, remove delivery tokens in a stack [Create delivery token](/docs/developers/apis/content-management-api/tokens#create-delivery-token) user token     [Update delivery token](/docs/developers/apis/content-management-api/tokens#update-delivery-token) user token     [Delete delivery token](/docs/developers/apis/content-management-api/tokens#delete-delivery-token) user token cm.stack.management-tokens:read View management tokens associated with a stack [Get all management tokens](/docs/developers/apis/content-management-api/tokens#get-all-management-tokens) user token     [Get a single management token](/docs/developers/apis/content-management-api/tokens#get-a-single-management-token) user token cm.stack.management-tokens:write Create, update, remove management tokens in a stack [Create management token](/docs/developers/apis/content-management-api/tokens#create-management-token) user token     [Update management token](/docs/developers/apis/content-management-api/tokens#update-management-token) user token     [Delete management token](/docs/developers/apis/content-management-api/tokens#delete-management-token) user token         cm.content-types.management:read View all content types [Get all content types](/docs/developers/apis/content-management-api/content-types#get-all-content-types) user token, app token     [Get a single content type](/docs/developers/apis/content-management-api/content-types#get-a-single-content-type) user token, app token cm.content-types.management:write Create, update, remove content types [Create a content type](/docs/developers/apis/content-management-api/content-types#create-a-content-type) user token, app token     [Create content type with select field](/docs/developers/apis/content-management-api/content-types#create-content-type-with-select-field) user token, app token     [Create content type with JSON RTE](/docs/developers/apis/content-management-api/content-types#create-content-type-with-json-rte) user token, app token/p>     [Create a content type with embedded RTE objects](/docs/developers/apis/content-management-api/embed-entries-and-assets-in-the-rich-text-editor#create-a-content-type-with-embedded-rte-objects) user token, app token     [Create Content Type with Extension Field](/docs/developers/apis/content-management-api/extensions#create-content-type-with-extension-field) user token, app token     [Create content type with JSON RTE plugin](/docs/developers/apis/content-management-api/extensions#create-content-type-with-json-rte-plugin) user token, app token     [Update Content Type](/docs/developers/apis/content-management-api/content-types#update-content-type) user token, app token     [Update content type with embedded RTE objects](/docs/developers/apis/content-management-api/embed-entries-and-assets-in-the-rich-text-editor#update-content-type-with-embedded-rte-objects) user token, app token     [Set Field Visibility Rule for Content Type](/docs/developers/apis/content-management-api/content-types#set-field-visibility-rule-for-content-type) user token, appp token     [Delete Content Type](/docs/developers/apis/content-management-api/content-types#delete-content-type) user token, app token cm.content-type:read View content type details [Get all references of content type](/docs/developers/apis/content-management-api/content-types#get-all-references-of-content-type) user token, app token cm.content-types:export Export content types [Export a content type](/docs/developers/apis/content-management-api/content-types#export-a-content-type) user token, app token cm.content-types:import Import content types [Import a content type](/docs/developers/apis/content-management-api/content-types#import-a-content-type) user token, app token         cm.global-fields.management:read View all global fields [Get all global fields](/docs/developers/apis/content-management-api/global-fields#get-all-global-fields) user token, app token     [Get a single global field](/docs/developers/apis/content-management-api/global-fields#get-a-single-global-field) user token, app token cm.global-fields.management:write Create, update, remove global fields [Create a global field](/docs/developers/apis/content-management-api/global-fields#create-a-global-field) user token, app token     [Update a global field](/docs/developers/apis/content-management-api/global-fields#update-a-global-field) user token, app token     [Delete global field](/docs/developers/apis/content-management-api/global-fields#delete-global-field) user token, app token cm.global-fields:import Export global fields [Export a global field](/docs/developers/apis/content-management-api/global-fields#export-a-global-field) user token, app token         cm.entries.management:read View all entries [Get all entries](/docs/developers/apis/content-management-api/entries#get-all-entries) user token, app token     [Get a single entry](/docs/developers/apis/content-management-api/entries#get-a-single-entry) user token, app token     [Get information on embedded RTE objects](/docs/developers/apis/content-management-api/embed-entries-and-assets-in-the-rich-text-editor#get-information-on-embedded-rte-objects) user token, app token cm.entries.management:write Create, update, remove entries [Create an entry](/docs/developers/apis/content-management-api/entries#create-an-entry) user token, app token     [Create an entry with JSON RTE](/docs/developers/apis/content-management-api/entries#create-an-entry-with-json-rte) user token, app token     [Create an entry with embedded entries in RTE](/docs/developers/apis/content-management-api/embed-entries-and-assets-in-the-rich-text-editor#create-an-entry-with-embedded-entries-in-rte) user token, app token     [Create an entry with embedded assets in RTE](/docs/developers/apis/content-management-api/embed-entries-and-assets-in-the-rich-text-editor#create-an-entry-with-embedded-assets-in-rte) user token, app token     [Create an entry with master locale](/docs/developers/apis/content-management-api/entries#create-an-entry-with-master-locale) user token, app token     [Update an entry](/docs/developers/apis/content-management-api/entries#update-an-entry) user token, app token     [Update an entry with JSON RTE](/docs/developers/apis/content-management-api/entries#update-an-entry-with-json-rte) user token, app token     [Update embedded RTE objects](/docs/developers/apis/content-management-api/embed-entries-and-assets-in-the-rich-text-editor#update-embedded-rte-objects) user token, app token     [Delete an entry](/docs/developers/apis/content-management-api/entries#delete-an-entry) user token, app token     [Localize an entry](/docs/developers/apis/content-management-api/entries#localize-an-entry) user token, app token cm.entry:write Update details associated with an entry [Set Version Name for Entry](/docs/developers/apis/content-management-api/entries#set-version-name-for-entry) user token, app token     [Delete Version Name of Entry](/docs/developers/apis/content-management-api/entries#delete-version-name-of-entry) user token, app token     [Unlocalize an entry](/docs/developers/apis/content-management-api/entries#unlocalize-an-entry) user token, app token cm.entry:read View details associated with an entry [Get Details of All Versions of an Entry](/docs/developers/apis/content-management-api/entries#get-details-of-all-versions-of-an-entry) user token, app token     [Get references of an entry](/docs/developers/apis/content-management-api/entries#get-references-of-an-entry) user token, app token     [Get languages of an entry](/docs/developers/apis/content-management-api/entries#get-languages-of-an-entry) user token, app token cm.entries:export Export entries [Export an entry](/docs/developers/apis/content-management-api/entries#export-an-entry) user token, app token cm.entries:import Import entries [Import an entry](/docs/developers/apis/content-management-api/entries#import-an-entry) user token, app token     [Import an existing entry](/docs/developers/apis/content-management-api/entries#import-an-existing-entry) user token, app token cm.entry:publish Publish an entry [Publish an entry](/docs/developers/apis/content-management-api/entries#publish-an-entry) user token, app token cm.entry:unpublish Unpublish an entry [Unpublish an entry](/docs/developers/apis/content-management-api/entries#unpublish-an-entry) user token, app token cm.entry.workflow:write Create a workflow for an entry [Set entry workflow stage](/docs/developers/apis/content-management-api/workflows#set-entry-workflow-stage) user token, app token     [Request/Accept/Reject Entry Publish Request](/docs/developers/apis/content-management-api/workflows#requestacceptreject-entry-publish-request) user token, app token         cm.bulk-operations:publish Publish bulk operations [Publish an entry with references](/docs/developers/apis/content-management-api/entries#publish-an-entry-with-references) user token, app token     [Publish entries and assets in bulk](/docs/developers/apis/content-management-api/bulk-operations#publish-entries-and-assets-in-bulk) user token, app token cm.bulk-operations:unpublish Unpublish bulk operations [Unpublish entries and assets in bulk](/docs/developers/apis/content-management-api/bulk-operations#unpublish-entries-and-assets-in-bulk) user token, app token cm.bulk-operations:delete Delete bulk operations [Delete entries and assets in bulk](/docs/developers/apis/content-management-api/bulk-operations#delete-entries-and-assets-in-bulk) user token, app token cm.bulk-operations:workflow Workflow bulk operations [Update workflow details in bulk](/docs/developers/apis/content-management-api/bulk-operations#update-workflow-details-in-bulk) user token, app token         cm.assets.management:read View all assets [Get all assets](/docs/developers/apis/content-management-api/assets#get-all-assets) user token, app token     [Get an asset](/docs/developers/apis/content-management-api/assets#get-an-asset) user token, app token     [Get assets of a specific folder](/docs/developers/apis/content-management-api/assets#get-assets-of-a-specific-folder) user token, app token     [Get assets and subfolders of a parent folder](/docs/developers/apis/content-management-api/assets#get-assets-and-subfolders-of-a-parent-folder) user token, app token     [Get either only images or videos](/docs/developers/apis/content-management-api/assets#get-either-only-images-or-videos) user token, app token     [Get a single folder](/docs/developers/apis/content-management-api/assets#get-a-single-folder) user token, app token     [Get a single folder by name](/docs/developers/apis/content-management-api/assets#get-a-single-folder-by-name) user token, app token     [Get subfolders of a parent folder](/docs/developers/apis/content-management-api/assets#get-subfolders-of-a-parent-folder) user token, app token cm.assets.management:write Create, update, remove assets [Upload asset](/docs/developers/apis/content-management-api/assets#upload-asset) user token, app token     [Replace asset](/docs/developers/apis/content-management-api/assets#replace-asset) user token, app token     [Generate permanent asset URL](/docs/developers/apis/content-management-api/assets#generate-permanent-asset-url) user token, app token     [Delete asset](/docs/developers/apis/content-management-api/assets#delete-asset) user token, app token     [Update asset revision](/docs/developers/apis/content-management-api/assets#update-asset-revision) user token, app token     [Update asset](/docs/developers/apis/content-management-api/assets#update-asset) user token, app token     [Create a folder](/docs/developers/apis/content-management-api/assets#create-a-folder) user token, app token     [Update or move folder](/docs/developers/apis/content-management-api/assets#update-or-move-folder) user token, app token     [Delete a folder](/docs/developers/apis/content-management-api/assets#delete-a-folder) user token, app token cm.assets:download Download assets [Download an asset with permanent URL](/docs/developers/apis/content-management-api/assets#download-an-asset-with-permanent-url) user token, app token cm.assets.rt:read View all RTE assets [Get information on RTE assets](/docs/developers/apis/content-management-api/assets#get-information-on-rte-assets) user token, app token cm.asset:write Create, update, remove RTE assets [Set Version Name for Asset](/docs/developers/apis/content-management-api/assets#set-version-name-for-asset) user token, app token     [Delete Version Name of Asset](/docs/developers/apis/content-management-api/assets#delete-version-name-of-asset) user token, app token cm.asset:read View asset details [Get Details of All Versions of an Asset](/docs/developers/apis/content-management-api/assets#get-details-of-all-versions-of-an-asset) user token, app token     [Get asset references](/docs/developers/apis/content-management-api/assets#get-asset-references) user token, app token cm.asset:publish Publish an asset [Publish an asset](/docs/developers/apis/content-management-api/assets#publish-an-asset) user token, app token cm.asset:unpublish Unpublish an asset [Unpublish an asset](/docs/developers/apis/content-management-api/assets#unpublish-an-asset) user token, app token         cm.extensions.management:read View all extensions [Get all custom fields](/docs/developers/apis/content-management-api/extensions#get-all-custom-fields) user token, app token     [Get a single custom field](/docs/developers/apis/content-management-api/extensions#get-a-single-custom-field) user token, app token     [Get all widgets](/docs/developers/apis/content-management-api/extensions#get-all-widgets) user token, app token     [Get widgets of a content type](/docs/developers/apis/content-management-api/extensions#get-widgets-of-a-content-type) user token, app token     [Get All Dashboard Widgets](/docs/developers/apis/content-management-api/extensions#get-all-dashboard-widgets) user token, app token     [Get all JSON RTE plugins](/docs/developers/apis/content-management-api/extensions#get-all-json-rte-plugins) user token, app token     [Get a single JSON RTE plugin](/docs/developers/apis/content-management-api/extensions#get-a-single-json-rte-plugin) user token, app token cm.extensions.management:write Create, update, remove extensions [Upload a custom field](/docs/developers/apis/content-management-api/extensions#upload-a-custom-field) user token, app token     [Create a custom field with source URL](/docs/developers/apis/content-management-api/extensions#create-a-custom-field-with-source-url) user token, app token     [Create a custom field with source code](/docs/developers/apis/content-management-api/extensions#create-a-custom-field-with-source-code) user token, app token     [Update a custom field](/docs/developers/apis/content-management-api/extensions#update-a-custom-field) user token, app token     [Delete custom field](/docs/developers/apis/content-management-api/extensions#delete-custom-field) user token, app token     [Upload a widget](/docs/developers/apis/content-management-api/extensions#upload-a-widget) user token, app token     [Create widget with source URL](/docs/developers/apis/content-management-api/extensions#create-widget-with-source-url) user token, app token     [Create widget with source code](/docs/developers/apis/content-management-api/extensions#create-widget-with-source-code) user token, app token     [Update a widget](/docs/developers/apis/content-management-api/extensions#update-a-widget) user token, app token     [Delete a widget](/docs/developers/apis/content-management-api/extensions#delete-a-widget) user token, app token     [Upload Dashboard Widget](/docs/developers/apis/content-management-api/extensions#upload-dashboard-widget) user token, app token     [Create a Dashboard Widget with Source URL](/docs/developers/apis/content-management-api/extensions#create-a-dashboard-widget-with-source-url) user token, app token     [Create a Dashboard Widget with Source code](/docs/developers/apis/content-management-api/extensions#create-a-dashboard-widget-with-source-code) user token, app token     [Update the Dashboard Widget](/docs/developers/apis/content-management-api/extensions#update-the-dashboard-widget) user token, app token     [Delete the Dashboard Widget](/docs/developers/apis/content-management-api/extensions#delete-the-dashboard-widget) user token, app token     [Create a JSON RTE plugin with source URL](/docs/developers/apis/content-management-api/extensions#create-a-json-rte-plugin-with-source-url) user token, app token     [Update a JSON RTE plugin](/docs/developers/apis/content-management-api/extensions#update-a-json-rte-plugin) user token, app token     [Delete JSON RTE plugin](/docs/developers/apis/content-management-api/extensions#delete-json-rte-plugin) user token, app token         cm.releases.management:read View all releases [Get all Releases](/docs/developers/apis/content-management-api/releases#get-all-releases) user token, app token     [Get a single Release](/docs/developers/apis/content-management-api/releases#get-a-single-release) user token, app token         cm.releases.management:write Create, update, remove releases [Create a Release](/docs/developers/apis/content-management-api/releases#create-a-release) user token, app token     [Update a Release](/docs/developers/apis/content-management-api/releases#update-a-release) user token, app token     [Delete a Release](/docs/developers/apis/content-management-api/releases#delete-a-release) user token, app token cm.release:read View details associated with a release [Get all items in a Release](/docs/developers/apis/content-management-api/releases#get-all-items-in-a-release) user token, app token cm.release:write Update details associated with a release [Add a single item to a Release](/docs/developers/apis/content-management-api/releases#add-a-single-item-to-a-release) user token, app token     [Add multiple items to a Release](/docs/developers/apis/content-management-api/releases#add-multiple-items-to-a-release) user token, app token     [Remove an item from a Release](/docs/developers/apis/content-management-api/releases#remove-an-item-from-a-release) user token, app token     [Delete multiple items from a Release](/docs/developers/apis/content-management-api/releases#delete-multiple-items-from-a-release) user token, app token     [Update Release items to their latest versions](/docs/developers/apis/content-management-api/releases#update-release-items-to-their-latest-versions) user token, app token cm.release:deploy Deploy a release [Deploy a Release](/docs/developers/apis/content-management-api/releases#deploy-a-release) user token, app token cm.release:clone Clone a release [Clone a Release](/docs/developers/apis/content-management-api/releases#clone-a-release) user token, app token         cm.workflows.management:read View all workflows [Get all workflows](/docs/developers/apis/content-management-api/workflows#get-all-workflows) user token, app token     [Get a single workflow](/docs/developers/apis/content-management-api/workflows#get-a-single-workflow) user token, app token     [Get publish rules by content types](/docs/developers/apis/content-management-api/workflows#get-publish-rules-by-content-types) user token, app token cm.workflows.management:write Create, update, remove workflows [Create a workflow](/docs/developers/apis/content-management-api/workflows#create-a-workflow) user token, app token     [Add or update workflow details](/docs/developers/apis/content-management-api/workflows#add-or-update-workflow-details) user token, app token     [Disable workflow](/docs/developers/apis/content-management-api/workflows#disable-workflow) user token, app token     [Enable workflow](/docs/developers/apis/content-management-api/workflows#enable-workflow) user token, app token     [Delete workflow](/docs/developers/apis/content-management-api/workflows#delete-workflow) user token, app token cm.workflows.publishing-rules:write Create, update, remove workflow publishing rules [Create publish rules](/docs/developers/apis/content-management-api/workflows#create-publish-rules) user token, app token     [Update publish rules](/docs/developers/apis/content-management-api/workflows#update-publish-rules) user token, app token     [Delete publish rules](/docs/developers/apis/content-management-api/workflows#delete-publish-rules) user token, app token cm.workflows.publishing-rules:read View all workflow publishing rules [Get all publish rules](/docs/developers/apis/content-management-api/workflows#get-all-publish-rules) user token, app token     [Get a single publish rule](/docs/developers/apis/content-management-api/workflows#get-a-single-publish-rule) user token, app token         cm.labels.management:read View all labels [Get all labels](/docs/developers/apis/content-management-api/labels#get-all-labels) user token, app token     [Get a single label](/docs/developers/apis/content-management-api/labels#get-a-single-label) user token, app token cm.labels.management:write Create, update, remove labels [Add label](/docs/developers/apis/content-management-api/labels#add-label) user token, app token     [Update label](/docs/developers/apis/content-management-api/labels#update-label) user token, app token     [Delete label](/docs/developers/apis/content-management-api/labels#delete-label) user token, app token         cm.languages.management:read View all languages [Get all languages](/docs/developers/apis/content-management-api/languages#get-all-languages) user token, app token     [Get a language](/docs/developers/apis/content-management-api/languages#get-a-language) user token, app token cm.languages.management:write Create, update, remove languages [Add a language](/docs/developers/apis/content-management-api/languages#add-a-language) user token, app token     [Update language](/docs/developers/apis/content-management-api/languages#update-language) user token, app token     [Delete language](/docs/developers/apis/content-management-api/languages#delete-language) user token, app token     [Set a fallback language](/docs/developers/apis/content-management-api/languages#set-a-fallback-language) user token, app token     [Update fallback language](/docs/developers/apis/content-management-api/languages#update-fallback-language) user token, app token         cm.environments.management:read View all environments [Get all environments](/docs/developers/apis/content-management-api/environment#get-all-environments) user token, app token     [Get a single environment](/docs/developers/apis/content-management-api/environment#get-a-single-environment) user token, app token cm.environments.management:write Create, update, remove environments [Add an environment](/docs/developers/apis/content-management-api/environment#add-an-environment) user token, app token     [Update environment](/docs/developers/apis/content-management-api/environment#update-environment) user token, app token     [Delete environment](/docs/developers/apis/content-management-api/environment#delete-environment) user token, app token         cm.roles.management:read View all roles [Get all roles](/docs/developers/apis/content-management-api/roles#get-all-roles) user token, app token     [Get a single role](/docs/developers/apis/content-management-api/roles#get-a-single-role) user token, app token cm.roles.management:write Create, update, remove roles [Create a role](/docs/developers/apis/content-management-api/roles#create-a-role) user token, app token     [Update role](/docs/developers/apis/content-management-api/roles#update-role) user token, app token     [Delete role](/docs/developers/apis/content-management-api/roles#delete-role) user token, app token         cm.webhooks.management:read View all webhooks [Get all webhooks](/docs/developers/apis/content-management-api/webhooks#get-all-webhooks) user token, app token     [Get webhook](/docs/developers/apis/content-management-api/webhooks#get-webhook) user token, app token cm.webhooks.management:write Create, update, remove webhooks [Create a webhook](https://www.contentstack.com/docs/developers/apis/content-management-api/webhooks#create-a-webhook) user token, app token     [Update webhook](/docs/developers/apis/content-management-api/webhooks#update-webhook) user token, app token     [Delete webhook](/docs/developers/apis/content-management-api/webhooks#delete-webhook) user token, app token     [Retry a webhook](/docs/developers/apis/content-management-api/webhooks#retry-a-webhook) user token, app token cm.webhooks:export Export webhooks [Export a Webhook](/docs/developers/apis/content-management-api/webhooks#export-a-webhook) user token, app token cm.webhooks:import Import webhooks [Import a Webhook](/docs/developers/apis/content-management-api/webhooks#import-a-webhook) user token, app token     [Import an Existing Webhook](/docs/developers/apis/content-management-api/webhooks#import-an-existing-webhook) user token, app token cm.webhook:read View webhook details [Get executions of a webhook](/docs/developers/apis/content-management-api/webhooks#get-executions-of-a-webhook) user token, app token     [Get latest execution log of a webhook](/docs/developers/apis/content-management-api/webhooks#get-latest-execution-log-of-a-webhook) user token, app token         cm.audit-logs:read View all audit logs [Get audit log](/docs/developers/apis/content-management-api/audit-log#get-audit-log) user token, app token     [Get audit log item](/docs/developers/apis/content-management-api/audit-log#get-audit-log-item) user token, app token         cm.publish-queue.management:read View all publish queues [Get publish queue](/docs/developers/apis/content-management-api/publish-queue#get-publish-queue) user token, app token     [Get publish queue activity](/docs/developers/apis/content-management-api/publish-queue#get-publish-queue-activity) user token, app token cm.publish-queue.management:write Create, update, remove publish queues [Cancel scheduled action](/docs/developers/apis/content-management-api/publish-queue#cancel-scheduled-action) user token, app token         cm.branches.management:read View all branches [Get all Branches](/docs/developers/apis/content-management-api/branches#get-all-branches) user token, app token     [ ](/docs/developers/apis/content-management-api/branches#get-a-single-branch)[Get a single branch](/docs/developers/apis/content-management-api/branches#get-a-single-branch) user token, app token cm.branches.management:write Create, delete a branch [Create a branch](/docs/developers/apis/content-management-api/branches#create-a-branch) user token, app token     [Delete a branch](/docs/developers/apis/content-management-api/branches#delete-a-branch) user token, app token cm.branch-aliases.management:read View all aliases [Get all branch-aliases](/docs/developers/apis/content-management-api/aliases#get-all-aliases) user token, app token     [Get a single branch-alias](/docs/developers/apis/content-management-api/aliases#get-a-single-alias) user token, app token cm.branch-aliases.management:write Create, assign, delete a branch alias [Assign a branch-alias](/docs/developers/apis/content-management-api/aliases#assign-an-alias) user token, app token     [Delete a branch-alias](/docs/developers/apis/content-management-api/aliases#delete-an-alias) user token, app token         cm.taxonomies.management:read View all taxonomies [Get all taxonomies](/docs/developers/apis/content-management-api/taxonomy#get-all-taxonomies) user token, app token cm.taxonomies.management:write Create, update, delete taxonomies [Create a taxonomy](/docs/developers/apis/content-management-api/taxonomy#create-a-taxonomy) user token, app token     [Update a taxonomy](/docs/developers/apis/content-management-api/taxonomy#update-a-taxonomy) user token, app token     [Delete a taxonomy](/docs/developers/apis/content-management-api/taxonomy#delete-a-taxonomy) user token, app token cm.taxonomy.terms:read View all terms of a taxonomy [Get all terms of a taxonomy](/docs/developers/apis/content-management-api/taxonomy#get-all-terms-of-a-taxonomy) user token, app token cm.taxonomy.terms:write Create, update, move, delete term(s) of a taxonomy [Create a term](/docs/developers/apis/content-management-api/taxonomy#create-a-term) user token, app token     [Update a term](/docs/developers/apis/content-management-api/taxonomy#update-a-term) user token, app token     [Move/Reorder a term](/docs/developers/apis/content-management-api/taxonomy#movereorder-a-term) user token, app token     [Delete a term](/docs/developers/apis/content-management-api/taxonomy#delete-a-term) user token, app token         brand-kits:read View Brand Kit(s) and Voice Profile(s). Generative AI to generate content. [Get All Brand Kits](/docs/developers/apis/brand-kit-management-api/brand-kit#get-all-brand-kits) user token, app token     [Get a Single Brand Kit](/docs/developers/apis/brand-kit-management-api/brand-kit#get-a-single-brand-kit) user token, app token     [Get All Voice Profiles](/docs/developers/apis/brand-kit-management-api/voice-profile#get-all-voice-profiles) user token, app token     [Get a Single Voice Profile](/docs/developers/apis/brand-kit-management-api/voice-profile#get-a-single-voice-profile) user token, app token     [GenAI](/docs/developers/apis/generative-ai-api/generative-ai#genai) user token, app token brand-kits:manage Create, update, or delete Brand Kit and Voice Profile. Ingest, get usage, update, and delete Knowledge Vault. [Create Brand Kit](/docs/developers/apis/brand-kit-management-api/brand-kit#create-brand-kit) user token, app token     [Update Brand Kit](/docs/developers/apis/brand-kit-management-api/brand-kit#update-brand-kit) user token, app token     [Delete Brand Kit](/docs/developers/apis/brand-kit-management-api/brand-kit#delete-brand-kit) user token, app token     [Create Voice Profile](/docs/developers/apis/brand-kit-management-api/voice-profile#create-voice-profile) user token, app token     [Update Voice Profile](/docs/developers/apis/brand-kit-management-api/voice-profile#update-voice-profile) user token, app token     [Delete Voice Profile](/docs/developers/apis/brand-kit-management-api/voice-profile#delete-voice-profile) user token, app token     [Ingest Content](/docs/developers/apis/knowledge-vault-api/knowledge-vault#ingest-content-item) user token, app token     [Get Content Usage](/docs/developers/apis/brand-kit-management-api#get-content-usage) user token, app token     [Update Content](/docs/developers/apis/knowledge-vault-api/knowledge-vault#update-content-item) user token, app token     [Delete Content](/docs/developers/apis/knowledge-vault-api/knowledge-vault#delete-content-item) user token, app token         personalize:read View Attributes, Audiences, Events, Experiences, Experiences Priority, Analytics Summary, Time-series Analytics, Regions, Countries, and Cities. [Get all Attributes](/docs/developers/apis/personalize-management-api/attributes#get-all-attributes) \>user token, app token     [Get all Audiences](/docs/developers/apis/personalize-management-api/audiences#get-all-audiences) user token, app token     [Get all Experiences](/docs/developers/apis/personalize-management-api/experiences#get-all-experiences) user token, app token     [Get a Single Experience](/docs/developers/apis/personalize-management-api/experiences#get-a-single-experience) user token, app token     [Get all Experience Versions](/docs/developers/apis/personalize-management-api/experiences#get-all-experience-versions) user token, app token     [Get all Events](/docs/developers/apis/personalize-management-api/events#get-all-events) user token, app token     [Get Experiences Priority](/docs/developers/apis/personalize-management-api/experiences-priority#get-experiences-priority) user token, app token     [Get Analytics Summary](/docs/developers/apis/personalize-management-api/experience-analytics#get-analytics-summary) user token, app token     [Get Time-series Analytics](/docs/developers/apis/personalize-management-api/experience-analytics#get-time-series-analytics) user token, app token     [Get all Regions](/docs/developers/apis/personalize-management-api/geolocation#get-all-regions) user token, app token     [Get all Countries](/docs/developers/apis/personalize-management-api/geolocation#get-all-countries) user token, app token     [Get all Cities](/docs/developers/apis/personalize-management-api/geolocation#get-all-cities) user token, app token personalize:manage Create, update, or delete Attribute, Audience, Experience, Event, and Experience Version, and update Experiences Priority. [Create an Attribute](/docs/developers/apis/personalize-management-api/attributes#create-an-attribute) user token, app token     [Update an Attribute](/docs/developers/apis/personalize-management-api/attributes#update-an-attribute) user token, app token     [Delete an Attribute](/docs/developers/apis/personalize-management-api/attributes#delete-an-attribute) user token, app token     [Create an Audience](/docs/developers/apis/personalize-management-api/audiences#create-an-audience) user token, app token     [Update an audience](/docs/developers/apis/personalize-management-api/audiences#update-an-audience) user token, app token     [Delete an audience](/docs/developers/apis/personalize-management-api/audiences#delete-an-audience) user token, app token     [Create an Experience](/docs/developers/apis/personalize-management-api/experiences#create-an-experience) user token, app token     [Update an Experience](/docs/developers/apis/personalize-management-api/experiences#update-an-experience) user token, app token     [Delete an Experience](/docs/developers/apis/personalize-management-api/experiences#delete-an-experience) user token, app token     [Create an Experience Version](/docs/developers/apis/personalize-management-api/experiences#create-an-experience-version) user token, app token     [Update an Experience Version](/docs/developers/apis/personalize-management-api/experiences#update-an-experience-version) user token, app token     [Delete an Experience Version](/docs/developers/apis/personalize-management-api/experiences#delete-an-experience-version) user token, app token     [Create an Event](/docs/developers/apis/personalize-management-api/events#create-an-event) user token, app token     [Update an Event](/docs/developers/apis/personalize-management-api/events#update-an-event) user token, app token     [Delete an Event](/docs/developers/apis/personalize-management-api/events#delete-an-event) user token, app token     [Update Experiences Priority](/docs/developers/apis/personalize-management-api/experiences-priority#update-experiences-priority) user token, app token         launch:manage This scope lets you read, update, and manage resources [Get all Projects](/docs/developers/apis/launch-api/projects#get-all-projects) user token, app token     [Get a Project](/docs/developers/apis/launch-api/projects#get-a-project) user token, app token     [Create a Project](/docs/developers/apis/launch-api/projects#create-a-project) (Using Git Provider) user token     [Create a Project](/docs/developers/apis/launch-api/projects#create-a-project) (Using File Upload) user token, app token     [Update a Project](/docs/developers/apis/launch-api/projects#update-a-project) user token, app token     [Delete a Project](/docs/developers/apis/launch-api/projects#delete-a-project) user token, app token     [Get all Environments](/docs/developers/apis/launch-api/environments#get-all-environments) user token, app token     [Get an Environment](/docs/developers/apis/launch-api/environments#get-an-environment) user token, app token     [Create an Environment](/docs/developers/apis/launch-api/environments#create-an-environment) (Using Git Provider) user token     [Create an Environment](/docs/developers/apis/launch-api/environments#create-an-environment) (Using File Upload) user token, app token     [Update an Environment](/docs/developers/apis/launch-api/environments#update-an-environment) user token, app token     [Delete an Environment](/docs/developers/apis/launch-api/environments#delete-an-environment) user token, app token     [Revalidate CDN Cache](/docs/developers/apis/launch-api/environments#revalidate-cdn-cache) user token, app token     [Get a Signed Upload URL for a Project](/docs/developers/apis/launch-api/file-upload#get-a-signed-upload-url-for-a-project) user token, app token     [Get a Signed Upload URL for an Environment](/docs/developers/apis/launch-api/file-upload#get-a-signed-upload-url-for-an-environment) user token, app token     [Get a Signed Upload URL for a Deployment](/docs/developers/apis/launch-api/file-upload#get-a-signed-upload-url-for-a-deployment) user token, app token     [Get a Download URL for the Uploaded File](/docs/developers/apis/launch-api#get-a-download-url-for-the-uploaded-file) user token, app token     [Get all Deployments](/docs/developers/apis/launch-api/deployments#get-all-deployments) user token, app token     [Get a Deployment](/docs/developers/apis/launch-api/deployments#get-a-deployment) user token, app token     [Create a Deployment](/docs/developers/apis/launch-api/deployments#create-a-deployment) (Using Git Provider) user token     [Create a Deployment](/docs/developers/apis/launch-api/deployments#create-a-deployment) (Using Previously Uploaded File) user token, app token     [Create a Deployment](/docs/developers/apis/launch-api/deployments#create-a-deployment) (Using Newly Uploaded File) user token, app token     [Get Deployment Logs](/docs/developers/apis/launch-api/deployment-logs#get-deployment-logs) user token, app token     [Get Server Logs](/docs/developers/apis/launch-api/server-logs#get-server-logs) user token, app token         launch.projects:read This scope lets you read resources [Get all Projects](/docs/developers/apis/launch-api/projects#get-all-projects) user token, app token     [Get a Project](/docs/developers/apis/launch-api/projects#get-a-project) user token, app token     [Get all Environments](/docs/developers/apis/launch-api/environments#get-all-environments) user token, app token     [Get an Environment](/docs/developers/apis/launch-api/environments#get-an-environment) user token, app token     [Get all Deployments](/docs/developers/apis/launch-api/deployments#get-all-deployments) user token, app token     [Get a Deployment](/docs/developers/apis/launch-api/deployments#get-a-deployment) user token, app token     [Get a Download URL for the Uploaded File](/docs/developers/apis/launch-api#get-a-download-url-for-the-uploaded-file) user token, app token     [Get Deployment Logs](/docs/developers/apis/launch-api/deployment-logs#get-deployment-logs) user token, app token     [Get Server Logs](/docs/developers/apis/launch-api/server-logs#get-server-logs) user token, app token launch.projects:write This scope lets you create and update resources [Create a Project](/docs/developers/apis/launch-api/projects#create-a-project) (Using Git Provider) user token     [Create a Project](/docs/developers/apis/launch-api/projects#create-a-project) (Using File Upload) user token, app token     [Get a Signed Upload URL for a Project](/docs/developers/apis/launch-api/file-upload#get-a-signed-upload-url-for-a-project) user token, app token     [Update a Project](/docs/developers/apis/launch-api/projects#update-a-project) user token, app token     [Create an Environment](/docs/developers/apis/launch-api/environments#create-an-environment) (Using Git Provider) user token     [Create an Environment](/docs/developers/apis/launch-api/environments#create-an-environment) (Using File Upload) user token, app token     [Get a Signed Upload URL for an Environment](/docs/developers/apis/launch-api/file-upload#get-a-signed-upload-url-for-an-environment) user token, app token     [Update an Environment](/docs/developers/apis/launch-api/environments#update-an-environment) user token, app token     [Create a Deployment](/docs/developers/apis/launch-api/deployments#create-a-deployment) (Using Git Provider) user token     [Create a Deployment](/docs/developers/apis/launch-api/deployments#create-a-deployment) (Using Previously Uploaded File) user token, app token     [Create a Deployment](/docs/developers/apis/launch-api/deployments#create-a-deployment) (Using Newly Uploaded File) user token, app token     [Get a Signed Upload URL for a Deployment](/docs/developers/apis/launch-api/file-upload#get-a-signed-upload-url-for-a-deployment) user token, app token     [Revalidate CDN Cache](/docs/developers/apis/launch-api/environments#revalidate-cdn-cache) user token, app token launch.projects:delete This scope lets you delete resources [Delete a Project](/docs/developers/apis/launch-api/projects#delete-a-project) user token, app token     [Delete an Environment](/docs/developers/apis/launch-api/environments#delete-an-environment) user token, app token --- ## URL: https://www.contentstack.com/docs/developer-hub/pkce-for-contentstack-oauth --- title: "PKCE for Contentstack OAuth" description: "PKCE for Contentstack OAuth" url: "https://www.contentstack.com/docs/developer-hub/pkce-for-contentstack-oauth" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: pkce-for-contentstack-oauth.md --- # PKCE for Contentstack OAuth Proof Key for Code Exchange (PKCE) is a security extension for OAuth 2.0 to avoid malicious attacks and perform a secure authorization flow. In PKCE flow, the calling application creates a secret key that the authorization server can verify, called the code verifier. The calling application converts the code verifier value into a code challenge and sends it over HTTPS to retrieve the authorization code. The entire process prevents attackers from interfering with the authorization flow, therefore enhancing its security. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login) * An app created in [Developer Hub](/docs/developer-hub/creating-an-app-in-developer-hub) ## What You Will Learn * How PKCE secures the OAuth 2.0 authorization flow. * How the code verifier and code challenge work. * How the PKCE authorization, token, and refresh requests differ from the standard flow. * How to enable PKCE for your app in Developer Hub. ## Working of PKCE 1. PKCE makes use of a unique string code\_verifier making client\_secret an optional parameter. 2. In the authorization request, the unique string code\_challenge\_method is used to derive the code\_challenge parameter. The code\_challenge\_method can be either plain or S256. 3. The code\_challenge\_method is optional. If it is not mentioned in the request, the system takes plain as the default method. ## PKCE Flow The standard authorization flow serves as the foundation for PKCE enabled authorization flows. Some modifications for the PKCE authorization flow are as follows: 1. While creating the **User Token** for requesting Authorization Token, certain parameters are added in the request. The new request will be: 2. ``` {BASE_URL}/#!/apps/{app_uid}/authorize?response_type=code&client_id={client_id}&redirect_uri={redirect_uri}&scope={scope}&state={state}&code_challenge={code_challenge}&code_challenge_method={plain/S256} ``` 3. **Note:** The parameter code\_challenge\_method is optional and when not included in the request, the default value plain is considered. 4. After authorization is granted, the user will exchange this auth code for an access token. The request will be as follows: ``` POST {BASE_URL}/apps-api/apps/token Headers: Content-Type: application/x-www-form-urlencoded Request Body: grant_type:authorization_code client_id:{client_id} redirect_uri:{redirect_uri} code:{authorization_code} code_verifier:{code_verifier} ``` **Note:** \- After enabling PKCE, the client\_secret parameter is optional. If you still provide the parameter for the User Token, then it should also be added for the **Refresh Token**. \- If a user requests re-authorization for the same set or subset of scopes that were once granted, the user is automatically redirected to the redirect URL. 5. While exchanging the refresh token, the client\_secret parameter is not included in the request. The request will be as follows: 6. ``` POST {BASE_URL}/apps-api/apps/token Headers: Content-Type: application/x-www-form-urlencoded Request Body: grant_type:refresh_token client_id:{client_id} redirect_uri:{redirect_uri} refresh_token:{refresh_token} ``` ## Enabling PKCE in Contentstack To enable PKCE for your application, follow the steps given below: 1. Log in to your [Contentstack account](https://app.contentstack.com/#!/login) and navigate to **Developer Hub** 2. Open your app in the **Developer Hub** console. 3. Click the **OAuth** tab**.**![Select\_OAuh.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt2f20df46c15f15dc/65b69c2b55a88a8094da672c/Select_OAuh.png) 4. Within the **User Token** section, add user scopes to enable PKCE. ![User\_Scop.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc03e553cff231d4e/65b69c2bc600052b5ed5a758/User_Scop.png) 5. Enable the **Allow PKCE** toggle button. ![Allow\_PKCE.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blta6f2a53c36d065c1/65b69c2b24ea49ea9dde57d3/Allow_PKCE.png) 6. Click **Save** to save your OAuth configurations. --- ## URL: https://www.contentstack.com/docs/developer-hub/rte-location --- title: "RTE Location" description: "Extend your JSON Rich Text Editor with the RTE Location by adding custom plugins and third-party integrations." url: "https://www.contentstack.com/docs/developer-hub/rte-location" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-23" filename: rte-location.md --- # RTE Location The RTE Location lets you add/ create custom plugins to extend the functionality of your [JSON Rich Text Editor](/docs/headless-cms/about-json-rich-text-editor) as per your needs. You can use third-party applications to interact with your JSON Rich Text Editor content. Let's see how to add the RTE location to your app: * **Via the Developer Hub Console:** To add the RTE location to your app via the Developer Hub console, login to your [Contentstack Account](https://www.contentstack.com/login) and follow the steps given below: 1. Click the **Developer Hub** icon on the left navigation panel. ![Welcome\_to\_Developer\_Hub.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt5c63262317460a13/665eb3af653cb9d069a7f067/Welcome_to_Developer_Hub.png) 2. Select an application for which you want to add the RTE location. 3. Click the **UI Locations** tab. To set the **App URL**, click the **View Hosting** link. You will be redirected to the **Hosting** tab.  ![View\_Hosting.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf879b2d8d0af9821/68343990c589ead0184bdd34/View_Hosting.png) 4. In the **Hosting** tab, you can select [Hosting with Launch](/docs/developer-hub/app-hosting#hosting-with-launch) or [Custom Hosting](/docs/developer-hub/app-hosting#custom-hosting) options. Select the **Custom Hosting** option to enter the hosted URL of your application. Click the **Save** button to save your hosting configuration. ![App\_URL.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltc0ab1619e05e9133/68303234bcb194e9539ac1d6/App_URL.png) 5. Navigate to the **UI Locations** tab to configure the RTE location. 6. Hover over the **RTE** location, and click the **+ Add UI Location** button.  ![Add\_JSON\_RTE\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt94a135da14e035ff/683959e77f9f733d5d7dbf8e/Add_JSON_RTE_Location.png) 7. On the resulting **Configuration** page, set up the configurations for RTE location by providing details such as **Name**, **Path**, and **Description**. You can also enable the configuration using the **Enabled** toggle button. Properties that can be specified for this UI location: * **Name (optional)**: Specifies the name of the UI location. This name will be displayed at the location after the app is installed. If not provided, the app name will be used. Ensure unique names for multiple configurations of the same location. * **Signed (optional)**: When enabled, Contentstack adds a JWT token to the initial HTTP request made for your app's first page. This token can be used to verify that the request originated from Contentstack. For more information, please refer to [Signed Locations](/docs/developer-hub/securing-your-app/). * **Path (optional)**: Enables you to define the location relative to the base URL where the app is hosted. This is particularly useful when the developer intends the app to appear in multiple locations. * **Enabled (optional)**: Determines whether the location is visible after the app installation. If not specified, the location is enabled by default. Users can manage this option post-installation via the UI Locations tab on the app’s configuration screen. You can configure any UI location as **mandatory** using the **Required** toggle. If the toggle is enabled, the location becomes mandatory and cannot be disabled. Whereas, if the toggle is disabled, the UI location is available to use but not mandatory. **Additional Resource:** Refer to the [Marketplace App Manifest](/docs/developer-hub/app-manifest) documentation for comprehensive details. ![RTE\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt420304458880a7a1/683959e6f809c133d23dfa36/RTE_Location.png) 8. Finally, click the **Save** button to save the RTE location’s configuration details. You will see the details of the configured UI location on the **UI Locations** tab in the **App Configuration** screen after installing the app. You can enable or disable the non-required UI locations. Navigate to the stack. You will see the installed app in the JSON RTE field in the entries page. You can create new RTE locations by writing your custom code, or you can use the prebuilt [boilerplate](/docs/developer-hub/marketplace-app-boilerplate) and modify the given code to suit your requirements. --- ## URL: https://www.contentstack.com/docs/developer-hub/securing-your-app --- title: "Securing your App" description: "Secure your Contentstack app with Signed Webhooks, JWT for UI Locations, IP whitelisting, and replay attack protection." url: "https://www.contentstack.com/docs/developer-hub/securing-your-app" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: securing-your-app.md --- # Securing your App Your Marketplace App communicates with Contentstack via two touchpoints: * [Securing Webhooks](#securing-webhooks) * [Securing UI Locations](#securing-ui-locations) Contentstack provides signed support for both integrations. ## Prerequisites * A Contentstack Marketplace app ## What You Will Learn * How to secure webhooks with the signed webhooks feature. * How to secure UI locations using a JWT app-token. * How to retrieve the signing public key and verify a JWT app-token. * How IP whitelisting restricts access to your domains. ## Securing Webhooks If your app wants to receive any data from webhook, we encourage you to use the [signed webhooks](https://www.contentstack.com/docs/headless-cms/secure-your-webhooks/#webhook-signature) feature on the server side. This feature allows App developers to verify whether the webhook requests are originating from Contentstack itself, and helps them build robust apps and secure any multi-tenant data stored within the Apps. ## Securing UI Locations If your app manages any configuration or has data communication between the UI and backend server, we strongly suggest to use the Signed Locations feature offered by the App Framework. When you enable this, all the initial page load calls will contain a JWT token that can be used to verify whether the page load request originated from Contentstack itself. With the JWT app-token payload, you should only respond with the data relevant to the current Organization and Stack. You can build your own session and validate the Ajax call via your own session. **Note**: Please do **not** use the JWT app-token as session for further API calls. The token has an expiration of a few minutes. Use the payload to build your own user session. ### Step 1 - Retrieve the Public Key To verify a JWT app-token, you need to use the Contentstack’s Signing Public Key shared in the response. To obtain the public key, hit the below API endpoint: ``` `https://[DOMAIN]/.well-known/public-keys.json` ``` Here, DOMAIN refers to the host in the region-specific login endpoint that you are currently using to access the Contentstack app. The above API endpoint returns the Signing Public Key in the response body as follows: ``` /// RESPONSE const response = { "signing-key": "-----BEGIN RSA PUBLIC KEY-----\212313131\n-----END RSA PUBLIC KEY-----" ; const publicKey = response["signing-key"]; ``` **Note:** You can also store the content of the public key in a file, for access whenever needed. ### Step 2 - Verify the JWT app-token Here is a sample codebase of what your verification script (Node.js) should look like: ``` const jwt = require("jsonwebtoken"); const appToken = req.params["app-token"]; const publicKey = await ( await fetch("https://app.contentstack.com/.well-known/public-keys.json") ).json(); try { const { app_uid, installation_uid, organization_uid, user_uid, stack_api_key, } = jwt.verify(appToken, publicKey["signing-key"]); console.info("App token is valid!"); } catch (e) { console.error( "App token is invalid or request is not initiated from Contentstack!" ); } ``` ## IP Whitelisting with Contentstack IP Whitelisting is another security feature that gives only an approved list of IP addresses, the permission to access your domain(s). To protect your domain from potential attacks, Contentstack provides you with a specific set of IP addresses that you can whitelist. This allows you to limit and control access only to trusted IPs and lets you verify whether the data is sent from Contentstack. To receive the Contentstack IPs, contact our [Support](mailto:support@contentstack.com) team today. **Additional Resource:** You can also read further on how to [Pass Contentstack Webhooks through Firewall](https://www.contentstack.com/docs/developers/how-to-guides/pass-contentstack-webhooks-through-firewalls), in our detailed documentation. --- ## URL: https://www.contentstack.com/docs/developer-hub/sidebar-location --- title: "Entry Sidebar Location" description: "Customize the Contentstack entry editor using Sidebar Location to add custom widgets via the extension SDK." url: "https://www.contentstack.com/docs/developer-hub/sidebar-location" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-30" filename: sidebar-location.md --- # Entry Sidebar Location The Entry Sidebar Location provides powerful functionalities that you can integrate into your [stack](/docs/headless-cms/about-stack) to analyze your [entry](/docs/headless-cms/about-entries) content and recommend ideas. These sidebar locations allow users to provide additional capabilities over content, thus optimizing the content to suit their requirements. Examples of such sidebar locations are SEO tag recommendations, sentiment analysis, language translation, and so on. ## Prerequisites * [Contentstack account](https://www.contentstack.com/login/) * An app created in Developer Hub * A hosted app URL (Launch or custom hosting) ## What You Will Learn * How to add an Entry Sidebar location to your app through the Developer Hub console. * Which properties you can configure for the location. * Where the location appears in the Widgets section after installation. ## Add an Entry Sidebar Location to your App Let's see how to add entry sidebar location to your app: * **Via the Developer Hub Console:** To add the entry sidebar location to your app via the Developer Hub console, login to your [Contentstack Account](https://www.contentstack.com/login) and follow the steps given below: 1. Navigate to **App Switcher** on the top-right corner and select **Developer Hub**. 2. Select an application for which you want to add the entry sidebar location. 3. Click the **UI Locations** tab. To set the **App URL**, click the **View Hosting** link. You will be redirected to the **Hosting** tab. ![View\_Hosting.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf879b2d8d0af9821/68343990c589ead0184bdd34/View_Hosting.png) 4. In the **Hosting** tab, you can select [Hosting with Launch](/docs/developer-hub/app-hosting#hosting-with-launch) or [Custom Hosting](/docs/developer-hub/app-hosting#custom-hosting) options. Select the **Custom Hosting** option to enter the hosted URL of your application. Click the **Save** button to save your hosting configuration. ![App\_URL.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt37093a3aeb3377a9/68343990d6011e50b9ed53c9/App_URL.png) 5. Navigate to the **UI Locations** tab to configure the Entry Sidebar location. 6. Hover over the **Entry Sidebar** location, and click the **\+ Add** **UI Location** button. ![Add\_Entry\_Sidebar\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt562e67d573d8c058/6835738f434ce7d3d342f4b5/Add_Entry_Sidebar_Location.png) 7. On the resulting **Configuration** page, set up the configurations for the entry sidebar location by providing details such as **Name**, **Path**, and **Description**. You can also enable the configuration using the **Enabled** toggle button. Properties that can be specified for this UI location: * **Name (optional)**: Specifies the name of the UI location. This name will be displayed at the location after the app is installed. If not provided, the app name will be used. Ensure unique names for multiple configurations of the same location. * **Signed (optional)**: When enabled, Contentstack adds a JWT token to the initial HTTP request made for your app's first page. This token can be used to verify that the request originated from Contentstack. For more information, please refer to [Signed Locations](/docs/developer-hub/securing-your-app/). * **Path (optional)**: Enables you to define the location relative to the base URL where the app is hosted. This is particularly useful when the developer intends the app to appear in multiple locations. * **Enabled (optional)**: Determines whether the location is visible after the app installation. If not specified, the location is enabled by default. Users can manage this option post-installation via the UI Locations tab on the app’s configuration screen. You can configure any UI location as **mandatory** using the **Required** toggle button. If the toggle is enabled, the location becomes mandatory and cannot be disabled. Whereas, if the toggle is disabled, the UI location is available to use but not mandatory. **Additional Resource:** Refer to the [Marketplace App Manifest](/docs/developer-hub/app-manifest) documentation for comprehensive details. ![Entry\_Sidebar\_Configuration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltb7f0393c38fded33/6835738e56223c6d1a94a328/Entry_Sidebar_Configuration.png) 8. Finally, click the **Save** button to save the entry sidebar location’s configuration details. You will see the details of the configured UI location on the **UI Locations** tab in the **App Configuration** screen after installing the app. You can enable or disable the non-required UI locations. Apps which have the Entry Sidebar location configured will be visible in the left navigation panel under the **Widgets** section. Navigate to the [stack](/docs/headless-cms/about-stack). In the right navigation, you will see the **Widgets** icon. Click to view the sidebar widget. You will see two tabs: **Apps** and **Extensions**. * To set the app as the default, go to the **Apps** tab, click the three dots icon, and then click the **Set as Default App** option to pin the app at the top. OR * To set the extension as the default, go to the **Extensions** tab, click the three dots icon, and then click the **Set as Default Extension** option to pin the app at the top. ![Sidebar\_App\_New\_UI.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt62357667831dbf8a/66accfd56a871d2210b8db60/Sidebar_App_New_UI.png) You can create new entry sidebar locations by writing your custom code, or you can use the prebuilt [boilerplate](/docs/developer-hub/marketplace-app-boilerplate) and modify the given code to suit your requirements. --- ## URL: https://www.contentstack.com/docs/developer-hub/types-of-apps --- title: "Types of Apps" description: "Explore Contentstack apps to customize your CMS effortlessly, connect third-party services, and optimize user experience at stack or organization level." url: "https://www.contentstack.com/docs/developer-hub/types-of-apps" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-29" filename: types-of-apps.md --- # Types of Apps Apps help you extend the capabilities of our core CMS and customize its functionalities. They help you enhance the Contentstack experience by connecting to various third-party services in a few simple clicks. Contentstack currently supports two categories of apps: [Introduction to Contentstack Applications](/docs/developer-hub/introduction-to-contentstack-applications). Standard apps can be created at either the stack or organization level, while Machine-to-Machine apps are currently limited to the organization level. Let's discuss stack and organization apps. * **Stack Apps** - These apps can be installed for any specific stack, and the scope is limited only to that stack. This type of app can be installed by only the [owners](/docs/headless-cms/types-of-roles#owner)/[admins](/docs/headless-cms/types-of-roles#admin) of the stack or by the [owners/admins](/docs/administration/about-administration-roles) of the corresponding org. The org owners/admins need to be part of the stack. * **Organization Apps** - These apps have a broader scope, and the changes are applicable throughout the organization. A good example is the SCIM app that allows automatic user provisioning for all new users of the organization. This type of app can be installed by only the [owners/admins](/docs/administration/about-administration-roles)[](/docs/administration/about-administration-roles#organization-admin) of the corresponding org. ## Organization Apps Organization Apps are the apps that are installed at the Organization level, and they utilize Organization-level permissions such as SSO. **Note**: Only Organization Admins are authorized to install Organization Apps. ### Step to Create an Organization App To create/register your organization app with Contentstack, refer to the [Creating an App in Developer Hub](/docs/developer-hub/creating-an-app-in-developer-hub) documentation. ### List of UI locations in Organization Apps UI locations help you define the UI touch points where the user can experience the App. These UI Locations enable you to customize the Contentstack experience, by customizing Contentstack's default UI and behavior. For organization apps, there is only one UI location available. * [App Configuration](/docs/developer-hub/app-config-location/) ### Enable UI locations in Organization Apps 1. Click the **\+ Add** icon on App configuration to add the UI Location. ![Organization\_UI\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8cb0dda705839a97/66b1c803e3c58c3912d5cc94/Organization_UI_Location.png) 2. Add the necessary details for the app, such as its **Description**; select whether it’s **Signed** or not; provide a valid **Path**; and select if **Enabled** or not. ![App\_Config.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf7ab077c4b70eaea/65b2908b450fa44f13015b7f/App_Config.png) 3. Click the **Save** button to save the changes. ### List Webhook Events in Organization Apps [Webhooks](/docs/developer-hub/managing-webhooks-in-an-app/) provide a mechanism to send real-time information to any third-party app or service, when an event occurs in your app. Organization app only supports App events. ![List\_of\_Webhook\_Events\_in\_the\_Organization.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/bltf29a91b21ddd3aaa/66b1c8031370b663549d1554/List_of_Webhook_Events_in_the_Organization.png) ### Limitations of Organization App * Organization Apps cannot target UI locations inside individual stacks. * Organization Apps cannot target webhook inside individual stacks. **Additional Resource:** For more information, refer to the [About UI Locations](/docs/developer-hub/about-ui-locations) document to know more about each location. ## Stack Apps ### Steps to Create a Stack App To create/register your stack app with Contentstack, refer to the [Creating an App in Developer Hub](/docs/developer-hub/creating-an-app-in-developer-hub/) documentation. ### List of UI locations in Stack Apps UI locations help you define the UI touch points where the user can experience the App. These UI Locations enable you to customize the Contentstack experience, by customizing Contentstack's default UI and behavior. For stack apps, six UI locations are available: * [Custom Field](/docs/developer-hub/custom-field-location) * [Dashboard](/docs/developer-hub/dashboard-location) * [Asset Sidebar](/docs/developer-hub/asset-sidebar-location) * [App configuration](/docs/developer-hub/app-config-location) * [RTE](/docs/developer-hub/rte-location) * [Sidebar](/docs/developer-hub/sidebar-location) * [Field Modifier](/docs/developer-hub/field-modifier-location/) * [Full Page](/docs/developer-hub/full-page-location/) ![Stack\_App\_UI\_Location.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt43822c74ea1bd941/66acb07733b37f79832a69ab/Stack_App_UI_Location.png) ### Enable UI Locations in Stack Apps 1. Click the **\+ Add** button that appears when you hover on any UI Locations, to add the UI Location. Let’s consider that we add the **Custom Field** location. ![Custom\_Field.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt600f2da072ca8a5c/65b2908b55a88a11bfda5bbf/Custom_Field.png) 2. Add the necessary details for the app, such as its **Name**, **Data Type**, and **Description**; select whether it’s **Signed** or not; provide a valid **Path**; and select if **Enabled** or not. ![Custom\_Field\_Configuration.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt3ddaa7b3f091c521/65b2908bd2067b7d6f8c39e2/Custom_Field_Configuration.png) 3. Once done, click **Save**. ### List Webhook Events in Stack Apps Webhooks provide a mechanism to send real-time information to any third-party app or service. When an event occurs in your app. Stack app has both stack events and app events. ![Webhooks\_Events.png](https://images.contentstack.io/v3/assets/blt2d43f51baca745a8/blt8f979647040c41ad/65b2908c568d54319a35c60c/Webhooks_Events.png) ### Available Webhook Events for Stack App **Modules** **Events** Entry * Created * Updated * Deleted * Published * Unpublished Content Type * Created * Updated * Deleted Asset * Created * Updated * Deleted * Published * Unpublished Global Field * Created * Updated * Deleted Release * Deployed ### Limitations of Stack App * Stack Apps cannot target UI locations outside the individual stack. * Stack Apps cannot target webhook outside the individual stack. --- ## URL: https://www.contentstack.com/docs/developers/apis/administration-api --- title: "Administration API" description: "Explore Administrations APIs to manage organization user session, users, roles, audit logs, teams and SCIM operations." url: "https://www.contentstack.com/docs/developers/apis/administration-api" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-04-08" filename: administration-api.md --- # Administration API ## Introduction ### Base URL * AWS North America (AWS NA): https://api.contentstack.io * AWS Europe (EU): https://eu-api.contentstack.com * AWS Australia (AWS AU): https://au-api.contentstack.com * Azure North America (Azure NA): https://azure-na-api.contentstack.com * Azure Europe (Azure EU): https://azure-eu-api.contentstack.com * GCP North America (GCP NA): https://gcp-na-api.contentstack.com * GCP Europe (GCP EU): https://gcp-eu-api.contentstack.com ### Overview Contentstack is a headless, API-first **content management system** (**CMS**) that provides everything you need to power your web or mobile properties. To learn more about Contentstack, visit our [website](https://www.contentstack.com) or refer to our [documentation site](https://www.contentstack.com/docs) to understand what we do. The Administration APIs are used to manage your Contentstack organization. ### Content Management SDKs We have created SDKs, API references, getting started guides, and [sample apps](/docs/developers/sample-apps) for some of the popular languages and platforms. You can use them to build your own apps and manage your content from Contentstack. Contentstack Management SDKs interact with the Administration APIs and allow you to manage your organization settings. They are read-write in nature. You will find a list of all the available management SDKs under the [Content Management SDKs](/docs/developers/sdks/) section. We provide Management SDKs for the following platform: * [JavaScript](/docs/developers/sdks/content-management-sdk/javascript/about-javascript-management-sdk/) * [.NET](/docs/developers/sdks/content-management-sdk/dot-net/) * [Java](/docs/developers/sdks/content-management-sdk/java/about-java-management-sdk/) * [Python](/docs/developers/sdks/content-management-sdk/python/about-python-management-sdk/) ### Authentication Contentstack uses the authtoken or OAuth token, API key, and Organization ID to make Administration API requests. #### How to Get Authtoken Authtokens are user-specific tokens generated when user logs in to Contentstack. To retrieve the authtoken, log in to your Contentstack account by using the "[Log in to your account](/docs/developers/apis/administration-api#logging-in-out)" request. This request will return the authtoken in the response body. You can generate multiple authtokens by executing the "Log in to your account" request multiple times. These tokens do not have an expiration time limit. However, currently, there is a maximum limit of **20** valid tokens that a user can use per account at a time, to execute CMA requests. If you already have valid 20 tokens, creating a new authtoken will automatically cause the oldest authtoken to expire without warning. For SSO-enabled organizations, the "Log in to your account" request will not return the user authtoken for users who access the organization through Identity Provider login credentials. Consequently, any requests that require user authtoken will not work. Only the owner of the organization and users with permission to access the organization without SSO can use the Content Management APIs. Learn more about [REST API Usage](/docs/developers/single-sign-on/rest-api-usage). **Tip**: An alternate way to retrieve the authtoken is via **Inspect** element. If you are logged in through your browser, right-click and select **Inspect** or press “F12” to open developer tools, and select the **Network** tab. #### M2M OAuth Token **Machine-to-Machine** (**M2M**) apps are designed for secure server-to-server communication, eliminating the need for user intervention. These apps use the OAuth 2.0 protocol for authentication and authorization, making them highly secure and reliable for machine-to-machine interactions. Refer to our guide on [Machine-to-Machine Apps](/docs/developers/developer-hub/machine-to-machine-apps) for more information. **Note**: The M2M app is currently in Beta. Reach out to our [support](mailto:support@contentstack.com) team to enable it for your organization. #### How to Get Organization ID To retrieve the Organization ID, perform the steps given below: 1. Select the Organization from the dropdown on the header and click the “Org Admin” icon in the left navigation panel. Or, you can simply click the “Org Admin” cog beside the Organization that you intend to open. 2. Click the **Info** tab to access the section. **Note**: Only organization [Owner](/docs/administration/about-administration-roles#organization-owner) and [Admin](/docs/administration/about-administration-roles#organization-admin) roles can view the Organization ID. ### Rate limiting Rate limit is the maximum number of requests you can make using Contentstack’s API in a given time period. By default, the Contentstack enforces the following rate limits: * **Read (GET) requests**: 10 requests per second per organization. * **Write (POST/PUT/DELETE) requests**: 10 requests per second per organization. Your application will receive the HTTP 429 response code if the requests for a given time period exceed the defined rate limits. **Note**: Bulk actions do not follow the standard CMA rate limit of 10 requests per second. The default rate limit for bulk actions is **1 request per second** i.e., in one second you can make only one bulk action API request. We also have set a limit on stack creation. Organizations can create only one stack per minute. The aforementioned limits are configurable depending on your plan. For more information, contact our [support](mailto:support@contentstack.com) team. To get the current rate limit status, you can check the returned HTTP headers of any API request. These rate limits are reset at the start of each time period. Headers Description X-RateLimit-Limit The maximum number of request a client is allowed to make per second per organization. X-RateLimit-Remaining The number of requests remaining in the current time period. ### API conventions * The base URL for Analytics API for different regions can be found in the [Base URL](#base-url) section. * URL paths are written in lower case. * Query parameters and JSON fields use lower case, with underscores (\_) separating words. * The success/failure status of an operation is determined by the HTTP status it returns. Additional information is included in the HTTP response body. * The JSON number type is bounded to a signed 32-bit integer. ### Errors If there is something wrong with the API request, Contentstack returns an error. Contentstack uses conventional, standard HTTP status codes for errors, and returns a JSON body containing details about the error. In general, codes in the 2xx range signify success. The codes in the 4xx range indicate error, mainly due to information provided (for example, a required parameter or field was omitted). Lastly, codes in the 5xx range mean that there is something wrong with Contentstack’s servers; it is very rare though. Let’s look at the error code and their meanings. HTTP status code Description 400 Bad Request The request was incorrect or corrupted. 401 Access Denied The login credentials are invalid. 403 Forbidden Error The page or resource that is being accessed is forbidden. 404 Not Found The requested page or resource could not be found. 412 Pre Condition Failed The entered API key is invalid. 422\* Unprocessable Entity (also includes Validation Error and Unknown Field) The request is syntactically correct but contains semantic errors. 429 Rate Limit Exceeded The number of requests exceeds the allowed limit for the given time period. 500 Internal Server Error The server is malfunctioning and is not specific on what the problem is. 502 Bad Gateway Error A server received an invalid response from another server. 504 Gateway Timeout Error A server did not receive a timely response from another server that it was accessing while attempting to load the web page or fill another request by the browser. **\*** Contentstack returns the **422** HTTP status code with the "UID is not valid" message when an entry doesn’t exist, has been deleted, or belongs to a different content type. To check if an entry has been deleted, first try retrieving it from the CDN, then from the origin server if needed. This error can also occur due to invalid query parameters, such as using an empty array with logical operators like $and. Always ensure your queries contain valid conditions. For example, {"$and": \[{}, {}\]} is not a valid query. **Note**: The error codes that we get in the JSON response are not HTTP error codes but are custom Contentstack error codes that are used for internal purposes. ## API Reference ### User Session User session consists of calls that will help you to sign in and sign out of your Contentstack account. #### Logging in/out The Log in to your account request is used to sign in to your Contentstack account and obtain the authtoken. **Note:** The authtoken is a mandatory parameter when executing Content Management API calls. However, when executing Content Delivery API calls, use [the Content Delivery base URL](/docs/developers/apis/content-delivery-api/) for your region, and pass the environment-specific delivery token against the access\_token key. In the 'Body' section, enter the user credentials in JSON format. The JSON query will include the email address, the Contentstack user account password, and the two-factor authentication token (if enabled) received in the Authy app or SMS. For SSO-enabled organizations, the ‘Log in to your account’ request will not return the user authtoken for users. In this case, you can try out the following: * The owner of an organization can access the SSO-enabled organization through Contentstack credentials and retrieve the user authtoken to make Content Management API requests. * Disable 'Strict Mode' for an SSO-enabled organization, and users who have the ability to access their organization through Contentstack credentials can retrieve the authtoken to make Content Management API requests. For more details, refer the [REST API Usage - Content Management API](/docs/developers/single-sign-on/rest-api-usage#content-management-api) section in the Single Sign-On page. The Log out of your account call is used to sign out the user of Contentstack account. ### Users All accounts registered with Contentstack are known as [Users](/docs/developers/invite-users-and-assign-roles/about-stack-users). A [stack](/docs/developers/set-up-stack/about-stack) can have many users with varying permissions and roles.  **Note:** Before executing any calls, retrieve the authtoken by authenticating yourself via the Log in call of User Session. The authtoken is returned in the 'Response' body of the Log in call and is mandatory in all of the calls. Example: blt3cecf75b33bb2ebe #### Get User The Get user 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. #### Update User The Update User API Request updates the details of an existing user account. Only the information entered here will be updated, the existing data will remain unaffected. When executing the API call, under the 'Body' section, enter the information of the user that you wish to update. This information should be in JSON format. **Additional Resource:** To update the role of an existing user, refer to the [Update Existing User Role](#update-existing-user-role) API Request. #### Activate User The Activate a user account call activates the account of a user after signing up. For account activation, you will require the token received in the activation email. #### Request Password The Request for a password API helps to get a temporary password to log into an account in case a user has forgotten the login password. Using this temporary password, you can log in to your account and [set a new password](/docs/developers/password-related-security/forgot-reset-password) for your Contentstack account. In the 'Body' section, provide the user's email address in JSON format. **Note:** The “**Reset password**” token that you receive in your email address is valid only for the **next 60 minutes** after it’s generated. Post that, it expires and you need to rerun the [Reset password](/docs/developers/apis/content-management-api/#reset-password) API request to generate a new token. #### Reset Password The Reset password API request allows you to reset your Contentstack account password. **Note:** Before using this API request, you need to execute the [Request for a password](/docs/developers/apis/content-management-api/#request-for-a-password) API request to receive the reset password token in your registered email address. When executing the request, in the 'Body' section, you need to provide the token that you receive via email, your new password, and password confirmation in JSON format. **Note**: The "**Reset password**" token is valid only for the **next 60 minutes** after it’s generated. Post that, it expires and you need to rerun the same request to generate a new token. ### Organizations [Organization](/docs/owners-and-admins/about-organizations) is the top-level entity in the hierarchy of Contentstack, consisting of [stacks](/docs/developers/set-up-stack/about-stack) and stack resources, and users. Organization allows easy management of projects as well as users within the Organization. #### Get All Organizations The Get all organizations call lists all organizations related to the system user in the order that they were created. #### Get Single Organization The Get a single organization call gets the comprehensive details of a specific organization related to the system user. #### Organization Roles The Get all roles in an organization call gives the details of all the roles that are set to users in an Organization. When executing the API call, provide the Organization's UID. #### Organization Users The Get Organization users by email request retrieves information about users within an organization based on their email addresses. When executing the API request, you need to provide the organization UID. In the request body, you need to enter the email IDs of the users whose details you want to retrieve from the mentioned organization, like as follows: ``` { "emails":["abc@sample.com", "xyz@sample.com", …]} ``` **Note:** If you do not pass the request body, you will get the details of all the users in the Organization. The Add users to organization request allows you to send invitations to add users to your organization. Only the owner or the admin of the organization can add users. When executing the API request, in the request body, provide the organization admin/member role ID, obtained from the Get all roles in an Organization request. Also, provide the stack role UID of the user in the request body, obtained from the Get all roles request. The Remove users from organization request allows you to remove existing users from your organization. **Note**: Only the owner or the admin of the organization can remove users. When executing the API request, provide the organization UID. In the “Body” section, you need to enter the email IDs of the users you want to remove from the organization as follows: ``` { "emails":[ "abc@sample.com", "xyz@sample.com" ] } ``` The Resend pending organization invitation request allows you to resend the Organization invitations to users who have not yet accepted the earlier invitation. Only the owner or the admin of the Organization can resend the invitation to add users to an Organization. When executing Get all organization invitations request, you get the invitation status that helps to identify the pending invitations and share UID. When executing the Resend pending organization invitation API request, provide the Organization UID and share UID. The Get all organization invitations call gives you a list of all the Organization invitations. Only the owner or the admin of the Organization can resend the invitation to add users to an Organization. When executing the API call, provide the Organization UID. #### Transfer Organization Ownership The Transfer organization ownership call transfers the ownership of an Organization to another user. When the call is executed, an email invitation for accepting the ownership of a particular Organization is sent to the specified user. Once the specified user accepts the invitation by clicking on the link provided in the email, the ownership of the Organization gets transferred to the new user. Subsequently, the previous owner will no longer have any permission on the Organization. When executing the API call, provide the Organization UID. #### Organization Stacks The Get all stacks in an organization call fetches the list of all stacks in an Organization. When executing the API call, provide the Organization UID. #### Organization Logs The Get organization log details request is used to retrieve the audit log details of an organization. You can apply queries to filter the results. Refer to the [Queries](/docs/developers/apis/content-delivery-api#queries) section for more details. When executing the API call, provide the Organization UID. **Tip**: This request returns only the first **25 audit log items** of the specified organization. If you get more than **25 items** in your response, refer to the [Pagination](/docs/developers/apis/content-delivery-api#pagination) section to retrieve all the log items in a paginated form. The Get organization log item request is used to retrieve a specific item from the audit log of an organization. When executing the Get organization log details request, you get the Organization UID and Log UID. Use these values to execute the Get organization log item API request. ### Teams Teams, simplifies role and permission management by grouping users. Instead of assigning roles individually or at the stack level, you can directly assign roles to a team. This ensures that all team members share the same set of role permissions. #### Get all teams The Get all teams request returns comprehensive information about all the teams in your organization, so you can review how users are grouped and which organization roles, stack roles, and project roles each team carries. Contentstack identifies the organization from the organization\_uid request header and returns the teams that the requesting user can access. By default, the response is wrapped in a { count, teams } object and paginated, with x-total-results, x-skip, and x-limit returned as response headers. Use skip and limit to page through the results (default limit is 500), or set skip\_pagination to “true” to receive every team as a plain array without the wrapper. Refine the results with typeahead to match team names, user\_uid or stack\_api\_key to filter by membership or stack mapping, and asc or desc to sort. Set include\_user\_details to “true” to expand each team’s users array from UID strings into full user objects, and group\_roles\_by\_domain to “true” to add a rolesByDomain object that groups each team’s roles by domain. When the organization has no teams, the request returns a 204 response with no body. #### Get a single team The Get a single team request returns comprehensive information about one team in your organization, including its members and its assigned organization roles, stack role mappings, and project roles. Pass the team’s UID as team\_uid in the request path and your organization’s UID in the organization\_uid header. By default, the users array contains user UID strings. Set include\_user\_details to “true” to expand them into full user objects that include uid, username, email, firstName, lastName, active, and orgInvitationStatus. The uid and \_id fields hold the same value; use either to reference the team in follow-up requests. A request for a team that does not exist returns a 404 error. #### Create a team The Create a team request creates a team in the specified organization and assigns its initial members and roles in a single call. Provide the team name (required) and, optionally, a description. Add members through the users array, where each entry identifies a user by email or uid. Grant access by including organizationRoles (organization-level role UIDs), stackRoleMapping (per-stack role assignments), and projectRoles (project-scoped roles; the am domain is currently supported). The users and stackRoleMapping arrays are required, but you can send them empty. On success, the request returns a 201 response with the created team, including its generated uid. The users array in the response contains UID strings; use the Get a single team request with include\_user\_details set to “true” to resolve full user objects. Invalid input, such as an unknown role or stack, returns a 400 error that identifies the failed field. #### Update a team The Update a team request modifies an existing team, including its name, description, members, organization roles, stack role mappings, and project roles. This request replaces values rather than merging them. The users, organizationRoles, and stackRoleMapping values you send become the team’s complete set, so include every member and role you want to keep, not only the ones you are adding or changing. To clear one of these, send an empty array, for example "users": \[\]. The projectRoles field behaves differently: it stays unchanged only when you omit it entirely, and sending it with any value, including \[\], replaces the existing project roles. Pass the team’s UID as team\_uid in the request path and your organization’s UID in the organization\_uid header. On success, the request returns a 200 response with the updated team. Set include\_user\_details to “true” to receive full user objects in the response. #### Delete a team The Delete a team request removes an existing team along with its members and assigned roles. Deletion is a soft delete: Contentstack marks the team as deleted and excludes it from subsequent reads instead of removing the record permanently. Deleting a team revokes the access that the team granted through its organization, stack, and project roles, unless a member holds the same access through another team or a direct assignment. Pass the team’s UID as team\_uid in the request path and your organization’s UID in the organization\_uid header. A successful request returns a 200 response, and deleting a team that does not exist returns a 404 error. #### Users All accounts registered with Contentstack are known as [Users](/docs/developers/invite-users-and-assign-roles/about-stack-users). An organization can have many users with varying permissions and roles. ##### Get all users of team The Get all users of team request retrieves information about all the users associated with a particular team. Additionally, you can also set the query parameters: includeUserDetails or include\_count to true to include user details and the count of users in the response. ##### Add users to team The Add users to team request allows you to send invitations to add users and assign them organizational and stack roles. **Note**: Only the Owner or the Admin of the organization can add users to a team. You need to pass the email IDs of the users in the request body as follows: ``` { "emails": [ "user1@contentstack.com", "user2@contentstack.com"]} ``` ##### Remove a user from team The Remove a user from team request allows you to remove an existing user from a particular team. **Note**: Only the Owner or the Admin of the organization can remove users from a team. #### Stack Role Mapping When adding users to a team, you have the option to simultaneously assign roles for the available stacks within the organization. This process involves mapping stack roles for all the users added to the team. ##### Get all stack role mapping The Get all stack role mapping request allows you to retrieve details of all associated stacks for a specified team in your organization. ##### Add a stack role mapping The Add a stack role mapping request allows you to associate users from a specified team with the available stacks in your organization. You need to pass the API key of the stack and the role UIDs in the request body as follows: ``` { "stackApiKey": "stack_api_key", "roles": [ "role_one_uid", "role_two_uid" ]} ``` ##### Update a stack role mapping The Update a stack role mapping request allows you to update the stack roles for a specific stack in your organization. You need to pass the role UIDs in the request body as follows: ``` { "roles": [ "role_uid" ]} ``` ##### Remove a stack role mapping The Remove a stack role mapping request allows you to delete the associations of team users for a specified stack in your organization. --- ## URL: https://www.contentstack.com/docs/developers/apis/administration-api/organizations --- title: "Administration | Organizations" description: "

    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.

    " url: "https://www.contentstack.com/docs/developers/apis/administration-api/organizations" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: organizations.md --- # Administration | Organizations [Organization](/docs/administration/about-organizations) is the top-level entity in the hierarchy of Contentstack, consisting of [stacks](/docs/headless-cms/about-stack) and stack resources, and users. Organization allows easy management of projects as well as users within the Organization. ## Get All Organizations ### Get all Organizations **GET** `/organizations?limit={limit_value}&skip={skip_value}&asc={field_uid}&desc={field_uid}&include_count={boolean_value}&typeahead={value_to_be_searched}` The Get all organizations call lists all organizations related to the system user in the order that they were created. #### Query Parameters - **limit** (optional) The ‘limit’ parameter will return a specific number of entries in the output. Example, if there are 10 organizations and you wish to fetch only the first 2, you need to specify '2' as the value in this parameter. - **skip** (optional) The ‘skip’ parameter will skip a specific number of organizations in the output. Example, if there are 12 organizations and you want to skip the first 2 to get only the last 10 in the response body, you need to specify ‘2’ here. - **asc** (optional) 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** (optional) 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** (optional) The ‘include\_count’ parameter returns the total number of organizations related to the user. Example: If you wish to know the total number of organizations, you need to mention ‘true’. - **typeahead** (optional) The typeahead parameter is a type of filter that allows you to perform a name-based search on all organizations based on the value provided. Example, if we have four organizations named ‘ABC’, ‘ABC1’, ‘XYZ’, and ‘ACC’, and we provide ‘ABC’ as the value to this parameter, the search result will return the organizations ‘ABC’ and ‘ABC1’ as the output. #### Headers - **authtoken** (required) Enter the authtoken of the user. Default: `your_authtoken` #### Sample Response ```json { "organizations":[ { "uid":"blt6a6f6666ab666aa6", "name":"Sample", "plan_id":"cms_plan", "owner_uid":"blt1f1cddeaefbefdd111b11111", "expires_on":"2029-12-31T00:00:00.000Z", "enabled":true, "is_over_usage_allowed":true, "created_at":"2016-05-31T06:30:40.993Z", "updated_at":"2019-05-24T10:26:41.861Z", "settings":{ "sso":{ "id":"sample-sso", "strict":true, "session_timeout":12, "sso_roles":{ "enabled":false }, "saml":{ "acs_url":"https://app.contentstack.com/api/sso/saml2/sample-sso", "entity_id":"https://app.contentstack.com", "version":2, "name_id_format":"Email Address", "attributes":[ "email", "first_name", "last_name" ] } } } }, { "uid":"blt4444c44ea4ddf444", "name":"Sample2", "plan_id":"testing", "owner_uid":"blt22e22222d22d2f22222a2b2f", "is_transfer_set":false, "expires_on":"2020-01-31T00:00:00.000Z", "enabled":true, "is_over_usage_allowed":true, "created_at":"2016-09-30T05:08:10.076Z", "updated_at":"2019-04-18T08:45:57.936Z", "settings":{ "sso":{ "sso_roles":{ "enabled":false } } }, "owner":true } ] } ``` ## Get Single Organization ### Get a single Organization **GET** `/organizations/{organization_uid}?include_plan={boolean_value}` The Get a single organization call gets the comprehensive details of a specific organization related to the system user. #### URL Parameters - **organization_uid** (required) Enter the UID of the organization that you want to retrieve. #### Query Parameters - **include_plan** (optional) The include\_plan parameter includes the details of the plan that the organization has subscribed to. To include the details of the subscribed plan in the Response body, enter ‘true’. #### Headers - **authtoken** (required) Enter the authtoken of the user. Default: `your_authtoken` #### Sample Response ```json { "organizations": [{ "uid": "blt4444c44ea4ddf444", "name": "Sample2", "plan_id": "testing", "owner_uid": "blt22e22222d22d2f22222a2b2f", "is_transfer_set": false, "expires_on": "2020-01-31T00:00:00.000Z", "enabled": true, "is_over_usage_allowed": true, "created_at": "2016-09-30T05:08:10.076Z", "updated_at": "2019-04-18T08:45:57.936Z", "settings": { "sso": { "sso_roles": { "enabled": false } } }, "plan": { "plan_id": "testing", "name": "Testing", "message": "", "price": "$0", "features": [{ "uid": "users", "name": "Users", "limit": 1000, "enabled": true }, { "uid": "stacks", "name": "Stacks", "limit": 10000000, "enabled": true }, { "uid": "content_types", "name": "Content Types", "limit": 10000000, "enabled": true }, { "uid": "assets", "name": "Assets", "limit": 10000000, "enabled": true }, { "uid": "entries", "name": "Entries", "limit": 10000000, "enabled": true }, { "uid": "environments", "name": "Environments", "limit": 40000000, "enabled": true }, { "uid": "getLimit", "name": "GET Requests Limit", "limit": 100, "enabled": true }, { "uid": "limit", "name": "API Requests Limit", "limit": 100, "enabled": true }, { "uid": "bulkLimit", "name": "Bulk Requests Limit", "limit": 15, "enabled": true }, { "uid": "sso", "name": "SSO", "limit": 1, "enabled": true }, { "uid": "workflow", "name": "Workflow", "limit": 10, "enabled": true }, { "uid": "globalSearch", "name": "globalSearch", "limit": 1, "enabled": true }, { "uid": "extension", "name": "extension", "limit": 1, "enabled": true }, { "uid": "extension_widget", "name": "Custom Widgets", "limit": 1, "enabled": true }, { "uid": "maxExtensionScopeCtRef", "name": "Scope of CT for custom widgets", "limit": 23, "enabled": true }, { "uid": "workflow_old_api", "name": "workflow_old_api", "limit": 20, "enabled": true }, { "uid": "bulk-action", "name": "Bulk Action", "limit": 25, "enabled": true }, { "uid": "ssoEntityId", "name": "SSO Entity ID", "limit": 1, "enabled": true }, { "uid": "graphql", "name": "GraphQL", "limit": 100, "enabled": true }, { "uid": "graphqlLimit", "name": "GraphQL Limit", "limit": 1, "enabled": true }, { "uid": "deliveryTokens", "name": "Delivery Tokens", "limit": 3, "enabled": true }, { "uid": "ssoRoles", "name": "SSO Roles", "limit": 1, "enabled": true }, { "uid": "dashboard_widget", "name": "Dashboard Widget", "limit": 1, "enabled": true }, { "uid": "total_extensions", "name": "Total Extensions", "limit": 50, "enabled": true }, { "uid": "analyticsDashboard", "name": "Analytics Dashboard", "limit": 1, "enabled": true }, { "uid": "maxDynamicBlocksPerContentType", "name": "maxDynamicBlocksPerContentType", "limit": 20, "enabled": true }, { "uid": "maxDynamicBlockDefinations", "name": "maxDynamicBlockDefinations", "limit": 20, "enabled": true }, { "uid": "maxDynamicBlockObjects", "name": "maxDynamicBlockObjects", "limit": 20, "enabled": true }, { "uid": "dashboard", "name": "Dashboard", "enabled": true, "limit": 1 }, { "uid": "languageFallback", "name": "Fallback Language", "enabled": true, "limit": 1 }, { "uid": "fieldLevelLocalization", "name": "fieldLevelLocalization", "limit": 1, "enabled": true }, { "uid": "stackCreationLimit", "name": "Stack Creation Limit", "enabled": true, "limit": 10 }, { "uid": "inProgressEntries", "name": "In-Progress Entries", "enabled": true, "limit": 1 }, { "uid": "publishLocalizedVersions", "name": "publishLocalizedVersions", "limit": 50, "enabled": false } ], "created_at": "2017-12-15T12:18:34.602Z", "updated_at": "2019-07-11T12:52:44.965Z" }, "owner": true }] } ``` ## Organization Roles ### Get all roles in an Organization **GET** `/organizations/{organization_uid}/roles?limit={limit_value}&skip={skip_value}&asc={field_uid}&desc={field_uid}&include_count={boolean_value}&include_stack_roles={boolean_value}` The Get all roles in an organization call gives the details of all the roles that are set to users in an Organization. When executing the API call, provide the Organization's UID. #### URL Parameters - **organization_uid** (required) Enter the UID of your Organization. #### Query Parameters - **limit** (optional) The ‘limit’ parameter will return a specific number of Organization roles in the output. Example, if there are 10 organization roles and you wish to fetch only the first 2, you need to specify '2' as the value in this parameter. - **skip** (optional) The ‘skip’ parameter will skip a specific number of Organization roles in the output. For example, if there are 12 organization roles and you want to skip the first 2 to get only the last 10 in the response body, you need to specify ‘2’ here. - **asc** (optional) The ‘asc’ parameter allows you to sort the list of organization roles in an ascending order on the basis of a parameter. - **desc** (optional) The ‘desc’ parameter allows you to sort the list of organization roles in a descending order on the basis of a parameter. - **include_count** (optional) The ‘include\_count’ parameter returns the total number of roles in an organization. For example: If you want to know the total number of roles in an organization, you need to mention ‘true’. - **include_stack_roles** (optional) The ‘include\_stack\_roles’ parameter, when set to ‘true’, includes the details of stack-level roles in the Response body. #### Headers - **authtoken** (required) Enter the authtoken of the user. Default: `your_authtoken` #### Sample Response ```json { "roles": [{ "uid": "blt888bdcb888fefc88d8888e8a", "name": "Admin", "description": "Admin Role", "org_uid": "blt6eb666a6feb6666b6b6e666e", "admin": true, "default": true, "users": [ "blt33dd3fd33333333e33f3aa33", "bltf44c4ca4f444e444", "blt55bcad5ae5cc5b5d" ], "created_at": "2017-09-17T11:50:52.557Z", "update_at": "2017-09-17T11:50:52.557Z" }, { "uid": "blt084e2101471d9d2a27a5abb4", "name": "Member", "description": "Member Role", "org_uid": "blt6eb149a1feb2263b6b6e454e", "default": true, "users": [ "blt11dd3fd11111111e11f1aa11", "bltf22c2ca2f2222e222", "blt22bcad2ae2cc2b2d" ], "created_at": "2017-09-17T11:50:52.190Z", "update_at": "2017-09-17T11:50:52.190Z" } ] } ``` ## Organization Users ### Get Organization users by email **POST** `/organizations/{organization_uid}/share/search` The Get Organization users by email request retrieves information about users within an organization based on their email addresses. When executing the API request, you need to provide the organization UID. In the request body, you need to enter the email IDs of the users whose details you want to retrieve from the mentioned organization, like as follows: ``` { "emails":["abc@sample.com", "xyz@sample.com", …]} ``` **Note:** If you do not pass the request body, you will get the details of all the users in the Organization. #### URL Parameters - **organization_uid** (required) Enter the UID of the Organization of which you want to retrieve the list of users. #### Query Parameters - **include_roles** (optional) The include\_roles parameter, when set to “true,” will display the details of the roles that are assigned to the organization users. - **include_user_details** (optional) The include\_user\_details parameter, when set to “true,” lets you know whether the user has enabled Two-factor Authentication or not. - **include_count** (optional) The include\_count parameter returns the total number of organization users. Example: If you wish to know the total number of organization invitations, you need to mention “true.” - **limit** (optional) The limit parameter will return a specific number of organization users in your output. Example, if you want to retrieve details of 10 users and you wish to fetch only the first 5, you need to specify “5” as the value in this parameter. - **skip** (optional) The skip parameter will skip a specific number of organization users in your output. Example, if you want to retrieve details of 10 users and you wish to skip the latest 5, you need to specify “5” as the value in this parameter. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` #### Sample Response ```json { "shares": [ { "uid": "blt1231231231231231", "email": "abc@sample.com", "user_uid": "blteaf2e44ba211bb3f", "message": "", "org_uid": "blt3213213213213213", "org_roles": [ "blt2132132132132132" ], "invited_by": "blt1321321321321321", "invited_at": "2023-10-13T12:17:02.473Z", "status": "accepted", "acceptance_token": "blt1112223331231231", "created_at": "2023-10-13T12:17:02.468Z", "updated_at": "2023-10-13T12:17:25.670Z" } ] } ``` ### Add users to Organization **POST** `/organizations/{organization_uid}/share` The Add users to organization request allows you to send invitations to add users to your organization. Only the owner or the admin of the organization can add users. When executing the API request, in the request body, provide the organization admin/member role ID, obtained from the Get all roles in an Organization request. Also, provide the stack role UID of the user in the request body, obtained from the Get all roles request. #### URL Parameters - **organization_uid** (required) Enter the UID of the organization to which you want to add users. #### Headers - **authtoken** (required) Enter the authtoken of the user. Default: `your_authtoken` - **Content-Type** (required) Default: `application/json` #### Sample Response ```json { "notice": "The invitation has been sent successfully.", "shares": [{ "uid": "bltdad32690d8ac4698f4a9fc24", "email": "aravind.kumar+2@raweng.com", "user_uid": "blt65a26b0aae48wexft43463", "message": "Test Message", "org_uid": "bltad182661f48a9afe1d00cdc2", "org_roles": [ "blt18d4b92df0b3b432975188a7" ], "invited_by": "bltf9252892ba54cfc0811eb745", "invited_at": "2017-09-17T19:46:48.987Z", "status": "pending", "created_at": "2017-09-17T19:46:48.981Z", "update_at": "2017-09-17T19:46:48.981Z" }, { "uid": "bltcbccc241b3a4da1c352f8cec", "email": "aravind.kumar+1@raweng.com", "user_uid": "blt65a26b0aae48223c7ead5c30", "message": "Test Message", "org_uid": "bltad182661f48a9afe1d00cdc2", "org_roles": [ "blt3733b2ca83073f4c71a41caf" ], "invited_by": "bltf9252892ba54cfc0811eb745", "invited_at": "2017-09-17T19:46:48.990Z", "status": "accepted", "created_at": "2017-09-17T19:46:48.982Z", "update_at": "2017-09-17T19:46:48.982Z" }, { "uid": "bltb01c45c6c8e9326b6ba94caf", "email": "aravind.kumar+3@raweng.com", "message": "Test Message", "org_uid": "bltad182661f48a9afe1d00cdc2", "org_roles": [ "blt3733b2ca83073f4c71a41caf" ], "invited_by": "bltf9252892ba54cfc0811eb745", "invited_at": "2017-09-17T19:46:48.992Z", "status": "pending", "created_at": "2017-09-17T19:46:48.983Z", "update_at": "2017-09-17T19:46:48.983Z" } ] } ``` ### Remove users from organization **DELETE** `/organizations/{organization_uid}/share` The Remove users from organization request allows you to remove existing users from your organization. **Note**: Only the owner or the admin of the organization can remove users. When executing the API request, provide the organization UID. In the “Body” section, you need to enter the email IDs of the users you want to remove from the organization as follows: ``` { "emails":[ "abc@sample.com", "xyz@sample.com" ] } ``` #### URL Parameters - **organization_uid** (required) Enter the UID of the organization from which you want to remove users. #### Headers - **authtoken** (required) Enter the authtoken of the user. Default: `your_authtoken` - **Content-Type** (required) Enter "application/json" to pass a request body. Default: `application/json` #### Sample Response ```json { "notice":"The invitation has been deleted successfully.", "shares":[ { "uid":"bltdad32690d8ac4698f4afc1", "email":"abc@sample.com", "user_uid":"blt65a26b0aae48wexft43", "org_uid":"bltad661f48a9afe1d00cd2", "org_roles":[ "blt18d4b92df0b3b432975188a7" ], "invited_by":"bltf922a54cfc0811eb7", "invited_at":"2017-09-17T19:46:48.987Z", "status":"pending", "created_at":"2019-03-12T05:21:40.015Z", "updated_at":"2019-03-12T05:21:40.015Z", "access_without_sso":true }, { "uid":"bltcbc41b34a1c352f8ce", "email":"xyz@sample.com", "user_uid":"blt65a26b0aae482c7d5c3", "message":"Test Message", "org_uid":"bltad161f48a9afe1d00cd2", "org_roles":[ "blt3733b2ca83073f4c71a4ca" ], "invited_by":"blte75599b1e529fa3a", "invited_at":"2020-03-06T06:29:13.510Z", "status":"pending", "created_at":"2020-03-06T06:29:13.510Z", "updated_at":"2020-03-06T06:29:13.510Z" } ] } ``` ### Resend pending Organization invitation **GET** `/organizations/{organization_uid}/share/{share_uid}/resend_invitation` The Resend pending organization invitation request allows you to resend the Organization invitations to users who have not yet accepted the earlier invitation. Only the owner or the admin of the Organization can resend the invitation to add users to an Organization. When executing Get all organization invitations request, you get the invitation status that helps to identify the pending invitations and share UID. When executing the Resend pending organization invitation API request, provide the Organization UID and share UID. #### URL Parameters - **organization_uid** (required) Enter the UID of the organization for which you want to resend invitation. - **share_uid** (required) Enter the share UID of the organization that you transferred earlier. #### Headers - **authtoken** (required) Enter the authtoken of the user. Default: `your_authtoken` #### Sample Response ```json { "notice": "The invitation has been resent successfully." } ``` ### Get all Organization invitations **GET** `/organizations/{organization_uid}/share?limit={limit_value}&skip={skip_value}&asc={field_uid}&desc={field_uid}&include_count={boolean_value}&include_roles={boolean_value}&include_invited_by={boolean_value}&include_user_details={boolean_value}&typeahead={value}` The Get all organization invitations call gives you a list of all the Organization invitations. Only the owner or the admin of the Organization can resend the invitation to add users to an Organization. When executing the API call, provide the Organization UID. #### URL Parameters - **organization_uid** (required) Enter the UID of the Organization of which you want to retrieve the list of sent invitations. #### Query Parameters - **limit** (optional) The ‘limit’ parameter will return a specific number of sent organization invitations in the output. Example, if 10 invitations were sent out and you wish to fetch only the first 8, you need to specify '2' as the value in this parameter. - **skip** (optional) The ‘skip’ parameter will skip a specific number of organization roles in the output. Example, if there are 12 organization roles and you want to skip the last 2 to get only the first 10 in the response body, you need to specify ‘2’ here. - **asc** (optional) The ‘asc’ parameter allows you to sort the list of organization invitations in ascending order on the basis of a specific parameter. - **desc** (optional) The ‘desc’ parameter allows you to sort the list of organization invitations in descending order on the basis of a specific parameter. - **include_count** (optional) The ‘include\_count’ parameter returns the total number of organization invitations sent out. Example: If you wish to know the total number of organization invitations, you need to mention ‘true’. - **include_roles** (optional) The ‘include\_roles’ parameter, when set to ‘true’, will display the details of the roles that are assigned to the user in an organization. - **include_invited_by** (optional) The ‘include\_invited\_by’ parameter, when set to ‘true’, includes the details of the user who sent out the organization invitation. - **include_user_details** (optional) The ‘include\_user\_details’ parameter, when set to ‘true’, lets you know whether the user who has been sent the organization invitation has enabled Two-factor Authentication or not. - **typeahead** (optional) The ‘typeahead’ parameter allows you to perform a name-based search on all the stacks on an organization based on the value provided. For example, it allows you to perform an email-ID-based search on all users based on the email ID provided. #### Headers - **authtoken** (required) Enter the authtoken of the user. Default: `your_authtoken` #### Sample Response ```json { "shares": [ { "uid": "bltcbccc241b3a4da1c352f8cec", "email": "aravind.kumar+1@raweng.com", "user_uid": "blt65a26b0aae48223c7ead5c30", "message": "Test Message", "org_uid": "bltad182661f48a9afe1d00cdc2", "org_roles": [ "blt3733b2ca83073f4c71a41caf" ], "invited_by": "bltf9252892ba54cfc0811eb745", "invited_at": "2017-09-17T19:46:48.990Z", "status": "accepted", "created_at": "2017-09-17T19:46:48.982Z", "update_at": "2017-09-17T19:46:48.982Z" }, { "uid": "bltb01c45c6c8e9326b6ba94caf", "email": "aravind.kumar+3@raweng.com", "user_uid": "blt3a17bcc7c0ec0930caedccf2", "message": "Test Message", "org_uid": "bltad182661f48a9afe1d00cdc2", "org_roles": [ "blt3733b2ca83073f4c71a41caf" ], "invited_by": "bltf9252892ba54cfc0811eb745", "invited_at": "2017-09-17T19:46:48.992Z", "status": "pending", "created_at": "2017-09-17T19:46:48.983Z", "update_at": "2017-09-17T20:24:22.440Z" } ], "count": 3 } ``` ## Transfer Organization Ownership ### Transfer Organization ownership **POST** `/organizations/{organization_uid}/transfer-ownership` The Transfer organization ownership call transfers the ownership of an Organization to another user. When the call is executed, an email invitation for accepting the ownership of a particular Organization is sent to the specified user. Once the specified user accepts the invitation by clicking on the link provided in the email, the ownership of the Organization gets transferred to the new user. Subsequently, the previous owner will no longer have any permission on the Organization. When executing the API call, provide the Organization UID. #### URL Parameters - **organization_uid** (required) Enter the UID of the organization that you want to transfer to other user. #### Headers - **authtoken** (required) Enter the authtoken of the user. Default: `your_authtoken` #### Sample Response ```json { "notice": "Email has been successfully sent to the user." } ``` ## Organization Stacks ### Get all stacks in an Organization **GET** `/organizations/{organization_uid}/stacks?limit={limit_value}&skip={skip_value}&asc={field_uid}&desc={field_uid}&include_count={boolean_value}&typeahead={value_to_be_searched}` The Get all stacks in an organization call fetches the list of all stacks in an Organization. When executing the API call, provide the Organization UID. #### URL Parameters - **organization_uid** (required) Enter the UID of the Organization of which you want to retrieve all the stacks. #### Query Parameters - **limit** (optional) The ‘limit’ parameter will return a specific number of stacks in the output. Example, if there are 10 organization stacks and you wish to fetch only the first 2, you need to specify '2' as value in this parameter. - **skip** (optional) The ‘skip’ parameter will skip a specific number of organization stacks in the output. Example, if there are 12 stacks and you want to skip the last 2 to get only the first 10 in the response body, you need to specify ‘2’ here. - **asc** (optional) The ‘asc’ parameter allows you to sort the list of stacks in an organization in the ascending order. - **desc** (optional) The ‘desc’ parameter allows you to sort the list of stacks in an organization in the descending order. - **include_count** (optional) The ‘include\_count’ parameter returns the total number of stacks in an organization. Example: If you wish to know the total number of stacks in your organization, you need to mention ‘true’. - **typeahead** (optional) The ‘typeahead’ parameter allows you to perform a name-based search on all the stacks on an organization based on the value provided. #### Headers - **authtoken** (required) Enter the authtoken of the user. Default: `your_authtoken` #### Sample Response ```json { "stacks": [{ "created_at": "2017-09-28T06:09:19.912Z", "updated_at": "2017-09-29T07:29:00.879Z", "uid": "blt046702aa419c8f9d", "name": "testv3-B", "api_key": "blt01a49e20d89b197e", "owner_uid": "blt02f4a95744f5301e", "owner": { "email": "aravind.kumar@contentstack.com", "first_name": "Aravind", "last_name": "Kumar" }, "users": { "count": 5 } }], "count": 4 } ``` ## Organization Logs ### Get organization log details **GET** `/organizations/{organization_uid}/logs` The Get organization log details request is used to retrieve the audit log details of an organization. You can apply queries to filter the results. Refer to the [Queries](/docs/developers/apis/content-delivery-api#queries) section for more details. When executing the API call, provide the Organization UID. **Tip**: This request returns only the first **25 audit log items** of the specified organization. If you get more than **25 items** in your response, refer to the [Pagination](/docs/developers/apis/content-delivery-api#pagination) section to retrieve all the log items in a paginated form. #### URL Parameters - **organization_uid** (required) Enter the UID of a specific organization of which you want to retrieve the audit log details. #### Headers - **authtoken** (required) Enter your authtoken. Default: `Your_authtoken` #### Sample Response ```json { "logs": [{ "uid": "blt8a6de4d89d4dcffbd1b6", "org_uid": "blt3cbc7416a3d8a026", "created_at": "ISODate(2018 - 02 - 13 T12: 41: 24.625 Z)", "created_by": "bltdd494873d2e0fee7", "module": "user", "event_type": "share", "metadata": { "uid": "blt3cbc7416a3d8a026" }, "remote_addr": "54.174.130.249", "request": { "share": { "users": [{ "email": "contentstacktest+128@raweng.com", "org_roles": ["bltbd1cb8a0838069de"] }], "stacks": [] } }, "response": { "notice": "The invitation has been sent successfully.", "shares": [{ "uid": "blt567a680139f45088", "email": "contentstacktest+128@raweng.com", "user_uid": null, "message": null, "org_uid": "blt3cbc7416a3d8a026", "org_roles": ["bltbd1cb8a0838069de"], "invited_by": "bltdd494873d2e0fee7", "invited_at": "ISODate(2018 - 02 - 13 T12:41: 24.617 Z)", "status": "pending", "created_at": "ISODate(2018-02-13 T12:41:24.615Z)", "updated_at": "ISODate(2018-02-13 T12:41:24.615Z)" }] } }, { "uid": "blt5839ff8426cb98d7eddc", "org_uid": "blt84dad57ea71e7cbe", "created_at": "ISODate(2019-03-06T07:00:47.029Z)", "created_by": "bltd3bb71a3e7cfbf16", "module": "user", "event_type": "logout", "metadata": { "uid": "bltd3bb71a3e7cfbf16", "logout_at": "ISODate(2019-03-06T07:00:47.029Z)" }, "remote_addr": "::ffff:127.0.0.1", "request": {}, "response": { "notice": "systemUser.success.logout" } } ] } ``` ### Get organization log item **GET** `/organizations/{organization_uid}/logs/{log_uid}` The Get organization log item request is used to retrieve a specific item from the audit log of an organization. When executing the Get organization log details request, you get the Organization UID and Log UID. Use these values to execute the Get organization log item API request. #### URL Parameters - **organization_uid** (required) Enter the UID of a specific organization of which you want to retrieve the audit log details. - **log_uid** (required) Enter the UID of a specific log item of which you want to retrieve the details. #### Headers - **authtoken** (required) Enter your authtoken. Default: `Your_authtoken` #### Sample Response ```json { "log": { "uid": "blt8a6de4d89d4dcffbd1b6", "org_uid": "blt3cbc7416a3d8a026", "created_at": "ISODate(2018-02-13T12:41:24.625Z)", "created_by": "bltdd494873d2e0fee7", "module": "user", "event_type": "share", "metadata": { "uid": "blt3cbc7416a3d8a026" }, "remote_addr": "54.174.130.249", "request": { "share": { "users": [{ "email": "contentstacktest+128@raweng.com", "org_roles": ["bltbd1cb8a0838069de"] }], "stacks": [] } }, "response": { "notice": "The invitation has been sent successfully.", "shares": [{ "uid": "blt567a680139f45088", "email": "contentstacktest+128@raweng.com", "user_uid": null, "message": null, "org_uid": "blt3cbc7416a3d8a026", "org_roles": ["bltbd1cb8a0838069de"], "invited_by": "bltdd494873d2e0fee7", "invited_at": "ISODate(2018-02-13T12:41:24.617Z)", "status": "pending", "created_at": "ISODate(2018-02-13T12:41:24.615Z)", "updated_at": "ISODate(2018-02-13T12:41:24.615Z)" }] } } } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/administration-api/teams --- title: "Administration | Teams" description: "

    Teams, simplifies role and permission management by grouping users. Instead of assigning roles individually or at the stack level, you can directly assign roles to a team. This ensures that all team members share the same set of role permissions.

    " url: "https://www.contentstack.com/docs/developers/apis/administration-api/teams" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-24" filename: teams.md --- # Administration | Teams Teams, simplifies role and permission management by grouping users. Instead of assigning roles individually or at the stack level, you can directly assign roles to a team. This ensures that all team members share the same set of role permissions. ## Get all teams ### Get all teams **GET** `/v4/teams` The Get all teams request returns comprehensive information about all the teams in your organization, so you can review how users are grouped and which organization roles, stack roles, and project roles each team carries. Contentstack identifies the organization from the organization\_uid request header and returns the teams that the requesting user can access. By default, the response is wrapped in a { count, teams } object and paginated, with x-total-results, x-skip, and x-limit returned as response headers. Use skip and limit to page through the results (default limit is 500), or set skip\_pagination to “true” to receive every team as a plain array without the wrapper. Refine the results with typeahead to match team names, user\_uid or stack\_api\_key to filter by membership or stack mapping, and asc or desc to sort. Set include\_user\_details to “true” to expand each team’s users array from UID strings into full user objects, and group\_roles\_by\_domain to “true” to add a rolesByDomain object that groups each team’s roles by domain. When the organization has no teams, the request returns a 204 response with no body. #### Query Parameters - **include_user_details** (optional) Set this parameter to “true” to include the details of users in the response. - **skip_pagination** (optional) Set this parameter to “true” to return all teams as a plain array, without the count and teams wrapper. - **typeahead** (optional) Retrieves responses that match the provided string. - **asc** (optional) Sort the response in ascending order. - **desc** (optional) Sort the response in descending order. - **limit** (optional) Enter the maximum number of teams to be returned. - **skip** (optional) Enter the number of teams to be skipped from the response body. - **user_uid** (optional) Enter the user UIDs in string format, separated by commas, for filtering. - **stack_api_key** (optional) Enter stack API keys in string format, separated by commas, to filter teams that have a role mapping for those stacks. - **group_roles_by_domain** (optional) Set this parameter to “true” to group each team's roles by domain in a rolesByDomain object. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` - **organization_uid** (required) Enter the UID of your Organization. Default: `your_organization_uid` #### Sample Response ```json { "count": 2, "teams": [ { "_id": "65b*****************e9a", "name": "Team A", "description": "Marketing team", "createdAt": "2024-02-01T09:55:46.703Z", "createdBy": "blt**************f0", "createdByUserName": "Jane Doe", "updatedAt": "2024-02-01T09:56:36.724Z", "updatedBy": "blt**************f0", "updatedByUserName": "Jane Doe", "organizationUid": "blt**************b5", "users": [ "blt**************a0", "blt**************8d" ], "organizationRoles": [ "blt**************8d" ], "stackRoleMapping": [ { "stackApiKey": "blt**************74", "roles": [ "blt**************37" ] } ], "projectRoles": [ { "projectUid": "blt**************p1", "domain": "am", "roles": [ "blt**************r1" ] } ], "__v": 0, "uid": "65b*****************e9a" }, { "_id": "65b*****************892", "name": "Sample Team", "createdAt": "2024-01-31T11:52:27.049Z", "createdBy": "blt**************f0", "createdByUserName": "Jane Doe", "updatedAt": "2024-01-31T11:52:27.049Z", "updatedBy": "blt**************f0", "updatedByUserName": "Jane Doe", "organizationUid": "blt**************b5", "users": [], "organizationRoles": [], "stackRoleMapping": [], "projectRoles": [], "__v": 0, "uid": "65b*****************892" } ] } ``` ## Get a single team ### Get a single team **GET** `/v4/teams/{team_uid}` The Get a single team request returns comprehensive information about one team in your organization, including its members and its assigned organization roles, stack role mappings, and project roles. Pass the team’s UID as team\_uid in the request path and your organization’s UID in the organization\_uid header. By default, the users array contains user UID strings. Set include\_user\_details to “true” to expand them into full user objects that include uid, username, email, firstName, lastName, active, and orgInvitationStatus. The uid and \_id fields hold the same value; use either to reference the team in follow-up requests. A request for a team that does not exist returns a 404 error. #### URL Parameters - **team_uid** (required) Enter the UID of the team of which you want to retrieve the details. The UID of a team is unique across an organization. Execute the [Get all teams](/docs/developers/apis/content-management-api#get-all-teams) request to retrieve the UID of a team. #### Query Parameters - **include_user_details** (optional) Set this parameter to “true” to include the details of users in the response. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` - **organization_uid** (required) Enter the UID of your Organization. Default: `your_organization_uid` #### Sample Response ```json { "_id": "65b*****************e9a", "name": "Sample Team", "description": "Marketing team", "createdAt": "2024-02-01T09:55:46.703Z", "createdBy": "blt**************f0", "createdByUserName": "Sample User", "updatedAt": "2024-02-01T09:56:36.724Z", "updatedBy": "blt**************f0", "updatedByUserName": "Sample User", "organizationUid": "blt**************b5", "users": [ "blt**************a0", "blt**************8d" ], "organizationRoles": [ "blt**************8d" ], "stackRoleMapping": [ { "stackApiKey": "blt**************74", "roles": [ "blt**************37" ] } ], "projectRoles": [ { "projectUid": "blt**************p1", "domain": "am", "roles": [ "blt**************r1" ] } ], "__v": 0, "uid": "65b*****************e9a" } ``` ## Create a team ### Create a team **POST** `/v4/teams` The Create a team request creates a team in the specified organization and assigns its initial members and roles in a single call. Provide the team name (required) and, optionally, a description. Add members through the users array, where each entry identifies a user by email or uid. Grant access by including organizationRoles (organization-level role UIDs), stackRoleMapping (per-stack role assignments), and projectRoles (project-scoped roles; the am domain is currently supported). The users and stackRoleMapping arrays are required, but you can send them empty. On success, the request returns a 201 response with the created team, including its generated uid. The users array in the response contains UID strings; use the Get a single team request with include\_user\_details set to “true” to resolve full user objects. Invalid input, such as an unknown role or stack, returns a 400 error that identifies the failed field. #### Query Parameters - **include_user_details** (optional) Set this parameter to “true” to include the details of users in the response. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` - **organization_uid** (required) Enter the UID of your Organization. Default: `your_organization_uid` - **Content-Type** (required) Enter "application/json" to pass a request body. Default: `application/json` #### Sample Response ```json { "_id": "65b******************11", "name": "Team A", "description": "Marketing team", "createdAt": "2024-02-01T11:01:33.399Z", "createdBy": "blt**************f0", "createdByUserName": "Jane Doe", "updatedAt": "2024-02-01T11:01:33.399Z", "updatedBy": "blt**************f0", "updatedByUserName": "Jane Doe", "organizationUid": "blt**************b5", "users": [ "blt**************a0" ], "organizationRoles": [ "blt**************8d" ], "stackRoleMapping": [ { "stackApiKey": "blt**************74", "roles": [ "blt**************f6" ] } ], "projectRoles": [ { "projectUid": "blt**************p1", "domain": "am", "roles": [ "blt**************r1" ] } ], "__v": 0, "uid": "65b******************11" } ``` ## Update a team ### Update a team **PUT** `/v4/teams/{team_uid}` The Update a team request modifies an existing team, including its name, description, members, organization roles, stack role mappings, and project roles. This request replaces values rather than merging them. The users, organizationRoles, and stackRoleMapping values you send become the team’s complete set, so include every member and role you want to keep, not only the ones you are adding or changing. To clear one of these, send an empty array, for example "users": \[\]. The projectRoles field behaves differently: it stays unchanged only when you omit it entirely, and sending it with any value, including \[\], replaces the existing project roles. Pass the team’s UID as team\_uid in the request path and your organization’s UID in the organization\_uid header. On success, the request returns a 200 response with the updated team. Set include\_user\_details to “true” to receive full user objects in the response. #### URL Parameters - **team_uid** (required) Enter the UID of the team you want to update. The UID of a team is unique across an organization. Execute the [Get all teams](/docs/developers/apis/content-management-api#get-all-teams) request to retrieve the UID of a team. #### Query Parameters - **include_user_details** (optional) Set this parameter to “true” to include the details of users in the response. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` - **organization_uid** (required) Enter the UID of your Organization. Default: `your_organization_uid` - **Content-Type** (required) Enter "application/json" to pass a request body. Default: `application/json` #### Sample Response ```json { "_id": "65b*****************e9a", "name": "Team A", "description": "Marketing team", "createdAt": "2024-02-01T09:55:46.703Z", "createdBy": "blt**************f0", "createdByUserName": "Jane Doe", "updatedAt": "2024-02-01T11:06:35.107Z", "updatedBy": "blt**************f0", "updatedByUserName": "Jane Doe", "organizationUid": "blt**************b5", "users": [ "blt**************21" ], "organizationRoles": [ "blt**************8d" ], "stackRoleMapping": [ { "stackApiKey": "blt**************74", "roles": [ "blt**************f6" ] } ], "projectRoles": [ { "projectUid": "blt**************p1", "domain": "am", "roles": [ "blt**************r1" ] } ], "__v": 0, "uid": "65b*****************e9a" } ``` ## Delete a team ### Delete a team **DELETE** `/v4/teams/{team_uid}` The Delete a team request removes an existing team along with its members and assigned roles. Deletion is a soft delete: Contentstack marks the team as deleted and excludes it from subsequent reads instead of removing the record permanently. Deleting a team revokes the access that the team granted through its organization, stack, and project roles, unless a member holds the same access through another team or a direct assignment. Pass the team’s UID as team\_uid in the request path and your organization’s UID in the organization\_uid header. A successful request returns a 200 response, and deleting a team that does not exist returns a 404 error. #### URL Parameters - **team_uid** (required) Enter the UID of the team you want to delete. The UID of a team is unique across an organization. Execute the [Get all teams](/docs/developers/apis/content-management-api#get-all-teams) request to retrieve the UID of a team. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` - **organization_uid** (required) Enter the UID of your Organization. Default: `your_organization_uid` ## Users All accounts registered with Contentstack are known as [Users](/docs/developers/invite-users-and-assign-roles/about-stack-users). An organization can have many users with varying permissions and roles. ##### Get all users of team ### Get all users of team **GET** `/organizations/{organization_uid}/teams/{team_uid}/users` The Get all users of team request retrieves information about all the users associated with a particular team. Additionally, you can also set the query parameters: includeUserDetails or include\_count to true to include user details and the count of users in the response. ##### Add users to team #### URL Parameters - **organization_uid** (required) Enter the UID of your Organization. - **team_uid** (required) Enter the UID of the team of which you want to retrieve the user details. The UID of a team is unique across an organization. Execute the [Get all teams](/docs/developers/apis/content-management-api#get-all-teams) request to retrieve the UID of a team. #### Query Parameters - **includeUserDetails** (optional) Set this parameter to “true” to include the details of users in the response. - **include_count** (optional) Set this parameter to “true” to include the total count of users in the response. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` #### Sample Response ```json { "users": [ { "uid": "blt**************f0", "username": "jane_blt6266157b", "email": "jane.doer@contentstack.com", "firstName": "Jane", "lastName": "Doer", "active": true, "orgInvitationStatus": "accepted" }, { "uid": "blt**************8d", "username": "john_blt28057039", "email": "john.doe@contentstack.com", "firstName": "John", "lastName": "Doe", "active": true, "orgInvitationStatus": "accepted" }, { "uid": "blt**************21", "username": "jane_blt9d1e076e", "email": "jane.doe@contentstack.com", "firstName": "Jane", "lastName": "Doe", "active": true, "orgInvitationStatus": "accepted" }, { "uid": "blt**************a0", "username": "sample_blt03a1b0ad", "email": "sample.user@contentstack.com", "firstName": "Sample", "lastName": "User", "active": true, "orgInvitationStatus": "accepted" } ], "count": 4 } ``` ### Add users to team **POST** `/organizations/{organization_uid}/teams/{team_uid}/users` The Add users to team request allows you to send invitations to add users and assign them organizational and stack roles. **Note**: Only the Owner or the Admin of the organization can add users to a team. You need to pass the email IDs of the users in the request body as follows: ``` { "emails": [ "user1@contentstack.com", "user2@contentstack.com"]} ``` ##### Remove a user from team #### URL Parameters - **organization_uid** (required) Enter the UID of your Organization. - **team_uid** (required) Enter the UID of the team of which you want to retrieve the user details. The UID of a team is unique across an organization. Execute the [Get all teams](/docs/developers/apis/content-management-api#get-all-teams) request to retrieve the UID of a team. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` - **Content-Type** (required) Enter "application/json" to pass a request body. Default: `application/json` ### Remove a user from team **DELETE** `/organizations/{organization_uid}/teams/{team_uid}/users/{user_uid}` The Remove a user from team request allows you to remove an existing user from a particular team. **Note**: Only the Owner or the Admin of the organization can remove users from a team. #### URL Parameters - **organization_uid** (required) Enter the UID of your Organization. - **team_uid** (required) Enter the UID of the team of which you want to retrieve the user details. The UID of a team is unique across an organization. Execute the [Get all teams](/docs/developers/apis/content-management-api#get-all-teams) request to retrieve the UID of a team. - **user_uid** (required) Enter the UID of the user you want to remove from the team. The UID of a user is unique across an organization. Execute the [Get all users of team](/docs/developers/apis/content-management-api#get-all-users-of-team) request to retrieve the UID of a user. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` ## Stack Role Mapping When adding users to a team, you have the option to simultaneously assign roles for the available stacks within the organization. This process involves mapping stack roles for all the users added to the team. ##### Get all stack role mapping ### Get all stack role mapping **GET** `/organizations/{organization_uid}/teams/{team_uid}/stack_role_mappings` The Get all stack role mapping request allows you to retrieve details of all associated stacks for a specified team in your organization. ##### Add a stack role mapping #### URL Parameters - **organization_uid** (required) Enter the UID of your Organization. - **team_uid** (required) Enter the UID of the team of which you want to retrieve the user details. The UID of a team is unique across an organization. Execute the [Get all teams](/docs/developers/apis/content-management-api#get-all-teams) request to retrieve the UID of a team. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` #### Sample Response ```json { "stackRoleMappings": [ { "stackApiKey": "blt**************74", "roles": [ "blt**************f6" ] }, { "stackApiKey": "blt**************fe", "roles": [ "blt**************3a" ] } ] } ``` ### Add a stack role mapping **POST** `/organizations/{organization_uid}/teams/{team_uid}/stack_role_mappings` The Add a stack role mapping request allows you to associate users from a specified team with the available stacks in your organization. You need to pass the API key of the stack and the role UIDs in the request body as follows: ``` { "stackApiKey": "stack_api_key", "roles": [ "role_one_uid", "role_two_uid" ]} ``` ##### Update a stack role mapping #### URL Parameters - **organization_uid** (required) Enter the UID of your Organization. - **team_uid** (required) Enter the UID of the team of which you want to retrieve the user details. The UID of a team is unique across an organization. Execute the [Get all teams](/docs/developers/apis/content-management-api#get-all-teams) request to retrieve the UID of a team. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` - **Content-Type** (required) Enter "application/json" to pass a request body. Default: `application/json` #### Sample Response ```json { "stackRoleMapping": { "stackApiKey": "blt**************74", "roles": [ "blt**************f6", "blt**************37" ] } } ``` ### Update a stack role mapping **POST** `/organizations/{organization_uid}/teams/{team_uid}/stack_role_mappings/{stack_api_key}` The Update a stack role mapping request allows you to update the stack roles for a specific stack in your organization. You need to pass the role UIDs in the request body as follows: ``` { "roles": [ "role_uid" ]} ``` ##### Remove a stack role mapping #### URL Parameters - **organization_uid** (required) Enter the UID of your Organization. - **team_uid** (required) Enter the UID of the team of which you want to retrieve the user details. The UID of a team is unique across an organization. Execute the [Get all teams](/docs/developers/apis/content-management-api#get-all-teams) request to retrieve the UID of a team. - **stack_api_key** (required) Enter the API key of the stack. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` - **Content-Type** (required) Enter "application/json" to pass a request body. Default: `application/json` #### Sample Response ```json { "stackRoleMapping": { "stackApiKey": "blt**************74", "roles": [ "blt**************48", "blt**************f4" ] } } ``` ### Remove a stack role mapping **DELETE** `/organizations/{organization_uid}/teams/{team_uid}/stack_role_mappings/{stack_api_key}` The Remove a stack role mapping request allows you to delete the associations of team users for a specified stack in your organization. #### URL Parameters - **organization_uid** (required) Enter the UID of your Organization. - **team_uid** (required) Enter the UID of the team of which you want to retrieve the user details. The UID of a team is unique across an organization. Execute the [Get all teams](/docs/developers/apis/content-management-api#get-all-teams) request to retrieve the UID of a team. - **stack_api_key** (required) Enter the API key of the stack. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` --- ## URL: https://www.contentstack.com/docs/developers/apis/administration-api/user-session --- title: "Administration | User Session" description: "

    User session consists of calls that will help you to sign in and sign out of your Contentstack account.

    " url: "https://www.contentstack.com/docs/developers/apis/administration-api/user-session" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-24" filename: user-session.md --- # Administration | User Session User session consists of calls that will help you to sign in and sign out of your Contentstack account. ## Logging in/out ### Log in to your account **POST** `/user-session` The Log in to your account request is used to sign in to your Contentstack account and obtain the authtoken. **Note:** The authtoken is a mandatory parameter when executing Content Management API calls. However, when executing Content Delivery API calls, use [the Content Delivery base URL](/docs/developers/apis/content-delivery-api/) for your region, and pass the environment-specific delivery token against the access\_token key. In the 'Body' section, enter the user credentials in JSON format. The JSON query will include the email address, the Contentstack user account password, and the two-factor authentication token (if enabled) received in the Authy app or SMS. For SSO-enabled organizations, the ‘Log in to your account’ request will not return the user authtoken for users. In this case, you can try out the following: * The owner of an organization can access the SSO-enabled organization through Contentstack credentials and retrieve the user authtoken to make Content Management API requests. * Disable 'Strict Mode' for an SSO-enabled organization, and users who have the ability to access their organization through Contentstack credentials can retrieve the authtoken to make Content Management API requests. For more details, refer the [REST API Usage - Content Management API](/docs/developers/single-sign-on/rest-api-usage#content-management-api) section in the Single Sign-On page. #### Headers - **Content-Type** (required) Default: `application/json` #### Sample Response ```json { "notice": "Login Successful.", "user": { "uid": "blt22e22222d22d2f22222a2b2f", "created_at": "2016-06-30T05:02:27.516Z", "updated_at": "2019-07-16T10:35:30.898Z", "email": "user_email", "username": "username", "first_name": "user's_first_name", "last_name": "user's_last_name", "company": "Contentstack", "org_uid": [ "blt44444c44ea4ddf222" ], "shared_org_uid": [ "bltcde1e1cdf1f11e5f", "blt22e2222dd2e2fb22", "blt3f3ad33ca33cb3a3" ], "mobile_number": "9898989898", "country_code": "91", "tfa_status": "verified", "authy_id": "123123123", "active": true, "failed_attempts": 0, "authtoken": "bltd111c111111c11ec", "roles": [{ "uid": "bltc0aa00ea0000b000", "name": "Developer", "description": "Developer can perform all Content Manager's actions, view audit logs, create roles, invite users, manage content types, languages, and environments.", "users": [ "blt1d11a1d11c1b11111e111a1f", "blt22dd2fd22222222e22f2aa22", "sys_blt3a3333e33b30c3ea" ], "created_at": "2016-03-21T10:15:09.434Z", "updated_at": "2018-06-20T10:44:19.618Z", "api_key": "blt444ad44e4d44aa4a", "rules": [{ "module": "locale", "locales": [ "$all" ], "acl": { "read": true } }, { "module": "environment", "environments": [ "$all" ], "acl": { "read": true } }, { "module": "asset", "assets": [ "$all" ], "acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true } } ] }, { "uid": "blt00b0e0bf00000de0", "name": "Content Manager", "description": "Content Managers can view all content types, manage entries and assets. They cannot edit content types or access stack settings.", "users": [ "blt1d11a1d11c1b11111e1111a1f", "blt2de22eea222222e22222222a", "sys_bltf2e222cf2d222222" ], "roles": [], "created_at": "2016-03-21T10:15:09.472Z", "updated_at": "2018-11-21T13:28:22.868Z", "api_key": "blt444ad4e4d44aa4a", "rules": [{ "module": "locale", "locales": [ "$all" ], "acl": { "read": true } }, { "module": "environment", "environments": [ "$all" ], "acl": { "read": true } }, { "module": "asset", "assets": [ "$all" ], "acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true } } ] }, { "uid": "blte55d15e55b5e5555", "name": "Admin", "description": "Admin can perform all actions and manage all settings of the stack, except the ability to delete or transfer ownership of the stack.", "users": [ "blt44e44444d44d4f44444a4b4f" ], "created_at": "2018-11-02T12:41:08.038Z", "updated_at": "2018-11-02T12:41:08.038Z", "api_key": "blt11111decbaa1a11e" } ] } } ``` ### Log out of your account **DELETE** `/user-session` The Log out of your account call is used to sign out the user of Contentstack account. #### Headers - **authtoken** (required) Default: `your_authtoken` #### Sample Response ```json { "notice": "You've logged out successfully!" } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/administration-api/users --- title: "Administration | Users" description: "

    All accounts registered with Contentstack are known as Users. A stack can have many users with varying permissions and roles. 

    Note: Before executing any calls, retrieve the authtoken by authenticating yourself via the Log in call of User Session. The authtoken is returned in the 'Response' body of the Log in call and is mandatory in all of the calls. Example: blt3cecf75b33bb2ebe

    " url: "https://www.contentstack.com/docs/developers/apis/administration-api/users" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-24" filename: users.md --- # Administration | Users All accounts registered with Contentstack are known as [Users](/docs/developers/invite-users-and-assign-roles/about-stack-users). A [stack](/docs/developers/set-up-stack/about-stack) can have many users with varying permissions and roles.  **Note:** Before executing any calls, retrieve the authtoken by authenticating yourself via the Log in call of User Session. The authtoken is returned in the 'Response' body of the Log in call and is mandatory in all of the calls. Example: blt3cecf75b33bb2ebe ## Get User ### Get user **GET** `/user` The Get user 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. #### Headers - **authtoken** (required) Default: `Enter_your_authtoken` #### Sample Response ```json { "user": { "uid": "blt22e22222d22d2f22222a2b2f", "created_at": "2016-06-30T05:02:27.516Z", "updated_at": "2019-07-16T10:35:30.898Z", "email": "john.doe@contentstack.com", "username": "john.doe_blt11fed1e1", "first_name": "John", "last_name": "Doe", "company": "Contentstack", "org_uid": [ "blt44444c44ea4ddf222" ], "shared_org_uid": [ "bltcde1e1cdf1f11e5f", "blt22e2222dd2e2fb22", "blt3f3ad33ca33cb3a3" ], "mobile_number": "9898989898", "country_code": "91", "tfa_status": "verified", "authy_id": "123123123", "active": true, "failed_attempts": 0, "authtoken": "bltd111c111111c11ec", "roles": [{ "uid": "bltc0aa00ea0000b000", "name": "Developer", "description": "Developer can perform all Content Manager's actions, view audit logs, create roles, invite users, manage content types, languages, and environments.", "users": [ "blt1d11a1d11c1b11111e111a1f", "blt22dd2fd22222222e22f2aa22", "sys_blt3a3333e33b30c3ea" ], "created_at": "2016-03-21T10:15:09.434Z", "updated_at": "2018-06-20T10:44:19.618Z", "api_key": "blt444ad44e4d44aa4a", "rules": [{ "module": "locale", "locales": [ "$all" ], "acl": { "read": true } }, { "module": "environment", "environments": [ "$all" ], "acl": { "read": true } }, { "module": "asset", "assets": [ "$all" ], "acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true } } ] }] } } ``` ## Update User ### Update user **PUT** `/user` The Update User API Request updates the details of an existing user account. Only the information entered here will be updated, the existing data will remain unaffected. When executing the API call, under the 'Body' section, enter the information of the user that you wish to update. This information should be in JSON format. **Additional Resource:** To update the role of an existing user, refer to the [Update Existing User Role](#update-existing-user-role) API Request. #### Headers - **authtoken** (required) Default: `Enter_your_authtoken` - **Content-Type** (required) Default: `application/json` #### Sample Response ```json { "notice": "Profile updated successfully.", "user": { "uid": "abcdef1234567890abcdef", "created_at": "2015-03-13T07:37:03.494Z", "updated_at": "2015-03-13T07:37:03.494Z", "email": "developer@example.com", "username": "john.doe_blt11fed1e1", "first_name": "John", "last_name": "Doe", "company": "company name inc.", "org_uid": [ "blt44444c44ea4ddf222" ], "shared_org_uid": [ "bltcde1e1cdf1f11e5f", "blt22e2222dd2e2fb22", "blt3f3ad33ca33cb3a3" ], "mobile_number": "9898989898", "country_code": "91", "tfa_status": "verified", "authy_id": "123123123", "active": true, "failed_attempts": 0 "settings": { "global": [ { "key": "favorite_stacks", "value": [ { "org_uid": "blt40222226ddf287", "stacks": [ { "api_key": "blt922222441b906ce" } ] }, { "org_uid": "blt8b22227a9dadcc", "stacks": [ { "api_key": "blt2d2222baca745a8" }, { "api_key": "blt38c22223b67bd04" }, { "api_key": "blt8fb222260d06b9" } ] } ] } ] }, "last_login_at": "2025-07-08T08:46:26.437Z", "password_updated_at": "2024-11-07T08:51:49.609Z", "password_reset_required": false } ``` ## Activate User ### Activate a user account **POST** `/user/activate/{user_activation_token}` The Activate a user account call activates the account of a user after signing up. For account activation, you will require the token received in the activation email. #### URL Parameters - **user_activation_token** (required) Enter the activation token received on the registered email address. You can find the activation token in the activation URL sent to the email address used while signing up. #### Sample Response ```json { "notice": "Your account has been activated." } ``` ## Request Password ### Request for a password **POST** `/user/forgot_password` The Request for a password API helps to get a temporary password to log into an account in case a user has forgotten the login password. Using this temporary password, you can log in to your account and [set a new password](/docs/developers/password-related-security/forgot-reset-password) for your Contentstack account. In the 'Body' section, provide the user's email address in JSON format. **Note:** The “**Reset password**” token that you receive in your email address is valid only for the **next 60 minutes** after it’s generated. Post that, it expires and you need to rerun the [Reset password](/docs/developers/apis/content-management-api/#reset-password) API request to generate a new token. #### Headers - **Content-Type** (required) Default: `application/json` #### Sample Response ```json { "notice": "If this email address exists, we will send you an email with instructions for resetting your password." } ``` ## Reset Password ### Reset password **POST** `/user/reset_password` The Reset password API request allows you to reset your Contentstack account password. **Note:** Before using this API request, you need to execute the [Request for a password](/docs/developers/apis/content-management-api/#request-for-a-password) API request to receive the reset password token in your registered email address. When executing the request, in the 'Body' section, you need to provide the token that you receive via email, your new password, and password confirmation in JSON format. **Note**: The "**Reset password**" token is valid only for the **next 60 minutes** after it’s generated. Post that, it expires and you need to rerun the same request to generate a new token. #### Headers - **Content-Type** (required) Default: `application/json` #### Sample Response ```json { "notice": "Your password has been reset successfully." } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/analytics-api --- title: "Analytics API" description: "Boost business insights with our Analytics API—track usage, performance, and more across CMS, Automate, and Launch." url: "https://www.contentstack.com/docs/developers/apis/analytics-api" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2025-07-10" filename: analytics-api.md --- # Analytics API ## Introduction ### Base URL * AWS North America (AWS NA): https://app.contentstack.com * AWS Europe (AWS EU): https://eu-app.contentstack.com * AWS Australia (AWS AU): https://au-app.contentstack.com * Azure North America (Azure NA): https://azure-na-app.contentstack.com * Azure Europe (Azure EU): https://azure-eu-app.contentstack.com * GCP North America (GCP NA): https://gcp-na-app.contentstack.com * GCP Europe (GCP EU): https://gcp-eu-app.contentstack.com ### Overview **Note**: The Analytics API may not be enabled by default for your organization. Reach out to our [support](mailto:support@contentstack.com) team to get it enabled. The Analytics APIs in Contentstack provide access to comprehensive insights into your organization’s usage, performance, and overall system health. Built on the unified Analytics platform, these APIs consolidate data across key products such as CMS, Launch, Automate, Personalize, and Brand Kit, enabling you to retrieve and analyze metrics in a structured and scalable way. With the Analytics APIs, you can access detailed information such as API usage, status codes, cache performance, SDK activity, and device distribution. This allows developers and administrators to monitor trends, diagnose issues, and integrate analytics data into external systems or custom dashboards. By exposing these metrics through APIs, Contentstack empowers you to move beyond the default dashboard and build tailored monitoring and reporting workflows. Whether you are tracking performance anomalies, optimizing resource allocation, or automating alerts, the Analytics APIs enable data-driven decision-making with real-time and historical insights. **Note**: Only the organization [Owner](/docs/administration/about-administration-roles#organization-owner) and [Admin](/docs/administration/about-administration-roles#organization-admin) roles can access these endpoints. The v2 analytics APIs fetch data asynchronously. All requests, except [Retrieve Data](/docs/developers/apis/analytics-api#retrieve-data), under this section will return a jobId value in the response. You must use this jobId to fetch the actual data using the [Retrieve Data](/docs/developers/apis/analytics-api#retrieve-data) endpoint. **Note**: The Analytics API does not support **Cross-Origin Resource Sharing** (**CORS**) for browser-based clients. Requests made directly from frontend JavaScript will fail preflight checks and return a CORS error. This API is intended for server-side (server-to-server) consumption only route requests through a backend service or proxy that holds your credentials, rather than calling the endpoint directly from client-side code. ### Authentication Contentstack uses the authtoken or OAuth token, API key, and Organization ID to make Analytics API requests. #### How to Get Authtoken Authtokens are user-specific tokens generated when user logs in to Contentstack. To retrieve the authtoken, log in to your Contentstack account by using the "[Log in to your account](/docs/developers/apis/content-management-api/#logging-in-out)" request. This request will return the authtoken in the response body. You can generate multiple authtokens by executing the "Log in to your account" request multiple times. These tokens do not have an expiration time limit. However, currently, there is a maximum limit of **20** **valid tokens** that a user can use per account at a time, to execute Analytics requests. If you already have valid 20 tokens, creating a new authtoken will automatically cause the oldest authtoken to expire without warning. For SSO-enabled organizations, the "Log in to your account" request will not return the user authtoken for users who access the organization through Identity Provider login credentials. Consequently, any requests that require user authtoken will not work. Only the owner of the organization and users with permission to access the organization without SSO can use the Analytics APIs. Learn more about [REST API Usage](/docs/administration/rest-api-usage). **Tip**: An alternate way to retrieve the authtoken is via **Inspect** element. If you are logged in through your browser, right-click and select **Inspect** or press “F12” to open developer tools, and select the **Network** tab. #### M2M OAuth Token **Machine-to-Machine** (**M2M**) apps are designed for secure server-to-server communication, eliminating the need for user intervention. These apps use the OAuth 2.0 protocol for authentication and authorization, making them highly secure and reliable for machine-to-machine interactions. Refer to our guide on [Machine-to-Machine Apps](/docs/developer-hub/machine-to-machine-apps) for more information. **Note**: The M2M app is currently in Beta. Reach out to our [support](mailto:support@contentstack.com) team to enable it for your organization. #### How to Get Stack API Key To retrieve the stack API key, perform the steps given below: 1. Go to your stack. 2. Navigate to **Settings** > **Stack**. 3. On the right-hand side of the page, under **API Credentials**, you will get the API Key of your stack. **Note**: Only the [developers](/docs/headless-cms/types-of-roles#developer), [admins](/docs/headless-cms/types-of-roles#admin), and stack [owners](/docs/headless-cms/types-of-roles#owner) can view the API key. #### How to Get Organization ID To retrieve the organization ID, perform the steps given below: 1. Navigate to Administration through “App Switcher”. 2. By default the **Org** **Info** tab opens up, showing the organization name and UID. ### Rate limiting Rate limit is the maximum number of requests you can make using Contentstack’s API in a given time period. By default, the Analytics API enforces **10** **GET** requests per second per organization. Your application will receive the HTTP 429 response code if the requests for a given time period exceed the defined rate limits. To get the current rate limit status, you can check the returned HTTP headers of any API request. These rate limits are reset at the start of each time period. Headers Description X-RateLimit-Limit The maximum number of request a client is allowed to make per second per organization. X-RateLimit-Remaining The number of requests remaining in the current time period. ### API conventions * The base URL for Analytics API for different regions can be found in the [Base URL](#base-url) section. * URL paths are written in lower case. * Query parameters and JSON fields use lower case, with underscores (\_) separating words. * The success/failure status of an operation is determined by the HTTP status it returns. Additional information is included in the HTTP response body. * The JSON number type is bounded to a signed 32-bit integer. ### Errors If there is something wrong with the API request, Contentstack returns an error. Contentstack uses conventional, standard HTTP status codes for errors, and returns a JSON body containing details about the error. In general, codes in the 2xx range signify success. The codes in the 4xx range indicate error, mainly due to information provided (for example, a required parameter or field was omitted). Lastly, codes in the 5xx range mean that there is something wrong with Contentstack’s servers; it is very rare though. Let’s look at the error code and their meanings. HTTP status code Description 400 Bad Request The request was incorrect or corrupted. 401 Access Denied The login credentials are invalid. 403 Forbidden Error The page or resource that is being accessed is forbidden. 404 Not Found The requested page or resource could not be found. 412 Pre Condition Failed The entered API key is invalid. 422 Unprocessable Entity (also includes Validation Error and Unknown Field) The request is syntactically correct but contains semantic errors. 429 Rate Limit Exceeded The number of requests exceeds the allowed limit for the given time period. 500 Internal Server Error The server is malfunctioning and is not specific on what the problem is. 500 Job Failed The date range for the from and to parameters must be within **90 days**. If the range exceeds 90 days, you will receive a 500 Job Failed error response. 502 Bad Gateway Error A server received an invalid response from another server. 200 Job active The job is still processing. Retry the request after some time to receive the desired response. **Note**: The error codes that we get in the JSON response are not HTTP error codes but are custom Contentstack error codes that are used for internal purposes. ### Using Postman Collection Contentstack offers you a Postman Collection that helps you try out our Analytics API. You can download this collection, connect to your Contentstack account, and try out the Analytics API with ease. Learn more about how to get started with using the [Postman Collection](/docs/developers/apis/analytics-api#postman-collection) for Contentstack Analytics API. ## API Reference ### Subscription Usage The Subscription Usage request returns the total number of projects, environments, and domains under Launch within your organization till date. To get the details for CMS and Automate, you can use the [Usage Analytics](/docs/developers/apis/analytics-api#usage-analytics) request. Here’s how your response body would look like when you pass the jobId in the [Retrieve Data](/docs/developers/apis/analytics-api#retrieve-data) endpoint. ``` { "data": [ { "total_launch_project": 9, "total_launch_env": 11, "total_launch_domain": 2 } ], "meta": { "orgUid": "blt**************87", "from": "2024-06-30", "to": "2024-09-12" }, "uid": "0f****46-5ee9-4f38-9146-1f********87"} ``` The response body provides an overview of the resources in the Launch section within your organization. Here’s a breakdown of the key elements: * total\_launch\_project: The total number of projects created within Launch. * total\_launch\_env: The total number of environments associated with the Launch projects . * total\_launch\_domain: The total number of domains configured within Launch. This response gives a clear view of how Launch resources are utilized within the specified date range. ### Device Usage The Device Usage request helps you get a list of devices that your organization users are using to access Contentstack services. Here’s how your response body would look like when you pass the jobId in the [Retrieve Data](/docs/developers/apis/analytics-api#retrieve-data) endpoint. ``` { "totalDocs": 26, "data": [ { "count": 164, "type": "cma", "device": "sdk contentstack-management-javascript/1.13.0; platform node.js/v18.17.1; os Linux/5.4.176-91.338.amzn2.x86_64;", "date": "2024-03-05" }, { "count": 62, "type": "cma", "device": "sdk contentstack-management-javascript/1.13.0; platform node.js/v18.17.1; os Windows/10.0.22000;", "date": "2024-02-05" }, { "count": 18, "type": "cma", "device": "sdk contentstack-management-javascript/1.13.0; platform node.js/v18.17.1; os Linux/5.4.176-91.338.amzn2.x86_64;", "date": "2024-03-22" }, { "count": 16, "type": "cma", "device": "sdk contentstack-management-javascript/1.13.0; platform node.js/v18.17.1; os Linux/5.4.176-91.338.amzn2.x86_64;", "date": "2024-03-04" }, { "count": 10, "type": "cma", "device": "PostmanRuntime/7.37.0", "date": "2024-03-20" }, ... { "date": "2024-03-31" } ], "meta": { "orderBy": -1, "orgUid": "blt**************87", "includeCount": true, "from": "2024-01-31", "duration": "day", "to": "2024-03-31", "services": "[\"cdn\",\"cma\"]" }, "uid": "35****12-acf4-4ad5-93e0-48********0e" } ``` The response body provides detailed insights into users accessing Contentstack endpoints. Here’s a breakdown of the key elements: * count: Number of times the specific device was used. * type: The type of access, such as "cma" for Content Management API. * device: Description of the device or software used, including the SDK version, platform, and operating system details. * date: The specific date when the usage was recorded. This data helps you track and analyze device and environment usage, supporting performance and user experience optimization. ### Usage Analytics The Usage Analytics request gives a quick usage overview of your bandwidth and API utilization over a particular period of time. Here’s how your response body would look like when you pass the jobId in the [Retrieve Data](/docs/developers/apis/analytics-api#retrieve-data) endpoint. ``` { "data": [ { "total_api_bandwidth": 0, "total_api_count": 0, "total_cdn_bandwidth": 0, "total_cdn_count": 0, "date": "2024-03-02" }, { "total_api_bandwidth": 0, "total_api_count": 0, "total_cdn_bandwidth": 10110, "total_cdn_count": 4, "date": "2024-02-12" }, { "total_api_bandwidth": 0, "total_api_count": 0, "total_cdn_bandwidth": 0, "total_cdn_count": 0, "date": "2024-02-22" }, { "total_api_bandwidth": 0, "total_api_count": 0, "total_cdn_bandwidth": 0, "total_cdn_count": 0, "date": "2024-03-25" }, { "total_api_bandwidth": 94685, "total_api_count": 26, "total_cdn_bandwidth": 0, "total_cdn_count": 0, "date": "2024-03-04" }, { "total_api_bandwidth": 0, "total_api_count": 0, "total_cdn_bandwidth": 0, "total_cdn_count": 0, "date": "2024-02-28" } ], "meta": { "orgUid": "blt**************87", "includeCount": "true", "from": "2024-01-31", "duration": "day", "to": "2024-03-31", "services": "[\"cdn\",\"cma\"]" }, "uid": "0f****46-5ee9-4f38-9146-1f********8"} ``` The response body provides detailed insights into your organization's API and CDN usage over a specified period. Here’s a breakdown of the key elements: * total\_api\_bandwidth: The total bandwidth consumed by API requests on the specified date. * total\_api\_count: The number of API requests executed on the specified date. * total\_cdn\_bandwidth: The total bandwidth consumed by CDN requests on the specified date. * total\_cdn\_count: The number of CDN requests made on the specified date. * date: The specific date for the reported statistics. This data helps monitor and analyze the usage patterns of API and CDN resources, aiding in efficient resource management and planning. **Note** * The apiKey cannot be used with the services \["automations", "launch"\] simultaneously. * The apiKey and environmentUid parameters are only applicable to the \["launch"\] service. ### Top URLs The Top URLs request gets you the number of requests made from your URLs for the given services. Here’s how your response body would look like when you pass the jobId in the [Retrieve Data](/docs/developers/apis/analytics-api#retrieve-data) endpoint. ``` { "data": [ { "url": "https://cdn.contentstack.io/v3/content_types?include_count=false", "type": "cdn", "count": "3" }, { "url": "https://cdn.contentstack.io/v3/content_types/header/entries/blt63c1bee28ce24ab1?environment=development", "type": "cdn", "count": "1" }, { "url": "https://cdn.contentstack.io/v3/global_fields", "type": "cdn", "count": "1" }, { "url": "https://cdn.contentstack.io/v3/content_types/test_111222/entries?environment=development", "type": "cdn", "count": "1" } ], "urlDataSource": "athena", "meta": { "orgUid": "blt**************87", "from": "2024-01-31", "duration": "day", "to": "2024-03-31", "services": "[\"cdn\"]" }, "uid": "0f****46-5ee9-4f38-9146-1f********8" } ``` The response body provides a detailed summary of the number of requests made to various URLs over a specific period. Here’s a breakdown of the key elements: * url: The specific URL that was accessed. * type: The service type of the URL, such as "cdn". * count: The number of requests made to this URL. This data helps organizations monitor traffic, identify frequently accessed URLs, and optimize performance. ### Status Code The Status Code request will show the count for the number of API requests made for each HTTP status code. For example, 200, 201, 400, 404, and so on. You can use the httpStatusCode parameter to get the count for a specific status code instead of all status codes. Here’s how your response body would look like when you pass the jobId in the [Retrieve Data](/docs/developers/apis/analytics-api#retrieve-data) endpoint. ``` { "data": [ { "count": 63, "type": "cma", "status": "200", "date": "2024-02-05" }, { "count": 1, "type": "cma", "status": "422", "date": "2024-03-05" }, { "count": 14, "type": "cma", "status": "200", "date": "2024-03-21" }, { "count": 10, "type": "cma", "status": "200", "date": "2024-02-15" } ], "meta": { "from": "2024-01-31", "to": "2024-03-31", "duration": "day", "orgUid": "blt**************87", "services": "[\"cdn\",\"cma\"]" }, "uid": "0f****46-5ee9-4f38-9146-1f********8" } ``` The response body provides detailed statistics on the number of API requests executed for each HTTP status code over a specified period. Here’s a breakdown of the key elements: * count: The total number of API requests that resulted in the corresponding HTTP status code. * type: The service type (e.g., "cma") that made the requests. * status: The HTTP status code (e.g., "200" for success, "422" for client error). * date: The date on which the requests were executed. This information helps you monitor the frequency of specific HTTP status codes and track the performance and errors of your API requests. ### Cache Usage The Cache Usage request will show the number of HIT/MISS instances for your cache. Number of HIT indicates that responses were received from the cache and MISS indicates the number of responses retrieved from the database. Here’s how your response body would look like when you pass the jobId in the [Retrieve Data](/docs/developers/apis/analytics-api#retrieve-data) endpoint. ``` { "data": [ { "count": 7, "type": "cdn", "status": "MISS", "date": "2024-02-09" }, { "count": 1, "type": "cdn", "status": "HIT", "date": "2024-02-08" }, { "count": 2, "type": "cdn", "status": "MISS", "date": "2024-02-15" }, { "count": 2, "type": "cdn", "status": "MISS", "date": "2024-02-08" }, { "count": 4, "type": "cdn", "status": "MISS", "date": "2024-02-12" } ], "meta": { "orgUid": "blt**************87", "services": "[\"cdn\",\"cma\"]", "from": "2024-01-31", "duration": "day", "to": "2024-03-31" }, "uid": "0f****46-5ee9-4f38-9146-1f********8" } ``` The response body provides insights into how effectively the cache is being utilized for the specified services. Here’s a breakdown of the key elements: * count: The number of instances for the specified cache status (HIT or MISS). * type: The service type (e.g., "cdn") being tracked for cache usage. * status: Indicates whether the cache request was a "HIT" (response received from cache) or "MISS" (response retrieved from the database). * date: The date when the cache status was recorded. This information helps analyze cache efficiency by detailing the number of HITs and MISSes, aiding in optimizing the cache strategy and understanding cache utilization. ### SDK Usage The SDK Usage request gets you the number of requests that were made using the SDKs. It helps you get an overview of the SDK usage by your customers. Here’s how your response body would look like when you pass the jobId in the [Retrieve Data](/docs/developers/apis/analytics-api#retrieve-data) endpoint. ``` { "total": 16, "totalDocs": 4, "data": [ { "count": 7, "type": "cdn", "sdk": "cda-collection/v9.31.0", "date": "2024-02-09" }, { "count": 4, "type": "cdn", "sdk": "cda-collection/v9.31.0", "date": "2024-02-12" }, { "count": 3, "type": "cdn", "sdk": "cda-collection/v9.31.0", "date": "2024-02-08" }, { "count": 2, "type": "cdn", "sdk": "cda-collection/v9.31.0", "date": "2024-02-15" }, { "date": "2024-02-28" } ], "meta": { "orderBy": -1, "from": "2024-01-31", "to": "2024-02-28", "orgUid": "blt**************87", "includeCount": true, "services": "[\"cdn\",\"cma\"]", "duration": "day", "skip": 0, "limit": 900 }, "uid": "0f****46-5ee9-4f38-9146-1f********8"} ``` The response body provides detailed insights into how SDKs are being used across different services. Here’s a breakdown of the key elements: * count: The number of requests executed using a specific SDK on a given date. * type: The service type, such as "cdn". * sdk: The SDK version used for the requests. * date: The date when the SDK requests were executed. This response helps organizations track SDK adoption and effectiveness by revealing usage patterns and frequency. ### Retrieve Data The Retrieve Data request will take the jobId value that was generated in your response, as a part of its URL and will get you the actual response data for that jobId without any processing delay. Due to the async nature of the APIs, this GET data request acts as an additional step to retrieve your actual response. **Note** * Replace the jobId value in your URL with the jobId value received in your response. For example: {{api\_server}}/analytics/v2/job/job\_0\*\*\*\*\*\*9-b\*\*d-4\*\*b-9\*\*0-4\*\*\*\*\*\*\*\*\*\*2/data * The page parameter is optional. If not provided, the response defaults to page 0. If paginated is true in the response, specify a page number (0, 1, 2, etc.) to get data for that page. An invalid page number will result in an error. * A 200 Job active response indicates that the job is still processing. Retry the request after some time to receive the desired response body. You will receive the response depending on your request and relevant jobId. ## Postman Collection ### About Postman Collection The Postman collection is a set of preconfigured REST API requests that will make it easy for you to get started with the [Contentstack APIs](/docs/developers/apis) and try out our API requests through the popular [Postman](https://www.getpostman.com/) REST client. ### Install Postman To use the Postman collection you will need to have the [Postman](https://www.postman.com/downloads/) app. You can either download the **Desktop app** or use **Postman for Web**. **Note:** If you have already installed Postman for your device, go to the [Download Latest Postman Collection](#download-latest-collection) section. Postman is available for [Windows (x64)](https://dl.pstmn.io/download/latest/win64), Mac ([Intel Chip](https://dl.pstmn.io/download/latest/osx_64) / [Apple Chip](https://dl.pstmn.io/download/latest/osx_arm64)), and [Linux](https://dl.pstmn.io/download/latest/linux64) environments. ### Download Latest Collection Once you have installed Postman on your device, click the **Run in Postman** button to start working with the REST API endpoints for Contentstack. **Note:** The Postman collection does not support the now deprecated Postman Chrome extension. Make sure you have installed the latest version of the [Postman desktop app](https://www.postman.com/downloads). This opens the **Fork collection into your workspace** modal from where you can proceed to download/work with the Postman collection in the following ways: * View the Collection * Import a Copy of the Collection * Fork the Collection * Download Collection from GitHub Page Let’s look at each of the above methods in detail. #### View the Collection This option allows you to just view (and not try out) the API requests of the Postman collection. Perform the following steps to view the Analytics API Postman collection: 1. Click the **View collection** link in the **Fork collection into your workspace** modal.![View\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt7536bce43ae0bdb2/6478793320efde6806a54b39/View_collection.png) A new tab opens up in your browser where you should see the latest collection preloaded in the left navigation. ![Analytics\_Postman\_Collection\_1.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blte72937e36c7d0986/6867c5efe05471c003d8cc5b/Analytics_Postman_Collection_1.png) **Note:** If you want to try out the API requests, you can either [import a copy of the collection](/docs/developers/apis/analytics-api#import-a-copy-of-the-collection) or [fork the collection](/docs/developers/apis/analytics-api#fork-the-collection). #### Import a Copy of the Collection This option allows you to import a copy of the collection into your workspace. To import the Analytics API collection, perform the following steps: 1. Click the **import a copy** link in the **Fork collection into your workspace** modal.![Import\_a\_copy\_of\_the\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt91ff78f0d31a529e/64787932aeb2db63321191dd/Import_a_copy_of_the_collection.png) 2. In the resulting **Import Collection** modal within the **Postman** app, select a workspace and click **Import** to import the latest Postman collection into your selected workspace.![Import\_Collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt8c7719d83640836e/6478793286abb2301be842be/Import_Collection.png) 3. You will see a copy of the latest Postman collection in the left navigation panel.![Analytics\_Postman\_Collection\_1.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blte72937e36c7d0986/6867c5efe05471c003d8cc5b/Analytics_Postman_Collection_1.png) #### Fork the Collection This option allows you to fork, or create a copy of the collection, and perform changes to the collection without affecting the original. To fork the Analytics API collection, perform the following steps: 1. Click the **Fork Collection** button in the **Fork collection into your workspace** modal.![Fork\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt351855346a099539/647875ebf0d737c330b12c17/Fork_collection.png) 2. This opens the **Sign In** page. You can either enter your login credentials and click **Sign in**, or sign in using your Google account or via SSO.![Postman\_sign\_in.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt0e795421c56ca014/64787d4e69d38aeece6a2e75/Postman_sign_in.png) 3. In the resulting **Fork collection** modal, if needed, enter a **Fork label** that lets you uniquely identify your collection and select a **Workspace**. 4. Under **Notifications**, check **Watch original collection** to get notified of any changes that are made to the original collection.![Analytics\_Postman\_Collection\_2.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/bltf5f366caf45d77bf/6867c687f3da4d0a5840011c/Analytics_Postman_Collection_2.png) 5. Once done, click **Fork collection** to fork the Postman collection into your selected workspace. ### Configure Environment Variables When you download and install the latest version of the Analytics API Postman Collection, you also download and import the respective environment along with the environment variables. Once your environment is imported, next you need to set your environment specific values. **Note:** As these environment variables are referenced across multiple API requests, once you set the variables, it becomes a lot more convenient to make repeated use of the Postman Collection. Some of the important variables that you need to set are as follows: Environment Variable Value base\_url app.contentstack.com (region-speciifc URL) organization\_uid  your\_organization\_uid authtoken your\_authtoken **Note:** The Postman Collection will require a valid Authtoken to make API calls. Check out the [Authentication](/docs/developers/apis/analytics-api#authentication) section for more details. If you want to add your own environment variables, you can follow the procedure in the next section. #### Add Other Environment Variables To add any new environment variables for your Postman collection, perform the following steps: 1. Identify the environment variables that you want to define. 2. In the top right corner of Postman, click on the environment's dropdown and select **Analytics API - Environment.**![Analytics\_Postman\_Collection\_3.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt6515479ff264404b/6867c7baf7b5662e6bc26f2c/Analytics_Postman_Collection_3.png) 3. Click the "Open Environment" icon present in the top right corner of Postman. It opens up in the environment variables window.![Analytics\_Postman\_Collection\_4.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blta2aaa56b0f37a2d7/6867c7e749087f688a050b28/Analytics_Postman_Collection_4.png) 4. In the **Variable** field, enter the name of the environment variables required to run the Analytics API, that is, base\_url, authtoken, orgUid, and jobId (to retrieve the actual response). In the **Current value** field, enter your account-specific value that will replace the variable when the call is made. 5. Once you have defined your variables, click **Save**.![Analytics\_Postman\_Collection\_5.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt85b4a3cdf1d0dd9f/6867c845e1c01260ba93c559/Analytics_Postman_Collection_5.png) #### Update Environment Variables With every new API request added, we update our environment file. So, to get the latest environment variables, you need to download the collection along with the updated environment file again, compare your existing environment with the latest environment, identify and add the new variables to your existing environment. Next, let’s see how you can run API requests from your Analytics Postman collection using your environment. ### Make an API Request With the Analytics Postman Collection loaded into the Postman app (on the left panel) and the environment created, you can now make API requests to the Analytics API via Postman. To make an API request, perform the following steps: 1. Select the respective environment, **Analytics API - Environment**, from the dropdown. 2. Select an API request from the Analytics Postman Collection. In this example, we will use the **Subscription Usage** request. **Note:** If you want to make changes to your parameters or want to add parameters of your own, you can do it here. 3. Next, click **Send** at the top right to make the API request.![Analytics\_Postman\_Collection\_6.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/bltd79a06d56d58812c/6867cb74b1baf57e69c2898a/Analytics_Postman_Collection_6.png) The API call should return a jobId in the response under the **Body** tab in the bottom half of the screen.![Analytics\_Postman\_Collection\_7.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt8eeab3a4be66b179/6867cab565dc94644786e01e/Analytics_Postman_Collection_7.png) 4. Copy the jobId received in the response of your request and pass it as a URL parameter in the Retrieve Data API request to retrieve the actual response.![Analytics\_Postman\_Collection\_8.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt8f3d16433dad7512/6867cc4c2589c650cefff559/Analytics_Postman_Collection_8.png) 5. Click **Send** to retrieve the actual response.![Analytics\_Postman\_Collection\_9.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt240ff0bf44d4bb96/6867cca6a9784cf5818af89a/Analytics_Postman_Collection_9.png) ### Secure Organization UID and Tokens We strongly advise against storing your Organization UID and authtokens in your collection permanently. If you or someone else shares the collection by mistake, other users will be able to export it along with these keys. We recommend that you provide your account-specific organization UID and tokens in your environment or directly to the sample requests. #### Users using Authtoken For users who use authtoken to authenticate their calls, when you make the **Log in to your account** API request, your authtoken will be saved in cookies. If you want to prevent this action, perform the steps given below: 1. From the Postman collection, click **Cookies**. 2. In the **Cookies** modal under the **Manage** **Cookies** tab, click the **Domains Allowlist** at the bottom left. 3. Add app.contentstack.com or your region specific URL and click **Add**. This will allow you to access [cookies of this domain in scripts](https://learning.postman.com/docs/sending-requests/cookies/#accessing-cookies-in-scripts) programmatically. **Note:** To avoid this situation, we recommend you to use the organization UID along with the Authtoken to make valid Analytics API requests. For more information, refer to [Authentication](/docs/developers/apis/analytics-api#authentication). ### Postman Collection Updates We keep our Postman Collection updated. To get the latest version of our Postman Collection, all you need to do is to [download the Postman Collection along with the updated environment](/docs/developers/apis/analytics-api#download-latest-collection) again and you are good to go. --- ## URL: https://www.contentstack.com/docs/developers/apis/analytics-api/cache-usage --- title: "Analytics | Cache Usage" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/analytics-api/cache-usage" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: cache-usage.md --- # Analytics | Cache Usage ### Cache Usage **GET** `/analytics/v2/hit-miss-ratio?orgUid={organization_uid}&services={["cdn","cma"]}&from={YYYY-MM-DD}&duration={duration}&to={YYYY-MM-DD}` The Cache Usage request will show the number of HIT/MISS instances for your cache. Number of HIT indicates that responses were received from the cache and MISS indicates the number of responses retrieved from the database. Here’s how your response body would look like when you pass the jobId in the [Retrieve Data](/docs/developers/apis/analytics-api#retrieve-data) endpoint. ``` { "data": [ { "count": 7, "type": "cdn", "status": "MISS", "date": "2024-02-09" }, { "count": 1, "type": "cdn", "status": "HIT", "date": "2024-02-08" }, { "count": 2, "type": "cdn", "status": "MISS", "date": "2024-02-15" }, { "count": 2, "type": "cdn", "status": "MISS", "date": "2024-02-08" }, { "count": 4, "type": "cdn", "status": "MISS", "date": "2024-02-12" } ], "meta": { "orgUid": "blt**************87", "services": "[\"cdn\",\"cma\"]", "from": "2024-01-31", "duration": "day", "to": "2024-03-31" }, "uid": "0f****46-5ee9-4f38-9146-1f********8" } ``` The response body provides insights into how effectively the cache is being utilized for the specified services. Here’s a breakdown of the key elements: * count: The number of instances for the specified cache status (HIT or MISS). * type: The service type (e.g., "cdn") being tracked for cache usage. * status: Indicates whether the cache request was a "HIT" (response received from cache) or "MISS" (response retrieved from the database). * date: The date when the cache status was recorded. This information helps analyze cache efficiency by detailing the number of HITs and MISSes, aiding in optimizing the cache strategy and understanding cache utilization. #### Query Parameters - **orgUid** (required) Enter the UID of your Organization. - **from** (required) Specify the start date for the required data. Use the following date format: YYYY-MM-DD. - **duration** (required) Enter a value like day, week, or month. This parameter determines the granularity of the data you want to fetch. - **to** (required) Enter the current date or any date after the from date. The date format should be: YYYY-MM-DD. - **services** (required) Specify the array of services for which you want statistics, such as: \["cma", "ui", "cdn", "graphql", "images", "assets", "automations", "launch"\]. - **apiKey** (optional) Enter your stack API key to get data for that specific stack. - **cache** (optional) Enter the value as HIT for this param if you want to get the number of hit API calls and MISS to get the number of missed API calls. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` #### Sample Response ```json { "jobId": "job_7******a-c**f-4**9-9**0-c**********6", "paginated": false } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/analytics-api/device-usage --- title: "Analytics | Device Usage" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/analytics-api/device-usage" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: device-usage.md --- # Analytics | Device Usage ### Device Usage **GET** `/analytics/v2/devices?orgUid={organization_uid}&from={YYYY-MM-DD}&to={YYYY-MM-DD}` The Device Usage request helps you get a list of devices that your organization users are using to access Contentstack services. Here’s how your response body would look like when you pass the jobId in the [Retrieve Data](/docs/developers/apis/analytics-api#retrieve-data) endpoint. ``` { "totalDocs": 26, "data": [ { "count": 164, "type": "cma", "device": "sdk contentstack-management-javascript/1.13.0; platform node.js/v18.17.1; os Linux/5.4.176-91.338.amzn2.x86_64;", "date": "2024-03-05" }, { "count": 62, "type": "cma", "device": "sdk contentstack-management-javascript/1.13.0; platform node.js/v18.17.1; os Windows/10.0.22000;", "date": "2024-02-05" }, { "count": 18, "type": "cma", "device": "sdk contentstack-management-javascript/1.13.0; platform node.js/v18.17.1; os Linux/5.4.176-91.338.amzn2.x86_64;", "date": "2024-03-22" }, { "count": 16, "type": "cma", "device": "sdk contentstack-management-javascript/1.13.0; platform node.js/v18.17.1; os Linux/5.4.176-91.338.amzn2.x86_64;", "date": "2024-03-04" }, { "count": 10, "type": "cma", "device": "PostmanRuntime/7.37.0", "date": "2024-03-20" }, ... { "date": "2024-03-31" } ], "meta": { "orderBy": -1, "orgUid": "blt**************87", "includeCount": true, "from": "2024-01-31", "duration": "day", "to": "2024-03-31", "services": "[\"cdn\",\"cma\"]" }, "uid": "35****12-acf4-4ad5-93e0-48********0e" } ``` The response body provides detailed insights into users accessing Contentstack endpoints. Here’s a breakdown of the key elements: * count: Number of times the specific device was used. * type: The type of access, such as "cma" for Content Management API. * device: Description of the device or software used, including the SDK version, platform, and operating system details. * date: The specific date when the usage was recorded. This data helps you track and analyze device and environment usage, supporting performance and user experience optimization. #### Query Parameters - **orgUid** (required) Enter the UID of your Organization. - **from** (required) Specify the start date for the required data. Use the following date format: YYYY-MM-DD. - **to** (required) Enter the current date or any date after the from date. The date format should be: YYYY-MM-DD. - **services** (optional) Specify the array of services for which you want statistics, such as: \["cma", "ui", "cdn", "graphql", "images", "assets", "automations", "launch"\]. - **duration** (optional) Enter a value like day, week, or month. This parameter determines the granularity of the data you want to fetch. - **includeCount** (optional) Set this parameter to true to include the total count of users in the response. - **orderBy** (optional) Enter 1 to sort the response in ascending order by count or \-1 to sort it in descending order by count. By default, the value is set to \-1, which orders the response in descending order. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` #### Sample Response ```json { "jobId": "job_7******a-c**f-4**9-9**0-c**********6", "paginated": true } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/analytics-api/postman-collection --- title: "Analytics | Postman Collection" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/analytics-api/postman-collection" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: postman-collection.md --- # Analytics | Postman Collection ## About Postman Collection The Postman collection is a set of preconfigured REST API requests that will make it easy for you to get started with the [Contentstack APIs](/docs/developers/apis) and try out our API requests through the popular [Postman](https://www.getpostman.com/) REST client. ## Install Postman To use the Postman collection you will need to have the [Postman](https://www.postman.com/downloads/) app. You can either download the **Desktop app** or use **Postman for Web**. **Note:** If you have already installed Postman for your device, go to the [Download Latest Postman Collection](#download-latest-collection) section. Postman is available for [Windows (x64)](https://dl.pstmn.io/download/latest/win64), Mac ([Intel Chip](https://dl.pstmn.io/download/latest/osx_64) / [Apple Chip](https://dl.pstmn.io/download/latest/osx_arm64)), and [Linux](https://dl.pstmn.io/download/latest/linux64) environments. ## Download Latest Collection Once you have installed Postman on your device, click the **Run in Postman** button to start working with the REST API endpoints for Contentstack. **Note:** The Postman collection does not support the now deprecated Postman Chrome extension. Make sure you have installed the latest version of the [Postman desktop app](https://www.postman.com/downloads). This opens the **Fork collection into your workspace** modal from where you can proceed to download/work with the Postman collection in the following ways: * View the Collection * Import a Copy of the Collection * Fork the Collection * Download Collection from GitHub Page Let’s look at each of the above methods in detail. #### View the Collection This option allows you to just view (and not try out) the API requests of the Postman collection. Perform the following steps to view the Analytics API Postman collection: 1. Click the **View collection** link in the **Fork collection into your workspace** modal.![View\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt7536bce43ae0bdb2/6478793320efde6806a54b39/View_collection.png) A new tab opens up in your browser where you should see the latest collection preloaded in the left navigation. ![Analytics\_Postman\_Collection\_1.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blte72937e36c7d0986/6867c5efe05471c003d8cc5b/Analytics_Postman_Collection_1.png) **Note:** If you want to try out the API requests, you can either [import a copy of the collection](/docs/developers/apis/analytics-api#import-a-copy-of-the-collection) or [fork the collection](/docs/developers/apis/analytics-api#fork-the-collection). #### Import a Copy of the Collection This option allows you to import a copy of the collection into your workspace. To import the Analytics API collection, perform the following steps: 1. Click the **import a copy** link in the **Fork collection into your workspace** modal.![Import\_a\_copy\_of\_the\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt91ff78f0d31a529e/64787932aeb2db63321191dd/Import_a_copy_of_the_collection.png) 2. In the resulting **Import Collection** modal within the **Postman** app, select a workspace and click **Import** to import the latest Postman collection into your selected workspace.![Import\_Collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt8c7719d83640836e/6478793286abb2301be842be/Import_Collection.png) 3. You will see a copy of the latest Postman collection in the left navigation panel.![Analytics\_Postman\_Collection\_1.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blte72937e36c7d0986/6867c5efe05471c003d8cc5b/Analytics_Postman_Collection_1.png) #### Fork the Collection This option allows you to fork, or create a copy of the collection, and perform changes to the collection without affecting the original. To fork the Analytics API collection, perform the following steps: 1. Click the **Fork Collection** button in the **Fork collection into your workspace** modal.![Fork\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt351855346a099539/647875ebf0d737c330b12c17/Fork_collection.png) 2. This opens the **Sign In** page. You can either enter your login credentials and click **Sign in**, or sign in using your Google account or via SSO.![Postman\_sign\_in.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt0e795421c56ca014/64787d4e69d38aeece6a2e75/Postman_sign_in.png) 3. In the resulting **Fork collection** modal, if needed, enter a **Fork label** that lets you uniquely identify your collection and select a **Workspace**. 4. Under **Notifications**, check **Watch original collection** to get notified of any changes that are made to the original collection.![Analytics\_Postman\_Collection\_2.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/bltf5f366caf45d77bf/6867c687f3da4d0a5840011c/Analytics_Postman_Collection_2.png) 5. Once done, click **Fork collection** to fork the Postman collection into your selected workspace. ## Configure Environment Variables When you download and install the latest version of the Analytics API Postman Collection, you also download and import the respective environment along with the environment variables. Once your environment is imported, next you need to set your environment specific values. **Note:** As these environment variables are referenced across multiple API requests, once you set the variables, it becomes a lot more convenient to make repeated use of the Postman Collection. Some of the important variables that you need to set are as follows: Environment Variable Value base\_url app.contentstack.com (region-speciifc URL) organization\_uid  your\_organization\_uid authtoken your\_authtoken **Note:** The Postman Collection will require a valid Authtoken to make API calls. Check out the [Authentication](/docs/developers/apis/analytics-api#authentication) section for more details. If you want to add your own environment variables, you can follow the procedure in the next section. #### Add Other Environment Variables To add any new environment variables for your Postman collection, perform the following steps: 1. Identify the environment variables that you want to define. 2. In the top right corner of Postman, click on the environment's dropdown and select **Analytics API - Environment.**![Analytics\_Postman\_Collection\_3.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt6515479ff264404b/6867c7baf7b5662e6bc26f2c/Analytics_Postman_Collection_3.png) 3. Click the "Open Environment" icon present in the top right corner of Postman. It opens up in the environment variables window.![Analytics\_Postman\_Collection\_4.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blta2aaa56b0f37a2d7/6867c7e749087f688a050b28/Analytics_Postman_Collection_4.png) 4. In the **Variable** field, enter the name of the environment variables required to run the Analytics API, that is, base\_url, authtoken, orgUid, and jobId (to retrieve the actual response). In the **Current value** field, enter your account-specific value that will replace the variable when the call is made. 5. Once you have defined your variables, click **Save**.![Analytics\_Postman\_Collection\_5.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt85b4a3cdf1d0dd9f/6867c845e1c01260ba93c559/Analytics_Postman_Collection_5.png) #### Update Environment Variables With every new API request added, we update our environment file. So, to get the latest environment variables, you need to download the collection along with the updated environment file again, compare your existing environment with the latest environment, identify and add the new variables to your existing environment. Next, let’s see how you can run API requests from your Analytics Postman collection using your environment. ## Make an API Request With the Analytics Postman Collection loaded into the Postman app (on the left panel) and the environment created, you can now make API requests to the Analytics API via Postman. To make an API request, perform the following steps: 1. Select the respective environment, **Analytics API - Environment**, from the dropdown. 2. Select an API request from the Analytics Postman Collection. In this example, we will use the **Subscription Usage** request. **Note:** If you want to make changes to your parameters or want to add parameters of your own, you can do it here. 3. Next, click **Send** at the top right to make the API request.![Analytics\_Postman\_Collection\_6.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/bltd79a06d56d58812c/6867cb74b1baf57e69c2898a/Analytics_Postman_Collection_6.png) The API call should return a jobId in the response under the **Body** tab in the bottom half of the screen.![Analytics\_Postman\_Collection\_7.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt8eeab3a4be66b179/6867cab565dc94644786e01e/Analytics_Postman_Collection_7.png) 4. Copy the jobId received in the response of your request and pass it as a URL parameter in the Retrieve Data API request to retrieve the actual response.![Analytics\_Postman\_Collection\_8.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt8f3d16433dad7512/6867cc4c2589c650cefff559/Analytics_Postman_Collection_8.png) 5. Click **Send** to retrieve the actual response.![Analytics\_Postman\_Collection\_9.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt240ff0bf44d4bb96/6867cca6a9784cf5818af89a/Analytics_Postman_Collection_9.png) ## Secure Organization UID and Tokens We strongly advise against storing your Organization UID and authtokens in your collection permanently. If you or someone else shares the collection by mistake, other users will be able to export it along with these keys. We recommend that you provide your account-specific organization UID and tokens in your environment or directly to the sample requests. #### Users using Authtoken For users who use authtoken to authenticate their calls, when you make the **Log in to your account** API request, your authtoken will be saved in cookies. If you want to prevent this action, perform the steps given below: 1. From the Postman collection, click **Cookies**. 2. In the **Cookies** modal under the **Manage** **Cookies** tab, click the **Domains Allowlist** at the bottom left. 3. Add app.contentstack.com or your region specific URL and click **Add**. This will allow you to access [cookies of this domain in scripts](https://learning.postman.com/docs/sending-requests/cookies/#accessing-cookies-in-scripts) programmatically. **Note:** To avoid this situation, we recommend you to use the organization UID along with the Authtoken to make valid Analytics API requests. For more information, refer to [Authentication](/docs/developers/apis/analytics-api#authentication). ## Postman Collection Updates We keep our Postman Collection updated. To get the latest version of our Postman Collection, all you need to do is to [download the Postman Collection along with the updated environment](/docs/developers/apis/analytics-api#download-latest-collection) again and you are good to go. --- ## URL: https://www.contentstack.com/docs/developers/apis/analytics-api/retrieve-data --- title: "Analytics | Retrieve Data" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/analytics-api/retrieve-data" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: retrieve-data.md --- # Analytics | Retrieve Data ### Retrieve Data **GET** `/analytics/v2/job/{jobId}/data?orgUid=&page=0` The Retrieve Data request will take the jobId value that was generated in your response, as a part of its URL and will get you the actual response data for that jobId without any processing delay. Due to the async nature of the APIs, this GET data request acts as an additional step to retrieve your actual response. **Note** * Replace the jobId value in your URL with the jobId value received in your response. For example: {{api\_server}}/analytics/v2/job/job\_0\*\*\*\*\*\*9-b\*\*d-4\*\*b-9\*\*0-4\*\*\*\*\*\*\*\*\*\*2/data * The page parameter is optional. If not provided, the response defaults to page 0. If paginated is true in the response, specify a page number (0, 1, 2, etc.) to get data for that page. An invalid page number will result in an error. * A 200 Job active response indicates that the job is still processing. Retry the request after some time to receive the desired response body. You will receive the response depending on your request and relevant jobId. #### URL Parameters - **jobId** (required) Enter your job ID. #### Query Parameters - **orgUid** (required) Enter the UID of your Organization. - **page** (optional) Enter the page number you want to retrieve in the response. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` #### Sample Response ```json { "data": [ { "total_launch_project": 52, "total_launch_env": 42, "total_launch_domain": 62 } ], "meta": { "includeCount": "true", "services": "[\"cdn\",\"cma\"]", "from": "2024-01-01", "duration": "day", "to": "2024-05-28", "orgUid": "blt426dad4d38234fd5" }, "uid": "c13878ab-ff27-4b9c-ae99-a085c8f75f7d" } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/analytics-api/sdk-usage --- title: "Analytics | SDK Usage" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/analytics-api/sdk-usage" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: sdk-usage.md --- # Analytics | SDK Usage ### SDK Usage **GET** `/analytics/v2/sdk?from={YYYY-MM-DD}&to={YYYY-MM-DD}&orgUid={organization_uid}&includeCount={boolean_value}&services={["cdn","cma"]}&duration={duration}` The SDK Usage request gets you the number of requests that were made using the SDKs. It helps you get an overview of the SDK usage by your customers. Here’s how your response body would look like when you pass the jobId in the [Retrieve Data](/docs/developers/apis/analytics-api#retrieve-data) endpoint. ``` { "total": 16, "totalDocs": 4, "data": [ { "count": 7, "type": "cdn", "sdk": "cda-collection/v9.31.0", "date": "2024-02-09" }, { "count": 4, "type": "cdn", "sdk": "cda-collection/v9.31.0", "date": "2024-02-12" }, { "count": 3, "type": "cdn", "sdk": "cda-collection/v9.31.0", "date": "2024-02-08" }, { "count": 2, "type": "cdn", "sdk": "cda-collection/v9.31.0", "date": "2024-02-15" }, { "date": "2024-02-28" } ], "meta": { "orderBy": -1, "from": "2024-01-31", "to": "2024-02-28", "orgUid": "blt**************87", "includeCount": true, "services": "[\"cdn\",\"cma\"]", "duration": "day", "skip": 0, "limit": 900 }, "uid": "0f****46-5ee9-4f38-9146-1f********8"} ``` The response body provides detailed insights into how SDKs are being used across different services. Here’s a breakdown of the key elements: * count: The number of requests executed using a specific SDK on a given date. * type: The service type, such as "cdn". * sdk: The SDK version used for the requests. * date: The date when the SDK requests were executed. This response helps organizations track SDK adoption and effectiveness by revealing usage patterns and frequency. #### Query Parameters - **from** (required) Specify the start date for the required data. Use the following date format: YYYY-MM-DD. - **to** (required) Enter the current date or any date after the from date. The date format should be: YYYY-MM-DD. - **orgUid** (required) Enter the UID of your Organization. - **includeCount** (required) Set this parameter to true to include the total count of users in the response. - **services** (required) Specify the array of services for which you want statistics, such as: \["cma", "ui", "cdn", "graphql", "images", "assets", "automations", "launch"\]. - **duration** (required) Enter a value like day, week, or month. This parameter determines the granularity of the data you want to fetch. - **orderBy** (optional) Enter 1 to sort the response in ascending order by count or \-1 to sort it in descending order by count. By default, the value is set to \-1, which orders the response in descending order. - **limit** (optional) Specify the number of items you wish to fetch per request. The maximum limit is 900. - **skip** (optional) Enter the number of items to skip. For example, a skip value of 10 will skip the first 10 items. - **apiKey** (optional) Enter your stack API key to get data for that specific stack. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` #### Sample Response ```json { "jobId": "job_7******a-c**f-4**9-9**0-c**********6", "paginated": true } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/analytics-api/status-code --- title: "Analytics | Status Code" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/analytics-api/status-code" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: status-code.md --- # Analytics | Status Code ### Status Code **GET** `/analytics/v2/http-statuses?from={YYYY-MM-DD}&to={YYYY-MM-DD}&duration={duration}&orgUid={organization_uid}&services={["cdn","cma"]}` The Status Code request will show the count for the number of API requests made for each HTTP status code. For example, 200, 201, 400, 404, and so on. You can use the httpStatusCode parameter to get the count for a specific status code instead of all status codes. Here’s how your response body would look like when you pass the jobId in the [Retrieve Data](/docs/developers/apis/analytics-api#retrieve-data) endpoint. ``` { "data": [ { "count": 63, "type": "cma", "status": "200", "date": "2024-02-05" }, { "count": 1, "type": "cma", "status": "422", "date": "2024-03-05" }, { "count": 14, "type": "cma", "status": "200", "date": "2024-03-21" }, { "count": 10, "type": "cma", "status": "200", "date": "2024-02-15" } ], "meta": { "from": "2024-01-31", "to": "2024-03-31", "duration": "day", "orgUid": "blt**************87", "services": "[\"cdn\",\"cma\"]" }, "uid": "0f****46-5ee9-4f38-9146-1f********8" } ``` The response body provides detailed statistics on the number of API requests executed for each HTTP status code over a specified period. Here’s a breakdown of the key elements: * count: The total number of API requests that resulted in the corresponding HTTP status code. * type: The service type (e.g., "cma") that made the requests. * status: The HTTP status code (e.g., "200" for success, "422" for client error). * date: The date on which the requests were executed. This information helps you monitor the frequency of specific HTTP status codes and track the performance and errors of your API requests. #### Query Parameters - **from** (required) Specify the start date for the required data. Use the following date format: YYYY-MM-DD. - **to** (required) Enter the current date or any date after the from date. The date format should be: YYYY-MM-DD. - **duration** (required) Enter a value like day, week, or month. This parameter determines the granularity of the data you want to fetch. - **orgUid** (required) Enter the UID of your Organization. - **services** (required) Specify the array of services for which you want statistics, such as: \["cma", "ui", "cdn", "graphql", "images", "assets", "automations", "launch"\]. - **httpStatusCode** (optional) Enter an HTTP status code to filter the response. - **apiKey** (optional) Enter your stack API key to get data for that specific stack. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` #### Sample Response ```json { "jobId": "job_7******a-c**f-4**9-9**0-c**********6", "paginated": false } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/analytics-api/subscription-usage --- title: "Analytics | Subscription Usage" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/analytics-api/subscription-usage" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: subscription-usage.md --- # Analytics | Subscription Usage ### Subscription Usage **GET** `/analytics/v2/subscription?orgUid={organization_uid}&from={YYYY-MM-DD}&to={YYYY-MM-DD}` The Subscription Usage request returns the total number of projects, environments, and domains under Launch within your organization till date. To get the details for CMS and Automate, you can use the [Usage Analytics](/docs/developers/apis/analytics-api#usage-analytics) request. Here’s how your response body would look like when you pass the jobId in the [Retrieve Data](/docs/developers/apis/analytics-api#retrieve-data) endpoint. ``` { "data": [ { "total_launch_project": 9, "total_launch_env": 11, "total_launch_domain": 2 } ], "meta": { "orgUid": "blt**************87", "from": "2024-06-30", "to": "2024-09-12" }, "uid": "0f****46-5ee9-4f38-9146-1f********87"} ``` The response body provides an overview of the resources in the Launch section within your organization. Here’s a breakdown of the key elements: * total\_launch\_project: The total number of projects created within Launch. * total\_launch\_env: The total number of environments associated with the Launch projects . * total\_launch\_domain: The total number of domains configured within Launch. This response gives a clear view of how Launch resources are utilized within the specified date range. #### Query Parameters - **orgUid** (required) Enter the UID of your Organization. - **from** (required) Specify the start date for the required data. Use the following date format: YYYY-MM-DD. - **to** (required) Enter the current date or any date after the from date. The date format should be: YYYY-MM-DD. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` #### Sample Response ```json { "jobId": "job_7******a-c**f-4**9-9**0-c**********6", "paginated": false } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/analytics-api/top-urls --- title: "Analytics | Top URLs" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/analytics-api/top-urls" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: top-urls.md --- # Analytics | Top URLs ### Top URLs **GET** `/analytics/v2/url?orgUid={organization_uid}&from={YYYY-MM-DD}&to={YYYY-MM-DD}&includeTotalCount={boolean_value}` The Top URLs request gets you the number of requests made from your URLs for the given services. Here’s how your response body would look like when you pass the jobId in the [Retrieve Data](/docs/developers/apis/analytics-api#retrieve-data) endpoint. ``` { "data": [ { "url": "https://cdn.contentstack.io/v3/content_types?include_count=false", "type": "cdn", "count": "3" }, { "url": "https://cdn.contentstack.io/v3/content_types/header/entries/blt63c1bee28ce24ab1?environment=development", "type": "cdn", "count": "1" }, { "url": "https://cdn.contentstack.io/v3/global_fields", "type": "cdn", "count": "1" }, { "url": "https://cdn.contentstack.io/v3/content_types/test_111222/entries?environment=development", "type": "cdn", "count": "1" } ], "urlDataSource": "athena", "meta": { "orgUid": "blt**************87", "from": "2024-01-31", "duration": "day", "to": "2024-03-31", "services": "[\"cdn\"]" }, "uid": "0f****46-5ee9-4f38-9146-1f********8" } ``` The response body provides a detailed summary of the number of requests made to various URLs over a specific period. Here’s a breakdown of the key elements: * url: The specific URL that was accessed. * type: The service type of the URL, such as "cdn". * count: The number of requests made to this URL. This data helps organizations monitor traffic, identify frequently accessed URLs, and optimize performance. #### Query Parameters - **orgUid** (required) Enter the UID of your Organization. - **from** (required) Specify the start date for the required data. Use the following date format: YYYY-MM-DD. - **to** (required) Enter the current date or any date after the from date. The date format should be: YYYY-MM-DD. - **includeTotalCount** (required) Set this parameter to true to include the total count of users in the response. - **duration** (optional) Enter a value like day, week, or month. This parameter determines the granularity of the data you want to fetch. - **services** (optional) Specify the array of services for which you want statistics, such as: \["cma", "ui", "cdn", "graphql", "images", "assets", "automations", "launch"\]. - **apiKey** (optional) Enter the API key of the stack. - **orderBy** (optional) Enter 1 to sort the response in ascending order by count or \-1 to sort it in descending order by count. By default, the value is set to \-1, which orders the response in descending order. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` #### Sample Response ```json { "jobId": "job_7******a-c**f-4**9-9**0-c**********6", "paginated": true } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/analytics-api/usage-analytics --- title: "Analytics | Usage Analytics" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/analytics-api/usage-analytics" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: usage-analytics.md --- # Analytics | Usage Analytics ### Usage Analytics **GET** `/analytics/v2/usage?from={YYYY-MM-DD}&to={YYYY-MM-DD}&orgUid={organization_uid}` The Usage Analytics request gives a quick usage overview of your bandwidth and API utilization over a particular period of time. Here’s how your response body would look like when you pass the jobId in the [Retrieve Data](/docs/developers/apis/analytics-api#retrieve-data) endpoint. ``` { "data": [ { "total_api_bandwidth": 0, "total_api_count": 0, "total_cdn_bandwidth": 0, "total_cdn_count": 0, "date": "2024-03-02" }, { "total_api_bandwidth": 0, "total_api_count": 0, "total_cdn_bandwidth": 10110, "total_cdn_count": 4, "date": "2024-02-12" }, { "total_api_bandwidth": 0, "total_api_count": 0, "total_cdn_bandwidth": 0, "total_cdn_count": 0, "date": "2024-02-22" }, { "total_api_bandwidth": 0, "total_api_count": 0, "total_cdn_bandwidth": 0, "total_cdn_count": 0, "date": "2024-03-25" }, { "total_api_bandwidth": 94685, "total_api_count": 26, "total_cdn_bandwidth": 0, "total_cdn_count": 0, "date": "2024-03-04" }, { "total_api_bandwidth": 0, "total_api_count": 0, "total_cdn_bandwidth": 0, "total_cdn_count": 0, "date": "2024-02-28" } ], "meta": { "orgUid": "blt**************87", "includeCount": "true", "from": "2024-01-31", "duration": "day", "to": "2024-03-31", "services": "[\"cdn\",\"cma\"]" }, "uid": "0f****46-5ee9-4f38-9146-1f********8"} ``` The response body provides detailed insights into your organization's API and CDN usage over a specified period. Here’s a breakdown of the key elements: * total\_api\_bandwidth: The total bandwidth consumed by API requests on the specified date. * total\_api\_count: The number of API requests executed on the specified date. * total\_cdn\_bandwidth: The total bandwidth consumed by CDN requests on the specified date. * total\_cdn\_count: The number of CDN requests made on the specified date. * date: The specific date for the reported statistics. This data helps monitor and analyze the usage patterns of API and CDN resources, aiding in efficient resource management and planning. **Note** * The apiKey cannot be used with the services \["automations", "launch"\] simultaneously. * The apiKey and environmentUid parameters are only applicable to the \["launch"\] service. #### Query Parameters - **orgUid** (required) Enter the UID of your Organization. - **from** (required) Specify the start date for the required data. Use the following date format: YYYY-MM-DD. - **to** (required) Enter the current date or any date after the from date. The date format should be: YYYY-MM-DD. - **services** (optional) Specify the array of services for which you want statistics, such as: \["cma", "ui", "cdn", "graphql", "images", "assets", "automations", "launch"\]. - **includeCount** (optional) Set this parameter to true to include the total count of users in the response. - **duration** (optional) Enter a value like day, week, or month. This parameter determines the granularity of the data you want to fetch. - **apiKey** (optional) Enter the API key of the stack. - **projectUid** (optional) Enter the Launch project UID to retrieve data from that specific project. - **environmentUid** (optional) Enter the environment UID of the Launch project. #### Headers - **authtoken** (required) Enter your authtoken. Default: `your_authtoken` #### Sample Response ```json { "jobId": "job_7******a-c**f-4**9-9**0-c**********6", "paginated": false } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/automations-management-api --- title: "Automations Management API" description: "Automations Management API" url: "https://www.contentstack.com/docs/developers/apis/automations-management-api" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-05-04" filename: automations-management-api.md --- # Automations Management API ## Introduction ### Base URL * AWS North America (AWS NA): https://automations-api.contentstack.com/ * AWS Europe (AWS EU): https://eu-prod-automations-api.contentstack.com * AWS Australia (AWS AU): https://au-prod-automations-api.contentstack.com * Azure North America (Azure NA): https://azure-na-automations-api.contentstack.com * Azure Europe (Azure EU): https://azure-eu-automations-api.contentstack.com * GCP North America (GCP NA): https://gcp-na-automations-api.contentstack.com * GCP Europe (GCP EU): https://gcp-eu-automations-api.contentstack.com ### Overview Contentstack is a headless, API-first content management system (CMS) that provides everything you need to power your web or mobile properties. To learn more about Contentstack, visit our [website](https://www.contentstack.com/) or refer to our [documentation site](https://www.contentstack.com/docs) to understand what we do. This document is a detailed reference to Contentstack’s Automations Management API. The **Automations Management API** is used to manage your projects and automations present in an organization. This includes creation, updation, deletion, and fetching requests. To use the Automations Management API, you need to authenticate yourself with an [Authtoken](#how-to-get-authtoken). Read more about it in [Authentication](#authentication). **Note:** The initial release of the Automations Management API currently does not include support for Management token for authentication. However, this feature is scheduled to be introduced in upcoming releases. ### Authentication Contentstack provides token-based authentication that allows you to create, update, delete, and fetch the content of your [Contentstack account](https://www.contentstack.com/login). You can use the user Authtoken, to make Automations Management API requests. Authtokens are user-specific tokens generated when a user logs into Contentstack. Read more about the different [types of tokens](/docs/headless-cms/types-of-tokens). #### For API Key and Authtoken-based authentication * Pass the user Authtoken against the authtoken parameter as header. * Pass the Organization ID against the organization\_uid parameter as header. #### How to Get Authtoken To retrieve the authtoken, log into your Contentstack account by using the “[Log into your account](/docs/developers/apis/content-management-api/#logging-in-out)” request under “[User Session](/docs/developers/apis/content-management-api/#user-session).” This request will return the authtoken in the response body. You can generate multiple authtokens by executing the “[Log into your account](/docs/developers/apis/content-management-api/#logging-in-out)” request multiple times. These tokens do not have an expiration limit. However, currently, there is a maximum limit of 20 valid tokens that a user can use per account at a time to execute the CMA requests. **Note:** If you already have valid 20 tokens, creating a new authtoken will automatically expire the oldest authtoken without warning. For SSO-enabled organizations, the “[Log in to your account](/docs/developers/apis/content-management-api/#logging-in-out)” request will not return the user authtoken for users who access the organization through Identity Provider login credentials. Consequently, any requests that require a user authtoken will not work. The owner and users of the organization who have permission to access the organization without SSO can use the Content Management APIs. Learn more about [REST API Usage](/docs/administration/rest-api-usage). ### Rate limiting Rate limit is the maximum number of requests you can make using Contentstack’s API in a given time period. By default, the Automations Management API enforces the following rate limits: * **Read (GET) and Write (POST/PUT/DELETE) requests:** 10 requests per second per organization Your application will receive the HTTP 429 response code if the requests for a given time period exceed the defined rate limits. The aforementioned limits are configurable depending on your plan. For more information, contact our [Support](mailto:support@contentstack.com) team. ### API Conventions * The base URL for Automations Management API for different regions can be found in the [Base URL](/docs/developers/apis/automations-management-api#base-url) section. * The API version can be found in the URL, e.g. automations-api.contentstack.com/v1/endpoint. * Automations Management API supports GET/POST/PUT/DELETE verbs or methods. * URL paths are written in lower case. * Query parameters and JSON fields use lower case, with underscores (\_) separating words. * The success/failure status of an operation is determined by the HTTP status it returns. Additional information is included in the HTTP response body. * The JSON number type is bounded to a signed 32-bit integer. ### Errors If there is something wrong with the API request, Automations returns an error. Automations uses conventional, standard HTTP status codes for errors, and returns a JSON body containing details about the error. In general, codes in the 2xx range signify success. The codes in the 4xx range indicate error, mainly due to information provided (for example, a required parameter or field was omitted). Lastly, codes in the 5xx range mean that there is something wrong with Automation's servers; it is very rare though. Let’s look at the error code and their meanings. HTTP Status Code Description 400 Bad Request The request was incorrect or corrupted. 401 Access Denied The login credentials are invalid. 403 Forbidden Error The page or resource that is being accessed is forbidden. 404 Not Found The requested page or resource could not be found. 412 Precondition Failed The entered API key is invalid. 422 Unprocessable Entity (also includes Validation Error and Unknown Field)  The request is syntactically correct but contains semantic errors. 429 Rate Limit Exceeded The number of requests exceeds the allowed limit for the given time period. 500 Internal Server Error The server is malfunctioning and is not specific about what the problem is. 502 Bad Gateway Error A server received an invalid response from another server. 504 Gateway Timeout Error A server did not receive a timely response from another server it was accessing while attempting to load the web page or fulfill another request. **Note**: The error codes that we get in the JSON response are not HTTP error codes but are custom Automations error codes that are used for internal purposes. ### Using Postman Collection Contentstack offers you a Postman Collection that helps you try out our Automations Management API. You can download this collection, connect to your Contentstack account, and try out the Automations Management API with ease. Learn more about how to [get started with using the Postman Collection](/docs/developers/apis/automations-management-api#postman-collection) for Automations Management API. ## API References ### Projects #### Get All Projects The Get all projects request returns comprehensive information of all the projects related to the Organization in which they are created. To configure the permissions for your application via OAuth, include the automationhub.projects.management:read scope. **Note:** If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 100 items. #### Get a Single Project The Get a single project request fetches a specific project created in your organization. When executing the API request, you need to provide the organization UID and your authtoken in the Request Header. To configure the permissions for your application via OAuth, include the automationhub.projects.management:read scope. #### Create a Project The Create a project request lets you create a project in your organization. To configure the permissions for your application via OAuth, include the automationhub.projects.management:writescope. #### Update a Project The Update a project request lets you update certain details such as the description, tags, and title of an existing project in an Organization. To configure the permissions for your application via OAuth, include the automationhub.projects.management:write scope. Here’s an example of the Request body: ``` { "description": "New Description", "tags": ["tag1", "tag2",...], "title": "New Title"} ``` #### Delete a Project The Delete a project request lets you delete an existing project in an organization. ### Automations #### Get All Automations The Get all automations request returns comprehensive information of all the automations created in a project. To configure the permissions for your application via OAuth, include the automationhub.automations:read scope. To get a list of automations that are active, you need to pass the query={'active':'true'} parameter. **Note:** If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 100 items. #### Get a Single Automation The Get a single automation request fetches a specific automation from a project in which it was created. To configure the permissions for your application via OAuth, include the automationhub.automations:read scope. #### Activate/Deactivate an Automation The Activate/Deactivate an automation request sets an automation to an active or inactive state. To configure the permissions for your application via OAuth, include the automationhub.automations:write scope. **Note:** To activate/deactivate an automation, you must have a trigger and an action configured in your project. ### Execution Logs #### Get Execution Log The Get execution log request is used to retrieve the execution log of a project. To configure the permissions for your application via OAuth, include the automationhub.executions:read scope. **Note:** If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 100 items. #### Get an Execution Log Item The Get an execution log item request is used to retrieve a specific item from the execution log of a project. To configure the permissions for your application via OAuth, include the automationhub.executions:read scope. ### Audit Logs #### Get Audit Log The Get audit log request returns the audit log of a specific project. To configure the permissions for your application via OAuth, include the automationhub.audit-log:read scope. **Note:** If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 30 items. #### Get an Audit Log Item The Get an audit log item request is used to retrieve a specific item from the audit log of a project. To configure the permissions for your application via OAuth, include the automationhub.audit-logs:read scope. ### Project Variables #### Get All Project Variables The Get all project variables request returns comprehensive information of all the project variables defined in a project. To configure the permissions for your application via OAuth, include the automationhub.variables:read scope. **Note:** If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 100 items. #### Get a Single Project Variable The Get a single project variable request fetches a specific project variable defined in a project. To configure the permissions for your application via OAuth, include the automationhub.variables:read scope. #### Create a Project Variable The Create a project variable request lets you create a project variable in a project. To configure the permissions for your application via OAuth, include the automationhub.variables:write scope. #### Update a Project Variable The Update a project variable request lets you update the key, value and type of a project variable. To configure the permissions for your application via OAuth, include the automationhub.variables:write scope. #### Delete a Project Variable The Delete a project variable request lets you delete a specific project variable from a project. To configure the permissions for your application via OAuth, include the automationhub.variables:write scope. ### Accounts #### Get All Accounts The Get all accounts request returns comprehensive information of all the accounts in a project. To configure the permissions for your application via OAuth, include the automationhub.accounts:read scope. **Note:** If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 100 items. #### Get a Single Account The Get a single account request fetches a specific account in a project. To configure the permissions for your application via OAuth, include the automationhub.accounts:read scope. ## Postman Collection ### About Automations Postman Collection The Automations Postman collection is a set of preconfigured REST API requests that will make it easy for you to get started with the [Contentstack APIs](/docs/developers/apis/) and try out our API requests through the popular [Postman](https://www.getpostman.com/) REST client. ### Install Postman To use the Automations Postman collection you will need to have the [Postman](https://www.postman.com/downloads/). You can either download the **Desktop app** or use **Postman for Web**. **Note:** If you have already installed Postman for your device, go to the [Download Latest Postman Collection for Automations](#download-latest-collection) section. Postman is available for [Windows (x32)](https://dl.pstmn.io/download/latest/win32), [Windows (x64)](https://dl.pstmn.io/download/latest/win64), Mac ([Intel Chip](https://dl.pstmn.io/download/latest/osx_64) / [Apple Chip](https://dl.pstmn.io/download/latest/osx_arm64)), and [Linux](https://dl.pstmn.io/download/latest/linux64) environments. ### Download Latest Collection Once you have installed Postman on your device, click the **Run in Postman** button to start working with the Automations Management API endpoints for Contentstack. **Note:** The Automations Postman collection does not support the now deprecated Postman Chrome extension. Make sure you have installed the latest version of the [Postman desktop app](https://www.postman.com/downloads/). This opens the **Fork collection into your workspace** modal from where you can proceed to download/work with the Automations Postman collection in the following three ways: * View the Collection * Import a Copy of the Collection * Fork the Collection * Download Collection from GitHub Page Let’s look at each of the above methods in detail. #### View the Collection This option allows you to just view (and not try out) the API requests of the Postman collection. Perform the following steps to view the Automations Management API Postman collection: 1. Click the **View collection** link in the **Fork collection into your workspace** modal. ![View\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt7536bce43ae0bdb2/6478793320efde6806a54b39/View_collection.png) A new tab opens up in your browser where you should see the latest collection preloaded in the left navigation. ![Automate\_Postman\_View\_Collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/bltbe21bcf510c43860/660d22e0c3bc8b4f2bdd247e/Automate_Postman_View_Collection.png) **Note:** If you want to try out the API requests, you can either [import a copy of the collection](/docs/developers/apis/automation-hub-management-api#import-a-copy-of-the-collection) or [fork the collection](/docs/developers/apis/automation-hub-management-api#fork-the-collection). #### Import a Copy of the Collection This option allows you to import a copy of the collection into your workspace. To import the Automations Management API collection, perform the following steps: 1. Click the **import a copy** link in the **Fork collection into your workspace** modal. ![Import\_a\_copy\_of\_the\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt91ff78f0d31a529e/64787932aeb2db63321191dd/Import_a_copy_of_the_collection.png) 2. In the resulting **Import Collection** modal within the **Postman** app, select a workspace and click **Import** to import the latest Postman collection into your selected workspace. ![Import\_Collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt8c7719d83640836e/6478793286abb2301be842be/Import_Collection.png) 3. You will see a copy of the latest Postman collection in the left navigation panel. ![Automate\_Postman\_View\_Collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/bltbe21bcf510c43860/660d22e0c3bc8b4f2bdd247e/Automate_Postman_View_Collection.png) #### Fork the Collection This option allows you to fork, or create a copy of the collection, and perform changes to the collection without affecting the original. To fork the Automations Management API collection, perform the following steps: 1. Click the **Fork Collection** button in the **Fork collection into your workspace** modal.![Fork\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt351855346a099539/647875ebf0d737c330b12c17/Fork_collection.png) 2. This opens the **Sign In** page. You can either enter your login credentials and click **Sign in**, or sign in using your Google account or via SSO. ![Postman\_sign\_in.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt0e795421c56ca014/64787d4e69d38aeece6a2e75/Postman_sign_in.png) 3. In the resulting **Fork collection** modal, if needed, enter a **Fork label** that lets you uniquely identify your collection and select a **Workspace**. 4. Under **Notifications**, check **Watch original collection** to get notified of any changes that are made to the original collection. ![Fork\_Colection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt4167c7cc9638d4c0/660d22e0c095f82741c67303/Fork_Colection.png) 5. Once done, click **Fork Collection** to fork the Postman collection into your selected workspace. #### Download Collection from GitHub Page We have also hosted our Postman collection on [GitHub](https://github.com/contentstack/contentstack-postman-collections/blob/collections/automate-collection.json). You can follow the steps mentioned in the Readme file to download and start using it. You can also choose to watch the latest Postman collection to get notifications of new releases or updates. To do so, click the following **Watch** button and select **Watching**. ### Configure Environment Variables When you download and install the latest version of the Automations Management API Postman Collection, you also download and import the respective environment along with the environment variables. Once your Environment is imported, next you need to set your Automations account specific values. **Note:** As these environment variables are referenced across multiple API requests, once you set the variables, it becomes a lot more convenient to make repeated use of the Postman Collection. Some of the important variables that you need to set are as follows: Environment Variable Value base\_url automations-api.contentstack.com  organization\_uid  your\_organization\_uid authtoken your\_authtoken **Note:** The Automations Postman Collection will require a valid Authtoken to make API calls. Check out the [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) section for more details. If you want to add your own environment variables, you can follow the procedure in the next section. #### Add Other Environment Variables To add any new environment variables for your Postman collection, perform the following steps: 1. Identify the environment variables that you want to define. 2. In the top right corner of Postman, click on the environment's dropdown and select **Automations Management API - Environment.**![Select\_Environment.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt121816ea05b62c68/660d22e0cac0bc7a1cc87a5c/Select_Environment.png) 3. Click the "eye" icon present in the top right corner of Postman. It opens up in the environment variables modal. Click **Edit** to make changes in the variables. ![Edit\_Env.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/bltc5249d88b0410280/660d22e0071375f794c42fc2/Edit_Env.png) 4. In the **VARIABLE** field, enter the name of the environment variable. In the **INITIAL VALUE** field, enter your Automations-account-specific value that will replace the variable when the call is made. 5. Once you have defined your variables, click **Save**. ![Save\_the\_Collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt8db03c60388239fd/660d22e06c4a3976e7e46b3a/Save_the_Collection.png) #### Update Environment Variables With every new API request added, we update our environment file. So, to get the latest environment variables, you need to download the collection along with the updated environment file again, compare your existing environment with the latest environment, identify and add the new variables to your existing environment. Next, let’s see how you can run API Requests from your Automations Postman collection using your environment. ### Make an API Request With the Automations Postman Collection loaded into the Postman app (on the left panel) and the environment created, you can now make API requests to the Automations API via Postman. To make an API request, perform the following steps: 1. Select the respective environment, **Automations Management API - Environment**, from the dropdown. 2. Select an API Request from the Automations Postman Collection. In this example, we will use the **Get all projects** request which is a part of the **Projects** folder. **Note:** If you want to make changes to your parameters or want to add parameters of your own, you can do it here. 3. Next, click **Send** at the top right to make the API request. ![Send\_Request.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/bltdffafb597e1cc362/660d22e0f407dd205a315f98/Send_Request.png) The API call should return with a response under the **Body** tab in the bottom half of the screen. ![Body.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt00adba79101f3ca9/65eeb6d654369a9b6b6923a7/Body.png) ### Secure Organization UID and Tokens We strongly advise against storing your Organization UID and authtokens in your collection permanently. If you or someone else shares the collection by mistake, other users will be able to export it along with these keys. We recommend that you provide your Automations account-specific Organization UID and tokens in your environment or directly to the sample requests. #### Users using Authtoken For users who use authtoken to authenticate their calls, when you make the **Log in to your account** API Request, your authtoken will be saved in cookies. If you want to prevent this action, perform the steps given below: 1. Click **Cookies** on the far right corner. 2. In the **Cookies** modal under the **Manage** **Cookies** tab, click the **Domains Allowlist** at the bottom left. 3. Add automations-api.contentstack.com and click **Add**. This will allow you to access [cookies of this domain in scripts](https://learning.postman.com/docs/sending-requests/cookies/#accessing-cookies-in-scripts) programmatically. **Note:** To avoid this situation, we recommend you to use the Organization UID along with the Authtoken to make valid Automations Management API requests. For more information, refer to [Authentication](/docs/developers/apis/automation-hub-management-api#authentication). ### Postman Collection Updates We keep our Postman Collection updated. To get the latest version of our Postman Collection, all you need to do is to [download the Postman Collection along with the updated environment](/docs/developers/apis/automation-hub-management-api#download-latest-collection) again and you are good to go. You can also choose to watch for the latest Postman Collection updates on our [GitHub repository](https://github.com/contentstack/contentstack-postman-collections/blob/collections/automate-collection.json) and get notifications of new releases or updates to the repository. The GitHub Readme doc will help you with the steps that you need to follow. --- ## URL: https://www.contentstack.com/docs/developers/apis/automations-management-api/accounts --- title: "Automations Management API | Accounts" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/automations-management-api/accounts" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: accounts.md --- # Automations Management API | Accounts ## Get All Accounts ### Get all accounts **GET** `/v1/projects/{project_uid}/accounts?limit={limit_value}&skip={skip_value}&asc={field_uid}&desc={field_uid}&include_count={boolean_value}` The Get all accounts request returns comprehensive information of all the accounts in a project. To configure the permissions for your application via OAuth, include the automationhub.accounts:read scope. **Note:** If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 100 items. #### URL Parameters - **project_uid** (required) Enter the Project UID. #### Query Parameters - **limit** (optional) The “limit” parameter will return a specific number of accounts (in between 0-100) in your response based on the value you provide. If there are 100 accounts and you want to fetch only 30 accounts, set the limit as 30. - **skip** (optional) The “skip” parameter will skip a specific number of accounts and return the remaining ones in your response based on the value you provide. If there are 12 accounts and you want to exclude the first 2 accounts, set this to 2 to fetch the remaining 10 accounts. - **asc** (optional) The “asc” parameter allows you to sort the list of accounts in the ascending order with respect to the value of a specific field. The accounts can be sorted by _created\_at_, _title_, and _updated\_at_ values. - **desc** (optional) The “desc” parameter allows you to sort the list of accounts in the descending order with respect to the value of a specific field. The accounts can be sorted by _created\_at_, _title_, and _updated\_at_ values. - **include_count** (optional) Set this to “true” to include the total number (count) of accounts in an organization. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` #### Sample Response ```json { "accounts": [ { "group_name": "chatgpt", "title": "Test ChatGPT Account #1", "description": "chatGPT auth", "auth_id": "cb*********94bc590ea30bddfcdad9b", "user_id": "blt******dae71c6b33", "org_id": "blt******5ea6ddf287", "connector_id": "6e4******73e4230b282283164091c07", "project_id": "05732fe9f7d6454791715b09a3792f52", "type": "custom", "source": "automations", "updated_by": "blt******dae71c6b33", "scope_join_char": ",", "created_at": "2024-02-22T12:05:29.854Z", "updated_at": "2024-02-22T12:05:29.854Z", "id": "f8cb5c59b72a46858fc709281cf27e50" }, { "group_name": "launch", "title": "Test Launch Account #1", "auth_id": "0e5a*********60dab5021b434c3ba24", "user_id": "blt******dae71c6b33", "org_id": "blt******5ea6ddf287", "connector_id": "40a****f55c7485b807bb23a536e2a55", "type": "oauth2", "source": "automations", "meta": "{\"scope\":{\"launch:manage\":true}}", "scope_join_char": ",", "created_at": "2024-02-22T12:14:18.382Z", "updated_at": "2024-02-22T12:14:56.891Z", "id": "94c48b974b9045b3a1327eeb10ada605", "project_id": "05732fe9f7d6454791715b09a3792f52", "updated_by": "blt******dae71c6b33" } ] } ``` ## Get a Single Account ### Get a single account **GET** `/v1/projects/{project_uid}/accounts/{account_uid}` The Get a single account request fetches a specific account in a project. To configure the permissions for your application via OAuth, include the automationhub.accounts:read scope. #### URL Parameters - **project_uid** (required) Enter the Project UID. - **account_uid** (required) Enter the UID of the account. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` #### Sample Response ```json { "group_name": "launch", "title": "Test Launch Account #1", "auth_id": "0e5a*********60dab5021b434c3ba24", "user_id": "blt******dae71c6b33", "org_id": "blt******5ea6ddf287", "connector_id": "40a****f55c7485b807bb23a536e2a55", "type": "oauth2", "source": "automations", "meta": "{\"scope\":{\"launch:manage\":true}}", "scope_join_char": ",", "created_at": "2024-02-22T12:14:18.382Z", "updated_at": "2024-02-22T12:14:56.891Z", "id": "94c48b974b9045b3a1327eeb10ada605", "project_id": "05732fe9f7d6454791715b09a3792f52", "updated_by": "blt******dae71c6b33" } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/automations-management-api/audit-logs --- title: "Automations Management API | Audit Logs" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/automations-management-api/audit-logs" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: audit-logs.md --- # Automations Management API | Audit Logs ## Get Audit Log ### Get audit log **GET** `/v1/projects/{project_uid}/audit-logs?limit={limit_value}&skip={skip_value}&asc={field_uid}&desc={field_uid}&include_count={boolean_value}` The Get audit log request returns the audit log of a specific project. To configure the permissions for your application via OAuth, include the automationhub.audit-log:read scope. **Note:** If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 30 items. #### URL Parameters - **project_uid** (required) Enter the Project UID. #### Query Parameters - **limit** (optional) The “limit” parameter will return a specific number of audit log (in between 0-100) in your response based on the value you provide. If there are 100 audit log and you want to fetch only 30 audit log, set the limit as 30. - **skip** (optional) The “skip” parameter will skip a specific number of audit log and return the remaining ones in your response based on the value you provide. If there are 12 audit log and you want to exclude the first 2 audit log, set this to 2 to fetch the remaining 10 audit log. - **asc** (optional) The “asc” parameter allows you to sort the list of audit log in the ascending order with respect to the value of a specific field. The audit log can be sorted only by _created\_at_ value. - **desc** (optional) The “desc” parameter allows you to sort the list of audit log in the descending order with respect to the value of a specific field. The audit log can be sorted only by _created\_at_ value. - **include_count** (optional) Set this to “true” to include the total number (count) of audit log in an organization. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` #### Sample Response ```json { "logs": [ { "app_type": "", "branch": "", "channels": null, "created_at": "2024-02-22T12:06:02.262Z", "created_by": { "uid": "blt******dae71c6b33", "username": "user_blt88a8d584", "email": "sample_user@example.com", "first_name": "Jane", "last_name": "Doe", "role": 1, "active": true }, "event": "Update", "headers": null, "management_token_uid": "", "metadata": { "__v": 0, "_id": "65******6323264738b10b29", "active": false, "audience": [], "created_at": "2024-02-22T11:32:24.309Z", "description": "", "id": "345ae3c033c6432baf34fe90032eaaad", "isDraftRule": false, "org_id": "blt******5ea6ddf287", "project_id": "05732fe9f7d6454791715b09a3792f52", "published": true, "shared": [], "step_groups": [ "http", "chatgpt" ], "steps": [ { "action_title": "Chat", "auth": "f8******b72a46858fc709281cf27e50", "connector_id": "6e40e092773e4230b282283164091c07", "connector_title": "ChatGPT", "description": "This action returns the chat response(s) from the OpenAI platform.", "group_name": "chatgpt", "help": "https://www.contentstack.com/docs/developers/automation-hub-connectors/chatgpt/#action-1-select-the-chat-action", "id": "1377cbb3032e4f1b9a7dbe664f938c73", "input_data": "{\"model\":\"{(gpt-3.5-turbo-0613||gpt-3.5-turbo-0613)}\",\"prompt\":\"convert to german language\",\"role\":\"user\",\"max_tokens\":500,\"temperature\":0.5,\"n\":1,\"escaped_response\":true}", "input_schema": "{\n \"type\": \"object\",\n \"required\": [\n \"model\",\n \"prompt\",\n \"role\"\n ],\n \"properties\": {\n \"model\": {\n \"type\": \"string\",\n \"title\": \"Select Model\",\n \"description\": \"Select the API model to use for the chat response.Note that \\\"continuous\\\" models (gpt-3.5-turbo, gpt-4 and gpt-4-32k) will always point to the latest stable versions. Experimental models (listed with dates or the \\\"preview\\\" label) are only available for a limited time and will return an error after they are deprecated. Please check with OpenAl's documentation for more information.\",\n \"lookup\": {\n \"id\": \"get_chat_models\",\n \"edit\": true\n },\n \"minLength\": 1\n },\n \"prompt\": {\n \"type\": \"string\",\n \"title\": \"Prompt Text\",\n \"format\": \"textarea\",\n \"description\": \"Enter the input text to generate a response. Add multiple prompt texts within the Show optional fields below.\",\n \"minLength\": 5\n },\n \"role\": {\n \"type\": \"string\",\n \"title\": \"Select Role\",\n \"description\": \"Select the role identifier to send to the API model request.\",\n \"default\": \"user\",\n \"enum\": [\n \"user\",\n \"system\",\n \"assistant\"\n ],\n \"minLength\": 1\n },\n \"max_tokens\": {\n \"show\": false,\n \"type\": \"integer\",\n \"title\": \"Number of Tokens\",\n \"description\": \"Enter the maximum number of tokens to generate the content. This must be within the range of 1 to 2048.\",\n \"default\": 500,\n \"minimum\": 1,\n \"maximum\": 2048,\n \"minLength\": 1\n },\n \"temperature\": {\n \"show\": false,\n \"type\": \"number\",\n \"title\": \"Randomness of Responses\",\n \"description\": \"Enter the value for the randomness of the generated content, 0 being the most precise and 2 being the most random content predictions. This must be within the range of 0 to 2.\",\n \"default\": 0.5,\n \"minimum\": 0,\n \"maximum\": 2,\n \"minLength\": 1\n },\n \"n\": {\n \"show\": false,\n \"type\": \"integer\",\n \"title\": \"Number of Chat Responses\",\n \"description\": \"Enter the maximum number of chat responses. This must be within the range of 1 to 3.\",\n \"default\": 1,\n \"minimum\": 1,\n \"maximum\": 3\n },\n \"frequency_penalty\": {\n \"show\": false,\n \"type\": \"number\",\n \"title\": \"Frequency of Repeated Words\",\n \"description\": \"Enter the value to set the frequency of repeated words. The most positive value is likely to avoid the use of repeated words. This must be within the range of -2 to 2.\",\n \"minimum\": -2,\n \"maximum\": 2\n },\n \"presence_penalty\": {\n \"show\": false,\n \"type\": \"number\",\n \"title\": \"Presence of Repeated Responses\",\n \"description\": \"Enter the value to set the presence of repeated responses. The most positive value is likely to generate a new response. This must be within the range of -2 to 2.\",\n \"minimum\": -2,\n \"maximum\": 2\n },\n \"messages\": {\n \"show\": false,\n \"type\": \"array\",\n \"title\": \"Additional Prompt Text\",\n \"description\": \"Enter multiple messages in key-value pairs.\",\n \"maxItems\": 10,\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"role\": {\n \"title\": \"Role\",\n \"type\": \"string\",\n \"minLength\": 1,\n \"enum\": [\n \"user\",\n \"system\",\n \"assistant\"\n ],\n \"default\": \"user\"\n },\n \"content\": {\n \"title\": \"Input Query\",\n \"type\": \"string\",\n \"minLength\": 1\n }\n }\n }\n },\n \"escaped_response\": {\n \"show\": false,\n \"title\": \"Sanitize text\",\n \"description\": \"Enable to format text for compatibility, ensuring proper escape of special characters to prevent interference with API processes or webpage code. Disable this option to format manually.\",\n \"type\": \"boolean\",\n \"default\": true\n }\n }\n}", "name": "119202", "next": [], "origin_id": "cc219f3a5c75433bb859c24e315a13fa", "skipped": true, "tested": false, "title": "Chat", "type": "action", "version": 5 } ], "tags": [], "throttle": false, "title": "ChatGPT", "trigger": { "id": "fc4a630beb984aff9ca2cdf02e27c844", "next": [ "119202" ] }, "updated_at": "2024-02-22T12:06:02.256Z", "updated_by": "blt******dae71c6b33", "user_id": "blt******dae71c6b33" }, "module": "Automation", "module_uid": "345ae3c033c6432baf34fe90032eaaad", "org_uid": "blt******5ea6ddf287", "payload": null, "project_uid": "05732fe9f7d6454791715b09a3792f52", "remote_addr": "223.***.**.180", "request": {}, "request_id": "7b176535-bfc6-4b08-9f2d-58f7c7056598", "response": {}, "sort": null, "stack": "", "uid": "cslsc21851b3-0cf4-4767-84b4-a30e873bbcc3" }, { "app_type": "", "branch": "", "channels": null, "created_at": "2024-02-22T12:03:01.283Z", "created_by": { "uid": "blt******dae71c6b33", "username": "user_blt88a8d584", "email": "sample_user@example.com", "first_name": "Jane", "last_name": "Doe", "role": 1, "active": true }, "event": "Update", "headers": null, "management_token_uid": "", "metadata": { "__v": 0, "_id": "65******6323264738b10b29", "active": false, "audience": [], "created_at": "2024-02-22T11:32:24.309Z", "description": "", "id": "345ae3c033c6432baf34fe90032eaaad", "isDraftRule": false, "org_id": "blt******5ea6ddf287", "project_id": "05732fe9f7d6454791715b09a3792f52", "published": true, "shared": [], "step_groups": [ "http", null ], "steps": [], "tags": [], "throttle": false, "title": "ChatGPT", "trigger": { "id": "fc4a630beb984aff9ca2cdf02e27c844", "next": [] }, "updated_at": "2024-02-22T12:03:01.279Z", "updated_by": "blt******dae71c6b33", "user_id": "blt******dae71c6b33" }, "module": "Automation", "module_uid": "345ae3c033c6432baf34fe90032eaaad", "org_uid": "blt******5ea6ddf287", "payload": null, "project_uid": "05732fe9f7d6454791715b09a3792f52", "remote_addr": "223.***.**.180", "request": {}, "request_id": "5f17ae07-697c-40c0-9a8f-bdd8b5fc3eb0", "response": {}, "sort": null, "stack": "", "uid": "cslscb28b96f-f29c-4f68-bfc8-845a8085e948" }, { "app_type": "", "branch": "", "channels": null, "created_at": "2024-02-22T12:12:08.115Z", "created_by": { "uid": "blt******dae71c6b33", "username": "user_blt88a8d584", "email": "sample_user@example.com", "first_name": "Jane", "last_name": "Doe", "role": 1, "active": true }, "event": "Enabled", "headers": null, "management_token_uid": "", "metadata": { "__v": 0, "_id": "65******6323264738b10b29", "active": true, "audience": [], "created_at": "2024-02-22T11:32:24.309Z", "description": "", "id": "345ae3c033c6432baf34fe90032eaaad", "isDraftRule": false, "org_id": "blt******5ea6ddf287", "project_id": "05732fe9f7d6454791715b09a3792f52", "published": true, "shared": [], "step_groups": [ "http", "chatgpt" ], "steps": [ { "action_title": "Chat", "auth": "f8******b72a46858fc709281cf27e50", "connector_id": "6e40e092773e4230b282283164091c07", "connector_title": "ChatGPT", "description": "This action returns the chat response(s) from the OpenAI platform.", "group_name": "chatgpt", "help": "https://www.contentstack.com/docs/developers/automation-hub-connectors/chatgpt/#action-1-select-the-chat-action", "id": "1377cbb3032e4f1b9a7dbe664f938c73", "input_data": "{\"model\":\"{(gpt-3.5-turbo-0613||gpt-3.5-turbo-0613)}\",\"prompt\":\"convert to german language\",\"role\":\"user\",\"max_tokens\":500,\"temperature\":0.5,\"n\":1,\"escaped_response\":true}", "input_schema": "{\n \"type\": \"object\",\n \"required\": [\n \"model\",\n \"prompt\",\n \"role\"\n ],\n \"properties\": {\n \"model\": {\n \"type\": \"string\",\n \"title\": \"Select Model\",\n \"description\": \"Select the API model to use for the chat response.Note that \\\"continuous\\\" models (gpt-3.5-turbo, gpt-4 and gpt-4-32k) will always point to the latest stable versions. Experimental models (listed with dates or the \\\"preview\\\" label) are only available for a limited time and will return an error after they are deprecated. Please check with OpenAl's documentation for more information.\",\n \"lookup\": {\n \"id\": \"get_chat_models\",\n \"edit\": true\n },\n \"minLength\": 1\n },\n \"prompt\": {\n \"type\": \"string\",\n \"title\": \"Prompt Text\",\n \"format\": \"textarea\",\n \"description\": \"Enter the input text to generate a response. Add multiple prompt texts within the Show optional fields below.\",\n \"minLength\": 5\n },\n \"role\": {\n \"type\": \"string\",\n \"title\": \"Select Role\",\n \"description\": \"Select the role identifier to send to the API model request.\",\n \"default\": \"user\",\n \"enum\": [\n \"user\",\n \"system\",\n \"assistant\"\n ],\n \"minLength\": 1\n },\n \"max_tokens\": {\n \"show\": false,\n \"type\": \"integer\",\n \"title\": \"Number of Tokens\",\n \"description\": \"Enter the maximum number of tokens to generate the content. This must be within the range of 1 to 2048.\",\n \"default\": 500,\n \"minimum\": 1,\n \"maximum\": 2048,\n \"minLength\": 1\n },\n \"temperature\": {\n \"show\": false,\n \"type\": \"number\",\n \"title\": \"Randomness of Responses\",\n \"description\": \"Enter the value for the randomness of the generated content, 0 being the most precise and 2 being the most random content predictions. This must be within the range of 0 to 2.\",\n \"default\": 0.5,\n \"minimum\": 0,\n \"maximum\": 2,\n \"minLength\": 1\n },\n \"n\": {\n \"show\": false,\n \"type\": \"integer\",\n \"title\": \"Number of Chat Responses\",\n \"description\": \"Enter the maximum number of chat responses. This must be within the range of 1 to 3.\",\n \"default\": 1,\n \"minimum\": 1,\n \"maximum\": 3\n },\n \"frequency_penalty\": {\n \"show\": false,\n \"type\": \"number\",\n \"title\": \"Frequency of Repeated Words\",\n \"description\": \"Enter the value to set the frequency of repeated words. The most positive value is likely to avoid the use of repeated words. This must be within the range of -2 to 2.\",\n \"minimum\": -2,\n \"maximum\": 2\n },\n \"presence_penalty\": {\n \"show\": false,\n \"type\": \"number\",\n \"title\": \"Presence of Repeated Responses\",\n \"description\": \"Enter the value to set the presence of repeated responses. The most positive value is likely to generate a new response. This must be within the range of -2 to 2.\",\n \"minimum\": -2,\n \"maximum\": 2\n },\n \"messages\": {\n \"show\": false,\n \"type\": \"array\",\n \"title\": \"Additional Prompt Text\",\n \"description\": \"Enter multiple messages in key-value pairs.\",\n \"maxItems\": 10,\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"role\": {\n \"title\": \"Role\",\n \"type\": \"string\",\n \"minLength\": 1,\n \"enum\": [\n \"user\",\n \"system\",\n \"assistant\"\n ],\n \"default\": \"user\"\n },\n \"content\": {\n \"title\": \"Input Query\",\n \"type\": \"string\",\n \"minLength\": 1\n }\n }\n }\n },\n \"escaped_response\": {\n \"show\": false,\n \"title\": \"Sanitize text\",\n \"description\": \"Enable to format text for compatibility, ensuring proper escape of special characters to prevent interference with API processes or webpage code. Disable this option to format manually.\",\n \"type\": \"boolean\",\n \"default\": true\n }\n }\n}", "name": "119202", "next": [], "origin_id": "cc219f3a5c75433bb859c24e315a13fa", "skipped": true, "tested": false, "title": "Chat", "type": "action", "version": 5 } ], "tags": [], "throttle": false, "title": "ChatGPT", "trigger": { "id": "fc4a630beb984aff9ca2cdf02e27c844", "next": [ "119202" ] }, "updated_at": "2024-02-22T12:12:08.109Z", "updated_by": "blt******dae71c6b33", "user_id": "blt******dae71c6b33" }, "module": "Automation", "module_uid": "345ae3c033c6432baf34fe90032eaaad", "org_uid": "blt******5ea6ddf287", "payload": null, "project_uid": "05732fe9f7d6454791715b09a3792f52", "remote_addr": "223.***.**.180", "request": {}, "request_id": "462f3d58-ee03-49b7-9a2c-93cb2ac16a36", "response": {}, "sort": null, "stack": "", "uid": "cslsfc416711-4e65-4328-9da6-aa8ea084ed5c" }, { "app_type": "", "branch": "", "channels": null, "created_at": "2024-02-22T11:32:35.932Z", "created_by": { "uid": "blt******dae71c6b33", "username": "user_blt88a8d584", "email": "sample_user@example.com", "first_name": "Jane", "last_name": "Doe", "role": 1, "active": true }, "event": "Update", "headers": null, "management_token_uid": "", "metadata": { "__v": 0, "_id": "65******6323264738b10b29", "active": false, "audience": [], "created_at": "2024-02-22T11:32:24.309Z", "description": "", "id": "345ae3c033c6432baf34fe90032eaaad", "isDraftRule": false, "org_id": "blt******5ea6ddf287", "project_id": "05732fe9f7d6454791715b09a3792f52", "published": true, "shared": [], "step_groups": [], "steps": [], "tags": [], "throttle": false, "title": "ChatGPT", "trigger": { "next": [] }, "updated_at": "2024-02-22T11:32:35.928Z", "updated_by": "blt******dae71c6b33", "user_id": "blt******dae71c6b33" }, "module": "Automation", "module_uid": "345ae3c033c6432baf34fe90032eaaad", "org_uid": "blt******5ea6ddf287", "payload": null, "project_uid": "05732fe9f7d6454791715b09a3792f52", "remote_addr": "223.***.**.180", "request": {}, "request_id": "faf97354-8540-46c7-8ae6-c3f8c78b3ea4", "response": {}, "sort": null, "stack": "", "uid": "cslse7ba2777-d0f7-4d14-9635-417a3f31e1c1" }, { "app_type": "", "branch": "", "channels": null, "created_at": "2024-02-22T11:31:27.865Z", "created_by": { "uid": "blt******dae71c6b33", "username": "user_blt88a8d584", "email": "sample_user@example.com", "first_name": "Jane", "last_name": "Doe", "role": 1, "active": true }, "event": "Create", "headers": null, "management_token_uid": "", "metadata": { "audience": [], "created_at": "2024-02-22T11:31:27.837Z", "description": "", "id": "05732fe9f7d6454791715b09a3792f52", "org_id": "blt******5ea6ddf287", "project_id": "05732fe9f7d6454791715b09a3792f52", "published": true, "shared": [], "tags": [], "title": "Sample Test Project - Docs", "type": "standard", "updated_at": "2024-02-22T11:31:27.837Z", "updated_by": "blt******dae71c6b33", "user_id": "blt******dae71c6b33" }, "module": "Project", "module_uid": "05732fe9f7d6454791715b09a3792f52", "org_uid": "blt******5ea6ddf287", "payload": null, "project_uid": "05732fe9f7d6454791715b09a3792f52", "remote_addr": "223.***.**.180", "request": {}, "request_id": "9e91ca1c-a936-4097-9ef5-f52fd9e343a3", "response": {}, "sort": null, "stack": "", "uid": "csls1a6077b3-9caf-4744-8421-e086d5a637bb" }, { "app_type": "", "branch": "", "channels": null, "created_at": "2024-02-22T12:05:29.859Z", "created_by": { "uid": "blt******dae71c6b33", "username": "user_blt88a8d584", "email": "sample_user@example.com", "first_name": "Jane", "last_name": "Doe", "role": 1, "active": true }, "event": "Create", "headers": null, "management_token_uid": "", "metadata": { "auth": "ENC_123456789014;RKJYcErInW++33CR;5jVdinG8bti1Wf7qlKHLeg==;MeMNX8CswW+tViVt9yQaVgPznfjIV+01wBbrQ5mKUDXIt5rNkuvHezYRidUSZS952qijQlTsziOkr8Je/ntzqtLhvD91C+19nGAhcdkF3tbLX/7Lizi6wX0YT1VQ/UV41xzQPbhZ9Pf1", "auth_id": "cb70c43793194bc590ea30bddfcdad9b", "callback_url": "https://automations-api.contentstack.com/userauths/auth/callback", "connector_id": "6e40e092773e4230b282283164091c07", "content_type": "application/json", "created_at": "2024-02-22T12:05:29.854Z", "description": "chatGPT auth", "done": false, "group_name": "chatgpt", "has_connect": false, "id": "f8******b72a46858fc709281cf27e50", "org_id": "blt******5ea6ddf287", "project_id": "05732fe9f7d6454791715b09a3792f52", "published": true, "scope_join_char": ",", "source": "automations", "title": "Test ChatGPT Account #1", "type": "custom", "updated_at": "2024-02-22T12:05:29.854Z", "updated_by": "blt******dae71c6b33", "user_id": "blt******dae71c6b33" }, "module": "Connected Apps", "module_uid": "f8******b72a46858fc709281cf27e50", "org_uid": "blt******5ea6ddf287", "payload": null, "project_uid": "05732fe9f7d6454791715b09a3792f52", "remote_addr": "223.***.**.180", "request": {}, "request_id": "491d1513-7b96-47af-8315-360b7e97dc17", "response": {}, "sort": null, "stack": "", "uid": "cslsac6ada7c-f73e-41c5-b75b-b3f3a5fc7c2a" }, { "app_type": "", "branch": "", "channels": null, "created_at": "2024-02-22T12:14:56.897Z", "created_by": { "uid": "blt******dae71c6b33", "username": "user_blt88a8d584", "email": "sample_user@example.com", "first_name": "Jane", "last_name": "Doe", "role": 1, "active": true }, "event": "Create", "headers": null, "management_token_uid": "", "metadata": { "access_call_opts": "{\n \"code\": \"{{code}}\",\n \"client_id\": \"{{client_id}}\",\n \"client_secret\": \"{{client_secret}}\",\n \"redirect_uri\": \"{{redirect_url}}\",\n \"grant_type\": \"authorization_code\"\n}", "access_url": "https://developerhub-api.contentstack.com/apps/token", "auth": "ENC_123456789014;iWLyGiWkQ7Ridg9o;fE/WD914O5aYfIBgJcKp8w==;SSYQLAQ6tsSeI+jVKkzKxf1Krjn3Kyw4+2P1tSugIwnaDcZ5LBb1Z038YmxmaNI5rXiaf08mtoQHqAuNFw+NgORmbjfhX9ctviPHd4ugk3MwV0vQ0JmaS3xHtC24LiY6GqRQNJRmbj5pFinI/e8o22c0l4CotT4ujDUJ7ed0EaxMO3fp3PYfshv6gLtiJyRx0jmjurLLkp0+Uil7SmJwPB9A2iWMWZpQou/gwxm164z4e6ZLeE9EmNzELyJIObFLI+Moq8a6JsEajLkVugskOhF5ypYtSrkGnCmqsEO51I9QsDeZCbWa1DEJjNq1lBOdNg6w9RVL1UzQIoifVPg6113YJ4aiXxTdGME9DoXnpUV45kyBnqFdHrJIame9WNtZmSLze2PcL2L9h//pQYI0LiLJNN4NjL9ysWBTpqkmFg==", "auth_id": "0e5a5280bf51460dab5021b434c3ba24", "callback_url": "https://automations-api.contentstack.com/userauths/auth/callback", "client_id": "C_9TIxT8Sam76IMG", "client_secret": "hgBXMqgoJIjxyPo2xEc1beKKJYoMZCoa", "code_challenge": null, "code_verifier": null, "connector_id": "40a86f3f55c7485b807bb23a536e2a55", "content_type": "application/json", "created_at": "2024-02-22T12:14:18.382Z", "done": true, "expires_at": 1708607679225, "group_name": "launch", "id": "94c48b974b9045b3a1327eeb10ada605", "meta": "{\"scope\":{\"launch:manage\":true}}", "org_id": "blt******5ea6ddf287", "project_id": "05732fe9f7d6454791715b09a3792f52", "published": true, "refresh_call_opts": "{\n \"refresh_token\": \"{{refresh_token}}\",\n \"client_id\": \"{{client_id}}\",\n \"client_secret\": \"{{client_secret}}\",\n \"redirect_uri\": \"{{redirect_url}}\",\n \"grant_type\": \"refresh_token\"\n}", "refresh_url": "https://developerhub-api.contentstack.com/apps/token", "scope_join_char": ",", "source": "automations", "title": "Test Launch Account #1", "type": "oauth2", "updated_at": "2024-02-22T12:14:56.891Z", "updated_by": "blt******dae71c6b33", "user_id": "blt******dae71c6b33" }, "module": "Connected Apps", "module_uid": "94c48b974b9045b3a1327eeb10ada605", "org_uid": "blt******5ea6ddf287", "payload": null, "project_uid": "05732fe9f7d6454791715b09a3792f52", "remote_addr": "223.***.**.180", "request": {}, "request_id": "e0bda81e-a0bf-452b-a5db-e4c409fd7740", "response": {}, "sort": null, "stack": "", "uid": "csls9688341b-4529-4d1b-bf7f-8d433d45c5d1" } ] } ``` ## Get an Audit Log Item ### Get an audit log item **GET** `/v1/projects/{project_uid}/audit-logs/{auditlog_uid}` The Get an audit log item request is used to retrieve a specific item from the audit log of a project. To configure the permissions for your application via OAuth, include the automationhub.audit-logs:read scope. #### URL Parameters - **project_uid** (required) Enter the Project UID. - **auditlog_uid** (required) Enter the UID of the specific log you want to retrieve. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` #### Sample Response ```json { "app_type": "", "branch": "", "channels": null, "created_at": "2024-02-22T12:03:01.283Z", "created_by": { "uid": "blt******dae71c6b33", "username": "user_blt88a8d584", "email": "sample_user@example.com", "first_name": "Jane", "last_name": "Doe", "role": 1, "active": true }, "event": "Update", "headers": null, "management_token_uid": "", "metadata": { "__v": 0, "_id": "65******6323264738b10b29", "active": false, "audience": [], "created_at": "2024-02-22T11:32:24.309Z", "description": "", "id": "345ae3c033c6432baf34fe90032eaaad", "isDraftRule": false, "org_id": "blt******5ea6ddf287", "project_id": "05732fe9f7d6454791715b09a3792f52", "published": true, "shared": [], "step_groups": [ "http", null ], "steps": [], "tags": [], "throttle": false, "title": "ChatGPT", "trigger": { "id": "fc4a630beb984aff9ca2cdf02e27c844", "next": [] }, "updated_at": "2024-02-22T12:03:01.279Z", "updated_by": "blt******dae71c6b33", "user_id": "blt******dae71c6b33" }, "module": "Automation", "module_uid": "345ae3c033c6432baf34fe90032eaaad", "org_uid": "blt******5ea6ddf287", "payload": null, "project_uid": "05732fe9f7d6454791715b09a3792f52", "remote_addr": "223.***.**.180", "request": {}, "request_id": "5f17ae07-697c-40c0-9a8f-bdd8b5fc3eb0", "response": {}, "sort": null, "stack": "", "uid": "cslscb28b96f-f29c-4f68-bfc8-845a8085e948" } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/automations-management-api/automations --- title: "Automations Management API | Automations" description: "

    " url: "https://www.contentstack.com/docs/developers/apis/automations-management-api/automations" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: automations.md --- # Automations Management API | Automations ## Get All Automations ### Get all automations **GET** `/v1/projects/{project_uid}/automations?limit={limit_value}&skip={skip_value}&asc={field_uid}&desc={field_uid}&include_count={boolean_value}&show_steps={boolean_value}` The Get all automations request returns comprehensive information of all the automations created in a project. To configure the permissions for your application via OAuth, include the automationhub.automations:read scope. To get a list of automations that are active, you need to pass the query={'active':'true'} parameter. **Note:** If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 100 items. #### URL Parameters - **project_uid** (required) Enter the Project UID of the project. #### Query Parameters - **limit** (optional) The “limit” parameter will return a specific number of automations (in between 0-100) in your response based on the value you provide. If there are 100 automations and you want to fetch only 30 automations, set the limit as 30. - **skip** (optional) The “skip” parameter will skip a specific number of automations and return the remaining ones in your response based on the value you provide. If there are 12 automations and you want to exclude the first 2 automations, set this to 2 to fetch the remaining 10 automations. - **asc** (optional) The “asc” parameter allows you to sort the list of automations in the ascending order with respect to the value of a specific field. The automations can be sorted by _created\_at_, _title_, and _updated\_at_ values. - **desc** (optional) The “desc” parameter allows you to sort the list of automations in the descending order with respect to the value of a specific field. The automations can be sorted by _created\_at_, _title_, and _updated\_at_ values. - **include_count** (optional) Set this to “true” to include the total number (count) of automations present in a project accessible in an organization. - **show_steps** (optional) Set this to “true” to return all the steps, triggers associated with each automation in a project. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` #### Sample Response ```json { "rules": [ { "id": "345ae3c033c643***f34fe90032eaaad", "title": "ChatGPT", "description": "", "project_id": "05732fe9f7d6454791715b09a3792f52", "org_id": "blt4051c65****df287", "user_id": "blt762406d****c6b33", "active": true, "updated_by": "blt762406****1c6b33", "throttle": false, "created_at": "2024-02-22T11:32:24.309Z", "updated_at": "2024-02-22T12:12:08.109Z" }, { "id": "b5b0a755a51d4***81d0968fe19a5f62", "title": "ChatGPT Test 2", "description": "", "project_id": "05732fe9f7d6454791715b09a3792f52", "org_id": "blt4051c6***6ddf287", "user_id": "blt76240****71c6b33", "active": false, "updated_by": "blt76240****71c6b33", "throttle": false, "created_at": "2024-02-22T12:12:24.422Z", "updated_at": "2024-02-22T12:12:24.422Z" } ] } ``` ## Get a Single Automation ### Get a single automation **GET** `/v1/projects/{project_uid}/automations/{automation_uid}?show_steps={boolean_value}` The Get a single automation request fetches a specific automation from a project in which it was created. To configure the permissions for your application via OAuth, include the automationhub.automations:read scope. #### URL Parameters - **project_uid** (required) Enter the Project UID. - **automation_uid** (required) Enter the Automation UID. #### Query Parameters - **show_steps** (optional) Set this to “true” to return all the steps, triggers associated with each automation in a project. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` #### Sample Response ```json { "id": "b5b0a755a51d4****1d0968fe19a5f62", "title": "ChatGPT Test 2", "description": "", "project_id": "05732fe9f7d6454791715b09a3792f52", "org_id": "blt4051c****6ddf287", "user_id": "blt76240****71c6b33", "active": false, "updated_by": "blt7624****e71c6b33", "throttle": false, "created_at": "2024-02-22T12:12:24.422Z", "updated_at": "2024-02-22T12:12:24.422Z" } ``` ## Activate/Deactivate an Automation ### Activate/Deactivate an automation **PATCH** `/v1/projects/{project_uid}/automations/{automation_uid}` The Activate/Deactivate an automation request sets an automation to an active or inactive state. To configure the permissions for your application via OAuth, include the automationhub.automations:write scope. **Note:** To activate/deactivate an automation, you must have a trigger and an action configured in your project. #### URL Parameters - **project_uid** (required) Enter the Project UID. - **automation_uid** (required) Enter the Automation UID. #### Headers - **authtoken** (optional) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` #### Sample Response ```json { "message": "automation has been activated successfully" } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/automations-management-api/execution-logs --- title: "Automations Management API | Execution Logs" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/automations-management-api/execution-logs" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: execution-logs.md --- # Automations Management API | Execution Logs ## Get Execution Log ### Get execution log **GET** `/v1/projects/{project_uid}/executions?&limit={limit_value}&skip={skip_value}&asc={field_uid}&desc={field_uid}&include_count={boolean_value}` The Get execution log request is used to retrieve the execution log of a project. To configure the permissions for your application via OAuth, include the automationhub.executions:read scope. **Note:** If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 100 items. #### URL Parameters - **project_uid** (required) Enter the Project UID. #### Query Parameters - **limit** (optional) The “limit” parameter will return a specific number of execution log (in between 0-100) in your response based on the value you provide. If there are 100 execution log and you want to fetch only 30 execution log, set the limit as 30. - **skip** (optional) The “skip” parameter will skip a specific number of execution log and return the remaining ones in your response based on the value you provide. If there are 12 log and you want to exclude the first 2 log, set this to 2 to fetch the remaining 10 log. - **asc** (optional) The “asc” parameter allows you to sort the list of execution log in the ascending order with respect to the value of a specific field. The execution log can be sorted by _created\_at_, _title_, and _updated\_at_ values. - **desc** (optional) The “desc” parameter allows you to sort the list of execution log in the descending order with respect to the value of a specific field. The execution log can be sorted by _created\_at_, _title_, and _updated\_at_ values. - **include_count** (optional) Set this to “true” to include the total number (count) of execution log in an organization. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` #### Sample Response ```json { "executions": [ { "title": "Slack", "project_id": "05732fe9f7d6454791715b09a3792f52", "trigger_payload_id": "1fa815a1d****c59874404adebe2451f", "org_id": "blt4051c6***6ddf287", "rule_id": "bb27e85b4b3****bac4c19b7765b1d0f", "status": "success", "task": 3, "resume": 0, "details": [ { "start": 1708608898366, "end": 1708608898374, "title": "Trigger", "name": "1", "status": "success" }, { "start": 1708608898374, "end": 1708608898374, "parent": null, "counter": 0, "group": "transform", "name": "110002", "status": "success", "title": "Transform" }, { "start": 1708608898374, "end": 1708608898374, "parent": null, "counter": 0, "group": "response", "name": "110003", "status": "success", "title": "Response" } ], "created_at": "2024-02-22T13:34:58.354Z", "updated_at": "2024-02-22T13:34:58.374Z", "id": "7cc3a3be3bcd48a4****96d1fc1f2e170f", "step_name_map": { "1": "1", "110002": "2", "110003": "3" }, "duration": 8 } ] } ``` ## Get an Execution Log Item ### Get an execution log item **GET** `/v1/projects/{project_uid}/executions/{execution_uid}` The Get an execution log item request is used to retrieve a specific item from the execution log of a project. To configure the permissions for your application via OAuth, include the automationhub.executions:read scope. #### URL Parameters - **project_uid** (required) Enter the Project UID. - **execution_uid** (required) Enter the UID of the specific execution log. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` #### Sample Response ```json { "title": "Slack", "project_id": "05732fe9f7d6454791715b09a3792f52", "trigger_payload_id": "1fa815a1dc27***9874404adebe2451f", "org_id": "blt4051c65***ddf287", "rule_id": "bb27e85b4b3b****ac4c19b7765b1d0f", "status": "success", "task": 3, "resume": 0, "details": [ { "start": 1708608898366, "end": 1708608898374, "title": "Trigger", "name": "1", "status": "success" }, { "start": 1708608898374, "end": 1708608898374, "parent": null, "counter": 0, "group": "transform", "name": "110002", "status": "success", "title": "Transform" }, { "start": 1708608898374, "end": 1708608898374, "parent": null, "counter": 0, "group": "response", "name": "110003", "status": "success", "title": "Response" } ], "created_at": "2024-02-22T13:34:58.354Z", "updated_at": "2024-02-22T13:34:58.374Z", "id": "7cc3a3be3bcd48a49***d1fc1f2e170f", "step_name_map": { "1": "1", "110002": "2", "110003": "3" }, "duration": 8 } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/automations-management-api/postman-collection --- title: "Automations Management API I Postman Collection" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/automations-management-api/postman-collection" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: postman-collection.md --- # Automations Management API I Postman Collection ## About Automations Postman Collection The Automations Postman collection is a set of preconfigured REST API requests that will make it easy for you to get started with the [Contentstack APIs](/docs/developers/apis/) and try out our API requests through the popular [Postman](https://www.getpostman.com/) REST client. ## Install Postman To use the Automations Postman collection you will need to have the [Postman](https://www.postman.com/downloads/). You can either download the **Desktop app** or use **Postman for Web**. **Note:** If you have already installed Postman for your device, go to the [Download Latest Postman Collection for Automations](#download-latest-collection) section. Postman is available for [Windows (x32)](https://dl.pstmn.io/download/latest/win32), [Windows (x64)](https://dl.pstmn.io/download/latest/win64), Mac ([Intel Chip](https://dl.pstmn.io/download/latest/osx_64) / [Apple Chip](https://dl.pstmn.io/download/latest/osx_arm64)), and [Linux](https://dl.pstmn.io/download/latest/linux64) environments. ## Download Latest Collection Once you have installed Postman on your device, click the **Run in Postman** button to start working with the Automations Management API endpoints for Contentstack. **Note:** The Automations Postman collection does not support the now deprecated Postman Chrome extension. Make sure you have installed the latest version of the [Postman desktop app](https://www.postman.com/downloads/). This opens the **Fork collection into your workspace** modal from where you can proceed to download/work with the Automations Postman collection in the following three ways: * View the Collection * Import a Copy of the Collection * Fork the Collection * Download Collection from GitHub Page Let’s look at each of the above methods in detail. #### View the Collection This option allows you to just view (and not try out) the API requests of the Postman collection. Perform the following steps to view the Automations Management API Postman collection: 1. Click the **View collection** link in the **Fork collection into your workspace** modal. ![View\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt7536bce43ae0bdb2/6478793320efde6806a54b39/View_collection.png) A new tab opens up in your browser where you should see the latest collection preloaded in the left navigation. ![Automate\_Postman\_View\_Collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/bltbe21bcf510c43860/660d22e0c3bc8b4f2bdd247e/Automate_Postman_View_Collection.png) **Note:** If you want to try out the API requests, you can either [import a copy of the collection](/docs/developers/apis/automations-management-api#import-a-copy-of-the-collection) or [fork the collection](/docs/developers/apis/automations-management-api#fork-the-collection). #### Import a Copy of the Collection This option allows you to import a copy of the collection into your workspace. To import the Automations Management API collection, perform the following steps: 1. Click the **import a copy** link in the **Fork collection into your workspace** modal. ![Import\_a\_copy\_of\_the\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt91ff78f0d31a529e/64787932aeb2db63321191dd/Import_a_copy_of_the_collection.png) 2. In the resulting **Import Collection** modal within the **Postman** app, select a workspace and click **Import** to import the latest Postman collection into your selected workspace. ![Import\_Collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt8c7719d83640836e/6478793286abb2301be842be/Import_Collection.png) 3. You will see a copy of the latest Postman collection in the left navigation panel. ![Automate\_Postman\_View\_Collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/bltbe21bcf510c43860/660d22e0c3bc8b4f2bdd247e/Automate_Postman_View_Collection.png) #### Fork the Collection This option allows you to fork, or create a copy of the collection, and perform changes to the collection without affecting the original. To fork the Automations Management API collection, perform the following steps: 1. Click the **Fork Collection** button in the **Fork collection into your workspace** modal.![Fork\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt351855346a099539/647875ebf0d737c330b12c17/Fork_collection.png) 2. This opens the **Sign In** page. You can either enter your login credentials and click **Sign in**, or sign in using your Google account or via SSO. ![Postman\_sign\_in.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt0e795421c56ca014/64787d4e69d38aeece6a2e75/Postman_sign_in.png) 3. In the resulting **Fork collection** modal, if needed, enter a **Fork label** that lets you uniquely identify your collection and select a **Workspace**. 4. Under **Notifications**, check **Watch original collection** to get notified of any changes that are made to the original collection. ![Fork\_Colection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt4167c7cc9638d4c0/660d22e0c095f82741c67303/Fork_Colection.png) 5. Once done, click **Fork Collection** to fork the Postman collection into your selected workspace. #### Download Collection from GitHub Page We have also hosted our Postman collection on [GitHub](https://github.com/contentstack/contentstack-postman-collections/blob/collections/automate-collection.json). You can follow the steps mentioned in the Readme file to download and start using it. You can also choose to watch the latest Postman collection to get notifications of new releases or updates. To do so, click the following **Watch** button and select **Watching**. ## Configure Environment Variables When you download and install the latest version of the Automations Management API Postman Collection, you also download and import the respective environment along with the environment variables. Once your Environment is imported, next you need to set your Automations account specific values. **Note:** As these environment variables are referenced across multiple API requests, once you set the variables, it becomes a lot more convenient to make repeated use of the Postman Collection. Some of the important variables that you need to set are as follows: Environment Variable Value base\_url automations-api.contentstack.com  organization\_uid  your\_organization\_uid authtoken your\_authtoken **Note:** The Automations Postman Collection will require a valid Authtoken to make API calls. Check out the [Authentication](/docs/developers/apis/automations-management-api#authentication) section for more details. If you want to add your own environment variables, you can follow the procedure in the next section. #### Add Other Environment Variables To add any new environment variables for your Postman collection, perform the following steps: 1. Identify the environment variables that you want to define. 2. In the top right corner of Postman, click on the environment's dropdown and select **Automations Management API - Environment.**![Select\_Environment.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt121816ea05b62c68/660d22e0cac0bc7a1cc87a5c/Select_Environment.png) 3. Click the "eye" icon present in the top right corner of Postman. It opens up in the environment variables modal. Click **Edit** to make changes in the variables. ![Edit\_Env.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/bltc5249d88b0410280/660d22e0071375f794c42fc2/Edit_Env.png) 4. In the **VARIABLE** field, enter the name of the environment variable. In the **INITIAL VALUE** field, enter your Automations-account-specific value that will replace the variable when the call is made. 5. Once you have defined your variables, click **Save**. ![Save\_the\_Collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt8db03c60388239fd/660d22e06c4a3976e7e46b3a/Save_the_Collection.png) #### Update Environment Variables With every new API request added, we update our environment file. So, to get the latest environment variables, you need to download the collection along with the updated environment file again, compare your existing environment with the latest environment, identify and add the new variables to your existing environment. Next, let’s see how you can run API Requests from your Automations Postman collection using your environment. ## Make an API Request With the Automations Postman Collection loaded into the Postman app (on the left panel) and the environment created, you can now make API requests to the Automations API via Postman. To make an API request, perform the following steps: 1. Select the respective environment, **Automations Management API - Environment**, from the dropdown. 2. Select an API Request from the Automations Postman Collection. In this example, we will use the **Get all projects** request which is a part of the **Projects** folder. **Note:** If you want to make changes to your parameters or want to add parameters of your own, you can do it here. 3. Next, click **Send** at the top right to make the API request. ![Send\_Request.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/bltdffafb597e1cc362/660d22e0f407dd205a315f98/Send_Request.png) The API call should return with a response under the **Body** tab in the bottom half of the screen. ![Body.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt00adba79101f3ca9/65eeb6d654369a9b6b6923a7/Body.png) ## Secure Organization UID and Tokens We strongly advise against storing your Organization UID and authtokens in your collection permanently. If you or someone else shares the collection by mistake, other users will be able to export it along with these keys. We recommend that you provide your Automations account-specific Organization UID and tokens in your environment or directly to the sample requests. #### Users using Authtoken For users who use authtoken to authenticate their calls, when you make the **Log in to your account** API Request, your authtoken will be saved in cookies. If you want to prevent this action, perform the steps given below: 1. Click **Cookies** on the far right corner. 2. In the **Cookies** modal under the **Manage** **Cookies** tab, click the **Domains Allowlist** at the bottom left. 3. Add automations-api.contentstack.com and click **Add**. This will allow you to access [cookies of this domain in scripts](https://learning.postman.com/docs/sending-requests/cookies/#accessing-cookies-in-scripts) programmatically. **Note:** To avoid this situation, we recommend you to use the Organization UID along with the Authtoken to make valid Automations Management API requests. For more information, refer to [Authentication](/docs/developers/apis/automations-management-api#authentication). ## Postman Collection Updates We keep our Postman Collection updated. To get the latest version of our Postman Collection, all you need to do is to [download the Postman Collection along with the updated environment](/docs/developers/apis/automations-management-api#download-latest-collection) again and you are good to go. You can also choose to watch for the latest Postman Collection updates on our [GitHub repository](https://github.com/contentstack/contentstack-postman-collections/blob/collections/automate-collection.json) and get notifications of new releases or updates to the repository. The GitHub Readme doc will help you with the steps that you need to follow. --- ## URL: https://www.contentstack.com/docs/developers/apis/automations-management-api/project-variables --- title: "Automations Management API | Project Variables" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/automations-management-api/project-variables" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: project-variables.md --- # Automations Management API | Project Variables ## Get All Project Variables ### Get all project variables **GET** `/v1/projects/{project_uid}/variables?limit={limit_value}&skip={skip_value}&asc={field_uid}&desc={field_uid}&include_count={boolean_value}` The Get all project variables request returns comprehensive information of all the project variables defined in a project. To configure the permissions for your application via OAuth, include the automationhub.variables:read scope. **Note:** If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 100 items. #### URL Parameters - **project_uid** (required) #### Query Parameters - **limit** (optional) The “limit” parameter will return a specific number of project variables (in between 0-100) in your response based on the value you provide. If there are 100 project variables and you want to fetch only 30 project variables, set the limit as 30. - **skip** (optional) The “skip” parameter will skip a specific number of project variables and return the remaining ones in your response based on the value you provide. If there are 12 project variables and you want to exclude the first 2 project variables, set this to 2 to fetch the remaining 10 project variables. - **asc** (optional) The “asc” parameter allows you to sort the list of project variables in the ascending order with respect to the value of a specific field. The project variables can be sorted by _created\_at_ and _updated\_at_ values. - **desc** (optional) The “desc” parameter allows you to sort the list of project variables in the descending order with respect to the value of a specific field. The project variables can be sorted by _created\_at_ and _updated\_at_ values. - **include_count** (optional) Set this to “true” to include the total number (count) of project variables in an organization. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter your Organization UID. Default: `your_organization_uid` #### Sample Response ```json { "variables": [ { "key": "Key1", "value": "1234567", "org_id": "blt******5ea6ddf287", "project_id": "05732fe9f7d6454791715b09a3792f52", "type": "text", "created_at": "2024-02-22T11:32:54.440Z", "updated_at": "2024-02-22T11:33:09.574Z", "id": "fe4c65e93a664948b24854277af477da" }, { "key": "Key2", "value": "ENC_123456789014;2WjbDeWolmvVJVsm;vjFptQQq3+I/V27Uru97/g==;wKoBGVLgsw==", "org_id": "blt******5ea6ddf287", "project_id": "05732fe9f7d6454791715b09a3792f52", "type": "password", "created_at": "2024-02-22T11:33:03.772Z", "updated_at": "2024-02-22T11:33:03.772Z", "id": "f7bbf2d9cb894b5aa34b3d28603ae174" } ] } ``` ## Get a Single Project Variable ### Get a single project variable **GET** `/v1/projects/{project_uid}/variables/{variable_uid}` The Get a single project variable request fetches a specific project variable defined in a project. To configure the permissions for your application via OAuth, include the automationhub.variables:read scope. #### URL Parameters - **project_uid** (required) Enter the Project UID. - **variable_uid** (required) Enter the UID of the project variable. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` #### Sample Response ```json { "key": "Key2", "value": "ENC_123456789014;2WjbDeWolmvVJVsm;vjFptQQq3+I/V27Uru97/g==;wKoBGVLgsw==", "org_id": "blt******5ea6ddf287", "project_id": "05732fe9f7d6454791715b09a3792f52", "type": "password", "created_at": "2024-02-22T11:33:03.772Z", "updated_at": "2024-02-22T11:33:03.772Z", "id": "f7bbf2d9cb894b5aa34b3d28603ae174" } ``` ## Create a Project Variable ### Create a project variable **POST** `/v1/projects/{project_uid}/variables` The Create a project variable request lets you create a project variable in a project. To configure the permissions for your application via OAuth, include the automationhub.variables:write scope. #### URL Parameters - **project_uid** (required) Enter the Project UID. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` - **Content-Type** (required) Enter "application/json" to pass a request body. Default: `application/json` #### Sample Response ```json { "key": "Key3", "value": "password@1234", "org_id": "blt******5ea6ddf287", "project_id": "05732fe9f7d6454791715b09a3792f52", "type": "text", "created_at": "2024-02-22T13:38:36.439Z", "updated_at": "2024-02-22T13:38:36.439Z", "id": "bd0ce37910cb4172b844308aa07e6bf7" } ``` ## Update a Project Variable ### Update a project variable **PUT** `/v1/projects/{project_uid}/variables/{variable_uid}` The Update a project variable request lets you update the key, value and type of a project variable. To configure the permissions for your application via OAuth, include the automationhub.variables:write scope. #### URL Parameters - **project_uid** (required) Enter the Project UID. - **variable_uid** (required) Enter the UID of the project variable. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` - **Content-Type** (required) Enter "application/json" to pass a request body. Default: `application/json` #### Sample Response ```json { "key": "Key3", "value": "abcd@1234", "org_id": "blt******5ea6ddf287", "project_id": "05732fe9f7d6454791715b09a3792f52", "type": "text", "created_at": "2024-02-22T13:38:36.439Z", "updated_at": "2024-02-22T13:42:23.560Z", "id": "bd0ce37910cb4172b844308aa07e6bf7" } ``` ## Delete a Project Variable ### Delete a project variable **DELETE** `/v1/projects/{project_uid}/variables/{variable_uid}` The Delete a project variable request lets you delete a specific project variable from a project. To configure the permissions for your application via OAuth, include the automationhub.variables:write scope. #### URL Parameters - **project_uid** (required) Enter the Project UID. - **variable_uid** (required) Enter the UID of the project variable. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` #### Sample Response ```json { "message": "Project variable deleted successfully." } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/automations-management-api/projects --- title: "Automations Management API | Projects" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/automations-management-api/projects" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: projects.md --- # Automations Management API | Projects ## Get All Projects ### Get all projects **GET** `/v1/projects?limit={limit_value}&skip={skip_value}&asc={field_uid}&desc={field_uid}&include_count={boolean_value}` The Get all projects request returns comprehensive information of all the projects related to the Organization in which they are created. To configure the permissions for your application via OAuth, include the automationhub.projects.management:read scope. **Note:** If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 100 items. #### Query Parameters - **limit** (optional) The “limit” parameter will return a specific number of projects (in between 0-100) in your response based on the value you provide. If there are 100 projects and you want to fetch only 30 projects, set the limit as 30. - **skip** (optional) The “skip” parameter will skip a specific number of projects and return the remaining ones in your response based on the value you provide. If there are 12 projects and you want to exclude the first 2 projects, set this to 2 to fetch the remaining 10 projects. - **asc** (optional) The “asc” parameter allows you to sort the list of projects in the ascending order with respect to the value of a specific field. The projects can be sorted by _created\_at_, _title_, and _updated\_at_ values. - **desc** (optional) The “desc” parameter allows you to sort the list of projects in the descending order with respect to the value of a specific field. The projects can be sorted by _created\_at_, _title_, and _updated\_at_ values. - **include_count** (optional) Set this to “true” to include the total number (count) of projects in an organization. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` #### Sample Response ```json { "projects": [ { "title": "demo 14dec", "description": "", "user_id": "bltb71****0e9b7facc", "org_id": "bltc14f1***7416061b", "shared": [ "blt82dbdb***5e144b53" ], "tags": [], "updated_by": "bltb712****e9b7facc", "type": "standard", "created_at": "2024-02-04T13:44:35.265Z", "updated_at": "2024-02-04T14:20:22.442Z", "id": "bbc469d1f445482****cae6b358479d0", "created_by": { "uid": "bltb7128*****9b7facc", "username": "test1_bltc0ec3c96", "email": "sample_user1@example.com", "firstName": "John", "lastName": "Doe", "active": true } }, { "title": "Demo", "description": "", "user_id": "bltb712****e9b7facc", "org_id": "bltc14f1****416061b", "shared": [], "tags": [ "testing" ], "updated_by": "bltb7128****9b7facc", "type": "standard", "created_at": "2024-01-31T06:39:54.994Z", "updated_at": "2024-01-31T06:39:54.994Z", "id": "f2065bad17f24****9faba08539b2753", "created_by": { "uid": "bltb7128***e9b7facc", "username": "test2_bltc0ec3c96", "email": "sample_user2@example.com", "firstName": "John", "lastName": "Smith", "active": true } } ] } ``` ## Get a Single Project ### Get a single project **GET** `/v1/projects/{project_uid}` The Get a single project request fetches a specific project created in your organization. When executing the API request, you need to provide the organization UID and your authtoken in the Request Header. To configure the permissions for your application via OAuth, include the automationhub.projects.management:read scope. #### URL Parameters - **project_uid** (required) Enter the Project UID. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` #### Sample Response ```json { "title": "Sample Test Project - Docs", "description": "", "user_id": "blt762****ae71c6b33", "org_id": "blt4051****a6ddf287", "shared": [], "tags": [], "updated_by": "blt76240****71c6b33", "type": "standard", "created_at": "2024-02-22T11:31:27.837Z", "updated_at": "2024-02-22T11:31:27.837Z", "id": "05732fe9f7d***791715b09a3792f52" } ``` ## Create a Project ### Create a project **POST** `/v1/projects` The Create a project request lets you create a project in your organization. To configure the permissions for your application via OAuth, include the automationhub.projects.management:writescope. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` - **Content-Type** (required) Enter "application/json" to pass a request body. Default: `application/json` #### Sample Response ```json { "title": "Sample Demo Project-Docs", "description": "This is a sample project", "user_id": "blt7aa853***b03b79c0", "org_id": "blt4051c65***ddf287", "shared": [], "tags": [ "sample" ], "updated_by": "blt7aa****ab03b79c0", "created_at": "2024-02-22T13:01:00.471Z", "updated_at": "2024-02-22T13:01:00.471Z", "id": "d8674f45bee847***f044e1da7428a70" } ``` ## Update a Project ### Update a project **PUT** `/v1/projects/{project_uid}` The Update a project request lets you update certain details such as the description, tags, and title of an existing project in an Organization. To configure the permissions for your application via OAuth, include the automationhub.projects.management:write scope. Here’s an example of the Request body: ``` { "description": "New Description", "tags": ["tag1", "tag2",...], "title": "New Title"} ``` #### URL Parameters - **project_uid** (required) Enter the Project UID. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` - **Content-Type** (required) Enter "application/json" to pass a request body. Default: `application/json` #### Sample Response ```json { "title": "Updated Sample Test Project -Docs", "description": "This is a New Description for Sample Test", "user_id": "blt762****ae71c6b33", "org_id": "blt4051****a6ddf287", "shared": [], "tags": [ "Sample1", "Sample2" ], "updated_by": "blt7aa****ab03b79c0", "created_at": "2024-02-22T11:31:27.837Z", "updated_at": "2024-02-22T13:09:58.161Z", "id": "05732fe9f7d***791715b09a3792f52" } ``` ## Delete a Project ### Delete a project **DELETE** `/v1/projects/{project_uid}` The Delete a project request lets you delete an existing project in an organization. #### URL Parameters - **project_uid** (required) Enter the Project UID. #### Headers - **authtoken** (required) Enter your authtoken. Refer [Authentication](/docs/developers/apis/automation-hub-management-api#authentication) for more details. Default: `your_authtoken` - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` #### Sample Response ```json { "message": "Project deleted successfully." } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/brand-kit-management-api --- title: "Brand Kit Management API" description: "Use the Contentstack Brand Kit Management API to create, update, and manage brand kits and voice profiles for consistent and scalable brand control." url: "https://www.contentstack.com/docs/developers/apis/brand-kit-management-api" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2025-11-20" filename: brand-kit-management-api.md --- # Brand Kit Management API ## Introduction ### Overview Contentstack is a headless, API-first content management system (CMS) that provides everything you need to power your web or mobile properties. To learn more about Contentstack, visit our [website](https://www.contentstack.com) or refer to our [documentation site](https://www.contentstack.com/docs) to understand what we do. This documentation provides information on endpoints, operations, parameters, and responses for the Brand Kit Management API. It includes details for creating, fetching, updating, and deleting Brand Kits and Voice Profiles. Brand Kit is a powerful tool that serves as a centralized hub for your organization's brand identity, encompassing detailed brand information and persona guidelines. You can create, view, update, and delete multiple Brand Kits via the API requests documented. Voice Profile lets you create distinct AI-generated brand voices for your content. You can use the API requests in this doc to manage these profiles within a Brand Kit. Learn more about [Brand Kit](/docs/brand-kit/about-brand-kit). ### Base URL * AWS North America (AWS NA): https://brand-kits-api.contentstack.com * AWS Europe (AWS EU): https://eu-brand-kits-api.contentstack.com * AWS Australia (AWS AU): https://au-na-brand-kits-api.contentstack.com * Azure North America (Azure NA): https://azure-na-brand-kits-api.contentstack.com * Azure Europe (Azure EU): https://azure-eu-brand-kits-api.contentstack.com * GCP North America (GCP NA): https://gcp-na-brand-kits-api.contentstack.com * GCP Europe (GCP EU): https://gcp-eu-brand-kits-api.contentstack.com ### Authentication Brand Kit uses token-based authentication. You can use the Authtoken along with the Organization UID to make API requests. Read more about the different [types of tokens](/docs/headless-cms/types-of-tokens). #### For Authtoken-based authentication * Pass the user Authtoken against the authtoken parameter as header. * Pass the OAuth Token value against the authorization parameter as header. * Pass the Organization UID against the organization\_uid parameter as header for performing CRUD operations on Brand Kits. * Pass the Brand Kit UID against the brand\_kit\_uid parameter as header for performing CRUD operations on Voice Profiles. #### How to Get Authtoken To retrieve the authtoken, log in to your Contentstack account by using the [Log into your account](/docs/developers/apis/content-management-api/#logging-in-out) request under [User Session](/docs/developers/apis/content-management-api/#user-session). This request will return the authtoken in the response body. You can generate multiple authtokens by executing the [Log into your account](/docs/developers/apis/content-management-api/#logging-in-out) request multiple times. These tokens do not have an expiration time limit. However, currently, there is a maximum limit of 20 valid tokens that a user can use per account at a time, to execute CMA requests. **Note**: If you already have valid 20 tokens, creating a new authtoken will automatically cause the oldest authtoken to expire without warning. For SSO-enabled organizations, the [Log into your account](/docs/developers/apis/content-management-api/#logging-in-out) request will not return the user authtoken for users who access the organization through Identity Provider login credentials. Consequently, any requests that require a user authtoken will not work. Only the owner of the organization and users with permission to access the Organization without SSO can use these APIs. Learn more about [REST API Usage](/docs/administration/rest-api-usage). ### Rate Limiting Rate limit is the maximum number of requests you can make using the Contentstack’s APIs in a given time period. By default, the Brand Kit Management API enforces the following rate limits: **API Request** **Rate Limit** Brand Kit Read (GET) and Write (POST/PUT/DELETE) requests **10 requests** per second per organization Your application will receive the HTTP 429 response code if the requests for a given time period exceed the defined rate limits. The aforementioned limits are configurable depending on your plan. For more information, contact our [Support](mailto:support@contentstack.com) team. ### API Conventions * The base URL for Brand Kit API for different regions can be found in the [Base URL](#base-url) section. * The API version can be found in the URL, e.g. brand-kits-api.contentstack.com/v1/brand-kits * Brand Kit Management API supports GET/POST/PUT/DELETE verbs or methods. * URL paths are written in lower case. * Query parameters and JSON fields use lower case, with underscores (\_) separating words. * The success/failure status of an operation is determined by the HTTP status it returns. Additional information is included in the HTTP response body. * The JSON number type is bounded to a signed 32-bit integer. ### Errors If there is something wrong with the API request, Contentstack returns an error. Brand Kit uses conventional, standard HTTP status codes for errors, and returns a JSON body containing details about the error. In general, codes in the 2xx range signify success. The codes in the 4xx range indicate error, mainly due to information provided (for example, a required parameter or field was omitted). Lastly, codes in the 5xx range mean that there is something wrong with our servers; it is very rare though. Let’s look at the error code and their meanings. HTTP status code Description 400 Bad Request The request was incorrect or corrupted. 401 Unauthorized User The user is not authorized. 403 Forbidden Error The page or resource that is being accessed is forbidden. 500 Internal Server Error The server is malfunctioning and is not specific on what the problem is. 502 Bad Gateway Error A server received an invalid response from another server. 504 Gateway Timeout Error A server did not receive a timely response from another server that it was accessing while attempting to load the web page or fill another request by the browser. **Note:** The error codes that we get in the JSON response are not HTTP error codes but are custom Contentstack error codes that are used for internal purposes. ### Using Postman Collection Contentstack offers you a Postman Collection that helps you try out our Brand Kit Management API. You can download this collection, connect to your Contentstack account, and try out the Brand Kit API with ease. Learn more about [how to get started with using the Postman Collection](/docs/developers/apis/brand-kit-management-api#postman-collection) for Brand Kit Management API. ## API Reference ### Brand Kit [Brand Kit](/docs/brand-kit/about-brand-kit) serves as a centralized repository for your organization's brand identity and guidelines, offering a comprehensive array of product details and overall brand persona. By using the API requests, you can create, view, update, and delete one or more Brand Kits. #### Get All Brand Kits The Get All Brand Kits request fetches the list of all the Brand Kits in an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:read scope. #### Get a Single Brand Kit The Get a Single Brand Kit request fetches the details of a specific Brand Kit in an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:read scope. #### Create Brand Kit The Create Brand Kit request lets you create a new Brand Kit in the specified organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:manage scope. Here’s an example of the Request Body for creating a new Brand Kit: ``` { "brand_kit": { "name": "Sample Brand Kit", "description": "This is a sample Brand Kit created for testing", "api_keys": [ "bxxxxxxxxxxxx9", "bxxxxxxxxxxxx9" ] }} ``` #### Update Brand Kit The Update Brand Kit request lets you update an existing Brand Kit in an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:manage scope. Here’s an example of the Request Body that you can use to update a Brand Kit: ``` { "brand_kit": { "name": "Sample Brand Kit", "description": "This is the updated description for Sample Brand Kit", "api_keys": [ "bxxxxxxxxxxxx9" ] }} ``` #### Delete Brand Kit The Delete Brand Kit request lets you delete an existing Brand Kit in an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:manage scope. ### Voice Profile [Voice Profiles](/docs/content-managers/brand-kit/about-voice-profile) allows you to define unique AI-generated brand voices that you can apply to your content. By using the API requests, you can create, view, update, and delete the Voice Profile in a Brand Kit. #### Get All Voice Profiles The Get All Voice Profiles request fetches the list of all Voice Profiles in a Brand Kit within an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:read scope. #### Get a Single Voice Profile The Get a Single Voice Profile request fetches the specific Voice Profile from a Brand Kit in an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:read scope. #### Create Voice Profile The Create Voice Profile request lets you create a new Voice Profile in a Brand Kit within an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:manage scope. Here’s an example of the Request Body for creating a new Voice Profile: ``` { "voice_profile": { "name": "Sample Voice Profile", "description": "This is the sample description for new Voice Profile.", "communication_style": { "formality_level": 4, "tone": 3, "humor_level": 2, "complexity_level": 1 } }} ``` #### Update Voice Profile The Update Voice Profile request lets you update an existing Voice Profile from the Brand Kit in an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:manage scope. Here’s an example of the Request Body for updating a Voice Profile: ``` { "voice_profile":{ "description": "Test Brand Kit Description", "insights": "Sample Insights", "sample_content": "Sample Content", "communication_style": { "complexity_level": 1, "formality_level": 2, "humor_level": 3, "tone": 4 } }} ``` #### Delete Voice Profile The Delete Voice Profile request lets you delete an existing Voice Profile from the Brand Kits in an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:manage scope. ### Custom Credentials (LLM) Configuration Custom Credentials (LLM) Configuration allows you to integrate your own Large Language Model (LLM) credentials instead of using Contentstack’s default API settings. By using custom credentials, you can specify details such as the API provider, model type, and other required fields, enabling a personalized setup that aligns with your specific requirements. #### Get Custom Credentials The Get Custom Credentials request fetches the custom credentials from a Brand Kit in an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:read scope. #### Set Custom Credentials The Set Custom Credentials request lets you configure the custom API credentials for Brand Kit. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:manage scope. Here’s an example of the Request Body for configuring the Brand Kit using **OpenAI** API provider: ``` { "include_decrypted_keys": true, "llm_config": { "mode": 1, "config": { "provider": "openai", "keys": { "api_key": "Key-XXXXXXXXXXXXXX" }, "model": "gpt-4o-mini" } }} ``` ## Postman Collection ### About Brand Kit Postman Collection The Brand Kit Postman collection is a set of preconfigured REST API requests that will make it easy for you to get started with the [Contentstack APIs](/docs/developers/apis/) and try out our API requests through the popular [Postman](https://www.getpostman.com/) REST client. ### Install Postman To use the Brand Kit Postman collection you will need to have the [Postman](https://www.postman.com/downloads/). You can either download the **Desktop app** or use **Postman for Web**. **Note:** If you have already installed Postman for your device, go to the [Download Latest Postman Collection for Brand Kit](#download-latest-collection) section. Postman is available for [Windows (x32)](https://dl.pstmn.io/download/latest/win32), [Windows (x64)](https://dl.pstmn.io/download/latest/win64), Mac ([Intel Chip](https://dl.pstmn.io/download/latest/osx_64) / [Apple Chip](https://dl.pstmn.io/download/latest/osx_arm64)), and [Linux](https://dl.pstmn.io/download/latest/linux64) environments. ### Download Latest Collection Once you have installed Postman on your device, click the **Run in Postman** button to start working with the Brand Kit Management API endpoints for Contentstack. **Note:** The Brand Kit Postman collection does not support the now deprecated Postman Chrome extension. Make sure you have installed the latest version of the [Postman desktop app](https://www.postman.com/downloads/). This opens the **Fork collection into your workspace** modal from where you can proceed to download/work with the Brand Kit Postman collection in the following three ways: * View the Collection * Import a Copy of the Collection * Fork the Collection * Download Collection from GitHub Page Let’s look at each of the above methods in detail. #### View the Collection This option allows you to just view (and not try out) the API requests of the Postman collection. Perform the following steps to view the Brand Kit Management API Postman collection: 1. Click the **View collection** link in the **Fork collection into your workspace** modal. ![View\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt7536bce43ae0bdb2/6478793320efde6806a54b39/View_collection.png) A new tab opens up in your browser where you should see the latest collection preloaded in the left navigation. **Note:** If you want to try out the API requests, you can either [import a copy of the collection](/docs/developers/apis/automation-hub-management-api#import-a-copy-of-the-collection) or [fork the collection](/docs/developers/apis/brand-kit-management-api#fork-the-collection). #### Import a Copy of the Collection This option allows you to import a copy of the collection into your workspace. To import the Brand Kit Management API collection, perform the following steps: 1. Click the **import a copy** link in the **Fork collection into your workspace** modal. ![Import\_a\_copy\_of\_the\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt91ff78f0d31a529e/64787932aeb2db63321191dd/Import_a_copy_of_the_collection.png) 2. In the resulting **Import Collection** modal within the **Postman** app, select a workspace and click **Import** to import the latest Postman collection into your selected workspace. ![Import\_Collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt8c7719d83640836e/6478793286abb2301be842be/Import_Collection.png) 3. You will see a copy of the latest Postman collection in the left navigation panel. #### Fork the Collection This option allows you to fork, or create a copy of the collection, and perform changes to the collection without affecting the original. To fork the Brand Kit Management API collection, perform the following steps: 1. Click the **Fork Collection** button in the **Fork collection into your workspace** modal.![Fork\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt351855346a099539/647875ebf0d737c330b12c17/Fork_collection.png) 2. This opens the **Sign In** page. You can either enter your login credentials and click **Sign in**, or sign in using your Google account or via SSO. ![Postman\_sign\_in.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt0e795421c56ca014/64787d4e69d38aeece6a2e75/Postman_sign_in.png) 3. In the resulting **Fork collection** modal, if needed, enter a **Fork label** that lets you uniquely identify your collection and select a **Workspace**. 4. Under **Notifications**, check **Watch original collection** to get notified of any changes that are made to the original collection. 5. Once done, click **Fork Collection** to fork the Postman collection into your selected workspace. #### Download Collection from GitHub Page We have also hosted our Postman collection on GitHub. You can follow the steps mentioned in the Readme file to download and start using it. You can also choose to watch the latest Postman collection to get notifications of new releases or updates. To do so, click the following **Watch** button and select **Watching**. ### Configure Environment Variables When you download and install the latest version of the Brand Kit Management API Postman Collection, you also download and import the respective environment along with the environment variables. Once your Environment is imported, next you need to set your Brand Kit account specific values. **Note:** As these environment variables are referenced across multiple API requests, once you set the variables, it becomes a lot more convenient to make repeated use of the Postman Collection. Some of the important variables that you need to set are as follows: Environment Variable Value base\_url https://ai.contentstack.com/brand-kits brand\_kit\_uid your\_brand\_kit\_uid authtoken your\_authtoken **Note:** The Brand Kit Postman Collection will require a valid Authtoken to make API calls. Check out the [Authentication](/docs/developers/apis/brand-kit-management-api#authentication) section for more details. If you want to add your own environment variables, you can follow the procedure in the next section. #### Add Other Environment Variables To add any new environment variables for your Postman collection, perform the following steps: 1. Identify the environment variables that you want to define. 2. In the top right corner of Postman, click on the environment's dropdown and select **Brand Kit Management API - Environment.** 3. Click the "eye" icon present in the top right corner of Postman. It opens up in the environment variables modal. Click **Edit** to make changes in the variables. 4. In the **VARIABLE** field, enter the name of the environment variable. In the **INITIAL VALUE** field, enter your Brand Kit-account-specific value that will replace the variable when the call is made. 5. Once you have defined your variables, click **Save**. #### Update Environment Variables With every new API request added, we update our environment file. So, to get the latest environment variables, you need to download the collection along with the updated environment file again, compare your existing environment with the latest environment, identify and add the new variables to your existing environment. Next, let’s see how you can run API Requests from your Brand Kit Postman collection using your environment. ### Make an API Request With the Brand Kit Postman Collection loaded into the Postman app (on the left panel) and the environment created, you can now make API requests to the Brand Kit Management API via Postman. To make an API request, perform the following steps: 1. Select the respective environment, **Brand Kit Management API - Environment**, from the dropdown. 2. Select an API Request from the Brand Kit Postman Collection. In this example, we will use the **Get all projects** request which is a part of the **Projects** folder. **Note:** If you want to make changes to your parameters or want to add parameters of your own, you can do it here. 3. Next, click **Send** at the top right to make the API request. The API call should return with a response under the **Body** tab in the bottom half of the screen. ### Secure Organization UID and Tokens We strongly advise against storing your Organization UID and authtokens in your collection permanently. If you or someone else shares the collection by mistake, other users will be able to export it along with these keys. We recommend that you provide your Brand Kit account-specific Organization UID and tokens in your environment or directly to the sample requests. #### Users using Authtoken For users who use authtoken to authenticate their calls, when you make the **Log in to your account** API Request, your authtoken will be saved in cookies. If you want to prevent this action, perform the steps given below: 1. Click **Cookies** on the far right corner. 2. In the **Cookies** modal under the **Manage** **Cookies** tab, click the **Domains Allowlist** at the bottom left. 3. Add ai.contentstack.com/brand-kits and click **Add**. This will allow you to access [cookies of this domain in scripts](https://learning.postman.com/docs/sending-requests/cookies/#accessing-cookies-in-scripts) programmatically. **Note:** To avoid this situation, we recommend you to use the Brand Kit UID along with the Authtoken to make valid Brand Kit Management API requests. For more information, refer to [Authentication](/docs/developers/apis/brand-kit-management-api#authentication). ### Postman Collection Updates We keep our Postman Collection updated. To get the latest version of our Postman Collection, all you need to do is to [download the Postman Collection along with the updated environment](/docs/developers/apis/brand-kit-management-api#download-latest-collection) again and you are good to go. You can also choose to watch for the latest Postman Collection updates on our GitHub repository and get notifications of new releases or updates to the repository. The GitHub Readme doc will help you with the steps that you need to follow. --- ## URL: https://www.contentstack.com/docs/developers/apis/brand-kit-management-api/brand-kit --- title: "Brand Kit | Brand Kit" description: "

    Brand Kit serves as a centralized repository for your organization's brand identity and guidelines, offering a comprehensive array of product details and overall brand persona. By using the API requests, you can create, view, update, and delete one or more Brand Kits.

    " url: "https://www.contentstack.com/docs/developers/apis/brand-kit-management-api/brand-kit" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: brand-kit.md --- # Brand Kit | Brand Kit [Brand Kit](/docs/brand-kit/about-brand-kit) serves as a centralized repository for your organization's brand identity and guidelines, offering a comprehensive array of product details and overall brand persona. By using the API requests, you can create, view, update, and delete one or more Brand Kits. ## Get All Brand Kits ### Get All Brand Kits **GET** `/v1/brand-kits?skip={skip}&limit={limit}&include_users={boolean}&include_count={boolean}&include_voice_profiles_count={boolean}&typeahead={string}` The Get All Brand Kits request fetches the list of all the Brand Kits in an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:read scope. #### Query Parameters - **skip** (optional) Enter the number of Brand Kits to be skipped from the response body. - **limit** (optional) Enter the maximum number of Brand Kits to be returned. - **include_users** (optional) The “include\_users” parameter allows you to fetch users information. - **include_count** (optional) The “include\_count” parameter allows you to fetch the total count of the stacks owned by or shared with a user account. - **include_voice_profiles_count** (optional) The “include\_voice\_profiles\_count” parameter allows you to fetch the count of all voice profiles from a Brand Kit. - **typeahead** (optional) The “typeahead” parameter retrieves responses that match the provided string. #### Headers - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` - **api_key** (optional) Enter the API Key of the stack to retrieve the details of Brand Kits specifically associated with it. Default: `api_key_of_your_stack` - **authtoken** (required) Enter the authtoken. Default: `your_authtoken` - **authorization** (required) Enter your OAuth token. Learn more about [Authentication](/docs/developers/apis/brand-kit-management-api#authentication). Default: `[Bearer ]` #### Sample Response ```json { "brand_kits": [ { "uid": "cs***********0", "name": "AI Blogs", "description": "Brand Kit for AI related Blogs", "created_at": "2024-04-26T07:56:35.584Z", "created_by": "bl**************b", "updated_at": "2024-04-26T08:27:13.974Z", "updated_by": "bl**************b", "deleted_at": false, "api_keys": [ "bl**************7", "bl**************5" ], "organization_uid": "bl***************9" } ] } ``` ## Get a Single Brand Kit ### Get a Single Brand Kit **GET** `/v1/brand-kits/{brand_kit_uid}` The Get a Single Brand Kit request fetches the details of a specific Brand Kit in an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:read scope. #### URL Parameters - **brand_kit_uid** (required) Enter the Brand Kit UID. #### Headers - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` - **authtoken** (required) Enter the authtoken. Default: `your_authtoken` - **authorization** (required) Enter your OAuth token. Learn more about [Authentication](/docs/developers/apis/brand-kit-management-api#authentication). Default: `[Bearer ] ` #### Sample Response ```json { "brand_kit": { "uid": "cs***********40", "name": "AI Blogs", "description": "Brand Kit for AI related Blogs", "created_at": "2024-04-26T07:56:35.584Z", "created_by": "bl****************b", "updated_at": "2024-04-26T08:27:13.974Z", "updated_by": "bl****************b", "deleted_at": false, "api_keys": [ "bl*************7", "bl*************5" ], "organization_uid": "bl**************9" } } ``` ## Create Brand Kit ### Create Brand Kit **POST** `/v1/brand-kits` The Create Brand Kit request lets you create a new Brand Kit in the specified organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:manage scope. Here’s an example of the Request Body for creating a new Brand Kit: ``` { "brand_kit": { "name": "Sample Brand Kit", "description": "This is a sample Brand Kit created for testing", "api_keys": [ "bxxxxxxxxxxxx9", "bxxxxxxxxxxxx9" ] }} ``` #### Headers - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` - **authtoken** (required) Enter the authtoken. Default: `your_authtoken` - **authorization** (required) Enter your OAuth token. Learn more about [Authentication](/docs/developers/apis/brand-kit-management-api#authentication). Default: `[Bearer ]` #### Sample Response ```json { "message": "Brand Kit created successfully", "brand_kit": { "uid": "cs4**********0", "name": "Test Brand Kit", "description": "Brand Kit for testing", "created_at": "2024-05-09T13:17:15.200Z", "created_by": "bxxxxxxxxxxxxb", "updated_at": "2024-05-09T13:17:15.200Z", "updated_by": "bxxxxxxxxxxxxb", "deleted_at": false, "api_keys": [ "xxxxxxxxxxxx" ], "organization_uid": "bxxxxxxxxxxxx9" } } ``` ## Update Brand Kit ### Update Brand Kit **PUT** `/v1/brand-kits/{brand_kit_uid}` The Update Brand Kit request lets you update an existing Brand Kit in an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:manage scope. Here’s an example of the Request Body that you can use to update a Brand Kit: ``` { "brand_kit": { "name": "Sample Brand Kit", "description": "This is the updated description for Sample Brand Kit", "api_keys": [ "bxxxxxxxxxxxx9" ] }} ``` #### URL Parameters - **brand_kit_uid** (required) Enter the Brand Kit UID. #### Headers - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` - **authtoken** (required) Enter the authtoken. Default: `your_authtoken` - **authorization** (required) Enter your OAuth token. Learn more about [Authentication](/docs/developers/apis/brand-kit-management-api#authentication). Default: `[Bearer ]` #### Sample Response ```json { "message": "Brand Kit updated successfully", "brand_kit": { "uid": "cs************0", "name": "Sample Brand Kit", "description": "This is the updated description for Sample Brand Kit", "created_at": "2024-05-09T13:17:15.200Z", "created_by": "bl**************b", "updated_at": "2024-05-09T13:17:15.200Z", "updated_by": "bl**************b", "deleted_at": false, "api_keys": [ "b**********9", "b**********9" ], "organization_uid": "bl************9" } } ``` ## Delete Brand Kit ### Delete Brand Kit **DELETE** `/v1/brand-kits/{brand_kit_uid}` The Delete Brand Kit request lets you delete an existing Brand Kit in an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:manage scope. #### URL Parameters - **brand_kit_uid** (required) Enter the Brand Kit UID. #### Headers - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` - **authtoken** (required) Enter the authtoken. Default: `your_authtoken` - **authorization** (required) Enter your OAuth token. Learn more about [Authentication](/docs/developers/apis/brand-kit-management-api#authentication). Default: `[Bearer ]` #### Sample Response ```json { "message": "Brand Kit deleted successfully" } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/brand-kit-management-api/custom-credentials-llm-configuration --- title: "Brand Kit | Custom Credentials (LLM) Configuration" description: "

    Custom Credentials (LLM) Configuration allows you to integrate your own Large Language Model (LLM) credentials instead of using Contentstack’s default API settings. By using custom credentials, you can specify details such as the API provider, model type, and other required fields, enabling a personalized setup that aligns with your specific requirements.

    " url: "https://www.contentstack.com/docs/developers/apis/brand-kit-management-api/custom-credentials-llm-configuration" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: custom-credentials-llm-configuration.md --- # Brand Kit | Custom Credentials (LLM) Configuration Custom Credentials (LLM) Configuration allows you to integrate your own Large Language Model (LLM) credentials instead of using Contentstack’s default API settings. By using custom credentials, you can specify details such as the API provider, model type, and other required fields, enabling a personalized setup that aligns with your specific requirements. ## Get Custom Credentials ### Get Custom Credentials **GET** `/v1/brand-kits/{brand_kit_uid}/llm-configs?include_decrypted_keys={boolean}` The Get Custom Credentials request fetches the custom credentials from a Brand Kit in an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:read scope. #### URL Parameters - **brand_kit_uid** (required) Enter the Brand Kit UID. #### Query Parameters - **include_decrypted_keys** (optional) The “include\_decrypted\_keys” parameter allows you to fetch LLM Configuration details in encrypted format when set to true. #### Headers - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` - **authtoken** (required) Enter the authtoken. Default: `your_authtoken` - **authorization** (required) Enter your OAuth token. Learn more about [Authentication](/docs/developers/apis/brand-kit-management-api#authentication). Default: `[Bearer ]` #### Sample Response ```json { "llm_config": { "_id": "672b04a6e3d93d9a8269741f", "deleted_at": false, "organization_uid": "blt53d0371e00331654", "uid": "cse56a3c0b2a7a4d", "__v": 0, "created_at": "2024-11-06T05:54:46.838Z", "deleted_by": false, "mode": 1, "updated_at": "2024-11-08T07:26:41.370Z", "updated_by": "blt520e013f9bbe3976", "config": { "model": "gpt-4o-mini", "provider": "openai", "decrypted_keys": { "api_key": "Key-XXXXXXXXXXXXXX" } } } } ``` ## Set Custom Credentials ### Set Custom Credentials **PUT** `/v1/brand-kits/{brand_kit_uid}/llm-configs` The Set Custom Credentials request lets you configure the custom API credentials for Brand Kit. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:manage scope. Here’s an example of the Request Body for configuring the Brand Kit using **OpenAI** API provider: ``` { "include_decrypted_keys": true, "llm_config": { "mode": 1, "config": { "provider": "openai", "keys": { "api_key": "Key-XXXXXXXXXXXXXX" }, "model": "gpt-4o-mini" } }} ``` #### URL Parameters - **brand_kit_uid** (required) Enter the Brand Kit UID. #### Headers - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` - **authtoken** (required) Enter the authtoken. Default: `your_authtoken` - **authorization** (required) Enter your OAuth token. Learn more about [Authentication](/docs/developers/apis/brand-kit-management-api#authentication). Default: `[Bearer ]` #### Sample Response ```json { "message": "llm config updated successfully", "llm_config": { "_id": "672b04a6e3d93d9a8269741f", "deleted_at": false, "organization_uid": "blt53d0371e00331654", "uid": "cse56a3c0b2a7a4d", "__v": 0, "created_at": "2024-11-06T05:54:46.838Z", "deleted_by": false, "mode": 1, "updated_at": "2024-11-08T07:26:41.370Z", "updated_by": "blt520e013f9bbe3976", "config": { "model": "gpt-4o-mini", "provider": "openai", "decrypted_keys": { "api_key": "Key-XXXXXXXXXXXXXX" } } } } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/brand-kit-management-api/postman-collection --- title: "Brand Kit | Postman Collection" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/brand-kit-management-api/postman-collection" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: postman-collection.md --- # Brand Kit | Postman Collection ## About Brand Kit Postman Collection The Brand Kit Postman collection is a set of preconfigured REST API requests that will make it easy for you to get started with the [Contentstack APIs](/docs/developers/apis/) and try out our API requests through the popular [Postman](https://www.getpostman.com/) REST client. ## Install Postman To use the Brand Kit Postman collection you will need to have the [Postman](https://www.postman.com/downloads/). You can either download the **Desktop app** or use **Postman for Web**. **Note:** If you have already installed Postman for your device, go to the [Download Latest Postman Collection for Brand Kit](#download-latest-collection) section. Postman is available for [Windows (x32)](https://dl.pstmn.io/download/latest/win32), [Windows (x64)](https://dl.pstmn.io/download/latest/win64), Mac ([Intel Chip](https://dl.pstmn.io/download/latest/osx_64) / [Apple Chip](https://dl.pstmn.io/download/latest/osx_arm64)), and [Linux](https://dl.pstmn.io/download/latest/linux64) environments. ## Download Latest Collection Once you have installed Postman on your device, click the **Run in Postman** button to start working with the Brand Kit Management API endpoints for Contentstack. **Note:** The Brand Kit Postman collection does not support the now deprecated Postman Chrome extension. Make sure you have installed the latest version of the [Postman desktop app](https://www.postman.com/downloads/). This opens the **Fork collection into your workspace** modal from where you can proceed to download/work with the Brand Kit Postman collection in the following three ways: * View the Collection * Import a Copy of the Collection * Fork the Collection * Download Collection from GitHub Page Let’s look at each of the above methods in detail. #### View the Collection This option allows you to just view (and not try out) the API requests of the Postman collection. Perform the following steps to view the Brand Kit Management API Postman collection: 1. Click the **View collection** link in the **Fork collection into your workspace** modal. ![View\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt7536bce43ae0bdb2/6478793320efde6806a54b39/View_collection.png) A new tab opens up in your browser where you should see the latest collection preloaded in the left navigation. **Note:** If you want to try out the API requests, you can either [import a copy of the collection](/docs/developers/apis/automations-management-api#import-a-copy-of-the-collection) or [fork the collection](/docs/developers/apis/brand-kit-management-api#fork-the-collection). #### Import a Copy of the Collection This option allows you to import a copy of the collection into your workspace. To import the Brand Kit Management API collection, perform the following steps: 1. Click the **import a copy** link in the **Fork collection into your workspace** modal. ![Import\_a\_copy\_of\_the\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt91ff78f0d31a529e/64787932aeb2db63321191dd/Import_a_copy_of_the_collection.png) 2. In the resulting **Import Collection** modal within the **Postman** app, select a workspace and click **Import** to import the latest Postman collection into your selected workspace. ![Import\_Collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt8c7719d83640836e/6478793286abb2301be842be/Import_Collection.png) 3. You will see a copy of the latest Postman collection in the left navigation panel. #### Fork the Collection This option allows you to fork, or create a copy of the collection, and perform changes to the collection without affecting the original. To fork the Brand Kit Management API collection, perform the following steps: 1. Click the **Fork Collection** button in the **Fork collection into your workspace** modal.![Fork\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt351855346a099539/647875ebf0d737c330b12c17/Fork_collection.png) 2. This opens the **Sign In** page. You can either enter your login credentials and click **Sign in**, or sign in using your Google account or via SSO. ![Postman\_sign\_in.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt0e795421c56ca014/64787d4e69d38aeece6a2e75/Postman_sign_in.png) 3. In the resulting **Fork collection** modal, if needed, enter a **Fork label** that lets you uniquely identify your collection and select a **Workspace**. 4. Under **Notifications**, check **Watch original collection** to get notified of any changes that are made to the original collection. 5. Once done, click **Fork Collection** to fork the Postman collection into your selected workspace. #### Download Collection from GitHub Page We have also hosted our Postman collection on GitHub. You can follow the steps mentioned in the Readme file to download and start using it. You can also choose to watch the latest Postman collection to get notifications of new releases or updates. To do so, click the following **Watch** button and select **Watching**. ## Configure Environment Variables When you download and install the latest version of the Brand Kit Management API Postman Collection, you also download and import the respective environment along with the environment variables. Once your Environment is imported, next you need to set your Brand Kit account specific values. **Note:** As these environment variables are referenced across multiple API requests, once you set the variables, it becomes a lot more convenient to make repeated use of the Postman Collection. Some of the important variables that you need to set are as follows: Environment Variable Value base\_url https://ai.contentstack.com/brand-kits brand\_kit\_uid your\_brand\_kit\_uid authtoken your\_authtoken **Note:** The Brand Kit Postman Collection will require a valid Authtoken to make API calls. Check out the [Authentication](/docs/developers/apis/brand-kit-management-api#authentication) section for more details. If you want to add your own environment variables, you can follow the procedure in the next section. #### Add Other Environment Variables To add any new environment variables for your Postman collection, perform the following steps: 1. Identify the environment variables that you want to define. 2. In the top right corner of Postman, click on the environment's dropdown and select **Brand Kit Management API - Environment.** 3. Click the "eye" icon present in the top right corner of Postman. It opens up in the environment variables modal. Click **Edit** to make changes in the variables. 4. In the **VARIABLE** field, enter the name of the environment variable. In the **INITIAL VALUE** field, enter your Brand Kit-account-specific value that will replace the variable when the call is made. 5. Once you have defined your variables, click **Save**. #### Update Environment Variables With every new API request added, we update our environment file. So, to get the latest environment variables, you need to download the collection along with the updated environment file again, compare your existing environment with the latest environment, identify and add the new variables to your existing environment. Next, let’s see how you can run API Requests from your Brand Kit Postman collection using your environment. ## Make an API Request With the Brand Kit Postman Collection loaded into the Postman app (on the left panel) and the environment created, you can now make API requests to the Brand Kit Management API via Postman. To make an API request, perform the following steps: 1. Select the respective environment, **Brand Kit Management API - Environment**, from the dropdown. 2. Select an API Request from the Brand Kit Postman Collection. In this example, we will use the **Get all projects** request which is a part of the **Projects** folder. **Note:** If you want to make changes to your parameters or want to add parameters of your own, you can do it here. 3. Next, click **Send** at the top right to make the API request. The API call should return with a response under the **Body** tab in the bottom half of the screen. ## Secure Organization UID and Tokens We strongly advise against storing your Organization UID and authtokens in your collection permanently. If you or someone else shares the collection by mistake, other users will be able to export it along with these keys. We recommend that you provide your Brand Kit account-specific Organization UID and tokens in your environment or directly to the sample requests. #### Users using Authtoken For users who use authtoken to authenticate their calls, when you make the **Log in to your account** API Request, your authtoken will be saved in cookies. If you want to prevent this action, perform the steps given below: 1. Click **Cookies** on the far right corner. 2. In the **Cookies** modal under the **Manage** **Cookies** tab, click the **Domains Allowlist** at the bottom left. 3. Add ai.contentstack.com/brand-kits and click **Add**. This will allow you to access [cookies of this domain in scripts](https://learning.postman.com/docs/sending-requests/cookies/#accessing-cookies-in-scripts) programmatically. **Note:** To avoid this situation, we recommend you to use the Brand Kit UID along with the Authtoken to make valid Brand Kit Management API requests. For more information, refer to [Authentication](/docs/developers/apis/brand-kit-management-api#authentication). ## Postman Collection Updates We keep our Postman Collection updated. To get the latest version of our Postman Collection, all you need to do is to [download the Postman Collection along with the updated environment](/docs/developers/apis/brand-kit-management-api#download-latest-collection) again and you are good to go. You can also choose to watch for the latest Postman Collection updates on our GitHub repository and get notifications of new releases or updates to the repository. The GitHub Readme doc will help you with the steps that you need to follow. --- ## URL: https://www.contentstack.com/docs/developers/apis/brand-kit-management-api/voice-profile --- title: "Brand Kit | Voice Profile" description: "

    Voice Profiles allows you to define unique AI-generated brand voices that you can apply to your content. By using the API requests, you can create, view, update, and delete the Voice Profile in a Brand Kit.

    " url: "https://www.contentstack.com/docs/developers/apis/brand-kit-management-api/voice-profile" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: voice-profile.md --- # Brand Kit | Voice Profile [Voice Profiles](/docs/brand-kit/about-voice-profile) allows you to define unique AI-generated brand voices that you can apply to your content. By using the API requests, you can create, view, update, and delete the Voice Profile in a Brand Kit. ## Get All Voice Profiles ### Get All Voice Profiles **GET** `/v1/brand-kits/{brand_kit_uid}/voice-profiles?skip={index}&limit={limit}&include_users={boolean}&include_count={boolean}&typeahead={string}&sort={string}&order={string}` The Get All Voice Profiles request fetches the list of all Voice Profiles in a Brand Kit within an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:read scope. #### URL Parameters - **brand_kit_uid** (required) Enter the Brand Kit UID. #### Query Parameters - **skip** (optional) Enter the number of Voice Profiles to be skipped from the response body. - **limit** (optional) Enter the maximum number of Voice Profiles to be returned. - **include_users** (optional) The “include\_users” parameter allows you to fetch users information. - **include_count** (optional) The “include\_count” parameter allows you to fetch the total count of the stacks owned by or shared with a user account. - **typeahead** (optional) The “typeahead” parameter retrieves responses that match the provided string. - **sort** (optional) Enter the value on the basis of which you want to sort your Voice Profiles. The voice profiles can be sorted by created\_at, updated\_at, and name values. The default value is updated\_at. - **order** (optional) Specify how you want to order your Voice Profiles; asc for ascending order and desc for descending order. The default value is desc. #### Headers - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` - **authtoken** (required) Enter the authtoken. Default: `your_authtoken` - **authorization** (required) Enter your OAuth token. Learn more about [Authentication](/docs/developers/apis/brand-kit-management-api#authentication). Default: `[Bearer ] ` #### Sample Response ```json { "voice_profile": { "brand_kit_uid": "cs***************0", "uid": "cs***************d", "name": "Test Voice Profile", "description": "This is the sample description for new Voice Profile.", "communication_style": { "formality_level": 4, "tone": 3, "humor_level": 2, "complexity_level": 1 }, "created_at": "2024-05-13T15:59:02.987Z", "created_by": "bl***************b", "updated_at": "2024-05-13T15:59:02.987Z", "updated_by": "bl***************b", "deleted_at": false } } ``` ## Get a Single Voice Profile ### Get a Single Voice Profile **GET** `/v1/brand-kits/{brand_kit_uid}/voice-profiles/{voice_profile_uid}?include_users={boolean}` The Get a Single Voice Profile request fetches the specific Voice Profile from a Brand Kit in an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:read scope. #### URL Parameters - **brand_kit_uid** (required) Enter the Brand Kit UID. - **voice_profile_uid** (required) Enter the Voice Profile UID. #### Query Parameters - **include_users** (optional) The “include\_users” parameter allows you to fetch users information. #### Headers - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` - **authtoken** (required) Enter the authtoken. Default: `your_authtoken` - **authorization** (required) Enter your OAuth token. Learn more about [Authentication](/docs/developers/apis/brand-kit-management-api#authentication). Default: `[Bearer ]` #### Sample Response ```json { "voice_profile": { "brand_kit_uid": "cs***************0", "uid": "cs***************d", "name": "Test Voice Profile", "description": "This is the sample description for new Voice Profile.", "communication_style": { "formality_level": 4, "tone": 3, "humor_level": 2, "complexity_level": 1 }, "created_at": "2024-05-13T15:59:02.987Z", "created_by": "bl***************b", "updated_at": "2024-05-13T15:59:02.987Z", "updated_by": "bl***************b", "deleted_at": false } } ``` ## Create Voice Profile ### Create Voice Profile **POST** `/v1/brand-kits/{brand_kit_uid}/voice-profiles` The Create Voice Profile request lets you create a new Voice Profile in a Brand Kit within an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:manage scope. Here’s an example of the Request Body for creating a new Voice Profile: ``` { "voice_profile": { "name": "Sample Voice Profile", "description": "This is the sample description for new Voice Profile.", "communication_style": { "formality_level": 4, "tone": 3, "humor_level": 2, "complexity_level": 1 } }} ``` #### URL Parameters - **brand_kit_uid** (required) Enter the Brand Kit UID. #### Headers - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` - **authtoken** (required) Enter the authtoken. Default: `your_authtoken` - **authorization** (required) Enter your OAuth token. Learn more about [Authentication](/docs/developers/apis/brand-kit-management-api#authentication). Default: `[Bearer ]` #### Sample Response ```json { "message": "Voice Profile created successfully", "voice_profile": { "brand_kit_uid": "cs*************4d", "uid": "cs*************49", "name": "Sample Voice Profile", "description": "This is the sample description for new Voice Profile.", "communication_style": { "formality_level": 4, "tone": 3, "humor_level": 2, "complexity_level": 1 }, "created_at": "2024-06-06T12:18:18.619Z", "created_by": "bl*************5b", "updated_at": "2024-06-06T12:18:18.619Z", "updated_by": "bl*************5b", "deleted_at": false } } ``` ## Update Voice Profile ### Update Voice Profile **PUT** `/v1/brand-kits/{brand_kit_uid}/voice-profiles/{voice_profile_uid}` The Update Voice Profile request lets you update an existing Voice Profile from the Brand Kit in an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:manage scope. Here’s an example of the Request Body for updating a Voice Profile: ``` { "voice_profile":{ "description": "Test Brand Kit Description", "insights": "Sample Insights", "sample_content": "Sample Content", "communication_style": { "complexity_level": 1, "formality_level": 2, "humor_level": 3, "tone": 4 } }} ``` #### URL Parameters - **brand_kit_uid** (required) Enter the Brand Kit UID. - **voice_profile_uid** (required) Enter the Voice Profile UID. #### Headers - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` - **authtoken** (required) Enter the authtoken. Default: `your_authtoken` - **authorization** (required) Enter your OAuth token. Learn more about [Authentication](/docs/developers/apis/brand-kit-management-api#authentication). Default: `[Bearer ]` #### Sample Response ```json { "message": "Voice Profile updated successfully", "voice_profile": { "brand_kit_uid": "cs***************0", "uid": "cs*************d", "name": "Test Voice Profile", "description": "Test Brand Kit Description", "communication_style": { "complexity_level": 1, "formality_level": 2, "humor_level": 3, "tone": 4 }, "created_at": "2024-05-13T15:59:02.987Z", "created_by": "bl*************b", "updated_at": "2024-05-13T16:25:55.803Z", "updated_by": "bl*************b", "deleted_at": false, "description": "Test Brand Kit Description", "insights": "Sample Insights", "sample_content": "Sample Content" } } ``` ## Delete Voice Profile ### Delete Voice Profile **DELETE** `/v1/brand-kits/{brand_kit_uid}/voice-profiles/{voice_profile_uid}` The Delete Voice Profile request lets you delete an existing Voice Profile from the Brand Kits in an organization. To configure the permissions for your application via [OAuth](/docs/developers/developer-hub/contentstack-oauth), include the brand-kits:manage scope. #### URL Parameters - **brand_kit_uid** (required) Enter the Brand Kit UID. - **voice_profile_uid** (required) Enter the Voice Profile UID. #### Headers - **organization_uid** (required) Enter the Organization UID. Default: `your_organization_uid` - **authtoken** (required) Enter the authtoken. Default: `your_authtoken` - **authorization** (required) Enter your OAuth token. Learn more about [Authentication](/docs/developers/apis/brand-kit-management-api#authentication). Default: `[Bearer ]` #### Sample Response ```json { "message": "Voice Profile deleted successfully" } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/content-delivery-api --- title: "Content Delivery API" description: "This document is a detailed reference to Contentstack’s Content Delivery API. Retrieve content from your account and deliver it to web and mobile properties." url: "https://www.contentstack.com/docs/developers/apis/content-delivery-api" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-08" filename: content-delivery-api.md --- # Content Delivery API ## Introduction ### Base URL * AWS North America (AWS NA): https://cdn.contentstack.io * AWS Europe (AWS EU): https://eu-cdn.contentstack.com * AWS Australia (AWS AU): https://au-cdn.contentstack.com * Azure North America (AZURE NA): https://azure-na-cdn.contentstack.com * Azure Europe (Azure EU): https://azure-eu-cdn.contentstack.com * GCP North America (GCP NA): https://gcp-na-cdn.contentstack.com * GCP Europe (GCP EU): https://gcp-eu-cdn.contentstack.com ### Overview This document is a detailed reference to Contentstack’s Content Delivery API. The Content Delivery API is used to retrieve content from your Contentstack account and deliver it to your web or mobile properties. If you are looking for APIs to manage content, you should use the [Content Management API](/docs/developers/apis/content-management-api). Our APIs serve content via a powerful and robust [content delivery network (CDN)](/docs/headless-cms/what-is-cdn-and-how-it-works). Multiple datacenters around the world store a cached copy of your content. When a page request is made, the content is delivered to the user from the nearest server. This greatly accelerates content delivery and reduces latency. **Warning:** The Content Delivery API (CDA), available at cdn.contentstack.io, should be used to only fetch content from Contentstack. We recommend users to NOT use this endpoint for any other content management activities, because all content management activities using this endpoint will be blocked soon. The CDN includes many points of presence (POPs) located in high-density internet exchange regions around the world. These POPs are continually expanding to ensure faster and more reliable content delivery. **Warning:** We only support **version 3** on the CDN. If you're still using version 2 (which we recommend you should not), switch to the CDN version for even faster loading. And, we have a **URL size limitation of 8KB on API Requests** that hit our CDN services. Any Request URL that goes above this size limit will receive the 414 - URI Too Long error response. Please make sure you limit the size of your API Requests. ### Content Delivery SDKs Contentstack provides SDKs, API references, getting started guides, and sample apps for popular programming languages and platforms. These resources help you build applications and fetch content efficiently using the Content Delivery API. The SDKs are read-only and are designed to retrieve published content from the nearest server via the global CDN. You will find a list of all the available SDKs under the [Development Resources and SDKs](/docs/developers/#platforms-and-sdks) section. We provide SDKs for the following platforms: * [iOS](/docs/developers/sdks/content-delivery-sdk/ios/about-objective-c-sdk/) * [Java](/docs/developers/sdks/content-delivery-sdk/java/about-java-delivery-sdk/) * [Android](/docs/developers/sdks/content-delivery-sdk/android/about-android-sdk/) * [PHP](/docs/developers/sdks/content-delivery-sdk/php/about-php-sdk/) * [JavaScript (Browser)](/docs/developers/sdks/content-delivery-sdk/javascript-browser/about-javascript-delivery-sdk/) * [Ruby](/docs/developers/sdks/content-delivery-sdk/ruby/about-ruby-sdk/) * [NodeJS](/docs/developers/sdks/content-delivery-sdk/nodejs/about-nodejs-delivery-sdk/) * [.NET](/docs/developers/sdks/content-delivery-sdk/dot-net/about-dot-net-delivery-sdk/) * [React Native](/docs/developers/sdks/content-delivery-sdk/react-native/about-react-native-sdk/) * [Python](/docs/developers/sdks/content-delivery-sdk/python/about-python-sdk/) * [Dart](/docs/developers/sdks/content-delivery-sdk/dart/about-dart-sdk/) The process for building sample apps and working with the SDKs differ based on the platform. We have covered them in detail in their respective sections. ### Authentication Since the Content Delivery APIs (CDAs) are private APIs, you will need to pass the following as HTTP headers to make authorized CDA requests: * The **Delivery Token** of the concerned environment (against the access\_token key) * The stack **API Key** The **API Key** is a unique key assigned to each stack. The **Delivery Token** is a read-only credential that you can create for different environments of your stack. While Content Delivery API requests may work with Access Token (instead of Delivery Token), we strongly recommend that you not use it, since we have already deprecated Access Token for new stacks. **Note**: The nomenclature for the use of delivery tokens in CDA requests will remain the same, i.e. you need to pass the value of the delivery token against the access\_token key. **Warning** * Users will not be able to use Authtoken or Management Token to run Content Delivery API (CDA) requests. To make authorized CDA requests, use the value of the delivery token against the access\_token key. * Users will not be able to use authentication parameters such as api\_key (Stack API key), access\_token (access token of the stack), authtoken (user generated authtoken), and authorization (management token of the stack) as query parameters for any stack-specific API requests. You must pass them as headers only, do not include them as query parameters in your API requests. **Note**: We have deprecated the usage of Access Tokens for all stacks. We strongly recommend that you use [**Delivery Tokens**](/docs/headless-cms/about-delivery-tokens) for fetching published content via the Content Delivery API and [**Management Tokens**](/docs/headless-cms/about-management-tokens) for fetching draft content via the Content Management API. #### How to Get API Key and Delivery Token To retrieve the stack API key and the delivery token of a specific publishing environment of your stack, perform the steps given below after logging into your [Contentstack account](https://www.contentstack.com/login/): 1. Go to your stack. 2. Navigate to **Settings** > **Tokens** > **Delivery Tokens**. 3. From the list of existing delivery tokens, click on the Delivery Token that applies to the publishing environment of your choice. 4. At the bottom of the resulting page, you will see the **API Key** and **Delivery Token** of your stack. **Additional Resource**: Read more about how you can [create a new delivery token](/docs/headless-cms/create-a-delivery-token). **Note**: Only the stack owners, developers, and admin can create delivery tokens. ### Rate Limiting Rate limiting defines the maximum number of API requests your organization can make within a specific time frame. **Request Types** • **CDN Requests**: Contentstack’s CDN serves cached responses. These requests are not subject to rate limiting. • **Origin Server Requests**: Requests that are not cached and are routed to the origin server are subject to rate limits. **Default Limits** By default, origin server requests are limited to **100 requests per second per organization**. All requests made from the CDA and Image Delivery API endpoints counts towards this rate limit excluding GraphQL. The exact rate limit depends on your plan. If required, you can request an increase by contacting [support](mailto:support@contentstack.com). **Note**: While CDN requests are not rate-limited, all API requests (CDN and origin) count toward your organization’s overall API usage quota. **Rate Limit Exceeded** If your application exceeds the allowed rate limit within a given time period, the API will return an HTTP 429 (Too Many Requests) response. **Monitoring Rate Limits** You can track your current rate limit status using the **HTTP response headers** returned with each API request. These limits reset at the beginning of each time window. Headers Description X-RateLimit-Limit Maximum number of requests allowed per second per organization. X-RateLimit-Remaining Number of requests remaining in the current time window. ### API conventions * The base URL for Content Delivery API for different regions can be found in the [Base URL](#base-url) section. * The API version (in our case, 'v3') can be found in the URL, e.g. cdn.contentstack.io/v3/endpoint. * Only GET verb or methods are recommended on cdn.contentstack.io. * URL paths use lower case and all the operations are specified in URL query parameters such as count, include\_count, and query. * Query parameters are case sensitive and uses lower case, underscore (\_) separated words. * The success/failure status of an operation is determined by the HTTP status it returns. Additional information is included in the HTTP response body. Read more about it in the [HTTP Headers](#http-headers) section. ### HTTP Headers HTTP headers let the client and the server pass additional information with an HTTP request or response. An HTTP header consists of its case-insensitive name followed by a colon (:), then by its value. Here’s what an HTTP response body looks like: ``` < x-served-by: cache-lax8631-LAX, cache-bur17525-BUR < x-cache: MISS, HIT < x-cache-hits: 0, 1 < x-runtime: 27ms < age: 5182 < x-timer: S1557441707.643683,VS0,VE0 ``` Let’s understand what the above HTTP Header means: * ``` x-served-by: cache-lax8631-LAX, cache-bur17525-BUR ``` Two cache-nodes in **X-Served-By** show that shielding is turned on, with cache-lax8631-LAX serving as the delivering cache node at the "shield" datacenter and cache-bur17525-BUR serving as the delivering cache node at the "local" datacenter. * ``` < x-cache: MISS, HIT ``` The **X-Cache: MISS, HIT** indicates that the requested object was not in the shield cache (a MISS) but was in the local delivering node (a HIT). For more details, refer [Understanding cache HIT and MISS headers with shielded services](https://docs.fastly.com/en/guides/understanding-cache-hit-and-miss-headers-with-shielded-services). * ``` < x-cache-hits: 0, 1 ``` The **X-Cache-Hits** reflects that same “MISS, HIT” information in numeric format as 0, 1. * ``` < x-runtime: 27ms ``` The **X-Runtime** HTTP response header provides the time (in milliseconds) an application takes to process a request. * ``` < age: 5182 ``` **Age** denotes a non-negative integer that represents the time in seconds the object has been in a proxy cache. * ``` < x-timer: S1557441707.643683,VS0,VE0 ``` The **X-Timer** header provides the timing information about the journey of a request from end to end. The above header can be broken down into three parts, each separated by commas: * S1557441707.643683: The first section of the header (starting with S) represents a [Unix timestamp](https://en.wikipedia.org/wiki/Unix_time) of the start of the request on our edges. * VS0: The next section, VS or "varnish start," represents the start of the varnish part of the request's journey and will always be 0. * VE0: The last section, VE or "varnish end," represents the sum of the length of the trip. For cache HITs, the length of the trip will nearly always be 0 (not actually zero, but less than a millisecond is rounded down). For cache MISSs, this number represents the number of milliseconds it took to retrieve the data from your origin server and send the response back to the requester. For more information, you can refer to the [Understanding the X-Timer header](https://docs.fastly.com/en/guides/understanding-the-xtimer-header) guide. ### Errors If there is something wrong with the API request, Contentstack returns an error. Contentstack uses conventional, standard HTTP status codes for errors, and returns a JSON body containing details about the error. In general, codes in the 2xx range signify success. The codes in the 4xx range indicate error, mainly due to information provided (for example, a required parameter or field was omitted). Lastly, codes in the 5xx range mean that there is something wrong with Contentstack’s servers; it is very rare though. Let’s look at the error codes and their meanings. HTTP status code Description 400 Bad Request The request was incorrect or corrupted. 401 Access Denied The login credentials are invalid. 403 Forbidden Error The page or resource that is being accessed is forbidden. 404 Not Found The requested page or resource could not be found. 412 Pre Condition Failed The entered API key is invalid. 422\* Unprocessable Entity (also includes Validation Error and Unknown Field) The request is syntactically correct but contains semantic errors 429\*\* Rate Limit Exceeded The number of requests exceeds the allowed limit for the given time period.  500 Internal Server Error The server is malfunctioning and is not specific on what the problem is. 502 Bad Gateway Error A server received an invalid response from another server. 504 Gateway Timeout Error A server did not receive a timely response from another server that it was accessing while attempting to load the web page or fill another request by the browser. **\*** Contentstack returns the **422** HTTP status code for an error along with the "UID is not valid" message in the response body either when an entry doesn’t exist within the stack, has been deleted from the content type, or exists within a different content type. As the entry has been deleted or unpublished, the Content Delivery Network (CDN) cannot identify the specified entry UID through the cache servers. To check whether the entry has been deleted, try retrieving the entry from CDN first. If the API request fails to retrieve the entry from CDN, then make an API request to the Origin server to check whether the entry exists. Also, if the content type doesn't exist within the stack, Contentstack returns the 422 HTTP status code for an error along with the "UID is not valid" message in the response body. \*\* Here are a few use cases where you might get a **429** error: * **Fetching published uncached entries:** When making requests to fetch published but uncached entries, the initial request goes to the origin, and subsequent requests are cached. There might be a chance that after publishing a large set of entries, you may get a 429 error for a few requests. But this should be resolved in some time as requests get cached based on the rate limit. * **Fetching unpublished entries / Passing requests with semantic errors:** Fetching unpublished entries or passing incorrect parameters in the request URL can result in 422 errors as the server may be unable to process these requests correctly. For example, if a user makes 200 incorrect requests to https://www.cdn.contentstack.io/. The initial 100 requests will give the 422 error because the requests are uncached, also since all the requests are incorrect and going to the origin, the other 100 requests will return 429 errors. **Note:** For uncached requests, the common rate limit is **100 requests** per second per organization. ### Using Postman Collection Contentstack offers you a Postman Collection that helps you try out our Content Delivery API. You can download this collection, connect to your Contentstack account, and try out the Content Delivery API with ease. Learn more about how to [get started with using the Postman Collection](/docs/developers/apis/content-delivery-api#postman-collection) for Contenstack Content Delivery API. ### Using OpenAPI Files Contentstack provides the OpenAPI files of the Contentstack’s Content Delivery APIs (CDA) that you can use to try out Contentstack APIs on any OpenAPI platform such as Swagger. You can download the OpenAPI JSON file of the Content Delivery API and open it on Swagger Editor to start using it. Learn more about how to get started with using the [OpenAPI files for Contenstack Content Delivery API](https://github.com/contentstack/contentstack-openapi). ## API Reference ### Content Types [Content type](/docs/headless-cms/create-a-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. **Additional Resource**: To get an idea of building your content type as per webpage’s layout, we recommend you to check out our [Content Modeling](/docs/developers/how-to-guides/content-modeling) guide. You can now pass the branch header in the API request to fetch or manage modules located within specific branches of the stack. **Note**: [Branches](/docs/headless-cms/about-branches) is a plan-based feature that is available only in the new Contentstack interface. Additionally, you can also set the include\_branch query parameter to true to include the \_branch top-level key in the response. This key specifies the unique ID of the branch where the concerned Contentstack module resides. #### All Content Types The Get all content types call returns comprehensive information of all the content types available in a particular stack in your account. When executing the API call, you can add queries to extend the functionality of this API call. **Tip**: If any of your content types contains a Global field and you wish to fetch the content schema of the Global field, then you need to pass theinclude\_global\_field\_schema:true parameter. This parameter helps return the Global field's schema along with the content type schema. To query your content types, under the Query Parameters section, insert a parameter named query and provide the query in JSON format as the value. To learn more about the queries, refer to the [Queries section of the Content Delivery API doc](/docs/developers/apis/content-delivery-api#queries). **Note**: This API request will return a maximum of **100 content types**. To retrieve the next batch of content types, make use of the [skip](/docs/developers/apis/content-delivery-api#skip) parameter (or refer [Pagination](/docs/developers/apis/content-delivery-api#pagination) for more details). #### Single Content Type This call returns information of a specific content type. It returns the content type schema, but does not include its entries. ### Global Fields A [Global](/docs/developers/global-field) field is a reusable field (or group of fields) that you can define once and reuse across multiple content types within your stack. This eliminates the need to recreate the same set of fields multiple times, saving effort and ensuring consistency. You can pass the **branch header** in API requests to fetch or manage modules within specific branches of the stack. Additionally, setting the include\_branch query parameter to true includes the \_branch key in the response, specifying the unique ID of the branch where the module resides. **Additional Resource**: You can create dynamic and flexible Global Fields by nesting Global fields within a [Modular Block,](/docs/developers/global-field/global-fields-as-blocks-within-modular-blocks) [Global](/docs/developers/global-field/about-global-field/)**,** or a [Group](/docs/headless-cms/group-fields-within-global-fields) fields. #### All Global Fields The Get all global fields request returns comprehensive information of all the global fields available in a particular stack in your organization. If you have nested global fields, it appears in the response. **Note**: * Information about Global fields can be retrieved by all users, regardless of their role or access level. * If your Global field contains [nested Global fields](/docs/developers/global-field/about-global-field#nested-global-fields), they will appear as part of the schema in the API response. #### Single Global Field The Get a single global field request allows you to fetch comprehensive details of a specific global field. When executing the API call, in the 'URL Parameters' section, provide the unique ID of your global field. **Note**: * Information about Global fields can be retrieved by all users, regardless of their role or access level. * If your Global field contains [nested Global fields](/docs/developers/global-field/about-global-field#nested-global-fields), they will appear as part of the schema in the API response. ### Entries An [entry](/docs/content-managers/author-content/about-entries) is the actual piece of content created using one of the defined [content types](/docs/developers/create-content-types/about-content-types).  You can now pass the branch header in the API request to fetch or manage modules located within specific branches of the stack. **Note**: [Branches](/docs/headless-cms/about-branches) is a plan-based feature that is available only in the new Contentstack interface. Additionally, you can also set the include\_branch query parameter to true to include the \_branch top-level key in the response. This key specifies the unique ID of the branch where the concerned Contentstack module resides. #### All Entries The Get all entries request fetches the list of all the entries of a particular content type. It returns the content of each entry in JSON format. Additionally, if you wish to fetch the metadata attached to each entry, then you need to pass include\_metadata as a query parameter. Set this parameter to true to include the entry metadata along with all entries in the response body. You will find the entry metadata under the \_metadata key in the response. It will be associated with a specific extension UID as follows: ``` "_metadata": { "extensions": { "{extension_uid}": [{ "image_copyrights": "Contentstack Branding", "scope": "local" }] }} ``` If an entry is not published in a specific locale, make use of the “include\_fallback=true” query parameter to fetch the published content from its fallback locale. **Note:** If the fallback language of the specified locale is the master language itself, this parameter won't be applicable. To include the publish details in the response, make use of the include\_publish\_details=true parameter. This will return the publishing details of the entry in every environment along with the version number that is published in each of the environments. You can add other [Queries](/docs/developers/apis/content-delivery-api#queries) to extend the functionality of this API call. Add a query parameter named query and provide your query (in JSON format) as the value. **When using Delivery Tokens** * Fetches ONLY published content * Passing the environment as a query parameter is optional but recommended to ensure that the CDN delivers the most recent content * Locale is **optional** * If no locale is specified, it returns the entry from the master locale * If you specify a locale in the query, it returns the latest published version of the localized entry/entries * If an entry is not localized, make use of the include\_fallback=true query parameter to fetch the published content from its fallback locale **Tip:** This request returns only the first 100 entries of the specified content type. Refer to the [Pagination](/docs/developers/apis/content-delivery-api#pagination) section to retrieve the rest of your entries in a paginated form. #### Single Entry The Get a single entry request fetches a particular entry of a content type. **Tip**: To get a specific version, refer to the [Get a Single Entry](/docs/developers/apis/content-management-api/#get-a-single-entry) management API. This request returns only the latest version. Additionally, if you wish to fetch the metadata attached to each entry, then you need to pass include\_metadata as a query parameter. Set this parameter to true to include the entry metadata along with all entries in the response body. You will find the entry metadata under the \_metadata key in the response. It will be associated with a specific extension UID as follows: ``` "_metadata": { "extensions": { "{extension_uid}": [{ "image_copyrights": "Contentstack Branding", "scope": "local" }] }} ``` If an entry is not published in a specific locale, make use of the “include\_fallback=true” query parameter to fetch the published content from its fallback locale. **Note:** If the fallback language of the specified locale is the master language itself, this parameter won't be applicable. To include the publish details in the response, make use of the include\_publish\_details=true parameter. This will return the publishing details of the entry in every environment along with the version number that is published in each of the environments. **Note**: To retrieve an entry from a particular branch, provide the branch\_uid under the branch header. You can add other [Queries](/docs/developers/apis/content-delivery-api#queries) to extend the functionality of this API call. Add a query parameter named query and provide your query (in JSON format) as the value. **When using Delivery Tokens** * Fetches ONLY published content * Passing the environment as a query parameter is optional but recommended to ensure that the CDN delivers the most recent content * Locale is **optional** * If no locale is specified, it returns the entry from the master locale * If you specify a locale in the query, it returns the latest published version of the localized entry/entries * If an entry is not localized, make use of the include\_fallback=true query parameter to fetch the published content from its fallback locale #### Get information on embedded RTE objects The Get information on embedded RTE objects request returns comprehensive information on all entries and/or assets embedded within the Rich Text Editor field. If your entry contains a Rich Text Editor field and you wish to fetch the content schema of the items embedded inside the rich text, then you need to pass the include\_embedded\_items\[\]=BASE query parameter. You can view information about the embedded objects under the \_embedded\_items parameter in the JSON response body. **Note**: Contentstack’s [Content Delivery SDKs](/docs/headless-cms/fetch-content#fetch-content-using-content-delivery-sdks) help consume the embedded entries and assets returned in the API response. You can then render the embedded objects on the front end however required. #### Get all entries with defined taxonomies The Get all entries with defined taxonomies request returns comprehensive information of all the entries associated with a specific taxonomy or term available in a particular stack in your organization. To retrieve entries that match only taxonomy and term UID and belong to a specific content type. ``` query={ "taxonomies.taxonomy_uid" : "term_uid", "_content_type_uid": "_content_type_uid" } ``` **Example**: If you want to match entries with the term red from the products content type. ``` query={ "taxonomies.color" : "red", "_content_type_uid": "products" } ``` To retrieve entries that match only taxonomy and term UID and belong to multiple content types. ``` query={ "taxonomies.taxonomy_uid" : "term_uid", "_content_type_uid": { "$in" : ["_content_type_uid1", "_content_type_uid2"] } } ``` **Example**: If you want to match entries with the term red from the products or blogs content types. ``` query={ "taxonomies.color" : "red", "_content_type_uid": { "$in" : ["products", "blogs"] } } ``` **Note**: Refer to the [Taxonomy Queries](/docs/developers/apis/content-delivery-api#taxonomy-queries) section for more query filters. ### Entry Variants Entry Variants allows you to create content variations for different audiences, languages, and marketing experiments. The key concepts include **Base Entry**, **Entry Variant**, and **Variant Group**. This feature streamlines personalized content management, improves consistency, and simplifies updates. **Note**: The Entry Variants feature is currently available as part of an Early Access Program and may not be available to all users. For more information, you can reach out to our [support](mailto:support@contentstack.com) team. #### Get All Entry Variants The Get all entry variants retrieves all variants of a given entry and their customizations. Pass your variant UID(s) or [aliases](/docs/personalize/glossary-key-features#variant-aliases) in the x-cs-variant-uid header to get all the variants applied to the entries. **Note**: By default you can add up to **3 variant UIDs or aliases** (comma-separated) simultaneously. The limit can vary based on your organization plan. The variant UID or alias added first takes priority and will be applied to the base entry fields. For example, if you pass UIDs for Red, Green, and Blue variants in that order, the Red variant will have the highest priority. Sample header request, x-cs-variant-uid: cs6c42daef493fb432, cs7697ce80c9bbcc3e, cs8697ce80c9bbcc4f or x-cs-variant-uid: cs\_personalize\_0\_0, cs\_personalize\_0\_1, cs\_personalize\_0\_2. You can add other [queries](https://www.contentstack.com/docs/developers/apis/content-delivery-api#queries) to extend the functionality of this API call. **Note**: * The API timeout for entry variants is capped at **10 seconds** * The maximum response document size for all entry variants is **10 MB** **When using Delivery Tokens** * Fetches ONLY published content * Passing the environment as a query parameter is optional but recommended to ensure that the CDN delivers the most recent content * Locale is optional * If no locale is specified, it returns the entry from the master locale * If you specify a locale in the query, it returns the latest published version of the localized entry/entries * If an entry is not localized, make use of the include\_fallback=true query parameter to fetch the published content from its fallback locale **Tip**: This request returns only the first **100 entries** of the specified content type. Refer to the [Pagination](https://www.contentstack.com/docs/developers/apis/content-delivery-api#pagination) section to retrieve the rest of your entries in a paginated form. **Error Handling** If the number of variants exceeds the configured limit: * The API processes only up to the allowed limit. * Pass the show\_errors=true query parameter to include an errors array describing the truncation. * If show\_errors is false or not set, the errors key is omitted. Sample response when the show\_errors=true query parameter is passed and allowed variant limit is exceeded: ``` { "entries": [ ... ], "errors": [ { "code": "VARIANT_LIMIT_EXCEEDED", "message": "x-cs-variant-uid should not be greater than {{your_set_limit}}", "details": { "provided_count": 7, "limit": {{your_set_limit}}, "applied_count": {{your_set_limit}} } } ] } ``` #### Get Single Entry Variant The Get single entry variant request retrieves a single variant entry of a given base entry. Pass your variant UID(s) or [aliases](/docs/personalize/glossary-key-features#variant-aliases) in the x-cs-variant-uid header to get all the variants applied to the entries. **Note**: By default you can add up to **3 variant UIDs or aliases** (comma-separated) simultaneously. The limit can vary based on your organization plan. The variant UID or alias added first takes priority and will be applied to the base entry fields. For example, if you pass UIDs for Red, Green, and Blue variants in that order, the Red variant will have the highest priority. Sample header request, x-cs-variant-uid: cs6c42daef493fb432, cs7697ce80c9bbcc3e, cs8697ce80c9bbcc4f or x-cs-variant-uid: cs\_personalize\_0\_0, cs\_personalize\_0\_1, cs\_personalize\_0\_2. You can add other [queries](https://www.contentstack.com/docs/developers/apis/content-delivery-api#queries) to extend the functionality of this API call. **Note**: * The API timeout for entry variants is capped at **10 seconds** * The maximum response document size for all entry variants is **10 MB** **When using Delivery Tokens** * Fetches ONLY published content * Passing the environment as a query parameter is optional but recommended to ensure that the CDN delivers the most recent content * Locale is optional * If no locale is specified, it returns the entry from the master locale * If you specify a locale in the query, it returns the latest published version of the localized entry/entries * If an entry is not localized, make use of the include\_fallback=true query parameter to fetch the published content from its fallback locale **Tip**: This request returns only the first **100 entries** of the specified content type. Refer to the [Pagination](https://www.contentstack.com/docs/developers/apis/content-delivery-api#pagination) section to retrieve the rest of your entries in a paginated form. **Error Handling** If the number of variants exceeds the configured limit: * The API processes only up to the allowed limit. * Pass the show\_errors=true query parameter to include an errors array describing the truncation. * If show\_errors is false or not set, the errors key is omitted. Sample response when the show\_errors=true query parameter is passed and allowed variant limit is exceeded: ``` { "entries": [ ... ], "errors": [ { "code": "VARIANT_LIMIT_EXCEEDED", "message": "x-cs-variant-uid should not be greater than {{your_set_limit}}", "details": { "provided_count": 7, "limit": {{your_set_limit}}, "applied_count": {{your_set_limit}} } } ] } ``` ### Taxonomy Taxonomy, simplifies the process of organizing content in your system, making it effortless to find and retrieve information. It allows you to arrange your web properties in a hierarchy according to your specific needs, whether it's their purpose, intended audience, or other aspects of your business. **Note**: Refer to the [Taxonomy Queries](/docs/developers/apis/content-delivery-api#taxonomy-queries) section for more query filters. #### Get all taxonomies The Get all taxonomies request retrieves all published taxonomies for the given environment. #### Get a single taxonomy The Get a single taxonomy request retrieves details of a single published taxonomy. #### Get all terms The Get all terms request retrieves all published terms in a taxonomy for the specified environment and locale. #### Get a single term The Get a single term request retrieves a specific published term within a taxonomy. #### Get a single term in all locales The Get a single term in all locales request retrieves all localized versions of a published term. #### Get descendants of a term The Get descendants of a term request retrieves all descendant terms of a given term. #### Get ancestors of a term The Get ancestors of a term request retrieves all ancestor terms of a given term up to the root. ### Assets [Assets](/docs/headless-cms/about-entries/#create-and-manage-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](/docs/content-managers/working-with-entries/about-entries). You can now pass the branch header in the API request to fetch or manage modules located within specific branches of the stack. **Note**: [Branches](/docs/headless-cms/about-branches) is a plan-based feature that is available only in the new Contentstack interface. Additionally, you can also set the include\_branch query parameter to true to include the \_branch top-level key in the response. This key specifies the unique ID of the branch where the concerned Contentstack module resides. #### All Assets The Get all assets request fetches the list of all the assets of a particular stack. It returns the content of each asset in JSON format. You can also specify the environment of which you want to get the assets. Additionally, if you wish to fetch the metadata attached to each asset, then you need to pass include\_metadata as a query parameter. Set this parameter to true to include the asset metadata along with all assets in the response body. You will find the entry metadata under the \_metadata key in the response. It will be associated with a specific extension UID as follows: ``` "_metadata": { "extensions": { "{extension_uid}": [{ "image_copyrights": "Contentstack Branding", "scope": "local" }] }} ``` If an asset is not published in a specific locale, make use of the include\_fallback=true query parameter to fetch the published version from the fallback locale. You can apply [Queries](#queries) to filter assets/entries. Add a query parameter named query and provide your query (in JSON format) as the value. **When using Delivery Tokens** * Fetches ONLY published assets * Environment is **mandatory** to fetch assets published on the specified environment * Version is **optional** * If no version is specified, it fetches the latest published version * If a version is specified and if it is not the latest published version, **it will not return any result** * Locale is **optional** * If no locale is specified, it returns the asset from the master locale * If you specify a locale in the query, it returns the latest published version of the localized asset/assets * If an asset is not localized, make use of the include\_fallback=true query parameter to fetch the published asset from its fallback locale **Example: Fetch visual markups using the asset\_fields\[\] parameter** The following request returns all assets of the stack along with visual markups: ``` GET /v3/assets?environment={environment_name}&asset_fields[]=visual_markups ``` The response includes a visual\_markups array for the asset: ``` "visual_markups": [ { "id": "vmarkup-blt0f5e6a1b2c3d4e5", "type": "Hotspot", "title": "Product tag", "description": "Front-facing logo", "url": "https://www.example.com/product", "coordinates": { "x": 542, "y": 54 } }, { "id": "vmarkup-blt9a2c1d0e8f7b6a5", "type": "BoundingBox", "title": "Person", "description": "A middle-aged man", "url": "https://www.example.com/people", "coordinates": { "x": 542, "y": 54, "width": 738, "height": 2301 } }] ``` **Note:** The Hotspot type returns only x and y coordinates, while the BoundingBox type also returns width and height. #### Single Asset The Get a single asset request fetches the latest version of a specific asset of a particular stack. **Tip**: If no version is mentioned, the request will retrieve the latest published version of the asset. To get a specific version of an asset, refer to the [Get a Single Asset](/docs/developers/apis/content-management-api#get-a-single-asset) management API. Additionally, if you wish to fetch the metadata attached to each asset, then you need to pass include\_metadata as a query parameter. Set this parameter to true to include the asset metadata along with all assets in the response body. You will find the entry metadata under the \_metadata key in the response. It will be associated with a specific extension UID as follows: ``` "_metadata": { "extensions": { "{extension_uid}": [{ "image_copyrights": "Contentstack Branding", "scope": "local" }] }} ``` If an asset is not published in a specific locale, make use of the include\_fallback=true query parameter to fetch the published version from the fallback locale. **When using Delivery Tokens** * Fetches ONLY published asset * Environment is **mandatory** to fetch an asset published on the specified environment * Version is **optional** * If no version is specified, it fetches the latest published version * If a version is specified and if it is not the latest published version, **it will not return any result** * Locale is **optional** * If no locale is specified, it returns the asset from the master locale * If you specify a locale in the query, it returns the latest published version of the localized asset * If an asset is not localized, make use of the include\_fallback=true query parameter to fetch the published asset from its fallback locale **Example: Fetch visual markups using the asset\_fields\[\] parameter** The following request returns a single asset along with visual markups: ``` GET /v3/assets/{asset_uid}?environment={environment_name}&asset_fields[]=visual_markups ``` The response includes a visual\_markups array for the asset: ``` "visual_markups": [ { "id": "vmarkup-blt0f5e6a1b2c3d4e5", "type": "Hotspot", "title": "Product tag", "description": "Front-facing logo", "url": "https://www.example.com/product", "coordinates": { "x": 542, "y": 54 } }, { "id": "vmarkup-blt9a2c1d0e8f7b6a5", "type": "BoundingBox", "title": "Person", "description": "A middle-aged man", "url": "https://www.example.com/people", "coordinates": { "x": 542, "y": 54, "width": 738, "height": 2301 } }] ``` **Note:** The Hotspot type returns only x and y coordinates, while the BoundingBox type also returns width and height. ### Synchronization The Sync API takes care of syncing your Contentstack data with your app and ensures that the data is always up-to-date by providing delta updates. **Note:** When executing the following synchronization API Requests, you need to pass the Delivery Token as the value to the access\_token parameter. #### Initial Synchronization The Initial Sync request syncs the entries and assets of a stack, published on a specific environment. Set init to ‘true’ if you want to sync all the published entries and assets. This is usually used when the app does not have any content and you want to get all the content for the first time. **Note:** When executing the API request, pass the Delivery Token as the value to the access\_token parameter. Applicable parameters: **Parameter** **Values** content\_type\_uid Enter content type UID. e.g., products This retrieves published entries of specified content type. locale Enter locale code. e.g., en-us This retrieves published entries of specific locale. start\_from Enter the start date. e.g., 2018-08-14T00:00:00.000Z This retrieves published entries starting from a specific date. type Applicable values are: * entry\_published * asset\_published * entry\_unpublished * asset\_unpublished * entry\_deleted * asset\_deleted * content\_type\_deleted If you do not specify any value, it will bring all published entries and published assets. You can pass multiple types as comma-separated values, for example, entry\_published,entry\_unpublished,asset\_published. **Note**: If you specify any value for content\_type\_uid, locale, start\_from, or type, the values for these parameters will remain unchanged for all subsequent sync requests. Once you perform an initial sync, you will either get a sync\_token or a pagination\_token in response. These tokens don't have an expiry time. You can use the sync\_token later to perform subsequent sync, which fetches only new changes through delta updates. If there are more than 100 records, you get a pagination\_token in response. This token can be used to fetch the next batch of data. Read [Sync using pagination token](#sync-using-pagination-token) for more details. #### Sync using pagination token When running the [Initial Synchronization](#initial-synchronization) or the [Subsequent Sync](#subsequent-sync) request, if the result of the sync (initial or subsequent) request exceeds 100 records you will get a pagination\_token. The Sync using pagination token request uses the pagination\_token to retrieve the next batch of data (100 records) while performing the sync. You can reiterate the process until you get a sync\_token. **Note:** When executing the API request, pass the Delivery Token as the value to the access\_token parameter. #### Subsequent Sync The Subsequent Sync request is used to retrieve the updated content (i.e., published or unpublished content, or any published content that has been deleted) since the last performed complete Sync. In this API request, you need to provide the sync\_token that you received in the last complete sync process. If there are more than 100 records, you will get a pagination\_token instead. This token can be used to fetch the next batch of data. Refer the [Sync using pagination token](#sync-using-pagination-token) section for more details. **Tip:** Once you have performed the Initial Sync process, you do not need to perform it again. For retrieving the subsequent delta changes, use the sync\_token received either in the Initial Sync process or the previous Subsequent Sync requests to sync new changes. Also, when executing the API request, pass the Delivery Token as the value to the access\_token parameter. ### Queries Contentstack provides certain queries that you can use to fetch filtered results. Queries can be used across all CDA API requests.  You can now pass the branch header in the API request to fetch or manage modules located within specific branches of the stack. **Note**: [Branches](/docs/headless-cms/about-branches) is a plan-based feature that is available only in the new Contentstack interface. Additionally, you can also set the include\_branch query parameter to true to include the \_branch top-level key in the response. This key specifies the unique ID of the branch where the concerned Contentstack module resides #### Taxonomy Queries Taxonomy, simplifies the process of organizing content in your system, making it effortless to find and retrieve information. You can retrieve filtered entries using taxonomy through two different endpoints: * /taxonomies/entries?query * /content\_types/{content\_type\_uid}/entries?query **Note**: * Sorting is supported only on title, created\_at, updated\_at, published\_at, and url fields. * Custom filters may time out for large datasets. ##### IN Operator Get all entries for a specific taxonomy that satisfy the given conditions provided in the "$in" query. Your query should be as follows: ``` query={"taxonomies.taxonomy_uid" : { "$in" : ["term_uid1" , "term_uid2" ] }} ``` **Example**: If you want to retrieve entries with the color taxonomy applied and linked to the term red and/or yellow. ``` query={"taxonomies.color" : { "$in" : ["red" , "yellow" ] }} ``` ##### OR Operator \[Taxonomy\] Get all entries for a specific taxonomy that satisfy at least one of the given conditions provided in the “$or” query. Your query should be as follows: ``` query={ "$or": [ { "taxonomies.taxonomy_uid_1" : "term_uid1" }, { "taxonomies.taxonomy_uid_2" : "term_uid2" } ]} ``` **Example**: If you want to retrieve entries with either the color or size taxonomy applied and linked to the terms black and small, respectively. ``` query={ "$or": [ { "taxonomies.color" : "black" }, { "taxonomies.size" : "small" } ]} ``` ##### AND Operator \[Taxonomy\] Get all entries for a specific taxonomy that satisfy all the conditions provided in the “$and” query. Your query should be as follows: ``` query={ "$and": [ { "taxonomies.taxonomy_uid_1" : "term_uid1" }, { "taxonomies.taxonomy_uid_2" : "term_uid2" } ]} ``` **Example**: If you want to retrieve entries with the color and category taxonomies applied and linked to the terms black and mobile, respectively. ``` query={ "$and": [ { "taxonomies.color" : "black" }, { "taxonomies.category" : "mobile" } ]} ``` ##### Exists Operator Get all entries for a specific taxonomy that if the value of the field, mentioned in the condition, exists. Your query should be as follows: ``` query={"taxonomies.taxonomy_uid" : { "$exists": true }} ``` **Example**: If you want to retrieve entries with the color taxonomy applied. ``` query={"taxonomies.color" : { "$exists": true }} ``` ##### Equal and Below Operator Get all entries for a specific taxonomy that match a specific term and all its descendant terms, requiring only the target term and a specified level. **Note:** If you don't specify the level, the default behavior is to retrieve terms up to **level 10**. ``` query={ "taxonomies.taxonomy_uid" : { "$eq_below": "term_uid", "levels" : 2}} ``` **Example**: If you want to retrieve all entries with terms nested under blue, such as navy blue and sky blue, while also matching entries with the target term blue. ``` query={ "taxonomies.color" : { "$eq_below": "blue" }} ``` ##### Below Operator Get all entries for a specific taxonomy that match all of their descendant terms by specifying only the target term and a specific level. **Note:** If you don't specify the level, the default behavior is to retrieve terms up to **level 10**. ``` query={ "taxonomies.taxonomy_uid" : { "$below": "term_uid", "levels" : 2}} ``` **Example**: If you want to retrieve all entries containing terms nested under blue, such as navy blue and sky blue, but exclude entries that solely have the target term blue. ``` query={ "taxonomies.color" : { "$below": "blue" }} ``` ##### Equal and Above Operator Get all entries for a specific taxonomy that match a specific term and all its ancestor terms, requiring only the target term and a specified level. **Note:** If you don't specify the level, the default behavior is to retrieve terms up to **level 10**. ``` query = { "taxonomies.taxonomy_uid": { "$eq_above": "term_uid", "levels": 2 }} ``` **Example**: If you want to obtain all entries that include the term navy\_blue and its parent term blue. ``` query = { "taxonomies.color": { "$eq_above": "navy_blue"}} ``` ##### Above Operator Get all entries for a specific taxonomy that match only the parent term(s) of a specified target term, excluding the target term itself. You can also specify a specific level. **Note:** If you don't specify the level, the default behavior is to retrieve terms up to **level 10**. ``` query = { "taxonomies.taxonomy_uid": { "$above": "term_uid", "levels": 2 }} ``` **Example**: If you wish to match entries with all the terms above the target term navy\_blue, excluding navy\_blue itself. ``` query = { "taxonomies.color": { "$above": "navy_blue" }} ``` #### Equals Operator Get entries containing the field values matching the condition in the query. This query will work for both entries as well as assets. **Example:** In the Products content type, you have a field named Title ("uid":"title") field. If, for instance, you want to retrieve all the entries in which the value for the Title field is 'Redmi 3S', you can set the parameters as: {"title": "Redmi 3S"} Let’s consider another example. You want to retrieve all the entries that have their start date as 8th December, 2017. Now, you need to set this parameter with the date in the ISO Date format as below: { "start\_date": "2017-12-08T00:00:00.000Z" } This will give you all the entries where the start date is 8th December, 2017. ##### Equals Operator Within Group Get entries where the value of a field within a Group field matches the condition in the query. This query is specifically for fields that are part of the Group field. This query will work for entries only. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Card Type ("uid":"card\_type"). If, for instance, you want to retrieve the entries in which the value for the Card Type field is 'Debit Card', you can use the following value in the ‘query’ parameter: {"bank\_offers.card\_type": "Debit Card"} ##### Equals Operator Within Modular Blocks Get entries where the value of a field within a Modular Blocks field matches the condition in the query. This query is specifically for fields that are part of the Modular Blocks field. This query will work for entries only. **Example:** In the Products content type, we have a Modular Blocks field named Additional Info ("uid":"additional\_info") that contains the Deals ("uid":"deals") block. And, within this Deals block, we have a field named Deal Name ("uid":"deal\_name"). If, for instance, you want to retrieve the entries in which the value for the Deal Name field is 'Christmas Deal', you can use the following value in the query parameter: {"additional\_info.deals.deal\_name": "Christmas Deal"} #### Not-equals Operator Get all the entries in which the value of a field does not match the value provided in the condition. This query will work for both entries as well as assets. **Example:** In the Product content type, you have a field named Price in USD. Now, you need to retrieve all entries where the value of this field not equal to '146' for this field. The parameter can be used as: { "price\_in\_usd": { "$ne": 146 } } This will give you all the entries that have the value for Price in USD not set to '146'. Let’s consider another example. You want to retrieve all the entries except the ones that have their start date as 8th December, 2017. Now, you need to set this parameter with the date in the ISO Date format as below: { "start\_date": { "$ne": "2017-12-08T00:00:00.000Z" } } This will give you all the entries where the start date is not 8th December, 2017. ##### Not-equals Operator Within Group Get entries where the value of a field does not match the value provided in the condition. This query is specifically for fields that are part of the Group field. This query will work for entries only. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Card Type ("uid":"card\_type"). If, for instance, you want to retrieve the entries in which the value for the Card Type field is _NOT_ 'Debit Card', use the following value in the query parameter: {"bank\_offers.card\_type": {"$ne": "Debit Card"}} ##### Not-equals Operator Within Modular Blocks Get entries where the value of a field within the Modular Blocks field does not match the condition in the query. This query is specifically for fields that are part of any block within a Modular Block field. This query will work for entries only. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Deals ("uid":"deals") block. And, within this Deals block, we have a field named Deal Name ("uid":"deal\_name"). If, for instance, you want to retrieve the entries in which the value for the Deal Name field is _NOT_ 'Christmas Deal', use the following value in the query parameter: {"additional\_info.deals.deal\_name": {"$ne": "Christmas Deal"}} #### Array Equals Operator Get entries in which the value of a field matches to any of the given values. This parameter will compare field values of entries to that of the values provided in the condition. This query will work for entries only. **Example:** In the Product content type, you have a field named Price in USD. Now, you need to retrieve all the entries where value of this field is one among the given set of values. The query fired using the '$in' parameter is given below: { "price\_in\_usd": { "$in": \[ 101, 749 \] } } This will retrieve all the entries that have the value of Price in USD field set to '101' or 749'. ##### Array Equals Operator Within Group Get entries where the value of a field, within a Group field, matches any of the given values. This parameter will compare field values of entries to that of the values provided in the condition. This query is specifically for fields that are part of the Group field. This query will work for entries only. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Card Type ("uid":"card\_type"). If, for instance, you want to retrieve the entries in which the values for the Card Type field are ‘Credit Card’ and 'Debit Card', use the following value in the query parameter: {"bank\_offers.card\_type": {"$in": \["Credit Card", "Debit Card"\]}} ##### Array Equals Operator Within Modular Blocks Get entries where the value of a field within Modular Blocks matches to any of the given values. This query is specifically for fields that are part of any block within a Modular Block field. This query will work for entries only. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Deals ("uid":"deals") block. And, within this Deals block, we have a field named Deal Name ("uid":"deal\_name"). If, for instance, you want to retrieve the entries in which the values for the Deal Name field are 'Christmas Deal’ and ‘Summer Deal', use the following value in the query parameter: {"additional\_info.deals.deal\_name": {"$in": \["Christmas Deal", "Summer Deal"\]}} #### Array Not-equals Operator Get all entries in which the value of a field does not match to any of the given values. This parameter will compare field values of entries to that of the values provided in the condition, and the query will retrieve entries that have field values that does not match to any of the values provided. This query will work for entries only. **Example:** In the Product content type, you have a field named Price in USD. Now, you need to retrieve the entries where the field value does not fall in the given set. You can send the parameter as: { "price\_in\_usd": { "$nin": \[ 101, 749 \] } } This will give you all the entries that do not have the value for Price in USD set to '101' or '749'. ##### Array Not-equals Operator Within Group Get entries in which the value of a field does not match any of the values provided in the condition. This query is specifically for fields that are part of the Group field. This query will work for entries only. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Card Type ("uid":"card\_type"). If, for instance, you want to retrieve the entries in which the values for the Card Type field are _NOT_ 'Debit Card', use the following value in the query parameter: {"bank\_offers.card\_type": {"$nin": \["Debit Card"\]}} ##### Array Not-equals Operator Within Modular Blocks Get entries where the values of the fields within Modular Blocks does not match the condition in the query. This query is specifically for fields that are part of any block within a Modular Block field. This query will work for entries only. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Deals ("uid":"deals") block. And, within this Deals block, we have a field named Deal Name ("uid":"deal\_name"). If, for instance, you want to retrieve the entries in which the values for the Deal Name field are _NOT_ 'Christmas Deal’ and ‘Summer Deal', use the following value in the query parameter: { "additional\_info.deals.deal\_name": { "$nin": \[ "Christmas Deal", "Summer Deal" \] } } #### Include Reference When fetching an entry, the content of referred entries that are part of the parent entry is NOT included in the Response body; you only get their UIDs. To include the content of the referred entries in your response, you need to use the include\[\] parameter and specify the UID of the reference field as value.The API request should be as follows: https://cdn.contentstack.io/v3/content\_types/product/entries?include\[\]={reference\_field\_UID. This query will work for entries only. **Example:** In the Product content type, there is a reference field called Categories, which refers entries of another content type. Let’s assume that you had created an entry for the Product content type, and the value selected in the Categories field was ‘Mobiles’. If you fetch the entry using the [Get a Single Entry](/docs/developers/apis/content-delivery-api#get-a-single-entry) API request, you would get all the details of the entry in the response, but the value against the Categories field would be UID of the referenced entry (i.e., UID of the ‘Mobiles’ entry in this case). In order to fetch the details of the entry used in the Categories reference field, you need to use the include\[\] parameter in the following manner: https://cdn.contentstack.io/v3/content\_types/product/entries?include\[\]=categories In case you wish to fetch the data of the entries of multiple reference fields, use the include\[\] parameter in the following manner: https://cdn.contentstack.io/v3/content\_types/product/entries?include\[\]=categories&include\[\]=brands **Note:** * The maximum reference depth limit to which a multiple content type referencing Reference field works is **3 levels** deep. * A maximum of **100 reference** paths can be queried in a single request using the include\[\] parameter. ##### Include Reference Within Group If the reference field is part of a Group field, you need to use the Group field UID as well as the reference field UID using a dot operator. This query will work for entries only. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a Reference field named Bank ("uid":"bank"). If, for instance, you want to retrieve entries and include the data of the reference field as well, you need to use the include\[\] parameter in the following manner: https://cda.contentstack.io/v3/content\_types/product/entries?include\[\]=bank\_offers.bank ##### Include Reference for Nested Referenced Field In case the referenced entry further has reference to another entry (nested referencing), you can use the dot operator to fetch the content of the nested references as well. This query will work for entries only. **Example:** Consider that you have a content type named ‘Blogs’ which has two reference fields (‘Authors’ and ‘Related Articles’) referring to the ‘Authors’ and ‘Blogs’ content types (self-referencing), respectively. So, we have the following reference relationships between the content types: * ‘Blogs’ refers to ‘Author’ content type * ‘Blogs’ refers to ‘Blogs’ content type (self-referencing) Now, consider that you want to retrieve an entry of the ‘Blogs’ content type along with the data of the author (details from the ‘Author’ content type) who authored the entry. You also want to fetch the data of the authors who wrote the ‘Related Articles’ as well that are referenced in this entry, (details from the ‘Blogs’ content type). In this case, you need to use related\_articles.authors in the include\[\] parameter as follows: https://cdn.contentstack.io/v3/content\_types/content\_type\_uid/entries?include\[\]=authors&include\[\]=related\_articles.authors ##### Include Reference Within Modular Blocks If the reference field is part of a Modular Blocks field, you need to use the Modular Blocks UID, Block UID, as well as the reference field UID using a dot operator. This query will work for entries only. **Example:** In the Products’ content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Related Products ("uid":"related\_products") block. And, within this Block field, we have a field named Products ("uid":"products"). If, for instance, you want to retrieve entries and include the data of the reference field, you need to use the include\[\] parameter in the following manner: https://cda.contentstack.io/v3/content\_types/product/entries?include\[\]=additional\_info.related\_products.products #### Include All References When fetching an entry or a list of entries, the referenced entries are not included in the response by default—you only get their UIDs. To retrieve the content of referenced entries (up to **depth 1**), use the include\_all=true parameter. To fetch deeper references, use the include\_all\_depth parameter to specify the depth (up to **5 levels**). Each level reflects a reference chain—for example, an entry referencing a blog (level 1), which references articles (level 2), and further, articles linking to authors (level 3). **Note**: * The maximum allowed depth of **5** is applicable throughout your organization; exceeding this limit will result in an error. * The maximum number of reference paths that can be retrieved in a single request is **100**, regardless of the depth specified. If the number of reference paths exceeds 100, the API returns an error. To avoid this, reduce the value of the include\_all\_depth parameter and try again. * The include\_all parameter functions only with a delivery token. **Example API Request**: ``` https://cdn.contentstack.io/v3/content_types/home/entries/?include_all=true&include_all_depth=3 ``` #### Reference Search Equals Get entries having values based on referenced fields. This query retrieves all entries that satisfy the query conditions made on referenced fields. This query will work for entries only. **Example:** In the Product content type, if you wish to retrieve all entries that have their brand (Reference field) title set to Apple Inc. So, the query that needs to be run is given below: {"brand": { "$in\_query": { "title": "Apple Inc."}}} If you have enabled multiple content type referencing, you need to mention the content type UID of the parent content type as follows: {"brand":{"$in\_query":{"title":"Apple Inc.", "\_content\_type\_uid":"brand"}, "\_content\_type\_uid":"product"}} You can use queries within this query (nested querying) in order to query on the referred entries. In this case, the syntax of the query will be as follows: * General query: {"reference\_field\_uid":{"$in\_query":{"referred\_content\_type's\_field\_uid":{"query\_to\_be\_applied"}}}} * Multiple content type reference query: {"reference\_field\_uid":{"$in\_query":{"referred\_content\_type's\_field\_uid":{"query\_to\_be\_applied"}}}, "\_content\_type\_uid":"UID\_of\_referred\_content\_type"} Additionally, to retrieve entries that also include references to entries of multiple content types, you need to specify the content type UIDs of all the referred entries when querying. For example, “Parent Reference” has a Reference field that points to “Reference content type 1” and “Reference content type 1” has a Reference field that points to both “Reference content type 2” and “Reference content type 3”. So, to retrieve an entry in “Parent Reference” that has referred to an entry of “Reference content type 1” whose Reference field has referred an entry titled “Sample” of “Reference content type 2”. The query format is as follows: * General query: {"referred\_parent\_content\_type\_field\_uid": {"$in\_query": {"referred\_content\_type\_2\_field\_uid": { "$in\_query": {"title": "Sample"}}}}} * Multiple content type reference query: {"referred\_parent\_content\_type\_field\_uid": {"$in\_query": {"referred\_content\_type\_2\_field\_uid": { "$in\_query": {"title": "Sample", "\_content\_type\_uid": "referred\_content\_type\_3\_uid"} }, "\_content\_type\_uid": "referred\_content\_type\_2\_uid"}, "\_content\_type\_uid": "referred\_parent\_content\_type\_uid"}} ##### Reference Search Equals for Nested Querying You can use queries within this query (nested querying) in order to query on the referred entries.This query will work for entries only. The syntax of the query will be as follows: * General query: {"reference\_field\_uid": { "$in\_query": { "referred\_fieldname": {"query\_to\_be\_applied"}}}} * Multiple content type referencing query: {"reference\_field\_uid": { "$in\_query": { "referred\_fieldname": {"query\_to\_be\_applied"}}, "\_content\_type\_uid ":"UID\_of\_parent\_content\_type"}} **Example**: If you want to retrieve all entries that have referenced entries with title that starts with ‘S’ within the frequently\_bought\_together field, you need to run the query given below: * General query: {"frequently\_bought\_together": {"$in\_query": {"title": {"$regex": "^s", "$options": "i"}}}} * Multiple content type referencing query: {"frequently\_bought\_together": {"$in\_query": {"title": {"$regex": "^a", "$options": "i"}, "\_content\_type\_uid": "electronics"}, "\_content\_type\_uid": "kitchen\_appliances"}} In the above query, ‘[Search by Regex](#search-by-regex)’ query has been applied on the referred field. Other queries that can be applied are: [Equals Operator](#equals-operator), [Equals Within Group Operator](#equals-operator-within-group), [Not-equals Operator](#not-equals-operator), [Array Equals Operator,](#array-equals-operator) [Array Not-equals Operator](#array-not-equals-operator), [AND Operator](#and-operator), [OR Operator](#or-operator), [Less Than](#less-than), [Less Than Or Equal To](#less-than-or-equal-to), [Greater Than](#greater-than), [Greater Than Or Equal To](#greater-than-or-equal-to), and [Exists](#exists). ##### Reference Search Equals Within Group Get entries having values based on referenced fields. This query retrieves all entries that satisfy query conditions made on referenced fields. If the reference field is part of a Group field, you need to mention the Group field UID as well as the reference field UID using a dot operator, as given below. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a Reference field named Bank ("uid":"bank"). If, for instance, you want to retrieve the entries in which the value for the Bank field is ‘Citigroup,’ use the following value in the query parameter: * General query: {"bank\_offers.bank": {"$in\_query": { "title": "Citigroup"}}} * Multiple content type referencing query: {"bank\_offers.bank":{"$in\_query":{"title":"Wells Fargo", "\_content\_type\_uid": "bank"} , "\_content\_type\_uid": "blog"}} ##### Reference Search Equals Within Modular Blocks Get entries having values based on referenced fields. This query retrieves all entries that satisfy query conditions made on referenced fields.If the reference is part of a Modular Blocks field, you need to mention the Modular Blocks UID, Block UID, as well as the reference field UID using a dot operatorNote that this query will work for entries only. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Related Products ("uid":"related\_products") block. And, within this Related Products block, we have a field named Products ("uid":"products"). If, for instance, you want to retrieve the entries in which the values for the Title field is iPhone 7 128GB, use the following value in the ‘query’ parameter: * General query: {"additional\_info.related\_products.products": {"$in\_query": { "title": "iPhone 7 128GB"}}} * Multiple content type referencing query: {"additional\_info.related\_products.products":{"$in\_query":{"title":"iPhone 7 128GB", "\_content\_type\_uid": "product"}, "\_content\_type\_uid": "electronics"}} #### Reference Search Not-equals Get entries having values based on referenced fields. This query works the opposite of $in\_query and retrieves all entries that does not satisfy query conditions made on referenced fields. Note that this query will work for entries only. **Example:** Let’s say you wish to retrieve all entries that have brand names other than Apple Inc. So, the query that needs to be made is given below: * General query: {"brand": {"$nin\_query": {"title": "Apple Inc."}}} * Multiple content type referencing query: { "brand": {"$nin\_query": {"title": "Apple Inc.", "\_content\_type\_uid": "UID\_of\_referred\_content\_type"}, "\_content\_type\_uid": "UID\_of\_parent\_content\_type"}} **Note:** When querying on Reference field, users need to specify the Content Type UID (using the\_content\_type\_uid parameter) of entry to which the Reference field belongs to. ##### Reference Search Not-equals Within Group Get entries having values based on referenced fields. This query works the opposite of $in\_query and retrieves all entries that does not satisfy query conditions made on referenced fields.Note that this query will work for entries only.If the reference is part of a Group field, you need to use the Group field UID as well as the reference field UID using a dot operator. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a Reference field named Bank ("uid":"bank"). If, for instance, you want to retrieve the entries in which the value for the Bank field is _NOT_ ‘Citigroup', use the following query: * General query: {"bank\_offers.bank": {"$nin\_query": {"title": "Citigroup"}}} * Multiple content type query: {"bank\_offers.bank": {"$nin\_query": {"title": "Citigroup", "\_content\_type\_uid": "UID\_of\_referred\_content\_type"}, "\_content\_type\_uid": "UID\_of\_parent\_content\_type"}} ##### Reference Search Not-equals Within Modular Blocks Get entries having values based on referenced fields. This query works the opposite of $in\_query and retrieves all entries that does not satisfy query conditions made on referenced fields. **Note:** This query will work for entries only. If the reference is part of a Modular Blocks field, you need to use the Modular Blocks UID, Block UID, as well as the reference field UID using a dot operator. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Related Products ("uid":"related\_products") block. And, within this Block field, we have a field named Products ("uid":"products"). If, for instance, you want to retrieve the entries in which the value for the Title field is _NOT_ ‘iPhone 7 128GB', use the following query: * General query: { "additional\_info.related\_products.products": {"$nin\_query": {"title": "iPhone 7 128GB"}}} * Multiple content type referencing query: { "additional\_info.related\_products.products": {"$nin\_query": {"title": "iPhone 7 128GB", "\_content\_type\_uid": "UID\_of\_referred\_content\_type"}, "\_content\_type\_uid": "UID\_of\_parent\_content\_type"}} #### Search by Regex Get entries by using regular expressions to query fields of a content type. These regex queries will help to retrieve all the entries of a content type that have field values matching the condition provided in the query parameter.This query will work for both entries as well as assets. **Example:** In the Product content type, you have a field named Color ("uid":"color") in your content type, and you want to retrieve all the entries within this content type that have values for this field starting with 'Bl'. You can use the parameter as: { "color": { "$regex": "^Bl" } }. Now, in order to perform a case-insensitive search, you can use the $options key to specify any regular expressions options:  { "color": { "$regex": "^bl", "$options": "i" } }. **Tip:** Some useful values for $options are m for making dot match newlines and x for ignoring whitespace in regex. ##### Search by Regex Within Group Get entries by using regular expressions to query fields of a Group field. These regex queries will help to retrieve all the entries of a content type that have field values matching the condition provided in the query parameter. **Note:** This query is specifically for fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a Reference field named Bank ("uid":"bank"). If, for instance, you want to retrieve the entries in which the value for the Card Type starts with “Credit Card,” use the following value in the query parameter: { "bank\_offers.card\_type": { "$regex": "^Credit Card" } } ##### Search by Regex Within Modular Blocks Get entries by using regular expressions to query fields of a Modular Block. These Regex queries will help to retrieve all the entries of a content type that have field values matching the condition provided in the query parameter. This query will work for entries only and works specifically for fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Deals ("uid":"deals") block. And, within this Deals block, we have a field named Deal Name ("uid":"deal\_name"). If, for instance, you want to retrieve the entries where Deal Name starts with “Christmas Deal,” use the following value in the query parameter: { "additional\_info.deals.deal\_name": { "$regex": "^Christmas Deal" }} #### AND Operator Get entries that satisfy all the conditions provided in the '$and' query.This query will work for both entries as well as assets. **Example:** Let’s say you want to retrieve entries in which the Title field is set to 'Redmi Note 3' and the Color field is 'Gold'. The query to be used for such a case would be: {"$and":\[{"title": "Redmi Note 3"},{"color": "Gold"}\]} The response will contain the entries where the values for Title is 'Redmi Note 3' and Color is 'Gold'. ##### AND Operator Within Group Get entries that satisfy all the conditions provided in the $and query.This query is specifically for entries and works on fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have fields named Card Type ("uid":"card\_type") and Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve the entries in where the value for Card Type is ‘Credit Card’ and ‘Discount in Percentage’ is '12', use the following value in the query parameter: {"$and":\[{"bank\_offers.card\_type": "Credit Card"},{"bank\_offers.discount\_in\_percentage": 12}\]} ##### AND Operator Within Modular Blocks Get entries that satisfy all the conditions provided in the $and query.This query is specifically for entries and works on fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Deals ("uid":"deals") and Rating ("uid":"rating") blocks. And, within the Deals and Rating blocks, we have the Deal Name ("uid":"deal\_name") and Stars ("uid":"stars") fields, respectively. If, for instance, you want to retrieve the entries in where the values for Deals and Ratings fields are ‘Christmas Deal’ and '2', respectively, use the following value in the query parameter: {"$and":\[{"additional\_info.deals.deal\_name": "Christmas Deal"},{"additional\_info.rating.stars": 2}\]} #### OR Operator Get all entries that satisfy at least one of the given conditions provided in the '$or' query. This query will work for both entries as well as assets. **Example:** Let’s say you want to retrieve entries in which either the value for the Color field is 'Gold' or 'Black'. The query to be used for such a case would be: { "$or": \[{ "color": "Gold" }, { "color": "Black" }\] } The response will contain the entries that have their Color fields set to either 'Gold' or 'Black'. ##### OR Operator Within Group Get all entries that satisfy at least one of the given conditions provided in the $or query. This query is specifically for entries and works for fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have fields named Card Type ("uid":"card\_type") and Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve the entries where either the value for Card Type is ‘Debit Card’ or the value for Discount in Percentage is '12', use the following value in the query parameter: { "$or": \[{ "bank\_offers.card\_type": "Debit Card" }, { "bank\_offers.discount\_in\_percentage": 12}\]} ##### OR Operator Within Modular Blocks Get all entries that satisfy at least one of the given conditions provided in the '$or' query. This query is specifically for entries and works on fields that are part of any block within a Modular Block field. **Example:** In the ‘Products’ content type, we have a Modular Group field named ‘Additional Info’ ("uid":"additional\_info") that contains the Deals ("uid":"deals") and Rating ("uid":"rating") blocks. And, within the Deals and Rating blocks, we have the Deal Name ("uid":"deal\_name") and Stars ("uid":"stars") fields, respectively. If, for instance, you want to retrieve the entries where either the value for Deal Name is ‘Christmas Deal’ or the value for Stars is '2', respectively, use the following value in the query parameter: {"$or":\[{"additional\_info.deals.deal\_name": "Christmas Deal"},{"additional\_info.rating.stars": 2}\]} #### Less Than Get entries in which the value of a field is lesser than the value provided in the condition. This query will work for both entries as well as assets. **Example:** Let’s say you want to retrieve all the entries that have value of the Price in USD field set to a value that is less than but not equal to 600. You can send the parameter as: { "price\_in\_usd": { "$lt": 600 } } This will give you all the entries of mobile phones costing less than but not equal to $600. Let’s consider another example. You want to retrieve all the entries that have their start date before 8th December, 2017. Now, you need to set this parameter with the date in the ISO Date format as below: { "start\_date": { "$lt": "2017-12-08T00:00:00.000Z" } } This will give you all the entries where the start date is before 8th December, 2017, but you will not get the entries of the same date. **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). ##### Less Than Operator Within Group Get entries in which the value of a field is lesser than the value provided in the condition. This query is specifically for fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve the entries in which the values for the Discount in Percentage field is less than ‘25’, use the following value in the query parameter: { "bank\_offers.discount\_in\_percentage": { "$lt": 25 } } **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). ##### Less Than Operator Within Modular Blocks Get entries in which the value of a field is lesser than the value provided in the condition. This query is specifically for fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Rating ("uid":"rating") block. And, within this Block field, we have a field named Stars ("uid":"stars"). If, for instance, you want to retrieve the entries in which the values for the Stars field is less than ‘3’, use the following value in the query parameter: { "additional\_info.rating.stars": { "$lt": 3 } } **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). #### Less Than Or Equal To Get entries in which the value of a field is lesser than or equal to the value provided in the condition.This query will work for both entries as well as assets. **Example:** Let’s say you want to retrieve all the entries that have value of the Price in USD field set to a value that is less than or equal to 146. To achieve this, send the parameter as: { "price\_in\_usd": { "$lte": 146 } } This will give you all the entries of mobile phones costing less than and equal to $146. Let’s consider another example. If you want to retrieve all the entries that have their start date before and on 8th December, 2017. Now, you need to set this parameter with the date in the ISO Date format as below: { "start\_date": { "$lte": "2017-11-08T00:00:00.000Z" } } This will give you all the entries before 8th December, 2017, along with the entries of 8th December, 2017. **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). ##### Less Than Or Equal To Operator Within Group Get entries in which the value of a field is lesser than or equal to the value provided in the condition.This query is specifically for fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve the entries in which the values for the Discount in Percentage field is less than or equal to ‘24’, use the following value in the query parameter: { "bank\_offers.discount\_in\_percentage": { "$lte": 27 } } **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). ##### Less Than Or Equal To Operator Within Modular Blocks Get entries in which the value of a field is lesser than or equal to the value provided in the condition.This query is specifically for entries and works on fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Rating ("uid":"rating") block. And, within this Rating block, we have a field named Stars ("uid":"stars"). If, for instance, you want to retrieve the entries in which the values for the Stars field is less than or equal to ‘3’, use the following value in the query parameter: { "additional\_info.rating.stars": { "$lte": 3 } } **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). #### Greater Than Get entries in which the value for a field is greater than the value provided in the condition.This query will work for both entries as well as assets. **Example:** Let’s say you want to retrieve all the entries that have value of the Price in USD field set to a value that is greater than but not equal to 146. You can send the parameter as: { "price\_in\_usd": { "$gt": 146 } } This will give you all the entries of mobile phones costing greater than and not equal to $146. Let’s consider another example. If you want to retrieve all the entries that have their start date later than 8th December, 2017. Now, you need to set this parameter with the date in the ISO Date format as below: { "start\_date": { "$gt": "2017-11-08T00:00:00.000Z" } } This will give you all the entries after 8th December, 2017. **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). ##### Greater Than Operator Within Group Get entries in which the value for a field is greater than the value provided in the condition.This query is specifically for entries and works on fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve the entries in which the values for the Discount in Percentage field is greater than ‘20’, use the following value in the query parameter: { "bank\_offers.discount\_in\_percentage": { "$gt": 20 } } **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). ##### Greater Than Operator Within Modular Blocks Get entries in which the value for a field is greater than the value provided in the condition.This query is specifically for entries and works on fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Rating ("uid":"rating") block. And, within this Block field, we have a field named Stars ("uid":"stars"). If, for instance, you want to retrieve the entries in which the values for the Stars field is greater than ‘3’, use the following value in the query parameter: {"additional\_info.rating.stars": {"$gt": 3}} **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). #### Greater Than Or Equal To Get entries in which the value of a field is greater than or equal to the value provided in the condition. This query will work for both entries as well as assets. **Example:** Let’s say you want to retrieve all the entries that have value of the Price in USD field set to a value that is greater than or equal to 146. You can send the parameter as: { "price\_in\_usd": { "$gte": 146 } } This will give you all the entries of mobile phones costing greater than and equal to $146. Let’s consider another example. You want to retrieve all the entries that have their start date 8th December, 2017, and later. Now, you need to set this parameter with the date in the ISO Date format as below: { "start\_date": { "$gte": "2017-11-08T00:00:00.000Z" } } This will give you all the entries where the start date falls after 8th December, 2017, along with the entries of the same date. **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). ##### Greater Than Or Equal To Operator Within Group Get entries in which the value of a field is greater than or equal to the value provided in the condition.This query is specifically for fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve the entries in which the values for the Discount in Percentage field is greater than or equal to ‘20’, use the following value in the query parameter: { "bank\_offers.discount\_in\_percentage": { "$gte": 20 } } **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). ##### Greater Than Or Equal To Operator Within Modular Blocks Get entries in which the value of a field is greater than or equal to the value provided in the condition. This query is specifically for fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Rating ("uid":"rating") block. And, within this Rating block, we have a field named Stars' ("uid":"stars"). If, for instance, you want to retrieve the entries in which the values for the Stars field is greater than or equal to ‘3’, use the following value in the query parameter: {"additional\_info.rating.stars": {"$gte": 3} **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). #### Limit The limit parameter will return a specific number of entries in the output. So for example, if the content type contains more than 100 entries and you wish to fetch only the first 2 entries, you need to specify '2' as value in this parameter. This query will work for both entries as well as assets. **Example:** https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&limit=2 **Note**: By default, the limit for response details per request is 100. #### Skip The skip parameter will skip a specific number of entries in the output. So, for example, if the content type contains around 12 entries and you want to skip the first 2 entries to get only the last 10 in the response body, you need to specify ‘2’ here.This query will work for both entries as well as assets. **Example:** https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&skip=2 #### Order by asc When fetching entries, you can sort them in the ascending order with respect to the value of a specific field in the response body. This query will work for both entries as well as assets. Example: In the Product content type, if you wish to sort the entries with respect to their prices, the parameter can be used as: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&asc=price\_in\_usd This will give you all the entries sorted in the ascending order with respect to the Price in USD field. **Note:** In situations where identical or empty/null values are present in the field selected for sorting, the sorting process may not yield accurate results, potentially leading to duplicate results in the output. To avoid this, consider utilizing fields without duplicate values, or fields that are indexed (for e.g., updated\_at), to effectively sort your data. Alternatively, if you must use the non-indexed fields for sorting, please contact our [Support](mailto:support@contentstack.com) team for assistance in adding indexes to the field and ensuring the correct sorting of your data within the query results. Please note that a maximum of 5 fields can be indexed per Organization. ##### Order by asc Operator Within Group Sort your fetched entries in the ascending order with respect to the value of a specific field in the response body.This query is specifically for entries and works on fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve entries in the ascending order with respect to the Discount in Percentage field, use the following URL: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&asc=bank\_offers.discount\_in\_percentage ##### Order by asc Operator within Modular Blocks When fetching entries, you can sort your fetched entries in the ascending order with respect to the values of any block within a Modular Block field. This query is specifically for entries and works on fields that are part of any block within a Modular Block field. **Note:** Currently, this query is not applicable for Reference fields within Modular Blocks. **Example:** In the Products content type, we have a Modular Block field named Additional Info ("uid":"additional\_info") that contains the Rating ("uid":"rating") block. And, within this Rating block, we have a field named Stars ("uid":"stars"). Use the following URL to retrieve entries in ascending order based on the values of the Stars field: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&asc=additional\_info.rating.stars #### Order by desc When fetching entries, you can sort them in the descending order with respect to the value of a specific field in the response body. This query will work for both entries as well as assets. **Example:** In the Product content type, if you wish to sort the entries with respect to their prices, the parameter can be used as: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&desc=price\_in\_usd This will give you all the entries sorted in the descending order with respect to the Price in USD field. **Note:** In situations where identical or empty/null values are present in the field selected for sorting, the sorting process may not yield accurate results, potentially leading to duplicate results in the output. To avoid this, consider utilizing fields without duplicate values, or fields that are indexed (for e.g., updated\_at), to effectively sort your data. Alternatively, if you must use the non-indexed fields for sorting, please contact our [Support](mailto:support@contentstack.com) team for assistance in adding indexes to the field and ensuring the correct sorting of your data within the query results. Please note that a maximum of 5 fields can be indexed per Organization. ##### Order by desc Operator Within Group Sort your fetched entries in the descending order with respect to the value of a specific field in the response body.This query is specifically for entries and works on fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve entries in the descending order with respect to the values of the Discount in Percentage field, use the following URL: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&desc=bank\_offers.discount\_in\_percentage ##### Order by desc Operator Within Modular Blocks Sort your fetched entries in the descending order with respect to the value of a specific field in the response body.This query is specifically for entries and works on fields that are part of any block within a Modular Block field. **Note:** Currently, this query is not applicable for Reference fields within Modular Blocks. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Rating ("uid":"rating") block. And, within this Rating block, we have a field named Stars ("uid":"stars"). If, for instance, you want to retrieve entries in the descending order with respect to the values of the Stars field, use the following URL: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&desc=additional\_info.rating.stars #### Exists Get entries if value of the field, mentioned in the condition, exists.This query will work for entries only. **Example:** In the Product content type, we have a field named Price in USD. Now, you want to retrieve all the entries in the content type in which the field exists. You can send the parameter as: { "price\_in\_usd": { "$exists": true } }. ##### Exists Operator Within Group Get entries if value of the field, mentioned in the condition, exists.This query is specifically for entries and work on fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Card Type ("uid":"card\_type"). If, for instance, you want to retrieve the entries in which the values for the Discount in Percentage field exists, use the following value in the query parameter: {"bank\_offers.discount\_in\_percentage": { "$exists": true }} ##### Exists Operator Within Modular Blocks Get entries if value of the field, mentioned in the condition, exists.This query is specifically for entries and works on fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Deals ("uid":"deals") block. And, within this Block field, we have a field named Deal Name ("uid":"deal\_name"). If, for instance, you want to retrieve the entries in which the values for the Stars field exists, use the following value in the query parameter: {"additional\_info.rating.stars": {"$exists": true }} #### Only Operator The only\[\]\[\] parameter will include the data of only the specified fields for each entry and exclude the data of all other fields. There are two approaches to this parameter. Firstly, we have the only\[BASE\]\[\] parameter, where 'BASE' is the default value and refers to the top-level fields of the schema. Secondly, we have the only\[Reference\_field\_uid\]\[\] parameter, where you need to enter the UID of the reference field in place of "Reference\_field\_uid".This query will work for entries only. **Example:** In the Product content type, if we need to retrieve the data of only the Price in USD parameter of all the entries, you can send the parameter as: https://cdn.contentstack.io/v3/content\_types/author/entries?environment=production&only\[BASE\]\[\]=price\_in\_usd **Note**: To retrieve multiple fields use the following syntax: https://cdn.contentstack.io/v3/content\_types/author/entries?environment=production&only\[BASE\]\[\]=price\_in\_usd&only\[BASE\]\[\]=color ##### Only Operator Within Group Get entries in which the data of a specific field is included in the response JSON.This query is specifically for entries and works on fields that are part of the Group field. **Example:** In the Products’ content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve only the values of the Discount in Percentage field of all the entries, you can send the parameters as: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&only\[BASE\]\[\]=bank\_offers.discount\_in\_percentage ##### Only Operator Within Modular Blocks Get entries in which the data of a specific field is included in the response JSON.This query is specifically for fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Rating ("uid":"rating") block. And, within this Rating block, we have a field named Stars ("uid":"stars"). If, for instance, you want to retrieve the values of all the Stars field from all the entries, you can send the parameters as: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&only\[BASE\]\[\]=additional\_info.rating.stars #### Exclude Operator The except\[\]\[\] parameter will exclude the data of the specified fields for each entry and will include the data of the rest of the fields. There are two approaches to this parameter. Firstly, we have the except\[BASE\]\[\] parameter, where 'BASE' is the default value and refers to the top-level fields of the schema. Secondly, we have the except\[Reference\_field\_uid\]\[\] parameter, where you need to enter the UID of the reference field in place of Reference\_field\_uid.This query will work for entries only. **Example:** In the Product content type, if we need to retrieve the data of entries of all the other fields except the Price in USD parameter, you can send the parameter as: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&except\[BASE\]\[\]=price\_in\_usd **Note**: To exclude multiple fields use the following syntax: https://cdn.contentstack.io/v3/content\_types/author/entries?environment=production&except\[BASE\]\[\]=price\_in\_usd&except\[BASE\]\[\]=color ##### Exclude Operator Within Group Get entries in which the data of a specific field is excluded from the response JSON, but the data of the rest of the fields are included.This query is specifically for entries and works with fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve all the entries of a content type, but exclude the data for the Discount in Percentage field in the JSON response, you can send the parameters as: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&except\[BASE\]\[\]=bank\_offers.discount\_in\_percentage ##### Exclude Operator Within Modular Blocks Get entries in which the data of a specific field is excluded from the response JSON, but the data of the rest of the fields are included.This query is specifically for entries and works with fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Rating ("uid":"rating") block. And, within this Block field, we have a field named Stars ("uid":"stars"). If, for instance, you want to retrieve all the entries of a content type, but exclude the data for the Stars field in the JSON response, you can send the parameters as: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&except\[BASE\]\[\]=additional\_info.rating.stars #### Count To retrieve the count of entries, we have two parameters: include\_count (retrieves entries' details and their count) and count (retrieves only the count of entries).This query will work for both entries as well as assets. **Example:** If you wish to know the total number of entries in the Product content type and also retrieve all the data, you need to run the following API request: ``` https://cdn.contentstack.io/v3/content_types/product/entries?environment={environment}&include_count=true ``` To get only the count, run the following API request: ``` https://cdn.contentstack.io/v3/content_types/product/entries?environment={environment}&count=true ``` #### Pagination The 'Get all entries' API request returns only the first 100 entries of the specified content type. Similarly, the 'Get all assets' request fetches the first 100 assets of a particular stack. In both requests, first, use the include\_count parameter to get the total count of the items (entries/assets). Learn more about the [Count](#count) parameter. Since only 100 items are returned at a time in your response (in case of both requests), you can get the rest of the items in batches using the skip parameter in subsequent requests. Learn more about the [Skip](#skip) parameter. You can paginate the output of a request by using the limit parameter. For example, if you have 200 entries and/or assets and you want to retrieve them all but display only 10 items at a time. Use the limit=10 and skip=10 parameters, to get them all but display only 10 items per page. The syntax of the pagination request will look like the following: * For entries: https://cdn.contentstack.io/v3/content\_types/product/entries?environment={environment}&locale={locale}&include\_count=true&skip={skip\_value}&limit={limit\_value} * For assets: https://cdn.contentstack.io/v3/assets?environment={environment\_name}&include\_dimension={boolean\_value}&include\_count=true&skip={skip\_value}&limit={limit\_value} ### All Query Parameters The table below contains the list of all query parameters used in the Content Delivery APIs. Each query parameter within the table has a corresponding description, the API requests it is used in, and a relevant example. Use it as a cheat sheet or quick reference to search API requests by query parameters. **Query Parameter** **API Requests** include\_count * [Get All Content Types](#get-all-content-types) * [Count](#count) * [Pagination](#pagination) environment * All Content Delivery API requests (except Subsequent Sync and Sync using pagination token requests) locale * [Get All Entries](#all-entries) * [Get a Single Entry](#single-entry) * [Initial Synchronization](#initial-synchronization) * [Equals Operator](#equals-operator) * [Equals Operator Within Group](#equals-operator-within-group) * [Equals Operator Within Modular Blocks](#equals-operator-within-modular-blocks) * [Not-Equals Operator](#not-equals-operator) * [Not-Equals Operator Within Group](#not-equals-operator-within-group) * [Not-Equals Operator Within Modular Blocks](#not-equals-operator-within-modular-blocks) * [Array Equals Operator](#array-equals-operator) * [Array Equals Operator Within Group](#array-equals-operator-within-group) * [Array Equals Operator Within Modular Blocks](#array-equals-operator-within-modular-blocks) * [Array Not-Equals Operator](#array-not-equals-operator) * [Array Not-Equals Operator Within Group](#array-not-equals-operator-within-group) * [Array Not-Equals Operator Within Modular Blocks](#array-not-equals-operator-within-modular-blocks) * [Include Reference](#include-reference) * [Include Reference Within Group](#include-reference-within-group) * [Include Reference Within Modular Blocks](#include-reference-within-modular-blocks) * [Reference Search Equals](#reference-search-equals) * [Reference Search Equals Within Group](#reference-search-equals-within-group) * [Reference Search Equals Within Modular Blocks](#reference-search-equals-within-modular-blocks) * [Reference Search Not-Equals](#reference-search-not-equals) * [Reference Search Not-Equals Within Group](#reference-search-not-equals-within-group) * [Reference Search Not-Equals Within Modular Blocks](#reference-search-not-equals-within-modular-blocks) * [Search By Regex](#search-by-regex) * [Search By Regex Within Group](#search-by-regex-within-group) * [Search By Regex Within Modular Blocks](#search-by-regex-within-modular-blocks) * [AND Operator](#and-operator) * [AND Operator Within Group](#and-operator-within-group) * [AND Operator Within Modular Blocks](#and-operator-within-modular-blocks) * [OR Operator](#or-operator) * [OR Operator Within Group](#or-operator-within-group) * [OR Operator Within Modular Blocks](#or-operator-within-modular-blocks) * [Less Than](#less-than) * [Less Than Within Group](#less-than-within-group) * [Less Than Operator Within Modular Blocks](#less-than-operator-within-modular-blocks) * [Less Than Or Equal To](#less-than-or-equal-to) * [Less Than Or Equal To Within Group](#less-than-or-equal-to-within-group) * [Less Than Or Equal To Operator Within Modular Blocks](#less-than-or-equal-to-operator-within-modular-blocks) * [Greater Than](#greater-than) * [Greater Than Within Group](#greater-than-within-group) * [Greater Than Operator Within Modular Blocks](#greater-than-operator-within-modular-blocks) * [Greater Than Or Equal To](#greater-than-or-equal-to) * [Greater Than Or Equal To Within Group](#greater-than-or-equal-to-within-group) * [Greater Than Or Equal To Operator Within Modular Blocks](#greater-than-or-equal-to-operator-within-modular-blocks) * [Limit](#limit) * [Skip](#skip) * [Order By Asc](#order-by-asc) * [Order By Asc Operator Within Group](#order-by-asc-operator-within-group) * [Order By Asc Operator Within Modular Blocks](#order-by-asc-operator-within-modular-blocks) * [Order By Desc](#order-by-desc) * [Order By Desc Within Group](#order-by-desc-within-group) * [Order By Desc Operator Within Modular Blocks](#order-by-desc-operator-within-modular-blocks) * [Exists](#exists) * [Exists Within Group](#exists-within-group) * [Exists Operator Within Modular Blocks](#exists-operator-within-modular-blocks) * [Only Operator](#only-operator) * [Only Operator Within Group](#only-operator-within-group) * [Only Operator Within Modular Blocks](#only-operator-within-modular-blocks) * [Exclude Operator](#exclude-operator) * [Exclude Operator Within Group](#exclude-operator-within-group) * [Exclude Operator Within Modular Blocks](#exclude-operator-within-modular-blocks) * [Count](#count) * [Pagination](#pagination) version * [Get a Single Entry](#single-entry) * [Get a Single Asset](#single-asset) include\_dimension * [Get All Assets](#all-assets) * [Get a Single Asset](#single-asset) init * [Initial Synchronization](#initial-synchronization) content\_type\_uid * [Initial Synchronization](#initial-synchronization) start\_from * [Initial Synchronization](#initial-synchronization) type * [Initial Synchronization](#initial-synchronization) pagination\_token * [Sync Using Pagination Token](#sync-using-pagination-token) sync\_token * [Subsequent Sync](#subsequent-sync) query * [Equals Operator](#equals-operator) * [Equals Operator Within Group](#equals-operator-within-group) * [Equals Operator Within Modular Blocks](#equals-operator-within-modular-blocks) * [Not-Equals Operator](#not-equals-operator) * [Not-Equals Operator Within Group](#not-equals-operator-within-group) * [Not-Equals Operator Within Modular Blocks](#not-equals-operator-within-modular-blocks) * [Array Equals Operator](#array-equals-operator) * [Array Equals Operator Within Group](#array-equals-operator-within-group) * [Array Equals Operator Within Modular Blocks](#array-equals-operator-within-modular-blocks) * [Array Not-Equals Operator](#array-not-equals-operator) * [Array Not-Equals Operator Within Group](#array-not-equals-operator-within-group) * [Array Not-Equals Operator Within Modular Blocks](#array-not-equals-operator-within-modular-blocks) * [Reference Search Equals](#reference-search-equals) * [Reference Search Equals Within Group](#reference-search-equals-within-group) * [Reference Search Equals Within Modular Blocks](#reference-search-equals-within-modular-blocks) * [Reference Search Not-Equals](#reference-search-not-equals) * [Reference Search Not-Equals Within Group](#reference-search-not-equals-within-group) * [Reference Search Not-Equals Within Modular Blocks](#reference-search-not-equals-within-modular-blocks) * [Search By Regex](#search-by-regex) * [Search By Regex Within Group](#search-by-regex-within-group) * [Search By Regex Within Modular Blocks](#search-by-regex-within-modular-blocks) * [AND Operator](#and-operator) * [AND Operator Within Group](#and-operator-within-group) * [AND Operator Within Modular Blocks](#and-operator-within-modular-blocks) * [OR Operator](#or-operator) * [OR Operator Within Group](#or-operator-within-group) * [OR Operator Within Modular Blocks](#or-operator-within-modular-blocks) * [Less Than](#less-than) * [Less Than Within Group](#less-than-within-group) * [Less Than Operator Within Modular Blocks](#less-than-operator-within-modular-blocks) * [Less Than Or Equal To](#less-than-or-equal-to) * [Less Than Or Equal To Within Group](#less-than-or-equal-to-within-group) * [Less Than Or Equal To Operator Within Modular Blocks](#less-than-or-equal-to-operator-within-modular-blocks) * [Greater Than](#greater-than) * [Greater Than Within Group](#greater-than-within-group) * [Greater Than Operator Within Modular Blocks](#greater-than-operator-within-modular-blocks) * [Greater Than Or Equal To](#greater-than-or-equal-to) * [Greater Than Or Equal To Within Group](#greater-than-or-equal-to-within-group) * [Greater Than Or Equal To Operator Within Modular Blocks](#greater-than-or-equal-to-operator-within-modular-blocks) * [Exists](#exists) * [Exists Operator Within Group](#exists-within-group) * [Exists Operator Within Modular Blocks](#exists-operator-within-modular-blocks) include * [Include Reference](#include-reference) * [Include Reference Within Group](#include-reference-within-group) * [Include Reference Within Modular Blocks](#include-reference-within-modular-blocks) limit * [Limit](#limit) * [Pagination](#pagination) skip * [Skip](#skip) * [Pagination](#pagination) asc * [Order By Asc](#order-by-asc) * [Order By Asc Operator Within Group](#order-by-asc-operator-within-group) * [Order By Asc Operator Within Modular Blocks](#order-by-asc-operator-within-modular-blocks) desc * [Order By Desc](#order-by-desc) * [Order By Desc Within Group](#order-by-desc-within-group) * [Order By Desc Operator Within Modular Blocks](#order-by-desc-operator-within-modular-blocks) only * [Only Operator](#only-operator) * [Only Operator Within Group](#only-operator-within-group) * [Only Operator Within Modular Blocks](#only-operator-within-modular-blocks) exclude * [Exclude Operator](#exclude-operator) * [Exclude Operator Within Group](#exclude-operator-within-group) * [Exclude Operator Within Modular Blocks](#exclude-operator-within-modular-blocks) ## Postman Collection ### About Contentstack Postman Collection The Contentstack Postman collection is a set of preconfigured REST API requests that will make it easy for you to get started with the [Contentstack APIs](/docs/developers/apis/) and try out our API requests through the popular [Postman](https://www.getpostman.com/) REST client. ### Install Postman To use the Contentstack Postman collection you will need to have the [Postman](https://www.postman.com/). You can either download the **Desktop app** or use **Postman for Web.** **Note:** If you have already installed Postman for your device, go to the [Download Latest Postman Collection for Contentstack](#download-latest-collection) section. Postman is available for [Windows (x64)](https://dl.pstmn.io/download/latest/win64), Mac ([Intel Chip](https://dl.pstmn.io/download/latest/osx_64) / [Apple Chip](https://dl.pstmn.io/download/latest/osx_arm64)), and [Linux](https://dl.pstmn.io/download/latest/linux64) environments. ### Download Latest Collection Once you have installed Postman on your device, click the **Run in Postman** button to start working with the Content Delivery API endpoints for Contentstack. **Note:** The Contentstack Postman collection does not support the now deprecated Postman Chrome extension. Make sure you have installed the latest version of the [Postman desktop app.](https://www.postman.com/downloads/) This opens the **Fork collection into your workspace** modal from where you can proceed to download/work with the Contentstack Postman collection in the following three ways: * View the Collection * Import a Copy of the Collection * Fork the Collection Let’s look at each of the above methods in detail. #### View the Collection This option allows you to just view (and not try out) the API requests of the Postman collection. Perform the following steps to view the Content Delivery API Postman collection: 1. Click the **View collection** link in the **Fork collection into your workspace** modal. ![View\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt7536bce43ae0bdb2/6478793320efde6806a54b39/View_collection.png) A new tab opens up in your browser where you should see the latest collection preloaded in the left navigation. ![CDA\_Postman\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt2855210aace843d0/647875eb00c0b3fefbe7178e/CDA_Postman_collection.png) **Note:** If you want to try out the API requests, you can either [import a copy of the collection](#import-a-copy-of-the-collection) or [fork the collection](#fork-the-collection). #### Import a Copy of the Collection This option allows you to import a copy of the collection into your workspace. To import the Content Delivery API collection, perform the following steps: 1. Click the **import a copy** link in the **Fork collection into your workspace** modal. ![Import\_a\_copy\_of\_the\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt91ff78f0d31a529e/64787932aeb2db63321191dd/Import_a_copy_of_the_collection.png) 2. In the resulting **Import Collection** modal within the **Postman** app, select a workspace and click **Import** to import the latest Postman collection into your selected workspace. ![Import\_Collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt8c7719d83640836e/6478793286abb2301be842be/Import_Collection.png) You will see a copy of the latest Postman collection in the left navigation panel. ![Imported\_collection\_-\_CDA.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blteaefc979d2ee3386/647989701c27dd49693a7c9c/Imported_collection_-_CDA.png) #### Fork the Collection This option allows you to fork, or create a copy of the collection, and perform changes to the collection without affecting the original. To fork the Content Delivery API collection, perform the following steps: 1. Click the **Fork Collection** button in the **Fork collection into your workspace** modal.** ![Fork\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt351855346a099539/647875ebf0d737c330b12c17/Fork_collection.png)** 2. This opens the **Sign In** page. You can either enter your login credentials and click **Sign in**, or sign in using your Google account or via SSO. ![Postman\_sign\_in.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt0e795421c56ca014/64787d4e69d38aeece6a2e75/Postman_sign_in.png) 3. In the resulting **Fork collection** modal, if needed, enter a **Fork label** that lets you uniquely identify your collection and select a **Workspace**. Under **Notifications**, check **Watch original collection** to get notified of any changes that are made to the original collection. ![Fork\_collection2.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt4d37292816cd40db/647875eb8429a026a78c66e7/Fork_collection2.png) 6. Once done, click **Fork Collection** to fork the Postman collection into your selected workspace. #### Download Collection from GitHub Page We have also hosted our Postman collection on [GitHub](https://github.com/contentstack/contentstack-postman-collections). You can follow the steps mentioned in the [Readme](https://github.com/contentstack/contentstack-postman-collections/blob/development/README.md) file to download and start using it. You can also choose to watch the latest Postman collection to get notifications of new releases or updates. To do so, click on the following **Watch** button and select **Watching**. ### Configure Environment Variables When you download and install the latest version of the Content Delivery API (CDA) Postman collection, you also download and import the respective environment along with the environment variables. Once your environment is imported, next you need to set your Contentstack account specific values. **Note:** As these environment variables are referenced across multiple API requests, once you set the variables, it becomes a lot more convenient to make repeated use of the Postman collection. Some of the important variables that you need to set are as follows: Environment Variable Value base\_url cdn.contentstack.io api\_key your\_stack\_api\_key access\_token your\_environment-specific\_delivery\_token **Note:** The Contentstack Postman collection will require a valid environment-specific [Delivery token](/docs/headless-cms/about-delivery-tokens) to make API calls. Check out the [Authentication](#authentication) section for more details. If you want to add your own environment variables, you can follow the procedure in the next section. #### Add Other Environment Variables To add any new environment variables for your Postman collection, perform the following steps: 1. Identify the environment variables that you want to define. 2. In the top right corner of Postman, click on the environment's dropdown and select **Content Delivery API - Environment.**.![select CDA from dropdown.png](https://images.contentstack.io/v3/assets/blt4fed6422faf009a3/blt0c73721b29f554b2/634956fbe20f8c3ac1fd50a1/download) 3. Click the "eye" icon present in the top right corner of Postman. It opens up in the environment variables modal. Click **Edit** to make changes in the variables. ![select CD API env.png](https://images.contentstack.io/v3/assets/blt4fed6422faf009a3/blt617eadb0007e9183/6347fe2e9d660e2a1be42f6b/download) 4. In the **VARIABLE** field, enter the name of the environment variable. In the **INITIAL VALUE** field, enter your Contentstack-account-specific value that will replace the variable when the call is made. 5. Once you have defined your variables, click **Save**. ![save variables.png](https://images.contentstack.io/v3/assets/blt4fed6422faf009a3/blt74eaf3bfc33e00d0/6347ffb6dc111e1f95032743/download) #### Update Environment Variables With every new API request added, we update our environment file. So, to get the latest environment variables, you need to download the collection along with the updated environment file again, compare your existing environment with the latest environment, identify and add the new variables to your existing environment. Next, let’s see how you can run API Requests from your Contentstack Postman collection using your environment. ### Make an API Request With the Contentstack Postman Collection loaded into the Postman app (on the left pane) and the environment created, you can now make API requests to the Contentstack API via Postman. To make an API request, perform the following steps: 1. Select the respective environment, **Content Delivery API-Environment**, from the dropdown. 2. Select an API Request from the Contentstack Postman Collection. In this example, we will use the **Get all content types** request which is a part of the **Content types** folder. **Note:** If you want to make changes to your parameters or want to add parameters of your own, you can do it here. 3. Next, click on **Send** at the top right to make the API request. ![image.png](https://images.contentstack.io/v3/assets/blt4fed6422faf009a3/bltcfd4f4e490d8fa03/63450934ff603d1168d441fe/download) The API call should return with a response under the **Body** tab in the bottom half of the screen. ![Response Body of Your API Request.png](https://images.contentstack.io/v3/assets/blt4fed6422faf009a3/blt31c65a2574f3cb53/5ef36e7327d23857912b7ef1/download) ### Working with Queries Contentstack provides certain queries that you can use to fetch filtered results. You can use queries for Entries and Assets API requests. #### Querying Entries You can add queries to extend the functionality of an entry-specific API call. To add a query, you can either append the query parameter directly to the entry URL or append the query parameter along with your conditional query (in JSON format) to the entry URL. **Case 1: Append the query parameter** If you want to return a specific number of entries in your response output, you can use the limit query parameter. For example, if you want to retrieve only the first 2 entries of a content type, pass '2' as the value for the limit parameter. ``` https://cdn.contentstack.io/v3/content_types/{{content_type_uid}}/entries?limit=2 ``` **Case 2: Append the conditional query** If you want to retrieve all the entries of a content type in which the value for the Title ("uid":"title") field is “ABC”, you can append the query parameters to the entry URL as follows: ``` https://cdn.contentstack.io/v3/content_types/{{content_type_uid}}/entries?query={"title": "ABC"} ``` Let’s say you want to retrieve all the entries that have their start date as 8th December 2017. Now, you need to append the query with the start date in the ISO Date format as below: ``` https://cdn.contentstack.io/v3/content_types/{{content_type_uid}}/entries?query={ "start_date": "2017-12-08T00:00:00.000Z" } ``` You can append multiple queries in a single API Request as follows: ``` {{entry_URL}}?environment={{environment}}&locale={{locale}}&include_count=true&skip={skip_value}&limit={limit_value} ``` #### Querying Assets You can use Image Delivery APIs by appending queries to the image URL: ``` {{image_url}}?query_parameter ``` For example, to resize the width of an image to 100px, you need to append ?width={100} to the image URL. So, the API request would be: ``` https://images.contentstack.io/v3/assets/blteae40eb499811073/bltc5064f36b5855343/59e0c41ac0eddd140d5a8e3e/image_name?width=100. ``` You can also use multiple queries in a single API request as follows: ``` {{image_url}}?width={width_value}&height={height_value}&resize-filter={resize-filter_value} ``` ### Secure API Keys and Tokens We strongly advise against storing your API keys and tokens in your collection permanently. If you or someone else shares the collection by mistake, other users will be able to export it along with these keys. We recommend that you provide your Contentstack account-specific API keys and tokens in your environment or directly to the sample requests. ### Postman Collection Updates We keep our Postman Collection updated. To get the latest version of our Postman Collection, all you need to do is to [download the Postman Collection along with the updated environment](#download-latest-collection) again and you are good to go. You can also choose to watch for the latest Postman Collection updates on our [GitHub repository](https://github.com/contentstack/contentstack-postman-collections) and get notifications of new releases or updates to the repository. The [GitHub Readme](https://github.com/contentstack/contentstack-postman-collections/blob/development/README.md) doc will help you with the steps that you need to follow. ## API Best Practices ### Best Practices for GET API calls When trying out Contentstack [Get Entry](#single-entry) or [Get All Entries](#all-entries) API requests, Contentstack recommends certain optimization measures that will help you achieve fair limits on your API usage. Here are some important points that you need to consider: * **Limit Response Payload**: GET calls usually return a lot of unwanted parameters. If the APIs are used excessively, the default API response not only increases infrastructure load but also starts impacting the performance of your app. It's important to validate data and filter out anything that shouldn't be there. Ideally, the best practice is to limit your response payload to 5 MB. * **Keep the total number of “includes” and “level depth” to the minimum**: When retrieving data, always make sure you decide logically what you need to extract and avoid retrieving unnecessarily large data. It is recommended to keep the number of includes (when referencing other entries) and the depth levels as low as possible. The best practice is to restrict your total include to not exceed 10. However it depends on the user’s requirement (and their final response payload size, which should be restricted to the ideal response size mentioned above). * **Make use of projection queries**: To restrict the size returned in your response payload, make sure to use projection queries such as [only](#only-operator), [except](#exclude-operator), etc. These projection queries allow you to retrieve/exclude specific field data for each entry. * **Make use of pagination**: If you think that your response payload can be overwhelming, you can use [skip](#skip) and [limit](#limit) parameters to paginate your response. * **Use “Lazy loading”**: This factor totally depends on the user and also on the framework that they use. If the website data is pulled in from multiple content types, lazy loading is a good approach that will let them load the important sections of their website first before loading the others. #### Exceptional Use Case So what do you do if you might hit the limits even after following the above precautionary measures? In this scenario, you can make use of **filtering or pagination**. What does this mean? Let’s look at the steps involved: 1. First, you can divide your includes into multiple calls, say you need to add 10 includes. You can split them into groups of, maybe, two. 2. You can append projection queries such as [only](#only-operator), [except](#exclude-operator), etc. to these batches to retrieve restricted response. 3. **\[Optional, but recommended\]** Now, if you feel your response can be overwhelming, you can use [skip](#skip) and [limit](#limit) parameters to paginate your response. 4. Finally, you can merge the results of all the batches together to get your final response. ### API Usage Recommendations In order to attain and maintain optimum performance and ensure that infrastructure resources are used in an efficient manner, Contentstack recommends certain best practices. By following the recommendations discussed in this guide, you can maintain reasonable API usage while making calls or querying for data by minimizing the number of includes in your call. #### Optimize Your Code Optimize your code to **eliminate any redundancies or duplicates from the includes, unwanted includes, or references** from our code. We may get faster responses, however, it can result in retrieving stuff in the response that we don't really need. Before making a call, check for queries in the code that will fetch data items that aren’t used in your application, check whether the fetched data is being put back with no changes made to them, and so on. Also, you can avoid making queries unique by putting in a random number or timestamp. #### Cache Frequently-used Data Once you have optimized your code, cache data items that you use more frequently. Your cache management system can be programmed to help you **retrieve most frequently used data through the cache** instead of the server. For example, in a user management application where you update various user details such as user groups, titles, and so on. In such a case, you can think of keeping these details on the application side rather than retrieving them through calls every time the user opens the form. #### Opt for Data Caching When Needed If you possess content pieces that do not change often, they can be cached in your app's cache management system to avoid fetching them every now and then. For example, if your app is customer facing and there is an FAQ section in your app, you can prefer keeping answers to these FAQs on the application cache rather than fetching it every time where there is a requirement. #### Use Contentstack Webhooks for Tracking Changes Contentstack [webhooks](https://www.contentstack.com/docs/headless-cms/about-webhooks) can be used to keep track of changes. You can set webhooks when any changes are made to content or code and then react as required.  The webhook notifications allow App to fetch details as desired instead of waiting for the app's API instance to check for job status periodically and then fetch the data. Webhooks can help you in such situations by notifying you as and when the job gets completed. This **reduces the number of includes** in the call that may otherwise be high if the checking period has considerable time in between. #### Implement Lazy Loading Lazy loading, or "On-demand loading," is an online content optimization technique for web apps and websites. It involves loading the most important section of the page first followed by the remaining sections, instead of loading and rendering the complete page in one go. This totally depends on the user requirement. This approach can be useful in reducing the number of includes involved in making a call and rendering the content to the user. This is not only cost-effective but also resource effective as well. #### Avoid Retrieving Multiple Levels in Referencing [Referencing](https://www.contentstack.com/docs/headless-cms/reference) is a powerful Contentstack feature that allows you to create references. However, if not needed, we encourage you to avoid fetching unnecessary references in the response. The number of includes in case of referencing is one thing, but the depth of a single include is also more resource costly than a shallower include. So you should always decide logically when retrieving data in a single call and avoid retrieving them unnecessarily for optimum resource utilization. #### Use Modular Blocks When making use of multiple content type references, and fetching the schema of all these content types can be exhausting. This also increases the number of includes in a call. This case can be handled efficiently by using [Modular Blocks](https://www.contentstack.com/docs/headless-cms/modular-blocks). They can be used with other modules to construct a complete webpage. You can create multiple blocks (let's say, B1, B2, B3, and so on with each block with a different schema) within a modular block while creating a content type. While creating an entry in this content type, you can add data to any of the blocks (B1, B2, B3) and keep other blocks empty. And now when you make a call, you don't have to include the referenced content types in your call. This is another way of minimizing the includes in your call or queries. --- ## URL: https://www.contentstack.com/docs/developers/apis/content-delivery-api/all-query-parameters --- title: "CDA | All Query Parameters" description: "

    The table below contains the list of all query parameters used in the Content Delivery APIs. Each query parameter within the table has a corresponding description, the API requests it is used in, and a relevant example. Use it as a cheat sheet or quick reference to search API requests by query parameters.

    Query ParameterAPI Requests
    include_count
    environment
    • All Content Delivery API requests (except Subsequent Sync and Sync using pagination token requests)
    locale
    version
    include_dimension
    init
    content_type_uid
    start_from
    type
    pagination_token
    sync_token
    query
    include
    limit
    skip
    asc
    desc
    only
    exclude
    " url: "https://www.contentstack.com/docs/developers/apis/content-delivery-api/all-query-parameters" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-15" filename: all-query-parameters.md --- # CDA | All Query Parameters The table below contains the list of all query parameters used in the Content Delivery APIs. Each query parameter within the table has a corresponding description, the API requests it is used in, and a relevant example. Use it as a cheat sheet or quick reference to search API requests by query parameters. **Query Parameter** **API Requests** include\_count * [Get All Content Types](/docs/developers/apis/content-delivery-api/content-types#get-all-content-types) * [Count](/docs/developers/apis/content-delivery-api/queries#count) * [Pagination](/docs/developers/apis/content-delivery-api/queries#pagination) environment * All Content Delivery API requests (except Subsequent Sync and Sync using pagination token requests) locale * [Get All Entries](/docs/developers/apis/content-delivery-api/entries#all-entries) * [Get a Single Entry](/docs/developers/apis/content-delivery-api/entries#single-entry) * [Initial Synchronization](/docs/developers/apis/content-delivery-api/synchronization#initial-synchronization) * [Equals Operator](/docs/developers/apis/content-delivery-api/queries#equals-operator) * [Equals Operator Within Group](/docs/developers/apis/content-delivery-api/queries#equals-operator-within-group) * [Equals Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#equals-operator-within-modular-blocks) * [Not-Equals Operator](/docs/developers/apis/content-delivery-api/queries#not-equals-operator) * [Not-Equals Operator Within Group](/docs/developers/apis/content-delivery-api/queries#not-equals-operator-within-group) * [Not-Equals Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#not-equals-operator-within-modular-blocks) * [Array Equals Operator](/docs/developers/apis/content-delivery-api/queries#array-equals-operator) * [Array Equals Operator Within Group](/docs/developers/apis/content-delivery-api/queries#array-equals-operator-within-group) * [Array Equals Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#array-equals-operator-within-modular-blocks) * [Array Not-Equals Operator](/docs/developers/apis/content-delivery-api/queries#array-not-equals-operator) * [Array Not-Equals Operator Within Group](/docs/developers/apis/content-delivery-api/queries#array-not-equals-operator-within-group) * [Array Not-Equals Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#array-not-equals-operator-within-modular-blocks) * [Include Reference](/docs/developers/apis/content-delivery-api/queries#include-reference) * [Include Reference Within Group](/docs/developers/apis/content-delivery-api/queries#include-reference-within-group) * [Include Reference Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#include-reference-within-modular-blocks) * [Reference Search Equals](/docs/developers/apis/content-delivery-api/queries#reference-search-equals) * [Reference Search Equals Within Group](/docs/developers/apis/content-delivery-api/queries#reference-search-equals-within-group) * [Reference Search Equals Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#reference-search-equals-within-modular-blocks) * [Reference Search Not-Equals](/docs/developers/apis/content-delivery-api/queries#reference-search-not-equals) * [Reference Search Not-Equals Within Group](/docs/developers/apis/content-delivery-api/queries#reference-search-not-equals-within-group) * [Reference Search Not-Equals Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#reference-search-not-equals-within-modular-blocks) * [Search By Regex](/docs/developers/apis/content-delivery-api/queries#search-by-regex) * [Search By Regex Within Group](/docs/developers/apis/content-delivery-api/queries#search-by-regex-within-group) * [Search By Regex Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#search-by-regex-within-modular-blocks) * [AND Operator](/docs/developers/apis/content-delivery-api/queries#and-operator) * [AND Operator Within Group](/docs/developers/apis/content-delivery-api/queries#and-operator-within-group) * [AND Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#and-operator-within-modular-blocks) * [OR Operator](/docs/developers/apis/content-delivery-api/queries#or-operator) * [OR Operator Within Group](/docs/developers/apis/content-delivery-api/queries#or-operator-within-group) * [OR Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#or-operator-within-modular-blocks) * [Less Than](/docs/developers/apis/content-delivery-api/queries#less-than) * [Less Than Within Group](/docs/developers/apis/content-delivery-api/queries#less-than-within-group) * [Less Than Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#less-than-operator-within-modular-blocks) * [Less Than Or Equal To](/docs/developers/apis/content-delivery-api/queries#less-than-or-equal-to) * [Less Than Or Equal To Within Group](/docs/developers/apis/content-delivery-api/queries#less-than-or-equal-to-within-group) * [Less Than Or Equal To Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#less-than-or-equal-to-operator-within-modular-blocks) * [Greater Than](/docs/developers/apis/content-delivery-api/queries#greater-than) * [Greater Than Within Group](/docs/developers/apis/content-delivery-api/queries#greater-than-within-group) * [Greater Than Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#greater-than-operator-within-modular-blocks) * [Greater Than Or Equal To](/docs/developers/apis/content-delivery-api/queries#greater-than-or-equal-to) * [Greater Than Or Equal To Within Group](/docs/developers/apis/content-delivery-api/queries#greater-than-or-equal-to-within-group) * [Greater Than Or Equal To Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#greater-than-or-equal-to-operator-within-modular-blocks) * [Limit](/docs/developers/apis/content-delivery-api/queries#limit) * [Skip](/docs/developers/apis/content-delivery-api/queries#skip) * [Order By Asc](/docs/developers/apis/content-delivery-api/queries#order-by-asc) * [Order By Asc Operator Within Group](/docs/developers/apis/content-delivery-api/queries#order-by-asc-operator-within-group) * [Order By Asc Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#order-by-asc-operator-within-modular-blocks) * [Order By Desc](/docs/developers/apis/content-delivery-api/queries#order-by-desc) * [Order By Desc Within Group](/docs/developers/apis/content-delivery-api/queries#order-by-desc-within-group) * [Order By Desc Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#order-by-desc-operator-within-modular-blocks) * [Exists](/docs/developers/apis/content-delivery-api/queries#exists) * [Exists Within Group](/docs/developers/apis/content-delivery-api/queries#exists-within-group) * [Exists Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#exists-operator-within-modular-blocks) * [Only Operator](/docs/developers/apis/content-delivery-api/queries#only-operator) * [Only Operator Within Group](/docs/developers/apis/content-delivery-api/queries#only-operator-within-group) * [Only Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#only-operator-within-modular-blocks) * [Exclude Operator](/docs/developers/apis/content-delivery-api/queries#exclude-operator) * [Exclude Operator Within Group](/docs/developers/apis/content-delivery-api/queries#exclude-operator-within-group) * [Exclude Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#exclude-operator-within-modular-blocks) * [Count](/docs/developers/apis/content-delivery-api/queries#count) * [Pagination](/docs/developers/apis/content-delivery-api/queries#pagination) version * [Get a Single Entry](/docs/developers/apis/content-delivery-api/entries#single-entry) * [Get a Single Asset](/docs/developers/apis/content-delivery-api/assets#single-asset) include\_dimension * [Get All Assets](/docs/developers/apis/content-delivery-api/assets#all-assets) * [Get a Single Asset](/docs/developers/apis/content-delivery-api/assets#single-asset) init * [Initial Synchronization](/docs/developers/apis/content-delivery-api/synchronization#initial-synchronization) content\_type\_uid * [Initial Synchronization](/docs/developers/apis/content-delivery-api/synchronization#initial-synchronization) start\_from * [Initial Synchronization](/docs/developers/apis/content-delivery-api/synchronization#initial-synchronization) type * [Initial Synchronization](/docs/developers/apis/content-delivery-api/synchronization#initial-synchronization) pagination\_token * [Sync Using Pagination Token](/docs/developers/apis/content-delivery-api/synchronization#sync-using-pagination-token) sync\_token * [Subsequent Sync](/docs/developers/apis/content-delivery-api/synchronization#subsequent-sync) query * [Equals Operator](/docs/developers/apis/content-delivery-api/queries#equals-operator) * [Equals Operator Within Group](/docs/developers/apis/content-delivery-api/queries#equals-operator-within-group) * [Equals Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#equals-operator-within-modular-blocks) * [Not-Equals Operator](/docs/developers/apis/content-delivery-api/queries#not-equals-operator) * [Not-Equals Operator Within Group](/docs/developers/apis/content-delivery-api/queries#not-equals-operator-within-group) * [Not-Equals Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#not-equals-operator-within-modular-blocks) * [Array Equals Operator](/docs/developers/apis/content-delivery-api/queries#array-equals-operator) * [Array Equals Operator Within Group](/docs/developers/apis/content-delivery-api/queries#array-equals-operator-within-group) * [Array Equals Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#array-equals-operator-within-modular-blocks) * [Array Not-Equals Operator](/docs/developers/apis/content-delivery-api/queries#array-not-equals-operator) * [Array Not-Equals Operator Within Group](/docs/developers/apis/content-delivery-api/queries#array-not-equals-operator-within-group) * [Array Not-Equals Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#array-not-equals-operator-within-modular-blocks) * [Reference Search Equals](/docs/developers/apis/content-delivery-api/queries#reference-search-equals) * [Reference Search Equals Within Group](/docs/developers/apis/content-delivery-api/queries#reference-search-equals-within-group) * [Reference Search Equals Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#reference-search-equals-within-modular-blocks) * [Reference Search Not-Equals](/docs/developers/apis/content-delivery-api/queries#reference-search-not-equals) * [Reference Search Not-Equals Within Group](/docs/developers/apis/content-delivery-api/queries#reference-search-not-equals-within-group) * [Reference Search Not-Equals Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#reference-search-not-equals-within-modular-blocks) * [Search By Regex](/docs/developers/apis/content-delivery-api/queries#search-by-regex) * [Search By Regex Within Group](/docs/developers/apis/content-delivery-api/queries#search-by-regex-within-group) * [Search By Regex Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#search-by-regex-within-modular-blocks) * [AND Operator](/docs/developers/apis/content-delivery-api/queries#and-operator) * [AND Operator Within Group](/docs/developers/apis/content-delivery-api/queries#and-operator-within-group) * [AND Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#and-operator-within-modular-blocks) * [OR Operator](/docs/developers/apis/content-delivery-api/queries#or-operator) * [OR Operator Within Group](/docs/developers/apis/content-delivery-api/queries#or-operator-within-group) * [OR Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#or-operator-within-modular-blocks) * [Less Than](/docs/developers/apis/content-delivery-api/queries#less-than) * [Less Than Within Group](/docs/developers/apis/content-delivery-api/queries#less-than-within-group) * [Less Than Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#less-than-operator-within-modular-blocks) * [Less Than Or Equal To](/docs/developers/apis/content-delivery-api/queries#less-than-or-equal-to) * [Less Than Or Equal To Within Group](/docs/developers/apis/content-delivery-api/queries#less-than-or-equal-to-within-group) * [Less Than Or Equal To Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#less-than-or-equal-to-operator-within-modular-blocks) * [Greater Than](/docs/developers/apis/content-delivery-api/queries#greater-than) * [Greater Than Within Group](/docs/developers/apis/content-delivery-api/queries#greater-than-within-group) * [Greater Than Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#greater-than-operator-within-modular-blocks) * [Greater Than Or Equal To](/docs/developers/apis/content-delivery-api/queries#greater-than-or-equal-to) * [Greater Than Or Equal To Within Group](/docs/developers/apis/content-delivery-api/queries#greater-than-or-equal-to-within-group) * [Greater Than Or Equal To Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#greater-than-or-equal-to-operator-within-modular-blocks) * [Exists](/docs/developers/apis/content-delivery-api/queries#exists) * [Exists Operator Within Group](/docs/developers/apis/content-delivery-api/queries#exists-within-group) * [Exists Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#exists-operator-within-modular-blocks) include * [Include Reference](/docs/developers/apis/content-delivery-api/queries#include-reference) * [Include Reference Within Group](/docs/developers/apis/content-delivery-api/queries#include-reference-within-group) * [Include Reference Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#include-reference-within-modular-blocks) limit * [Limit](/docs/developers/apis/content-delivery-api/queries#limit) * [Pagination](/docs/developers/apis/content-delivery-api/queries#pagination) skip * [Skip](/docs/developers/apis/content-delivery-api/queries#skip) * [Pagination](/docs/developers/apis/content-delivery-api/queries#pagination) asc * [Order By Asc](/docs/developers/apis/content-delivery-api/queries#order-by-asc) * [Order By Asc Operator Within Group](/docs/developers/apis/content-delivery-api/queries#order-by-asc-operator-within-group) * [Order By Asc Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#order-by-asc-operator-within-modular-blocks) desc * [Order By Desc](/docs/developers/apis/content-delivery-api/queries#order-by-desc) * [Order By Desc Within Group](/docs/developers/apis/content-delivery-api/queries#order-by-desc-within-group) * [Order By Desc Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#order-by-desc-operator-within-modular-blocks) only * [Only Operator](/docs/developers/apis/content-delivery-api/queries#only-operator) * [Only Operator Within Group](/docs/developers/apis/content-delivery-api/queries#only-operator-within-group) * [Only Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#only-operator-within-modular-blocks) exclude * [Exclude Operator](/docs/developers/apis/content-delivery-api/queries#exclude-operator) * [Exclude Operator Within Group](/docs/developers/apis/content-delivery-api/queries#exclude-operator-within-group) * [Exclude Operator Within Modular Blocks](/docs/developers/apis/content-delivery-api/queries#exclude-operator-within-modular-blocks) --- ## URL: https://www.contentstack.com/docs/developers/apis/content-delivery-api/api-best-practices --- title: "CDA | API Best Practices" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/content-delivery-api/api-best-practices" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: api-best-practices.md --- # CDA | API Best Practices ## Best Practices for GET API calls When trying out Contentstack [Get Entry](#single-entry) or [Get All Entries](#all-entries) API requests, Contentstack recommends certain optimization measures that will help you achieve fair limits on your API usage. Here are some important points that you need to consider: * **Limit Response Payload**: GET calls usually return a lot of unwanted parameters. If the APIs are used excessively, the default API response not only increases infrastructure load but also starts impacting the performance of your app. It's important to validate data and filter out anything that shouldn't be there. Ideally, the best practice is to limit your response payload to 5 MB. * **Keep the total number of “includes” and “level depth” to the minimum**: When retrieving data, always make sure you decide logically what you need to extract and avoid retrieving unnecessarily large data. It is recommended to keep the number of includes (when referencing other entries) and the depth levels as low as possible. The best practice is to restrict your total include to not exceed 10. However it depends on the user’s requirement (and their final response payload size, which should be restricted to the ideal response size mentioned above). * **Make use of projection queries**: To restrict the size returned in your response payload, make sure to use projection queries such as [only](#only-operator), [except](#exclude-operator), etc. These projection queries allow you to retrieve/exclude specific field data for each entry. * **Make use of pagination**: If you think that your response payload can be overwhelming, you can use [skip](#skip) and [limit](#limit) parameters to paginate your response. * **Use “Lazy loading”**: This factor totally depends on the user and also on the framework that they use. If the website data is pulled in from multiple content types, lazy loading is a good approach that will let them load the important sections of their website first before loading the others. #### Exceptional Use Case So what do you do if you might hit the limits even after following the above precautionary measures? In this scenario, you can make use of **filtering or pagination**. What does this mean? Let’s look at the steps involved: 1. First, you can divide your includes into multiple calls, say you need to add 10 includes. You can split them into groups of, maybe, two. 2. You can append projection queries such as [only](#only-operator), [except](#exclude-operator), etc. to these batches to retrieve restricted response. 3. **\[Optional, but recommended\]** Now, if you feel your response can be overwhelming, you can use [skip](#skip) and [limit](#limit) parameters to paginate your response. 4. Finally, you can merge the results of all the batches together to get your final response. ## API Usage Recommendations In order to attain and maintain optimum performance and ensure that infrastructure resources are used in an efficient manner, Contentstack recommends certain best practices. By following the recommendations discussed in this guide, you can maintain reasonable API usage while making calls or querying for data by minimizing the number of includes in your call. #### Optimize Your Code Optimize your code to **eliminate any redundancies or duplicates from the includes, unwanted includes, or references** from our code. We may get faster responses, however, it can result in retrieving stuff in the response that we don't really need. Before making a call, check for queries in the code that will fetch data items that aren’t used in your application, check whether the fetched data is being put back with no changes made to them, and so on. Also, you can avoid making queries unique by putting in a random number or timestamp. #### Cache Frequently-used Data Once you have optimized your code, cache data items that you use more frequently. Your cache management system can be programmed to help you **retrieve most frequently used data through the cache** instead of the server. For example, in a user management application where you update various user details such as user groups, titles, and so on. In such a case, you can think of keeping these details on the application side rather than retrieving them through calls every time the user opens the form. #### Opt for Data Caching When Needed If you possess content pieces that do not change often, they can be cached in your app's cache management system to avoid fetching them every now and then. For example, if your app is customer facing and there is an FAQ section in your app, you can prefer keeping answers to these FAQs on the application cache rather than fetching it every time where there is a requirement. #### Use Contentstack Webhooks for Tracking Changes Contentstack [webhooks](https://www.contentstack.com/docs/headless-cms/about-webhooks) can be used to keep track of changes. You can set webhooks when any changes are made to content or code and then react as required.  The webhook notifications allow App to fetch details as desired instead of waiting for the app's API instance to check for job status periodically and then fetch the data. Webhooks can help you in such situations by notifying you as and when the job gets completed. This **reduces the number of includes** in the call that may otherwise be high if the checking period has considerable time in between. #### Implement Lazy Loading Lazy loading, or "On-demand loading," is an online content optimization technique for web apps and websites. It involves loading the most important section of the page first followed by the remaining sections, instead of loading and rendering the complete page in one go. This totally depends on the user requirement. This approach can be useful in reducing the number of includes involved in making a call and rendering the content to the user. This is not only cost-effective but also resource effective as well. #### Avoid Retrieving Multiple Levels in Referencing [Referencing](https://www.contentstack.com/docs/headless-cms/reference) is a powerful Contentstack feature that allows you to create references. However, if not needed, we encourage you to avoid fetching unnecessary references in the response. The number of includes in case of referencing is one thing, but the depth of a single include is also more resource costly than a shallower include. So you should always decide logically when retrieving data in a single call and avoid retrieving them unnecessarily for optimum resource utilization. #### Use Modular Blocks When making use of multiple content type references, and fetching the schema of all these content types can be exhausting. This also increases the number of includes in a call. This case can be handled efficiently by using [Modular Blocks](https://www.contentstack.com/docs/headless-cms/modular-blocks). They can be used with other modules to construct a complete webpage. You can create multiple blocks (let's say, B1, B2, B3, and so on with each block with a different schema) within a modular block while creating a content type. While creating an entry in this content type, you can add data to any of the blocks (B1, B2, B3) and keep other blocks empty. And now when you make a call, you don't have to include the referenced content types in your call. This is another way of minimizing the includes in your call or queries. --- ## URL: https://www.contentstack.com/docs/developers/apis/content-delivery-api/assets --- title: "CDA | Assets" description: "

    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.

    You can now pass the branch header in the API request to fetch or manage modules located within specific branches of the stack.

    Note: Branches is a plan-based feature that is available only in the new Contentstack interface.

    Additionally, you can also set the include_branch query parameter to true to include the _branch top-level key in the response. This key specifies the unique ID of the branch where the concerned Contentstack module resides.

    " url: "https://www.contentstack.com/docs/developers/apis/content-delivery-api/assets" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: assets.md --- # CDA | Assets [Assets](/docs/headless-cms/about-entries/#create-and-manage-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](/docs/headless-cms/about-entries). You can now pass the branch header in the API request to fetch or manage modules located within specific branches of the stack. **Note**: [Branches](/docs/headless-cms/about-branches) is a plan-based feature that is available only in the new Contentstack interface. Additionally, you can also set the include\_branch query parameter to true to include the \_branch top-level key in the response. This key specifies the unique ID of the branch where the concerned Contentstack module resides. ## All Assets ### Get all assets **GET** `/assets?environment={environment_name}&include_fallback=true&include_dimension={boolean_value}` The Get all assets request fetches the list of all the assets of a particular stack. It returns the content of each asset in JSON format. You can also specify the environment of which you want to get the assets. Additionally, if you wish to fetch the metadata attached to each asset, then you need to pass include\_metadata as a query parameter. Set this parameter to true to include the asset metadata along with all assets in the response body. You will find the entry metadata under the \_metadata key in the response. It will be associated with a specific extension UID as follows: ``` "_metadata": { "extensions": { "{extension_uid}": [{ "image_copyrights": "Contentstack Branding", "scope": "local" }] }} ``` If an asset is not published in a specific locale, make use of the include\_fallback=true query parameter to fetch the published version from the fallback locale. You can apply [Queries](#queries) to filter assets/entries. Add a query parameter named query and provide your query (in JSON format) as the value. **When using Delivery Tokens** * Fetches ONLY published assets * Environment is **mandatory** to fetch assets published on the specified environment * Version is **optional** * If no version is specified, it fetches the latest published version * If a version is specified and if it is not the latest published version, **it will not return any result** * Locale is **optional** * If no locale is specified, it returns the asset from the master locale * If you specify a locale in the query, it returns the latest published version of the localized asset/assets * If an asset is not localized, make use of the include\_fallback=true query parameter to fetch the published asset from its fallback locale **Example: Fetch visual markups using the asset\_fields\[\] parameter** The following request returns all assets of the stack along with visual markups: ``` GET /v3/assets?environment={environment_name}&asset_fields[]=visual_markups ``` The response includes a visual\_markups array for the asset: ``` "visual_markups": [ { "id": "vmarkup-blt0f5e6a1b2c3d4e5", "type": "Hotspot", "title": "Product tag", "description": "Front-facing logo", "url": "https://www.example.com/product", "coordinates": { "x": 542, "y": 54 } }, { "id": "vmarkup-blt9a2c1d0e8f7b6a5", "type": "BoundingBox", "title": "Person", "description": "A middle-aged man", "url": "https://www.example.com/people", "coordinates": { "x": 542, "y": 54, "width": 738, "height": 2301 } }] ``` **Note:** The Hotspot type returns only x and y coordinates, while the BoundingBox type also returns width and height. #### Query Parameters - **environment** (required) Enter the name of the environment if you want to retrieve the assets published in a particular environment. - **include_fallback** (optional) Enter 'true' to include the published asset details from the fallback locale when the specified locale does not contain published content. - **include_dimension** (optional) Enter 'true' to include the dimensions (height and width) of the image in the response. Supported image types: JPG, GIF, PNG, WebP, BMP, TIFF, SVG, and PSD. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. - **asset_fields[]** (optional) Pass the asset\_fields\[\] query parameter to fetch additional field groups for each asset. Set the value to visual\_markups to return the hotspot and bounding-box annotations of the asset under the visual\_markups key. If the asset has no markups, an empty array is returned. This parameter is repeatable and currently supports two values: visual\_markups and user\_defined\_fields. For example, asset\_fields\[\]=visual\_markups&asset\_fields\[\]=user\_defined\_fields. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "assets": [ { "uid": "blt41cb1c94d363d824", "created_at": "2019-08-16T08:05:32.556Z", "updated_at": "2019-08-16T08:05:32.556Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "3780", "tags": [], "filename": "Samsung_Logo.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt41cb1c94d363d824/5d5663cc34d39437c37c537e/Samsung_Logo.png", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "Samsung_Logo.png", "dimension": { "height": 30.223, "width": 91.026 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltaf7230686bd6513c", "created_at": "2019-08-16T08:05:32.537Z", "updated_at": "2019-08-16T08:05:32.537Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "1537", "tags": [], "filename": "android-128.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltaf7230686bd6513c/5d5663ccd1312137ca910e00/android-128.png", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "android-128.png", "dimension": { "height": 128, "width": 128 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "dimension": { "height": 615, "width": 802 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "blt6045a4b8db103c2b", "created_at": "2019-08-16T08:05:30.173Z", "updated_at": "2019-08-16T08:05:30.173Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "2185", "tags": [], "filename": "download.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt6045a4b8db103c2b/5d5663ca1a1b7e3885350f53/download.png", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "download.png", "dimension": { "height": 225, "width": 225 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltb7851ab3713053d0", "created_at": "2019-08-16T08:05:27.890Z", "updated_at": "2019-08-16T08:05:27.890Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "1546", "tags": [], "filename": "Samsung_Logo.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltb7851ab3713053d0/5d5663c7cb96683648a7967b/Samsung_Logo.png", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "Samsung_Logo.png", "dimension": { "height": 30, "width": 91 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "download.jpg", "dimension": { "height": 259, "width": 194 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "blt3eb813030ea67637", "created_at": "2019-08-16T08:05:25.659Z", "updated_at": "2019-08-16T08:05:25.659Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "78634", "tags": [], "filename": "galaxy_j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt3eb813030ea67637/5d5663c5e35aae24bf041e97/galaxy_j1.jpg", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "galaxy j1.jpg", "dimension": { "height": 624, "width": 612 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "blt95e09ccc2337ca8c", "created_at": "2019-08-16T08:05:25.658Z", "updated_at": "2019-08-16T08:05:25.658Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48540", "tags": [], "filename": "iphone7lineup.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt95e09ccc2337ca8c/5d5663c546d2e3383a96ec64/iphone7lineup.jpg", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "iphone7lineup.jpg", "dimension": { "height": 677, "width": 800 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltd7186d6c49de3bf7", "created_at": "2019-08-16T08:05:23.252Z", "updated_at": "2019-08-16T08:05:23.252Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "7702", "tags": [], "filename": "xiaomi-redmi-3-pro-.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltd7186d6c49de3bf7/5d5663c35a08bc359f40780e/xiaomi-redmi-3-pro-.jpg", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "xiaomi-redmi-3-pro-.jpg", "dimension": { "height": 212, "width": 160 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "blt8880ccd8b0693000", "created_at": "2019-08-16T08:05:23.239Z", "updated_at": "2019-08-16T08:05:23.239Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "6356", "tags": [], "filename": "download_(2).jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt8880ccd8b0693000/5d5663c39abb322460ea02c5/download_(2).jpg", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "download (2).jpg", "dimension": { "height": 101, "width": 498 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "dimension": { "height": 457, "width": 457 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltde9105253cff407a", "created_at": "2019-08-16T08:05:21.094Z", "updated_at": "2019-08-16T08:05:21.094Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "3920", "tags": [], "filename": "02.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltde9105253cff407a/5d5663c11796f436ae56791e/02.jpg", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "02.jpg", "dimension": { "height": 114, "width": 114 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "dimension": { "height": 1200, "width": 1200 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "01.jpg", "dimension": { "height": 1600, "width": 1600 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "blt11340726a6731924", "created_at": "2019-08-16T08:05:16.147Z", "updated_at": "2019-08-16T08:05:16.147Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "125788", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000001-front-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11340726a6731924/5d5663bcc29b63381a362909/in-galaxy-note-5-n9208-sm-n9208zdvins-000000001-front-gold.jpg", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000001-front-gold.jpg", "dimension": { "height": 615, "width": 802 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "iphone7.jpg", "dimension": { "height": 532, "width": 600 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "blt5e520596299d24f6", "created_at": "2019-08-16T08:05:09.297Z", "updated_at": "2019-08-16T08:05:13.378Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "1850718", "tags": [], "filename": "BB_MacBook.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt5e520596299d24f6/5d5663b931dae323db2ef715/BB_MacBook.png", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 2, "title": "android-128.png", "dimension": { "height": 1000, "width": 1600 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "dimension": { "height": 550, "width": 640 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "blt86f9d1967569436a", "created_at": "2019-08-16T08:05:07.150Z", "updated_at": "2019-08-16T08:05:07.150Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "2960", "tags": [], "filename": "apple.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt86f9d1967569436a/5d5663b3a8b7e33799fda747/apple.jpg", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "apple.jpg", "dimension": { "height": 225, "width": 225 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "blt74c7996bd604c1b4", "created_at": "2019-08-16T08:05:07.145Z", "updated_at": "2019-08-16T08:05:07.145Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "2511", "tags": [], "filename": "Apple_logo_black.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt74c7996bd604c1b4/5d5663b32c082035a470808c/Apple_logo_black.png", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "Apple_logo_black.png", "dimension": { "height": 170, "width": 170 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "dimension": { "height": 302, "width": 400 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "blt54f85c58ff2dea2d", "created_at": "2019-08-16T08:05:04.736Z", "updated_at": "2019-08-16T08:05:04.736Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "3920", "tags": [], "filename": "02.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt54f85c58ff2dea2d/5d5663b0c883c1383005e8c9/02.jpg", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "02.jpg", "dimension": { "height": 114, "width": 114 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ] } ``` ## Single Asset ### Get a single asset **GET** `/assets/{asset_uid}?environment={environment_name}&version={version}&include_fallback=true&include_dimension={boolean_value}` The Get a single asset request fetches the latest version of a specific asset of a particular stack. **Tip**: If no version is mentioned, the request will retrieve the latest published version of the asset. To get a specific version of an asset, refer to the [Get a Single Asset](/docs/developers/apis/content-management-api#get-a-single-asset) management API. Additionally, if you wish to fetch the metadata attached to each asset, then you need to pass include\_metadata as a query parameter. Set this parameter to true to include the asset metadata along with all assets in the response body. You will find the entry metadata under the \_metadata key in the response. It will be associated with a specific extension UID as follows: ``` "_metadata": { "extensions": { "{extension_uid}": [{ "image_copyrights": "Contentstack Branding", "scope": "local" }] }} ``` If an asset is not published in a specific locale, make use of the include\_fallback=true query parameter to fetch the published version from the fallback locale. **When using Delivery Tokens** * Fetches ONLY published asset * Environment is **mandatory** to fetch an asset published on the specified environment * Version is **optional** * If no version is specified, it fetches the latest published version * If a version is specified and if it is not the latest published version, **it will not return any result** * Locale is **optional** * If no locale is specified, it returns the asset from the master locale * If you specify a locale in the query, it returns the latest published version of the localized asset * If an asset is not localized, make use of the include\_fallback=true query parameter to fetch the published asset from its fallback locale **Example: Fetch visual markups using the asset\_fields\[\] parameter** The following request returns a single asset along with visual markups: ``` GET /v3/assets/{asset_uid}?environment={environment_name}&asset_fields[]=visual_markups ``` The response includes a visual\_markups array for the asset: ``` "visual_markups": [ { "id": "vmarkup-blt0f5e6a1b2c3d4e5", "type": "Hotspot", "title": "Product tag", "description": "Front-facing logo", "url": "https://www.example.com/product", "coordinates": { "x": 542, "y": 54 } }, { "id": "vmarkup-blt9a2c1d0e8f7b6a5", "type": "BoundingBox", "title": "Person", "description": "A middle-aged man", "url": "https://www.example.com/people", "coordinates": { "x": 542, "y": 54, "width": 738, "height": 2301 } }] ``` **Note:** The Hotspot type returns only x and y coordinates, while the BoundingBox type also returns width and height. #### URL Parameters - **asset_uid** (required) Enter the unique ID of the asset of which you want to retrieve the details. #### Query Parameters - **environment** (required) Enter the name of the environment if you want to retrieve an asset published in a particular environment. - **version** (optional) Specify the version number of the asset that you want to retrieve. To retrieve a specific version, keep the environment parameter blank. If the version is not specified, the details of the latest version will be retrieved. - **include_fallback** (optional) Enter 'true' to include published asset details from the fallback locale when the specified locale does not contain published information. - **include_dimension** (optional) Enter 'true' to include the dimensions (height and width) of the image in the response. Supported image types: JPG, GIF, PNG, WebP, BMP, TIFF, SVG, and PSD. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. - **include_metadata** (optional) Set this parameter to true to include the asset metadata along with all assets in the response body. - **asset_fields[]** (optional) Pass the asset\_fields\[\] query parameter to fetch additional field groups for each asset. Set the value to visual\_markups to return the hotspot and bounding-box annotations of the asset under the visual\_markups key. If the asset has no markups, an empty array is returned. This parameter is repeatable and currently supports two values: visual\_markups and user\_defined\_fields. For example, asset\_fields\[\]=visual\_markups&asset\_fields\[\]=user\_defined\_fields. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "asset": { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": { "roles": [], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "dimension": { "height": 615, "width": 802 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/content-delivery-api/content-types --- title: "CDA | Content Types" description: "

    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.

    Additional Resource: To get an idea of building your content type as per webpage’s layout, we recommend you to check out our Content Modeling guide.

    You can now pass the branch header in the API request to fetch or manage modules located within specific branches of the stack.

    Note: Branches is a plan-based feature that is available only in the new Contentstack interface.

    Additionally, you can also set the include_branch query parameter to true to include the _branch top-level key in the response. This key specifies the unique ID of the branch where the concerned Contentstack module resides.

    " url: "https://www.contentstack.com/docs/developers/apis/content-delivery-api/content-types" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: content-types.md --- # CDA | Content Types [Content type](/docs/headless-cms/create-a-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. **Additional Resource**: To get an idea of building your content type as per webpage’s layout, we recommend you to check out our [Content Modeling](/docs/headless-cms/about-content-modeling) guide. You can now pass the branch header in the API request to fetch or manage modules located within specific branches of the stack. **Note**: [Branches](/docs/headless-cms/about-branches) is a plan-based feature that is available only in the new Contentstack interface. Additionally, you can also set the include\_branch query parameter to true to include the \_branch top-level key in the response. This key specifies the unique ID of the branch where the concerned Contentstack module resides. ## All Content Types ### Get all content types **GET** `/content_types?include_count={boolean_value}` The Get all content types call returns comprehensive information of all the content types available in a particular stack in your account. When executing the API call, you can add queries to extend the functionality of this API call. **Tip**: If any of your content types contains a Global field and you wish to fetch the content schema of the Global field, then you need to pass theinclude\_global\_field\_schema:true parameter. This parameter helps return the Global field's schema along with the content type schema. To query your content types, under the Query Parameters section, insert a parameter named query and provide the query in JSON format as the value. To learn more about the queries, refer to the [Queries section of the Content Delivery API doc](/docs/developers/apis/content-delivery-api#queries). **Note**: This API request will return a maximum of **100 content types**. To retrieve the next batch of content types, make use of the [skip](/docs/developers/apis/content-delivery-api#skip) parameter (or refer [Pagination](/docs/developers/apis/content-delivery-api#pagination) for more details). #### Query Parameters - **include_count** (required) Set this to 'true' to include in response the total count of content types available in your stack. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "content_types": [ { "created_at": "2019-08-16T08:18:56.914Z", "updated_at": "2019-08-16T08:18:58.736Z", "title": "Product", "uid": "product", "_version": 2, "inbuilt_class": false, "schema": [ { "display_name": "Title", "uid": "title", "data_type": "text", "mandatory": false, "unique": false, "field_metadata": { "_default": true, "instruction": "Product Name", "version": 3 }, "multiple": false, "non_localizable": false }, { "display_name": "URL", "uid": "url", "data_type": "text", "mandatory": false, "field_metadata": { "_default": true, "version": 3 }, "multiple": false, "unique": false, "non_localizable": false }, { "data_type": "text", "display_name": "Description", "uid": "description", "field_metadata": { "allow_rich_text": true, "description": "", "multiline": false, "rich_text_type": "advanced", "version": 3 }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "number", "display_name": "Size (in GB)", "uid": "size", "field_metadata": { "description": "", "default_value": "" }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "text", "display_name": "Color", "uid": "color", "field_metadata": { "description": "", "default_value": "", "version": 3 }, "format": "", "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "file", "display_name": "Images", "uid": "images", "field_metadata": { "description": "", "rich_text_type": "standard", "image": true }, "multiple": true, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "reference", "display_name": "Categories", "reference_to": [ "category" ], "field_metadata": { "ref_multiple": true, "ref_multiple_content_types": true }, "uid": "categories", "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "number", "display_name": "Price in USD", "uid": "price_in_usd", "field_metadata": { "description": "", "default_value": "" }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "reference", "display_name": "Brand", "reference_to": [ "brand" ], "field_metadata": { "ref_multiple": false, "ref_multiple_content_types": true }, "uid": "brand", "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "isodate", "display_name": "Launch Date", "uid": "launch_date", "field_metadata": { "description": "", "default_value": "" }, "multiple": false, "mandatory": false, "unique": false, "endDate": null, "startDate": null, "non_localizable": false }, { "data_type": "boolean", "display_name": "instock", "uid": "instock", "field_metadata": { "description": "", "default_value": "" }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "blocks", "display_name": "Additional Info", "blocks": [ { "title": "Related Products", "uid": "related_products", "schema": [ { "data_type": "reference", "display_name": "Products", "reference_to": [ "product" ], "field_metadata": { "ref_multiple": true, "ref_multiple_content_types": true }, "uid": "products", "mandatory": false, "multiple": false, "unique": false, "non_localizable": false } ] }, { "title": "Rating", "uid": "rating", "schema": [ { "data_type": "number", "display_name": "Stars", "display_type": "dropdown", "enum": { "advanced": false, "choices": [ { "value": 1 }, { "value": 2 }, { "value": 3 }, { "value": 4 }, { "value": 5 } ] }, "multiple": false, "uid": "stars", "field_metadata": { "description": "", "default_value": "" }, "min_instance": null, "max_instance": null, "mandatory": false, "unique": false, "non_localizable": false } ] }, { "title": "Deals", "uid": "deals", "schema": [ { "data_type": "text", "display_name": "Deal Name", "display_type": "dropdown", "enum": { "advanced": false, "choices": [ { "value": "Summer Deal" }, { "value": "Independence Day Deal" }, { "value": "Black Friday Deal" }, { "value": "Christmas Deal" }, { "value": "Deals of the Day" } ] }, "multiple": false, "uid": "deal_name", "field_metadata": { "description": "", "default_value": "", "version": 3 }, "min_instance": null, "max_instance": null, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "text", "display_name": "Deal Details", "uid": "deal_details", "field_metadata": { "description": "", "default_value": "", "multiline": true, "version": 3 }, "format": "", "error_messages": { "format": "" }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false } ] } ], "multiple": true, "uid": "additional_info", "field_metadata": {}, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "group", "display_name": "Bank Offers", "field_metadata": {}, "schema": [ { "data_type": "reference", "display_name": "Bank", "reference_to": [ "bank" ], "field_metadata": { "ref_multiple": false, "ref_multiple_content_types": true }, "uid": "bank", "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "text", "display_name": "Card Type", "display_type": "dropdown", "enum": { "advanced": false, "choices": [ { "value": "Credit Card" }, { "value": "Debit Card" } ] }, "multiple": true, "uid": "card_type", "field_metadata": { "description": "", "default_value": "", "version": 3 }, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "number", "display_name": "Discount In Percentage", "uid": "discount_in_percentage", "field_metadata": { "description": "", "default_value": "" }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false } ], "uid": "bank_offers", "multiple": true, "mandatory": false, "unique": false, "non_localizable": false } ], "last_activity": { "environments": [ { "uid": "blta39a4441696e35e0", "details": [ { "locale": "en-us", "time": "2019-08-23T13:02:25.439Z" } ] } ] }, "maintain_revisions": true, "description": "", "DEFAULT_ACL": { "others": { "read": false, "create": false }, "users": [ { "uid": "bltb7dc5be19ed72dd9", "read": true, "sub_acl": { "read": true } } ] }, "SYS_ACL": { "roles": [ { "uid": "blt70c41dfd00924e9f", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true }, "update": true, "delete": true }, { "uid": "blt954756afc76573d1", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true }, "update": true, "delete": true }, { "uid": "blt5c82a78624ed860d", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true } } ], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "options": { "is_page": true, "singleton": false, "title": "title", "sub_title": [], "url_pattern": "/:title", "url_prefix": "/mobiles/" }, "abilities": { "get_one_object": true, "get_all_objects": true, "create_object": true, "update_object": true, "delete_object": true, "delete_all_objects": true } }, { "created_at": "2019-08-22T13:56:44.435Z", "updated_at": "2019-08-22T13:57:28.865Z", "title": "For Synchronization Calls", "uid": "for_synchronization_calls", "_version": 3, "inbuilt_class": false, "schema": [ { "display_name": "Title", "uid": "title", "data_type": "text", "mandatory": true, "unique": true, "field_metadata": { "_default": true, "version": 3 }, "multiple": false, "non_localizable": false }, { "display_name": "URL", "uid": "url", "data_type": "text", "mandatory": false, "field_metadata": { "_default": true, "version": 3 }, "multiple": false, "unique": false, "non_localizable": false }, { "data_type": "text", "display_name": "Single line textbox", "uid": "single_line", "field_metadata": { "description": "", "default_value": "", "version": 3 }, "format": "", "error_messages": { "format": "" }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false } ], "last_activity": {}, "maintain_revisions": true, "description": "", "DEFAULT_ACL": { "others": { "read": false, "create": false }, "users": [ { "uid": "bltb7dc5be19ed72dd9", "read": true, "sub_acl": { "read": true } } ] }, "SYS_ACL": { "roles": [ { "uid": "blt70c41dfd00924e9f", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true }, "update": true, "delete": true }, { "uid": "blt954756afc76573d1", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true }, "update": true, "delete": true }, { "uid": "blt5c82a78624ed860d", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true } } ], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "options": { "is_page": true, "singleton": false, "title": "title", "sub_title": [], "url_pattern": "/:title", "url_prefix": "/" }, "abilities": { "get_one_object": true, "get_all_objects": true, "create_object": true, "update_object": true, "delete_object": true, "delete_all_objects": true } }, { "created_at": "2019-08-16T08:18:55.166Z", "updated_at": "2019-08-16T08:18:58.680Z", "title": "Category", "uid": "category", "_version": 2, "inbuilt_class": false, "schema": [ { "display_name": "Title", "uid": "title", "data_type": "text", "mandatory": false, "unique": false, "field_metadata": { "_default": true, "instruction": "Category Name", "version": 3 }, "multiple": false, "non_localizable": false }, { "data_type": "text", "display_name": "Description", "uid": "description", "field_metadata": { "allow_rich_text": true, "description": "", "multiline": false, "rich_text_type": "advanced", "version": 3 }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false } ], "last_activity": {}, "maintain_revisions": true, "description": "", "DEFAULT_ACL": { "others": { "read": false, "create": false }, "users": [ { "uid": "bltb7dc5be19ed72dd9", "read": true, "sub_acl": { "read": true } } ] }, "SYS_ACL": { "roles": [ { "uid": "blt70c41dfd00924e9f", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true }, "update": true, "delete": true }, { "uid": "blt954756afc76573d1", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true }, "update": true, "delete": true }, { "uid": "blt5c82a78624ed860d", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true } } ], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "options": { "is_page": false, "singleton": false, "title": "title", "sub_title": [] }, "abilities": { "get_one_object": true, "get_all_objects": true, "create_object": true, "update_object": true, "delete_object": true, "delete_all_objects": true } }, { "created_at": "2019-08-16T08:18:55.159Z", "updated_at": "2019-08-16T08:18:58.781Z", "title": "Brand", "uid": "brand", "_version": 2, "inbuilt_class": false, "schema": [ { "display_name": "Title", "uid": "title", "data_type": "text", "mandatory": false, "unique": false, "field_metadata": { "_default": true, "description": "", "instruction": "Company Name", "version": 3 }, "multiple": false, "non_localizable": false }, { "data_type": "file", "display_name": "Logo", "uid": "logo", "field_metadata": { "description": "", "rich_text_type": "standard" }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "text", "display_name": "Description", "uid": "description", "field_metadata": { "allow_rich_text": true, "description": "", "multiline": false, "rich_text_type": "advanced", "version": 3 }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "text", "display_name": "Website", "uid": "website", "field_metadata": { "description": "", "default_value": "", "version": 3 }, "format": "", "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "text", "display_name": "Email", "uid": "email", "field_metadata": { "description": "", "default_value": "", "version": 3 }, "format": "", "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "number", "display_name": "Phone", "uid": "phone", "field_metadata": { "description": "", "default_value": "" }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "group", "display_name": "Head Office Address", "field_metadata": {}, "schema": [ { "data_type": "text", "display_name": "Street", "uid": "street", "field_metadata": { "description": "", "default_value": "", "version": 3 }, "format": "", "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "text", "display_name": "City", "uid": "city", "field_metadata": { "description": "", "default_value": "", "version": 3 }, "format": "", "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "text", "display_name": "Country", "uid": "country", "field_metadata": { "description": "", "default_value": "", "version": 3 }, "format": "", "multiple": false, "mandatory": false, "unique": false, "non_localizable": false } ], "uid": "head_office_address", "multiple": false, "mandatory": false, "unique": false, "non_localizable": false } ], "last_activity": {}, "maintain_revisions": true, "description": "", "DEFAULT_ACL": { "others": { "read": false, "create": false }, "users": [ { "uid": "bltb7dc5be19ed72dd9", "read": true, "sub_acl": { "read": true } } ] }, "SYS_ACL": { "roles": [ { "uid": "blt70c41dfd00924e9f", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true }, "update": true, "delete": true }, { "uid": "blt954756afc76573d1", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true }, "update": true, "delete": true }, { "uid": "blt5c82a78624ed860d", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true } } ], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "options": { "is_page": false, "singleton": false, "title": "title", "sub_title": [] }, "abilities": { "get_one_object": true, "get_all_objects": true, "create_object": true, "update_object": true, "delete_object": true, "delete_all_objects": true } }, { "created_at": "2019-08-16T08:18:55.164Z", "updated_at": "2019-08-16T08:18:58.691Z", "title": "Bank", "uid": "bank", "_version": 2, "inbuilt_class": false, "schema": [ { "display_name": "Title", "uid": "title", "data_type": "text", "mandatory": false, "unique": false, "field_metadata": { "_default": true, "version": 3 }, "multiple": false, "non_localizable": false }, { "data_type": "file", "display_name": "Logo", "uid": "logo", "extensions": [], "field_metadata": { "description": "", "rich_text_type": "standard" }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false } ], "last_activity": {}, "maintain_revisions": true, "description": "", "DEFAULT_ACL": { "others": { "read": false, "create": false }, "users": [ { "uid": "bltb7dc5be19ed72dd9", "read": true, "sub_acl": { "read": true } } ] }, "SYS_ACL": { "roles": [ { "uid": "blt70c41dfd00924e9f", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true }, "update": true, "delete": true }, { "uid": "blt954756afc76573d1", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true }, "update": true, "delete": true }, { "uid": "blt5c82a78624ed860d", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true } } ], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "options": { "is_page": false, "singleton": false, "title": "title", "sub_title": [] }, "abilities": { "get_one_object": true, "get_all_objects": true, "create_object": true, "update_object": true, "delete_object": true, "delete_all_objects": true } } ] } ``` ## Single Content Type ### Get a single content type **GET** `/content_types/{content_type_uid}` This call returns information of a specific content type. It returns the content type schema, but does not include its entries. #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type of which you wish to retrieve the details. The uid is generated based on the title of the content type. The unique ID of a content type is unique across a stack. #### Query Parameters - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "content_type": { "created_at": "2019-08-16T08:18:56.914Z", "updated_at": "2019-08-16T08:18:58.736Z", "title": "Product", "uid": "product", "_version": 2, "inbuilt_class": false, "schema": [ { "display_name": "Title", "uid": "title", "data_type": "text", "mandatory": false, "unique": false, "field_metadata": { "_default": true, "instruction": "Product Name", "version": 3 }, "multiple": false, "non_localizable": false }, { "display_name": "URL", "uid": "url", "data_type": "text", "mandatory": false, "field_metadata": { "_default": true, "version": 3 }, "multiple": false, "unique": false, "non_localizable": false }, { "data_type": "text", "display_name": "Description", "uid": "description", "field_metadata": { "allow_rich_text": true, "description": "", "multiline": false, "rich_text_type": "advanced", "version": 3 }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "number", "display_name": "Size (in GB)", "uid": "size", "field_metadata": { "description": "", "default_value": "" }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "text", "display_name": "Color", "uid": "color", "field_metadata": { "description": "", "default_value": "", "version": 3 }, "format": "", "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "file", "display_name": "Images", "uid": "images", "field_metadata": { "description": "", "rich_text_type": "standard", "image": true }, "multiple": true, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "reference", "display_name": "Categories", "reference_to": [ "category" ], "field_metadata": { "ref_multiple": true, "ref_multiple_content_types": true }, "uid": "categories", "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "number", "display_name": "Price in USD", "uid": "price_in_usd", "field_metadata": { "description": "", "default_value": "" }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "reference", "display_name": "Brand", "reference_to": [ "brand" ], "field_metadata": { "ref_multiple": false, "ref_multiple_content_types": true }, "uid": "brand", "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "isodate", "display_name": "Launch Date", "uid": "launch_date", "field_metadata": { "description": "", "default_value": "" }, "multiple": false, "mandatory": false, "unique": false, "endDate": null, "startDate": null, "non_localizable": false }, { "data_type": "boolean", "display_name": "instock", "uid": "instock", "field_metadata": { "description": "", "default_value": "" }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "blocks", "display_name": "Additional Info", "blocks": [ { "title": "Related Products", "uid": "related_products", "schema": [ { "data_type": "reference", "display_name": "Products", "reference_to": [ "product" ], "field_metadata": { "ref_multiple": true, "ref_multiple_content_types": true }, "uid": "products", "mandatory": false, "multiple": false, "unique": false, "non_localizable": false } ] }, { "title": "Rating", "uid": "rating", "schema": [ { "data_type": "number", "display_name": "Stars", "display_type": "dropdown", "enum": { "advanced": false, "choices": [ { "value": 1 }, { "value": 2 }, { "value": 3 }, { "value": 4 }, { "value": 5 } ] }, "multiple": false, "uid": "stars", "field_metadata": { "description": "", "default_value": "" }, "min_instance": null, "max_instance": null, "mandatory": false, "unique": false, "non_localizable": false } ] }, { "title": "Deals", "uid": "deals", "schema": [ { "data_type": "text", "display_name": "Deal Name", "display_type": "dropdown", "enum": { "advanced": false, "choices": [ { "value": "Summer Deal" }, { "value": "Independence Day Deal" }, { "value": "Black Friday Deal" }, { "value": "Christmas Deal" }, { "value": "Deals of the Day" } ] }, "multiple": false, "uid": "deal_name", "field_metadata": { "description": "", "default_value": "", "version": 3 }, "min_instance": null, "max_instance": null, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "text", "display_name": "Deal Details", "uid": "deal_details", "field_metadata": { "description": "", "default_value": "", "multiline": true, "version": 3 }, "format": "", "error_messages": { "format": "" }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false } ] } ], "multiple": true, "uid": "additional_info", "field_metadata": {}, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "group", "display_name": "Bank Offers", "field_metadata": {}, "schema": [ { "data_type": "reference", "display_name": "Bank", "reference_to": [ "bank" ], "field_metadata": { "ref_multiple": false, "ref_multiple_content_types": true }, "uid": "bank", "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "text", "display_name": "Card Type", "display_type": "dropdown", "enum": { "advanced": false, "choices": [ { "value": "Credit Card" }, { "value": "Debit Card" } ] }, "multiple": true, "uid": "card_type", "field_metadata": { "description": "", "default_value": "", "version": 3 }, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "number", "display_name": "Discount In Percentage", "uid": "discount_in_percentage", "field_metadata": { "description": "", "default_value": "" }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false } ], "uid": "bank_offers", "multiple": true, "mandatory": false, "unique": false, "non_localizable": false } ], "last_activity": { "environments": [ { "uid": "blta39a4441696e35e0", "details": [ { "locale": "en-us", "time": "2019-08-23T13:02:25.439Z" } ] } ] }, "maintain_revisions": true, "description": "", "DEFAULT_ACL": { "others": { "read": false, "create": false }, "users": [ { "uid": "bltb7dc5be19ed72dd9", "read": true, "sub_acl": { "read": true } } ] }, "SYS_ACL": { "roles": [ { "uid": "blt70c41dfd00924e9f", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true }, "update": true, "delete": true }, { "uid": "blt954756afc76573d1", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true }, "update": true, "delete": true }, { "uid": "blt5c82a78624ed860d", "read": true, "sub_acl": { "create": true, "read": true, "update": true, "delete": true, "publish": true } } ], "others": { "read": false, "create": false, "update": false, "delete": false, "sub_acl": { "read": false, "create": false, "update": false, "delete": false, "publish": false } } }, "options": { "is_page": true, "singleton": false, "title": "title", "sub_title": [], "url_pattern": "/:title", "url_prefix": "/mobiles/" }, "abilities": { "get_one_object": true, "get_all_objects": true, "create_object": true, "update_object": true, "delete_object": true, "delete_all_objects": true } } } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/content-delivery-api/entries --- title: "CDA | Entries" description: "

    An entry is the actual piece of content created using one of the defined content types.

    You can now pass the branch header in the API request to fetch or manage modules located within specific branches of the stack.

    Note: Branches is a plan-based feature that is available only in the new Contentstack interface.

    Additionally, you can also set the include_branch query parameter to true to include the _branch top-level key in the response. This key specifies the unique ID of the branch where the concerned Contentstack module resides.

    " url: "https://www.contentstack.com/docs/developers/apis/content-delivery-api/entries" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: entries.md --- # CDA | Entries An [entry](/docs/headless-cms/about-entries) is the actual piece of content created using one of the defined [content types](/docs/headless-cms/about-content-types). You can now pass the branch header in the API request to fetch or manage modules located within specific branches of the stack. **Note**: [Branches](/docs/headless-cms/about-branches) is a plan-based feature that is available only in the new Contentstack interface. Additionally, you can also set the include\_branch query parameter to true to include the \_branch top-level key in the response. This key specifies the unique ID of the branch where the concerned Contentstack module resides. ## All Entries ### Get all entries **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&include_fallback=true` The Get all entries request fetches the list of all the entries of a particular content type. It returns the content of each entry in JSON format. Additionally, if you wish to fetch the metadata attached to each entry, then you need to pass include\_metadata as a query parameter. Set this parameter to true to include the entry metadata along with all entries in the response body. You will find the entry metadata under the \_metadata key in the response. It will be associated with a specific extension UID as follows: ``` "_metadata": { "extensions": { "{extension_uid}": [{ "image_copyrights": "Contentstack Branding", "scope": "local" }] }} ``` If an entry is not published in a specific locale, make use of the “include\_fallback=true” query parameter to fetch the published content from its fallback locale. **Note:** If the fallback language of the specified locale is the master language itself, this parameter won't be applicable. To include the publish details in the response, make use of the include\_publish\_details=true parameter. This will return the publishing details of the entry in every environment along with the version number that is published in each of the environments. You can add other [Queries](/docs/developers/apis/content-delivery-api#queries) to extend the functionality of this API call. Add a query parameter named query and provide your query (in JSON format) as the value. **When using Delivery Tokens** * Fetches ONLY published content * Passing the environment as a query parameter is optional but recommended to ensure that the CDN delivers the most recent content * Locale is **optional** * If no locale is specified, it returns the entry from the master locale * If you specify a locale in the query, it returns the latest published version of the localized entry/entries * If an entry is not localized, make use of the include\_fallback=true query parameter to fetch the published content from its fallback locale **Tip:** This request returns only the first 100 entries of the specified content type. Refer to the [Pagination](/docs/developers/apis/content-delivery-api#pagination) section to retrieve the rest of your entries in a paginated form. #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type of which you want to retrieve the entries. The UID is often based on the title of the content type and it is unique across a stack. #### Query Parameters - **environment** (optional) Enter the environment scoped to your delivery token. For example, if your delivery token is scoped to the production environment, pass the value as production. - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **include_fallback** (optional) Enter 'true' to include the published localized content from the fallback locale when the specified locale does not contain published content. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. - **asset_fields[]** (optional) Pass the asset\_fields\[\] query parameter to fetch additional field groups for assets embedded in your entries. Set the value to visual\_markups to return the hotspot and bounding-box annotations of each embedded asset under the visual\_markups key. This parameter is repeatable and currently supports two values: visual\_markups and user\_defined\_fields. For example, asset\_fields\[\]=visual\_markups&asset\_fields\[\]=user\_defined\_fields. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "locale": "en-us", "title": "Redmi Note Prime", "url": "/redmi-note-prime", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 117.3, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "size": 16, "color": "Black", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } } ], "bank_offers": [ { "bank": [ { "uid": "bltd9dc1c7363c42bbd", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "blt98058bb38f89fc5f", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "ACL": {}, "uid": "blt4f1fd991ec80e52f", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:25.397Z", "updated_at": "2019-08-23T13:02:21.457Z", "_version": 4, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T13:02:25.439Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "Redmi Note 3", "url": "/mobiles/redmi-note-3", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "price_in_usd": 146, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-03-09", "instock": true, "tags": [ "redmi", "smart" ], "size": 16, "color": "Gold", "additional_info": [ { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } }, { "rating": { "stars": 4 } } ], "bank_offers": [ { "bank": [ { "uid": "bltc00b46e648007a0c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "ACL": {}, "uid": "blta278bb5672180c94", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:27.182Z", "updated_at": "2019-08-23T13:01:19.866Z", "_version": 4, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T13:01:23.290Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "iPhone 7 128GB", "url": "/mobiles/iphone-7", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 749, "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "launch_date": "2016-09-07", "instock": true, "tags": [], "size": 128, "color": "Black", "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } } ], "bank_offers": [ { "bank": [ { "uid": "bltf05621cb52725856", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 } ], "ACL": {}, "uid": "bltbd92ac498e3d5f96", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:20.072Z", "updated_at": "2019-08-23T12:50:53.424Z", "_version": 13, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T12:50:56.727Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "iPhone 7 64GB", "url": "/mobiles/iphone-7", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "price_in_usd": 649, "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "launch_date": "2016-09-07", "instock": true, "tags": [], "size": 32, "color": "Rose Gold", "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } }, { "related_products": { "products": [ { "uid": "bltbd92ac498e3d5f96", "_content_type_uid": "product" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt98058bb38f89fc5f", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "bltd9dc1c7363c42bbd", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "ACL": {}, "uid": "blt70cc672f4f806d3e", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:23.624Z", "updated_at": "2019-08-23T12:42:21.386Z", "_version": 4, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T12:59:36.361Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "Galaxy Note", "url": "/mobiles/galaxy-note", "description": "

    Snapdragon

    ", "size": 32, "color": "Gold", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 101, "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "launch_date": "2016-07-07", "instock": false, "tags": [ "redmi" ], "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } }, { "related_products": { "products": [ { "uid": "bltf8ab1ad67af3c66b", "_content_type_uid": "product" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt6e94809281fc418f", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "ACL": {}, "uid": "blt5b85ef3b0587565c", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:18.286Z", "updated_at": "2019-08-23T12:41:55.402Z", "_version": 4, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T12:41:59.165Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } }, { "related_products": { "products": [ { "uid": "blta278bb5672180c94", "_content_type_uid": "product" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt8312af2299516ccf", "_content_type_uid": "bank" } ], "card_type": [], "discount_in_percentage": 15 } ], "ACL": {}, "uid": "bltf2fa776b05a127a2", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:21.851Z", "updated_at": "2019-08-23T12:41:07.543Z", "_version": 5, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T12:41:13.700Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "Galaxy J1", "url": "/mobiles/galaxyj1", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "price_in_usd": 159.78, "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "launch_date": "2017-01-06", "instock": true, "tags": [], "size": 8, "color": "Black", "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } } ], "bank_offers": [ { "bank": [ { "uid": "bltc00b46e648007a0c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "blt6e94809281fc418f", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "ACL": {}, "uid": "bltf8ab1ad67af3c66b", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:28.965Z", "updated_at": "2019-08-23T11:38:15.309Z", "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T11:38:18.546Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Single Entry ### Get a single entry **GET** `/content_types/{content_type_uid}/entries/{entry_uid}` The Get a single entry request fetches a particular entry of a content type. **Tip**: To get a specific version, refer to the [Get a Single Entry](/docs/developers/apis/content-management-api/#get-a-single-entry) management API. This request returns only the latest version. Additionally, if you wish to fetch the metadata attached to each entry, then you need to pass include\_metadata as a query parameter. Set this parameter to true to include the entry metadata along with all entries in the response body. You will find the entry metadata under the \_metadata key in the response. It will be associated with a specific extension UID as follows: ``` "_metadata": { "extensions": { "{extension_uid}": [{ "image_copyrights": "Contentstack Branding", "scope": "local" }] }} ``` If an entry is not published in a specific locale, make use of the “include\_fallback=true” query parameter to fetch the published content from its fallback locale. **Note:** If the fallback language of the specified locale is the master language itself, this parameter won't be applicable. To include the publish details in the response, make use of the include\_publish\_details=true parameter. This will return the publishing details of the entry in every environment along with the version number that is published in each of the environments. **Note**: To retrieve an entry from a particular branch, provide the branch\_uid under the branch header. You can add other [Queries](/docs/developers/apis/content-delivery-api#queries) to extend the functionality of this API call. Add a query parameter named query and provide your query (in JSON format) as the value. **When using Delivery Tokens** * Fetches ONLY published content * Passing the environment as a query parameter is optional but recommended to ensure that the CDN delivers the most recent content * Locale is **optional** * If no locale is specified, it returns the entry from the master locale * If you specify a locale in the query, it returns the latest published version of the localized entry/entries * If an entry is not localized, make use of the include\_fallback=true query parameter to fetch the published content from its fallback locale #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type of which you want to retrieve the entries. The content type UID is often based on the title of the content type and it is unique across a stack. - **entry_uid** (required) Enter the unique ID of the entry that you want to fetch. #### Query Parameters - **environment** (optional) Enter the environment scoped to your delivery token. For example, if your delivery token is scoped to the production environment, pass the value as production. - **locale** (optional) Enter the code of the language of which you want to include the entries. Only the published localized entries will be displayed. - **include_fallback** (optional) Enter 'true' to include the published localized content from the fallback locale when the specified locale does not contain published content. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. - **asset_fields[]** (optional) Pass the asset\_fields\[\] query parameter to fetch additional field groups for assets embedded in your entries. Set the value to visual\_markups to return the hotspot and bounding-box annotations of each embedded asset under the visual\_markups key. This parameter is repeatable and currently supports two values: visual\_markups and user\_defined\_fields. For example, asset\_fields\[\]=visual\_markups&asset\_fields\[\]=user\_defined\_fields. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entry": { "locale": "en-us", "title": "Redmi Note 3", "url": "/mobiles/redmi-note-3", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [{ "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }], "categories": [{ "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "price_in_usd": 146, "brand": [{ "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" }], "launch_date": "2016-03-09", "instock": true, "tags": [ "redmi", "smart" ], "size": 16, "color": "Gold", "additional_info": [{ "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } }, { "rating": { "stars": 4 } } ], "bank_offers": [{ "bank": [{ "uid": "bltc00b46e648007a0c", "_content_type_uid": "bank" }], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 }], "ACL": {}, "uid": "blta278bb5672180c94", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:27.182Z", "updated_at": "2019-08-23T13:01:19.866Z", "_version": 4, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T13:01:23.290Z", "user": "blt42e55757d70d5f81026a2b9f" } } } ``` ## Get information on embedded RTE objects ### Get information on embedded RTE objects **GET** `/content_types/{content_type_uid}/entries/{entry_uid}?&locale={locale_code}&include_embedded_items[]=BASE` The Get information on embedded RTE objects request returns comprehensive information on all entries and/or assets embedded within the Rich Text Editor field. If your entry contains a Rich Text Editor field and you wish to fetch the content schema of the items embedded inside the rich text, then you need to pass the include\_embedded\_items\[\]=BASE query parameter. You can view information about the embedded objects under the \_embedded\_items parameter in the JSON response body. **Note**: Contentstack’s [Content Delivery SDKs](/docs/headless-cms/fetch-content#fetch-content-using-content-delivery-sdks) help consume the embedded entries and assets returned in the API response. You can then render the embedded objects on the front end however required. #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type of which you want to retrieve the entries. The content type UID is often based on the title of the content type and it is unique across a stack. - **entry_uid** (required) Enter the unique ID of the entry that you want to fetch. #### Query Parameters - **locale** (optional) Enter the code of the language of which you want to include the entries. - **include_embedded_items[]** (optional) Enter ‘BASE’ to include entries and assets embedded inside the Rich Text Editor field. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. - **include_embedded_items** (optional) Enter ‘BASE’ to include entries and assets embedded inside the Rich Text Editor field. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entry": { "title": "Sample One", "tags": [], "locale": "en-us", "uid": "blte16f93640bfa7f93", "created_by": "blt3cs27664f6b61df3", "updated_by": "blt3df27964f6b61df3", "created_at": "2022-11-30T05:43:01.357Z", "updated_at": "2022-12-02T07:26:27.624Z", "ACL": {}, "_version": 4, "_in_progress": false, "_embedded_items": { "rich_text_editor": [ { "title": "Test Entry", "json_rte": { "type": "doc", "attrs": {}, "uid": "40d2bcb7222f4712a27cbd906295b437", "children": [ { "type": "p", "uid": "78ca555c91aa4bbbaa93fd13b1974649", "attrs": {}, "children": [ { "text": "Sample blog content." } ] } ], "_version": 2 }, "rich_text_editor": "Sample blog content.", "modular_blocks": [ { "block_1": { "rich_text_editor": "Sample blog content.", "_metadata": { "uid": "cs5a4e5837bbac8516" } } } ], "tags": [], "locale": "en-us", "uid": "bltdf3d45019b5ef76c", "created_by": "blt3cf27834e6b61df3", "updated_by": "blt3cf37864e6b61df3", "created_at": "2022-11-29T11:12:23.183Z", "updated_at": "2022-12-02T07:25:54.847Z", "_content_type_uid": "sample", "ACL": {}, "_version": 2, "_workflow": { "uid": "blt1198186676a58926", "updated_at": "2022-11-29T11:12:23.183Z", "updated_by": "blt3cf27864e6b61df3", "version": 1 }, "_in_progress": false }, { "uid": "blt3324e18f48c4d71c", "created_at": "2022-08-17T06:11:07.365Z", "updated_at": "2022-08-17T06:11:54.542Z", "created_by": "blt3cf27864e6b61df3", "updated_by": "blt3cf27864e6b61df3", "content_type": "image/jpeg", "file_size": "1161714", "tags": [], "filename": "1.jpg", "url": "https://images.contentstack.io/v3/assets/blta8a5690107d35d6e/blt3324e18f48c4d71c/62fc867b9b71c064a0584583/1.jpg", "ACL": [], "parent_uid": null, "_version": 2, "title": "1.jpg", "_content_type_uid": "sys_assets" } ] }, "rich_text_editor": "

    This is a sample article.

    " } } ``` ## Get all entries with defined taxonomies ### Get all entries with defined taxonomies **GET** `/taxonomies/entries?query={"taxonomies.taxonomy_uid": "term_uid"}` The Get all entries with defined taxonomies request returns comprehensive information of all the entries associated with a specific taxonomy or term available in a particular stack in your organization. To retrieve entries that match only taxonomy and term UID and belong to a specific content type. ``` query={ "taxonomies.taxonomy_uid" : "term_uid", "_content_type_uid": "_content_type_uid" } ``` **Example**: If you want to match entries with the term red from the products content type. ``` query={ "taxonomies.color" : "red", "_content_type_uid": "products" } ``` To retrieve entries that match only taxonomy and term UID and belong to multiple content types. ``` query={ "taxonomies.taxonomy_uid" : "term_uid", "_content_type_uid": { "$in" : ["_content_type_uid1", "_content_type_uid2"] } } ``` **Example**: If you want to match entries with the term red from the products or blogs content types. ``` query={ "taxonomies.color" : "red", "_content_type_uid": { "$in" : ["products", "blogs"] } } ``` **Note**: Refer to the [Taxonomy Queries](/docs/developers/apis/content-delivery-api#taxonomy-queries) section for more query filters. #### Query Parameters - **query** (optional) Provide a custom query in string format. - **resolve_terms** (optional) If true, includes resolved term metadata (name, depth, order) for each taxonomy field. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "uid": "entry_uid_1", "title": "Summer Hat", "color": [ { "uid": "yellow", "name": "Yellow", "depth": 1, "order": 2 } ], "_content_type_uid": "accessories" } ] } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/content-delivery-api/entry-variants --- title: "CDA | Entry Variants" description: "

    Entry Variants allows you to create content variations for different audiences, languages, and marketing experiments. The key concepts include Base Entry, Entry Variant, and Variant Group. This feature streamlines personalized content management, improves consistency, and simplifies updates.

    Note: The Entry Variants feature is currently available as part of an Early Access Program and may not be available to all users. For more information, you can reach out to our support team.

    " url: "https://www.contentstack.com/docs/developers/apis/content-delivery-api/entry-variants" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: entry-variants.md --- # CDA | Entry Variants Entry Variants allows you to create content variations for different audiences, languages, and marketing experiments. The key concepts include **Base Entry**, **Entry Variant**, and **Variant Group**. This feature streamlines personalized content management, improves consistency, and simplifies updates. **Note**: The Entry Variants feature is currently available as part of an Early Access Program and may not be available to all users. For more information, you can reach out to our [support](mailto:support@contentstack.com) team. ## Get All Entry Variants ### Get multiple variants of an entry **GET** `/content_types/{content_type_uid}/entries` The Get all entry variants retrieves all variants of a given entry and their customizations. Pass your variant UID(s) or [aliases](/docs/personalize/glossary-key-features#variant-aliases) in the x-cs-variant-uid header to get all the variants applied to the entries. **Note**: By default you can add up to **3 variant UIDs or aliases** (comma-separated) simultaneously. The limit can vary based on your organization plan. The variant UID or alias added first takes priority and will be applied to the base entry fields. For example, if you pass UIDs for Red, Green, and Blue variants in that order, the Red variant will have the highest priority. Sample header request, x-cs-variant-uid: cs6c42daef493fb432, cs7697ce80c9bbcc3e, cs8697ce80c9bbcc4f or x-cs-variant-uid: cs\_personalize\_0\_0, cs\_personalize\_0\_1, cs\_personalize\_0\_2. You can add other [queries](https://www.contentstack.com/docs/developers/apis/content-delivery-api#queries) to extend the functionality of this API call. **Note**: * The API timeout for entry variants is capped at **10 seconds** * The maximum response document size for all entry variants is **10 MB** **When using Delivery Tokens** * Fetches ONLY published content * Passing the environment as a query parameter is optional but recommended to ensure that the CDN delivers the most recent content * Locale is optional * If no locale is specified, it returns the entry from the master locale * If you specify a locale in the query, it returns the latest published version of the localized entry/entries * If an entry is not localized, make use of the include\_fallback=true query parameter to fetch the published content from its fallback locale **Tip**: This request returns only the first **100 entries** of the specified content type. Refer to the [Pagination](https://www.contentstack.com/docs/developers/apis/content-delivery-api#pagination) section to retrieve the rest of your entries in a paginated form. **Error Handling** If the number of variants exceeds the configured limit: * The API processes only up to the allowed limit. * Pass the show\_errors=true query parameter to include an errors array describing the truncation. * If show\_errors is false or not set, the errors key is omitted. Sample response when the show\_errors=true query parameter is passed and allowed variant limit is exceeded: ``` { "entries": [ ... ], "errors": [ { "code": "VARIANT_LIMIT_EXCEEDED", "message": "x-cs-variant-uid should not be greater than {{your_set_limit}}", "details": { "provided_count": 7, "limit": {{your_set_limit}}, "applied_count": {{your_set_limit}} } } ] } ``` #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type of which you want to retrieve the entries. The UID is often based on the title of the content type and it is unique across a stack. #### Query Parameters - **environment** (optional) Enter the environment scoped to your delivery token. For example, if your delivery token is scoped to the production environment, pass the value as production. - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **include_fallback** (optional) Enter 'true' to include the published localized content from the fallback locale when the specified locale does not contain published content. - **include_publish_details** (optional) Enter “true” to include the publish details of the entry. - **include_rules** (optional) Enter “true” to include the publishing rules for the entry. - **include_metadata** (optional) Pass this as "true" to fetch the metadata attached to each entry. - **show_errors** (optional) Pass this as true to include the errors array in the response. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blte5318f6d4fcd10db` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `csdb72e2bdb75536c727b9129d` - **x-cs-variant-uid** (required) Enter the variant UID linked with your content type. Default: `csa639040f051b6db6, csbf165536748bdee2, cs619c85c94f383934, cs669f1759b774fe1d` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blt492d7ae2f81ee5fd", "ACL": {}, "_in_progress": false, "created_at": "2024-09-25T09:41:26.807Z", "created_by": "blt6fe92749b66ad81a", "group": [ { "single_line": "Variant 2", "multi_line": "Variant 2 Multi", "_metadata": { "uid": "cs5bafacf1e94ff8c2" } }, { "single_line": "Variant 1", "multi_line": "Variant 1 Multi", "_metadata": { "uid": "csc30ef8fdc0b190fe" } } ], "tags": [], "title": "Testhghghhgh", "updated_at": "2024-09-25T09:44:25.673Z", "updated_by": "blt6fe92749b66ad81a", "publish_details": { "environment": "blt0c46fa6bf0ebbc8f", "locale": "en-us", "time": "2024-09-25T11:25:12.450Z", "user": "blt6fe92749b66ad81a", "variants": { "3439b92ff6b5406ab559e7e7f246a49b": { "time": "2024-09-25T12:43:11.986Z", "user": "blt3d9f7cdb9bffaa6a", "environment": "blt0c46fa6bf0ebbc8f", "locale": "en-us" } } } } ], "count": 1 } ``` ## Get Single Entry Variant ### Get single entry variant **GET** `/content_types/{content_type_uid}/entries/{entry_uid}` The Get single entry variant request retrieves a single variant entry of a given base entry. Pass your variant UID(s) or [aliases](/docs/personalize/glossary-key-features#variant-aliases) in the x-cs-variant-uid header to get all the variants applied to the entries. **Note**: By default you can add up to **3 variant UIDs or aliases** (comma-separated) simultaneously. The limit can vary based on your organization plan. The variant UID or alias added first takes priority and will be applied to the base entry fields. For example, if you pass UIDs for Red, Green, and Blue variants in that order, the Red variant will have the highest priority. Sample header request, x-cs-variant-uid: cs6c42daef493fb432, cs7697ce80c9bbcc3e, cs8697ce80c9bbcc4f or x-cs-variant-uid: cs\_personalize\_0\_0, cs\_personalize\_0\_1, cs\_personalize\_0\_2. You can add other [queries](https://www.contentstack.com/docs/developers/apis/content-delivery-api#queries) to extend the functionality of this API call. **Note**: * The API timeout for entry variants is capped at **10 seconds** * The maximum response document size for all entry variants is **10 MB** **When using Delivery Tokens** * Fetches ONLY published content * Passing the environment as a query parameter is optional but recommended to ensure that the CDN delivers the most recent content * Locale is optional * If no locale is specified, it returns the entry from the master locale * If you specify a locale in the query, it returns the latest published version of the localized entry/entries * If an entry is not localized, make use of the include\_fallback=true query parameter to fetch the published content from its fallback locale **Tip**: This request returns only the first **100 entries** of the specified content type. Refer to the [Pagination](https://www.contentstack.com/docs/developers/apis/content-delivery-api#pagination) section to retrieve the rest of your entries in a paginated form. **Error Handling** If the number of variants exceeds the configured limit: * The API processes only up to the allowed limit. * Pass the show\_errors=true query parameter to include an errors array describing the truncation. * If show\_errors is false or not set, the errors key is omitted. Sample response when the show\_errors=true query parameter is passed and allowed variant limit is exceeded: ``` { "entries": [ ... ], "errors": [ { "code": "VARIANT_LIMIT_EXCEEDED", "message": "x-cs-variant-uid should not be greater than {{your_set_limit}}", "details": { "provided_count": 7, "limit": {{your_set_limit}}, "applied_count": {{your_set_limit}} } } ] } ``` #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type of which you want to retrieve the entries. The UID is often based on the title of the content type and it is unique across a stack. - **entry_uid** (required) Enter the unique ID of your entry. #### Query Parameters - **environment** (optional) Enter the environment scoped to your delivery token. For example, if your delivery token is scoped to the production environment, pass the value as production. - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **include_fallback** (optional) Enter “true” to include the published localized content from the fallback locale when the specified locale does not contain published content. - **include_publish_details** (optional) Enter “true” to include the publish details of the entry. - **include_rules** (optional) Enter “true” to include the publishing rules for the entry. - **include_metadata** (optional) Pass this as "true" to fetch the metadata attached to each entry. - **show_errors** (optional) Pass this as true to include the errors array in the response. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blte5318f6d4fcd10db` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `csdb72e2bdb75536c727b9129d` - **x-cs-variant-uid** (required) Enter the variant UID linked with your content type. Default: `csa639040f051b6db6, csbf165536748bdee2, cs619c85c94f383934, cs669f1759b774fe1d` #### Sample Response ```json { "entry": { "_version": 3, "locale": "en-us", "uid": "blt492d7ae2f81ee5fd", "ACL": {}, "_in_progress": false, "created_at": "2024-09-25T09:41:26.807Z", "created_by": "blt6fe92749b66ad81a", "group": [ { "single_line": "Variant 2", "multi_line": "Variant 2 Multi", "_metadata": { "uid": "cs5bafacf1e94ff8c2" } }, { "single_line": "Variant 1", "multi_line": "Variant 1 Multi", "_metadata": { "uid": "csc30ef8fdc0b190fe" } } ], "tags": [], "title": "Testhghghhgh", "updated_at": "2024-09-25T09:44:25.673Z", "updated_by": "blt6fe92749b66ad81a", "publish_details": { "environment": "blt0c46fa6bf0ebbc8f", "locale": "en-us", "time": "2024-09-25T11:25:12.450Z", "user": "blt6fe92749b66ad81a", "variants": { "3439b92ff6b5406ab559e7e7f246a49b": { "time": "2024-09-25T12:43:11.986Z", "user": "blt3d9f7cdb9bffaa6a", "environment": "blt0c46fa6bf0ebbc8f", "locale": "en-us" } } } } } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/content-delivery-api/global-fields --- title: "CDA | Global Fields" description: "

    A Global field is a reusable field (or group of fields) that you can define once and reuse across multiple content types within your stack. This eliminates the need to recreate the same set of fields multiple times, saving effort and ensuring consistency.

    You can pass the branch header in API requests to fetch or manage modules within specific branches of the stack. Additionally, setting the include_branch query parameter to true includes the _branch key in the response, specifying the unique ID of the branch where the module resides.

    Additional Resource: You can create dynamic and flexible Global Fields by nesting Global fields within a Modular Block,Global, or a Group fields.

    " url: "https://www.contentstack.com/docs/developers/apis/content-delivery-api/global-fields" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: global-fields.md --- # CDA | Global Fields A [Global](/docs/headless-cms/about-global-field) field is a reusable field (or group of fields) that you can define once and reuse across multiple content types within your stack. This eliminates the need to recreate the same set of fields multiple times, saving effort and ensuring consistency. You can pass the **branch header** in API requests to fetch or manage modules within specific branches of the stack. Additionally, setting the include\_branch query parameter to true includes the \_branch key in the response, specifying the unique ID of the branch where the module resides. **Additional Resource**: You can create dynamic and flexible Global Fields by nesting Global fields within a [Modular Block,](/docs/headless-cms/global-fields-as-blocks-within-modular-blocks)[Global](/docs/headless-cms/about-global-field/)**,** or a [Group](/docs/headless-cms/group-fields-within-global-fields) fields. ## All Global Fields ### Get all global fields **GET** `/global_fields` The Get all global fields request returns comprehensive information of all the global fields available in a particular stack in your organization. If you have nested global fields, it appears in the response. **Note**: * Information about Global fields can be retrieved by all users, regardless of their role or access level. * If your Global field contains [nested Global fields](/docs/developers/global-field/about-global-field#nested-global-fields), they will appear as part of the schema in the API response. #### Query Parameters - **include_global_field_schema** (optional) Set this parameter to 'true' to include in response the schema of the Global field. - **include_branch** (optional) Set this to 'true' to include the '\_branch' top-level key in the response. This key states the unique ID of the branch where the Global field resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `your_api_key` - **access_token** (required) Enter the environment-specific delivery token of your stack. Refer to the [Authentication](#authentication) section for more details. Default: `your_delivery_token` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "global_fields": [ { "created_at": "2019-09-06T11:30:02.108Z", "updated_at": "2019-09-06T11:30:02.108Z", "title": "Servlet", "uid": "servlet", "_version": 1, "inbuilt_class": false, "schema": [ { "display_name": "Name", "uid": "name", "data_type": "text", "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "text", "display_name": "Rich text editor", "uid": "description", "field_metadata": { "allow_rich_text": true, "description": "", "multiline": false, "rich_text_type": "advanced", "options": [], "version": 3 }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false } ], "last_activity": {}, "maintain_revisions": true, "description": "" } ] } ``` ## Single Global Field ### Get a single global field **GET** `/global_fields/{global_field_uid}` The Get a single global field request allows you to fetch comprehensive details of a specific global field. When executing the API call, in the 'URL Parameters' section, provide the unique ID of your global field. **Note**: * Information about Global fields can be retrieved by all users, regardless of their role or access level. * If your Global field contains [nested Global fields](/docs/developers/global-field/about-global-field#nested-global-fields), they will appear as part of the schema in the API response. #### URL Parameters - **global_field_uid** (required) Enter the unique ID of the global field that you wish to update. The UID is generated based on the title of the global field. The unique ID of a global field is unique across a stack. #### Query Parameters - **include_global_field_schema** (optional) Set this parameter to 'true' to include in response the schema of the Global field. - **include_branch** (optional) Set this to 'true' to include the '\_branch' top-level key in the response. This key states the unique ID of the branch where the Global field resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `your_api_key` - **access_token** (required) Enter the environment-specific delivery token of your stack. Refer to the [Authentication](#authentication) section for more details. Default: `your_delivery_token` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "global_field": { "created_at": "2019-09-06T11:30:02.108Z", "updated_at": "2019-09-06T11:30:02.108Z", "title": "Servlet", "uid": "servlet", "_version": 1, "inbuilt_class": false, "schema": [ { "display_name": "Name", "uid": "name", "data_type": "text", "multiple": false, "mandatory": false, "unique": false, "non_localizable": false }, { "data_type": "text", "display_name": "Rich text editor", "uid": "description", "field_metadata": { "allow_rich_text": true, "description": "", "multiline": false, "rich_text_type": "advanced", "options": [], "version": 3 }, "multiple": false, "mandatory": false, "unique": false, "non_localizable": false } ], "last_activity": {}, "maintain_revisions": true, "description": "" } } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/content-delivery-api/postman-collection --- title: "CDA | Postman Collection" description: "API Documentation" url: "https://www.contentstack.com/docs/developers/apis/content-delivery-api/postman-collection" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-22" filename: postman-collection.md --- # CDA | Postman Collection ## About Contentstack Postman Collection The Contentstack Postman collection is a set of preconfigured REST API requests that will make it easy for you to get started with the [Contentstack APIs](/docs/developers/apis/) and try out our API requests through the popular [Postman](https://www.getpostman.com/) REST client. ## Install Postman To use the Contentstack Postman collection you will need to have the [Postman](https://www.postman.com/). You can either download the **Desktop app** or use **Postman for Web.** **Note:** If you have already installed Postman for your device, go to the [Download Latest Postman Collection for Contentstack](#download-latest-collection) section. Postman is available for [Windows (x64)](https://dl.pstmn.io/download/latest/win64), Mac ([Intel Chip](https://dl.pstmn.io/download/latest/osx_64) / [Apple Chip](https://dl.pstmn.io/download/latest/osx_arm64)), and [Linux](https://dl.pstmn.io/download/latest/linux64) environments. ## Download Latest Collection Once you have installed Postman on your device, click the **Run in Postman** button to start working with the Content Delivery API endpoints for Contentstack. **Note:** The Contentstack Postman collection does not support the now deprecated Postman Chrome extension. Make sure you have installed the latest version of the [Postman desktop app.](https://www.postman.com/downloads/) This opens the **Fork collection into your workspace** modal from where you can proceed to download/work with the Contentstack Postman collection in the following three ways: * View the Collection * Import a Copy of the Collection * Fork the Collection Let’s look at each of the above methods in detail. #### View the Collection This option allows you to just view (and not try out) the API requests of the Postman collection. Perform the following steps to view the Content Delivery API Postman collection: 1. Click the **View collection** link in the **Fork collection into your workspace** modal. ![View\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt7536bce43ae0bdb2/6478793320efde6806a54b39/View_collection.png) A new tab opens up in your browser where you should see the latest collection preloaded in the left navigation. ![CDA\_Postman\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt2855210aace843d0/647875eb00c0b3fefbe7178e/CDA_Postman_collection.png) 2. **Note:** If you want to try out the API requests, you can either [import a copy of the collection](#import-a-copy-of-the-collection) or [fork the collection](#fork-the-collection). #### Import a Copy of the Collection This option allows you to import a copy of the collection into your workspace. To import the Content Delivery API collection, perform the following steps: 1. Click the **import a copy** link in the **Fork collection into your workspace** modal. ![Import\_a\_copy\_of\_the\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt91ff78f0d31a529e/64787932aeb2db63321191dd/Import_a_copy_of_the_collection.png) 2. In the resulting **Import Collection** modal within the **Postman** app, select a workspace and click **Import** to import the latest Postman collection into your selected workspace. ![Import\_Collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt8c7719d83640836e/6478793286abb2301be842be/Import_Collection.png) 3. You will see a copy of the latest Postman collection in the left navigation panel. 4. ![Imported\_collection\_-\_CDA.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blteaefc979d2ee3386/647989701c27dd49693a7c9c/Imported_collection_-_CDA.png) #### Fork the Collection This option allows you to fork, or create a copy of the collection, and perform changes to the collection without affecting the original. To fork the Content Delivery API collection, perform the following steps: 1. Click the **Fork Collection** button in the **Fork collection into your workspace** modal.![Fork\_collection.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt351855346a099539/647875ebf0d737c330b12c17/Fork_collection.png) 2. This opens the **Sign In** page. You can either enter your login credentials and click **Sign in**, or sign in using your Google account or via SSO. ![Postman\_sign\_in.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt0e795421c56ca014/64787d4e69d38aeece6a2e75/Postman_sign_in.png) 3. In the resulting **Fork collection** modal, if needed, enter a **Fork label** that lets you uniquely identify your collection and select a **Workspace**. 4. Under **Notifications**, check **Watch original collection** to get notified of any changes that are made to the original collection. 5. ![Fork\_collection2.png](https://images.contentstack.io/v3/assets/blt8fb40ae1e60d06b9/blt4d37292816cd40db/647875eb8429a026a78c66e7/Fork_collection2.png) 6. Once done, click **Fork Collection** to fork the Postman collection into your selected workspace. #### Download Collection from GitHub Page We have also hosted our Postman collection on [GitHub](https://github.com/contentstack/contentstack-postman-collections). You can follow the steps mentioned in the [Readme](https://github.com/contentstack/contentstack-postman-collections/blob/development/README.md) file to download and start using it. You can also choose to watch the latest Postman collection to get notifications of new releases or updates. To do so, click on the following **Watch** button and select **Watching**. ## Configure Environment Variables When you download and install the latest version of the Content Delivery API (CDA) Postman collection, you also download and import the respective environment along with the environment variables. Once your environment is imported, next you need to set your Contentstack account specific values. **Note:** As these environment variables are referenced across multiple API requests, once you set the variables, it becomes a lot more convenient to make repeated use of the Postman collection. Some of the important variables that you need to set are as follows: Environment Variable Value base\_url cdn.contentstack.io api\_key your\_stack\_api\_key access\_token your\_environment-specific\_delivery\_token **Note:** The Contentstack Postman collection will require a valid environment-specific [Delivery token](/docs/headless-cms/about-delivery-tokens) to make API calls. Check out the [Authentication](#authentication) section for more details. If you want to add your own environment variables, you can follow the procedure in the next section. #### Add Other Environment Variables To add any new environment variables for your Postman collection, perform the following steps: 1. Identify the environment variables that you want to define. 2. In the top right corner of Postman, click on the environment's dropdown and select **Content Delivery API - Environment.**.![select CDA from dropdown.png](https://images.contentstack.io/v3/assets/blt4fed6422faf009a3/blt0c73721b29f554b2/634956fbe20f8c3ac1fd50a1/download) 3. Click the "eye" icon present in the top right corner of Postman. It opens up in the environment variables modal. Click **Edit** tomake changes in the variables. ![select CD API env.png](https://images.contentstack.io/v3/assets/blt4fed6422faf009a3/blt617eadb0007e9183/6347fe2e9d660e2a1be42f6b/download) 4. In the **VARIABLE** field, enter the name of the environment variable. In the **INITIAL VALUE** field, enter your Contentstack-account-specific value that will replace the variable when the call is made. 5. Once you have defined your variables, click **Save**. ![save variables.png](https://images.contentstack.io/v3/assets/blt4fed6422faf009a3/blt74eaf3bfc33e00d0/6347ffb6dc111e1f95032743/download) #### Update Environment Variables With every new API request added, we update our environment file. So, to get the latest environment variables, you need to download the collection along with the updated environment file again, compare your existing environment with the latest environment, identify and add the new variables to your existing environment. Next, let’s see how you can run API Requests from your Contentstack Postman collection using your environment. ## Make an API Request With the Contentstack Postman Collection loaded into the Postman app (on the left pane) and the environment created, you can now make API requests to the Contentstack API via Postman. To make an API request, perform the following steps: 1. Select the respective environment, **Content Delivery API-Environment**, from the dropdown. 2. Select an API Request from the Contentstack Postman Collection. In this example, we will use the **Get all content types** request which is a part of the **Content types** folder. **Note:** If you want to make changes to your parameters or want to add parameters of your own, you can do it here. 3. Next, click on **Send** at the top right to make the API request. ![image.png](https://images.contentstack.io/v3/assets/blt4fed6422faf009a3/bltcfd4f4e490d8fa03/63450934ff603d1168d441fe/download) The API call should return with a response under the **Body** tab in the bottom half of the screen. ![Response Body of Your API Request.png](https://images.contentstack.io/v3/assets/blt4fed6422faf009a3/blt31c65a2574f3cb53/5ef36e7327d23857912b7ef1/download) ## Working with Queries Contentstack provides certain queries that you can use to fetch filtered results. You can use queries for Entries and Assets API requests. #### Querying Entries You can add queries to extend the functionality of an entry-specific API call. To add a query, you can either append the query parameter directly to the entry URL or append the query parameter along with your conditional query (in JSON format) to the entry URL. **Case 1: Append the query parameter** If you want to return a specific number of entries in your response output, you can use the limit query parameter. For example, if you want to retrieve only the first 2 entries of a content type, pass '2' as the value for the limit parameter. ``` https://cdn.contentstack.io/v3/content_types/{{content_type_uid}}/entries?limit=2 ``` **Case 2: Append the conditional query** If you want to retrieve all the entries of a content type in which the value for the Title ("uid":"title") field is “ABC”, you can append the query parameters to the entry URL as follows: ``` https://cdn.contentstack.io/v3/content_types/{{content_type_uid}}/entries?query={"title": "ABC"} ``` Let’s say you want to retrieve all the entries that have their start date as 8th December 2017. Now, you need to append the query with the start date in the ISO Date format as below: ``` https://cdn.contentstack.io/v3/content_types/{{content_type_uid}}/entries?query={ "start_date": "2017-12-08T00:00:00.000Z" } ``` You can append multiple queries in a single API Request as follows: ``` {{entry_URL}}?environment={{environment}}&locale={{locale}}&include_count=true&skip={skip_value}&limit={limit_value} ``` #### Querying Assets You can use Image Delivery APIs by appending queries to the image URL: ``` {{image_url}}?query_parameter ``` For example, to resize the width of an image to 100px, you need to append ?width={100} to the image URL. So, the API request would be: ``` https://images.contentstack.io/v3/assets/blteae40eb499811073/bltc5064f36b5855343/59e0c41ac0eddd140d5a8e3e/image_name?width=100. ``` You can also use multiple queries in a single API request as follows: ``` {{image_url}}?width={width_value}&height={height_value}&resize-filter={resize-filter_value} ``` ## Secure API Keys and Tokens We strongly advise against storing your API keys and tokens in your collection permanently. If you or someone else shares the collection by mistake, other users will be able to export it along with these keys. We recommend that you provide your Contentstack account-specific API keys and tokens in your environment or directly to the sample requests. ## Postman Collection Updates We keep our Postman Collection updated. To get the latest version of our Postman Collection, all you need to do is to [download the Postman Collection along with the updated environment](#download-latest-collection) again and you are good to go. You can also choose to watch for the latest Postman Collection updates on our [GitHub repository](https://github.com/contentstack/contentstack-postman-collections) and get notifications of new releases or updates to the repository. The [GitHub Readme](https://github.com/contentstack/contentstack-postman-collections/blob/development/README.md) doc will help you with the steps that you need to follow. --- ## URL: https://www.contentstack.com/docs/developers/apis/content-delivery-api/queries --- title: "CDA | Queries" description: "

    Contentstack provides certain queries that you can use to fetch filtered results. Queries can be used across all CDA API requests.

    You can now pass the branch header in the API request to fetch or manage modules located within specific branches of the stack.

    Note: Branches is a plan-based feature that is available only in the new Contentstack interface.

    Additionally, you can also set the include_branch query parameter to true to include the _branch top-level key in the response. This key specifies the unique ID of the branch where the concerned Contentstack module resides

    " url: "https://www.contentstack.com/docs/developers/apis/content-delivery-api/queries" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-07-20" filename: queries.md --- # CDA | Queries Contentstack provides certain queries that you can use to fetch filtered results. Queries can be used across all CDA API requests. You can now pass the branch header in the API request to fetch or manage modules located within specific branches of the stack. **Note**: [Branches](/docs/headless-cms/about-branches) is a plan-based feature that is available only in the new Contentstack interface. Additionally, you can also set the include\_branch query parameter to true to include the \_branch top-level key in the response. This key specifies the unique ID of the branch where the concerned Contentstack module resides ## Taxonomy Taxonomy, simplifies the process of organizing content in your system, making it effortless to find and retrieve information. You can retrieve filtered entries using taxonomy through two different endpoints: * /taxonomies/entries?query * /content\_types/{content\_type\_uid}/entries?query **Note**: * Sorting is supported only on title, created\_at, updated\_at, published\_at, and url fields. * Custom filters may time out for large datasets. ##### IN Operator ### IN Operator **GET** `/taxonomies/entries?query={"taxonomies.taxonomy_uid" : { "$in" : ["term_uid1" , "term_uid2" ] }}` Get all entries for a specific taxonomy that satisfy the given conditions provided in the "$in" query. Your query should be as follows: ``` query={"taxonomies.taxonomy_uid" : { "$in" : ["term_uid1" , "term_uid2" ] }} ``` **Example**: If you want to retrieve entries with the color taxonomy applied and linked to the term red and/or yellow. ``` query={"taxonomies.color" : { "$in" : ["red" , "yellow" ] }} ``` ##### OR Operator \[Taxonomy\] #### Query Parameters - **query** (optional) Provide a custom query in the string format. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` #### Sample Response ```json { "entries": [ { "_content_type_uid": "electronic", "uid": "blt1934bf0caa658521", "_version": 1, "locale": "en-us", "ACL": {}, "_in_progress": false, "created_at": "2023-11-20T11:52:16.469Z", "created_by": "bltc2f3e4fad0331975", "info1": "", "tags": [], "taxonomies": [ { "taxonomy_uid": "appliances", "term_uid": "ac" }, { "taxonomy_uid": "appliances", "term_uid": "fridge" }, { "taxonomy_uid": "computers", "term_uid": "desktop" }, { "taxonomy_uid": "computers", "term_uid": "hard_drive" }, { "taxonomy_uid": "color", "term_uid": "green" }, { "taxonomy_uid": "color", "term_uid": "yellow" } ], "title": "Electronic-e2", "updated_at": "2023-11-20T11:52:16.469Z", "updated_by": "bltc2f3e4fad0331975", "publish_details": { "time": "2023-11-20T11:54:48.965Z", "user": "bltc2f3e4fad0331975", "environment": "bltcd8ac33f1617637d", "locale": "en-us" } } ] } ``` ### OR Operator [Taxonomy] **GET** `/taxonomies/entries?query={"$or": {"taxonomies.taxonomy_uid_1" : "term_uid1" }, {"taxonomies.taxonomy_uid_2" : "term_uid2" }]}` Get all entries for a specific taxonomy that satisfy at least one of the given conditions provided in the “$or” query. Your query should be as follows: ``` query={ "$or": [ { "taxonomies.taxonomy_uid_1" : "term_uid1" }, { "taxonomies.taxonomy_uid_2" : "term_uid2" } ]} ``` **Example**: If you want to retrieve entries with either the color or size taxonomy applied and linked to the terms black and small, respectively. ``` query={ "$or": [ { "taxonomies.color" : "black" }, { "taxonomies.size" : "small" } ]} ``` ##### AND Operator \[Taxonomy\] #### Query Parameters - **query** (optional) Provide a custom query in the string format. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` #### Sample Response ```json { "entries": [ { "_content_type_uid": "electronic", "uid": "blt1934bf0caa658521", "_version": 1, "locale": "en-us", "ACL": {}, "_in_progress": false, "created_at": "2023-11-20T11:52:16.469Z", "created_by": "bltc2f3e4fad0331975", "info1": "", "tags": [], "taxonomies": [ { "taxonomy_uid": "appliances", "term_uid": "ac" }, { "taxonomy_uid": "appliances", "term_uid": "fridge" }, { "taxonomy_uid": "computers", "term_uid": "desktop" }, { "taxonomy_uid": "computers", "term_uid": "hard_drive" }, { "taxonomy_uid": "color", "term_uid": "green" }, { "taxonomy_uid": "color", "term_uid": "yellow" } ], "title": "Electronic-e2", "updated_at": "2023-11-20T11:52:16.469Z", "updated_by": "bltc2f3e4fad0331975", "publish_details": { "time": "2023-11-20T11:54:48.965Z", "user": "bltc2f3e4fad0331975", "environment": "bltcd8ac33f1617637d", "locale": "en-us" } } ] } ``` ### AND Operator [Taxonomy] **GET** `/taxonomies/entries?query={"$and": [{ "taxonomies.taxonomy_uid_1" : "term_uid1" }, { "taxonomies.taxonomy_uid_2" : "term_uid2" }]}` Get all entries for a specific taxonomy that satisfy all the conditions provided in the “$and” query. Your query should be as follows: ``` query={ "$and": [ { "taxonomies.taxonomy_uid_1" : "term_uid1" }, { "taxonomies.taxonomy_uid_2" : "term_uid2" } ]} ``` **Example**: If you want to retrieve entries with the color and category taxonomies applied and linked to the terms black and mobile, respectively. ``` query={ "$and": [ { "taxonomies.color" : "black" }, { "taxonomies.category" : "mobile" } ]} ``` ##### Exists Operator #### Query Parameters - **query** (optional) Provide a custom query in the string format. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` #### Sample Response ```json { "entries": [ { "_content_type_uid": "accessories", "uid": "blt52423be2c052a545", "_version": 1, "locale": "en-us", "ACL": {}, "_in_progress": false, "created_at": "2023-11-20T11:52:23.701Z", "created_by": "bltc2f3e4fad0331975", "info3": "", "tags": [], "taxonomies": [ { "taxonomy_uid": "sports", "term_uid": "swimming" }, { "taxonomy_uid": "appliances", "term_uid": "tv" }, { "taxonomy_uid": "computers", "term_uid": "desktop" }, { "taxonomy_uid": "computers", "term_uid": "laptop" }, { "taxonomy_uid": "color", "term_uid": "blue" }, { "taxonomy_uid": "color", "term_uid": "green" } ], "title": "Accessories-e1", "updated_at": "2023-11-20T11:52:23.701Z", "updated_by": "bltc2f3e4fad0331975", "publish_details": { "time": "2023-11-20T11:54:48.928Z", "user": "bltc2f3e4fad0331975", "environment": "bltcd8ac33f1617637d", "locale": "en-us" } } ] } ``` ### Exists Operator **GET** `/taxonomies/entries?query={{"taxonomies.taxonomy_uid" : { "$exists": true }}` Get all entries for a specific taxonomy that if the value of the field, mentioned in the condition, exists. Your query should be as follows: ``` query={"taxonomies.taxonomy_uid" : { "$exists": true }} ``` **Example**: If you want to retrieve entries with the color taxonomy applied. ``` query={"taxonomies.color" : { "$exists": true }} ``` ##### Equal and Below Operator #### Query Parameters - **query** (optional) Provide a custom query in the string format. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` #### Sample Response ```json { "entries": [ { "_content_type_uid": "complex", "uid": "blt6002475158e575ee", "_version": 1, "locale": "en-us", "ACL": {}, "_in_progress": false, "created_at": "2023-11-20T11:52:40.997Z", "created_by": "bltc2f3e4fad0331975", "file": [ { "uid": "blt282b7b1e881cb457", "_version": 1, "title": "asset1", "description": "", "parent_uid": null, "tags": [], "created_by": "bltc2f3e4fad0331975", "updated_by": "bltc2f3e4fad0331975", "created_at": "2023-11-20T11:52:28.913Z", "updated_at": "2023-11-20T11:52:28.913Z", "content_type": "image/jpeg", "file_size": "10541", "filename": "JPG_validation.jpg", "ACL": {}, "is_dir": false, "publish_details": { "time": "2023-11-20T11:54:49.407Z", "user": "bltc2f3e4fad0331975", "environment": "bltcd8ac33f1617637d", "locale": "en-us" }, "url": "https://stag-images.csnonprod.com/v3/assets/blt95ad1e743a5335c1/blt282b7b1e881cb457/655b487c904de053109e5133/JPG_validation.jpg" } ], "info4": "", "jrte": { "type": "doc", "attrs": {}, "uid": "2c565072f9e6470da13a7298444078f5", "children": [ { "uid": "9594009758804659bd7df88a28c39d72", "type": "reference", "attrs": { "display-type": "display", "asset-uid": "bltc9669cb0d5217dfc", "content-type-uid": "sys_assets", "asset-link": "https://stag-images.csnonprod.com/v3/assets/blt95ad1e743a5335c1/bltc9669cb0d5217dfc/655b4885bb1c8d0dbba2f218/Png_01.png", "asset-name": "asset3", "asset-type": "image/png", "type": "asset", "class-name": "embedded-asset", "alt": "image/png", "asset-alt": "image/png", "inline": false }, "children": [ { "text": "" } ] }, { "type": "p", "attrs": { "style": {}, "redactor-attributes": {}, "dir": "ltr" }, "uid": "c6abcb47cdaa40d18ca48d2b07899baf", "children": [ { "text": "" }, { "uid": "61f51558176f4a7b9696fba9ab43b15b", "type": "reference", "attrs": { "display-type": "inline", "type": "entry", "class-name": "embedded-entry redactor-component inline-entry", "entry-uid": "blt1934bf0caa658521", "locale": "en-us", "content-type-uid": "electronic" }, "children": [ { "text": "" } ] }, { "text": "" } ] } ], "_version": 1 }, "rte": "

    ", "tags": [], "taxonomies": [ { "taxonomy_uid": "color", "term_uid": "navy_blue" } ], "title": "Complex-e1", "updated_at": "2023-11-20T11:52:40.997Z", "updated_by": "bltc2f3e4fad0331975", "publish_details": { "time": "2023-11-20T11:54:48.407Z", "user": "bltc2f3e4fad0331975", "environment": "bltcd8ac33f1617637d", "locale": "en-us" } } ] } ``` ### Equal and Below Operator **GET** `/taxonomies/entries?query={"taxonomies.taxonomy_uid" : { "$eq_below": "term_uid", "levels" : level_number}}` Get all entries for a specific taxonomy that match a specific term and all its descendant terms, requiring only the target term and a specified level. **Note:** If you don't specify the level, the default behavior is to retrieve terms up to **level 10**. ``` query={ "taxonomies.taxonomy_uid" : { "$eq_below": "term_uid", "levels" : 2}} ``` **Example**: If you want to retrieve all entries with terms nested under blue, such as navy blue and sky blue, while also matching entries with the target term blue. ``` query={ "taxonomies.color" : { "$eq_below": "blue" }} ``` ##### Below Operator #### Query Parameters - **query** (optional) Provide a custom query in the string format. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` #### Sample Response ```json { "entries": [ { "_content_type_uid": "complex", "uid": "blt6002475158e575ee", "_version": 1, "locale": "en-us", "ACL": {}, "_in_progress": false, "created_at": "2023-11-20T11:52:40.997Z", "created_by": "bltc2f3e4fad0331975", "file": [ { "uid": "blt282b7b1e881cb457", "_version": 1, "title": "asset1", "description": "", "parent_uid": null, "tags": [], "created_by": "bltc2f3e4fad0331975", "updated_by": "bltc2f3e4fad0331975", "created_at": "2023-11-20T11:52:28.913Z", "updated_at": "2023-11-20T11:52:28.913Z", "content_type": "image/jpeg", "file_size": "10541", "filename": "JPG_validation.jpg", "ACL": {}, "is_dir": false, "publish_details": { "time": "2023-11-20T11:54:49.407Z", "user": "bltc2f3e4fad0331975", "environment": "bltcd8ac33f1617637d", "locale": "en-us" }, "url": "https://stag-images.csnonprod.com/v3/assets/blt95ad1e743a5335c1/blt282b7b1e881cb457/655b487c904de053109e5133/JPG_validation.jpg" } ], "info4": "", "jrte": { "type": "doc", "attrs": {}, "uid": "2c565072f9e6470da13a7298444078f5", "children": [ { "uid": "9594009758804659bd7df88a28c39d72", "type": "reference", "attrs": { "display-type": "display", "asset-uid": "bltc9669cb0d5217dfc", "content-type-uid": "sys_assets", "asset-link": "https://stag-images.csnonprod.com/v3/assets/blt95ad1e743a5335c1/bltc9669cb0d5217dfc/655b4885bb1c8d0dbba2f218/Png_01.png", "asset-name": "asset3", "asset-type": "image/png", "type": "asset", "class-name": "embedded-asset", "alt": "image/png", "asset-alt": "image/png", "inline": false }, "children": [ { "text": "" } ] }, { "type": "p", "attrs": { "style": {}, "redactor-attributes": {}, "dir": "ltr" }, "uid": "c6abcb47cdaa40d18ca48d2b07899baf", "children": [ { "text": "" }, { "uid": "61f51558176f4a7b9696fba9ab43b15b", "type": "reference", "attrs": { "display-type": "inline", "type": "entry", "class-name": "embedded-entry redactor-component inline-entry", "entry-uid": "blt1934bf0caa658521", "locale": "en-us", "content-type-uid": "electronic" }, "children": [ { "text": "" } ] }, { "text": "" } ] } ], "_version": 1 }, "rte": "

    ", "tags": [], "taxonomies": [ { "taxonomy_uid": "color", "term_uid": "navy_blue" } ], "title": "Complex-e1", "updated_at": "2023-11-20T11:52:40.997Z", "updated_by": "bltc2f3e4fad0331975", "publish_details": { "time": "2023-11-20T11:54:48.407Z", "user": "bltc2f3e4fad0331975", "environment": "bltcd8ac33f1617637d", "locale": "en-us" } }, { "_content_type_uid": "accessories", "uid": "blt52423be2c052a545", "_version": 1, "locale": "en-us", "ACL": {}, "_in_progress": false, "created_at": "2023-11-20T11:52:23.701Z", "created_by": "bltc2f3e4fad0331975", "info3": "", "tags": [], "taxonomies": [ { "taxonomy_uid": "sports", "term_uid": "swimming" }, { "taxonomy_uid": "appliances", "term_uid": "tv" }, { "taxonomy_uid": "computers", "term_uid": "desktop" }, { "taxonomy_uid": "computers", "term_uid": "laptop" }, { "taxonomy_uid": "color", "term_uid": "blue" }, { "taxonomy_uid": "color", "term_uid": "green" } ], "title": "Accessories-e1", "updated_at": "2023-11-20T11:52:23.701Z", "updated_by": "bltc2f3e4fad0331975", "publish_details": { "time": "2023-11-20T11:54:48.928Z", "user": "bltc2f3e4fad0331975", "environment": "bltcd8ac33f1617637d", "locale": "en-us" } } ] } ``` ### Below Operator **GET** `/taxonomies/entries?query={"taxonomies.taxonomy_uid" : { "$below": "term_uid", "levels" : 2}}` Get all entries for a specific taxonomy that match all of their descendant terms by specifying only the target term and a specific level. **Note:** If you don't specify the level, the default behavior is to retrieve terms up to **level 10**. ``` query={ "taxonomies.taxonomy_uid" : { "$below": "term_uid", "levels" : 2}} ``` **Example**: If you want to retrieve all entries containing terms nested under blue, such as navy blue and sky blue, but exclude entries that solely have the target term blue. ``` query={ "taxonomies.color" : { "$below": "blue" }} ``` ##### Equal and Above Operator #### Query Parameters - **query** (required) Provide a custom query in the string format. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` #### Sample Response ```json { "entries": [ { "_content_type_uid": "complex", "uid": "blt6002475158e575ee", "_version": 1, "locale": "en-us", "ACL": {}, "_in_progress": false, "created_at": "2023-11-20T11:52:40.997Z", "created_by": "bltc2f3e4fad0331975", "file": [ { "uid": "blt282b7b1e881cb457", "_version": 1, "title": "asset1", "description": "", "parent_uid": null, "tags": [], "created_by": "bltc2f3e4fad0331975", "updated_by": "bltc2f3e4fad0331975", "created_at": "2023-11-20T11:52:28.913Z", "updated_at": "2023-11-20T11:52:28.913Z", "content_type": "image/jpeg", "file_size": "10541", "filename": "JPG_validation.jpg", "ACL": {}, "is_dir": false, "publish_details": { "time": "2023-11-20T11:54:49.407Z", "user": "bltc2f3e4fad0331975", "environment": "bltcd8ac33f1617637d", "locale": "en-us" }, "url": "https://stag-images.csnonprod.com/v3/assets/blt95ad1e743a5335c1/blt282b7b1e881cb457/655b487c904de053109e5133/JPG_validation.jpg" } ], "info4": "", "jrte": { "type": "doc", "attrs": {}, "uid": "2c565072f9e6470da13a7298444078f5", "children": [ { "uid": "9594009758804659bd7df88a28c39d72", "type": "reference", "attrs": { "display-type": "display", "asset-uid": "bltc9669cb0d5217dfc", "content-type-uid": "sys_assets", "asset-link": "https://stag-images.csnonprod.com/v3/assets/blt95ad1e743a5335c1/bltc9669cb0d5217dfc/655b4885bb1c8d0dbba2f218/Png_01.png", "asset-name": "asset3", "asset-type": "image/png", "type": "asset", "class-name": "embedded-asset", "alt": "image/png", "asset-alt": "image/png", "inline": false }, "children": [ { "text": "" } ] }, { "type": "p", "attrs": { "style": {}, "redactor-attributes": {}, "dir": "ltr" }, "uid": "c6abcb47cdaa40d18ca48d2b07899baf", "children": [ { "text": "" }, { "uid": "61f51558176f4a7b9696fba9ab43b15b", "type": "reference", "attrs": { "display-type": "inline", "type": "entry", "class-name": "embedded-entry redactor-component inline-entry", "entry-uid": "blt1934bf0caa658521", "locale": "en-us", "content-type-uid": "electronic" }, "children": [ { "text": "" } ] }, { "text": "" } ] } ], "_version": 1 }, "rte": "

    ", "tags": [], "taxonomies": [ { "taxonomy_uid": "color", "term_uid": "navy_blue" } ], "title": "Complex-e1", "updated_at": "2023-11-20T11:52:40.997Z", "updated_by": "bltc2f3e4fad0331975", "publish_details": { "time": "2023-11-20T11:54:48.407Z", "user": "bltc2f3e4fad0331975", "environment": "bltcd8ac33f1617637d", "locale": "en-us" } }, { "_content_type_uid": "electronic", "uid": "blt85a6a1a707df84a5", "_version": 1, "locale": "en-us", "ACL": {}, "_in_progress": false, "created_at": "2023-11-20T11:52:19.054Z", "created_by": "bltc2f3e4fad0331975", "info1": "", "tags": [], "taxonomies": [ { "taxonomy_uid": "color", "term_uid": "dark_blue" } ], "title": "Electronic-e3", "updated_at": "2023-11-20T11:52:19.054Z", "updated_by": "bltc2f3e4fad0331975", "publish_details": { "time": "2023-11-20T11:54:48.957Z", "user": "bltc2f3e4fad0331975", "environment": "bltcd8ac33f1617637d", "locale": "en-us" } } ] } ``` ### Equal and Above Operator **GET** `/taxonomies/entries?query={"taxonomies.taxonomy_uid": { "$eq_above": "term_uid", "levels": 2 }}` Get all entries for a specific taxonomy that match a specific term and all its ancestor terms, requiring only the target term and a specified level. **Note:** If you don't specify the level, the default behavior is to retrieve terms up to **level 10**. ``` query = { "taxonomies.taxonomy_uid": { "$eq_above": "term_uid", "levels": 2 }} ``` **Example**: If you want to obtain all entries that include the term navy\_blue and its parent term blue. ``` query = { "taxonomies.color": { "$eq_above": "navy_blue"}} ``` ##### Above Operator #### Query Parameters - **query** (optional) Provide a custom query in the string format. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` #### Sample Response ```json { "entries": [ { "_content_type_uid": "accessories", "uid": "blt52423be2c052a545", "_version": 1, "locale": "en-us", "ACL": {}, "_in_progress": false, "created_at": "2023-11-20T11:52:23.701Z", "created_by": "bltc2f3e4fad0331975", "info3": "", "tags": [], "taxonomies": [ { "taxonomy_uid": "sports", "term_uid": "swimming" }, { "taxonomy_uid": "appliances", "term_uid": "tv" }, { "taxonomy_uid": "computers", "term_uid": "desktop" }, { "taxonomy_uid": "computers", "term_uid": "laptop" }, { "taxonomy_uid": "color", "term_uid": "blue" }, { "taxonomy_uid": "color", "term_uid": "green" } ], "title": "Accessories-e1", "updated_at": "2023-11-20T11:52:23.701Z", "updated_by": "bltc2f3e4fad0331975", "publish_details": { "time": "2023-11-20T11:54:48.928Z", "user": "bltc2f3e4fad0331975", "environment": "bltcd8ac33f1617637d", "locale": "en-us" } }, { "_content_type_uid": "electronic", "uid": "blt48c591c5ea1f704b", "_version": 1, "locale": "en-us", "ACL": {}, "_in_progress": false, "created_at": "2023-11-20T11:52:09.534Z", "created_by": "bltc2f3e4fad0331975", "info1": "", "tags": [], "taxonomies": [ { "taxonomy_uid": "appliances", "term_uid": "tv" }, { "taxonomy_uid": "computers", "term_uid": "laptop" }, { "taxonomy_uid": "color", "term_uid": "blue" } ], "title": "Electronic-e1", "updated_at": "2023-11-20T11:52:09.534Z", "updated_by": "bltc2f3e4fad0331975", "publish_details": { "time": "2023-11-20T11:54:48.975Z", "user": "bltc2f3e4fad0331975", "environment": "bltcd8ac33f1617637d", "locale": "en-us" } } ] } ``` ### Above Operator **GET** `/taxonomies/entries?query={ "taxonomies.taxonomy_uid": { "$above": "term_uid", "levels": 2 }}` Get all entries for a specific taxonomy that match only the parent term(s) of a specified target term, excluding the target term itself. You can also specify a specific level. **Note:** If you don't specify the level, the default behavior is to retrieve terms up to **level 10**. ``` query = { "taxonomies.taxonomy_uid": { "$above": "term_uid", "levels": 2 }} ``` **Example**: If you wish to match entries with all the terms above the target term navy\_blue, excluding navy\_blue itself. ``` query = { "taxonomies.color": { "$above": "navy_blue" }} ``` #### Query Parameters - **query** (optional) Provide a custom query in the string format. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` #### Sample Response ```json { "entries": [ { "_content_type_uid": "accessories", "uid": "blt52423be2c052a545", "_version": 1, "locale": "en-us", "ACL": {}, "_in_progress": false, "created_at": "2023-11-20T11:52:23.701Z", "created_by": "bltc2f3e4fad0331975", "info3": "", "tags": [], "taxonomies": [ { "taxonomy_uid": "sports", "term_uid": "swimming" }, { "taxonomy_uid": "appliances", "term_uid": "tv" }, { "taxonomy_uid": "computers", "term_uid": "desktop" }, { "taxonomy_uid": "computers", "term_uid": "laptop" }, { "taxonomy_uid": "color", "term_uid": "blue" }, { "taxonomy_uid": "color", "term_uid": "green" } ], "title": "Accessories-e1", "updated_at": "2023-11-20T11:52:23.701Z", "updated_by": "bltc2f3e4fad0331975", "publish_details": { "time": "2023-11-20T11:54:48.928Z", "user": "bltc2f3e4fad0331975", "environment": "bltcd8ac33f1617637d", "locale": "en-us" } }, { "_content_type_uid": "electronic", "uid": "blt48c591c5ea1f704b", "_version": 1, "locale": "en-us", "ACL": {}, "_in_progress": false, "created_at": "2023-11-20T11:52:09.534Z", "created_by": "bltc2f3e4fad0331975", "info1": "", "tags": [], "taxonomies": [ { "taxonomy_uid": "appliances", "term_uid": "tv" }, { "taxonomy_uid": "computers", "term_uid": "laptop" }, { "taxonomy_uid": "color", "term_uid": "blue" } ], "title": "Electronic-e1", "updated_at": "2023-11-20T11:52:09.534Z", "updated_by": "bltc2f3e4fad0331975", "publish_details": { "time": "2023-11-20T11:54:48.975Z", "user": "bltc2f3e4fad0331975", "environment": "bltcd8ac33f1617637d", "locale": "en-us" } } ] } ``` ## Equals Operator ### Equals Operator **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"field_UID": "value"}` Get entries containing the field values matching the condition in the query. This query will work for both entries as well as assets. **Example:** In the Products content type, you have a field named Title ("uid":"title") field. If, for instance, you want to retrieve all the entries in which the value for the Title field is 'Redmi 3S', you can set the parameters as: {"title": "Redmi 3S"} Let’s consider another example. You want to retrieve all the entries that have their start date as 8th December, 2017. Now, you need to set this parameter with the date in the ISO Date format as below: { "start\_date": "2017-12-08T00:00:00.000Z" } This will give you all the entries where the start date is 8th December, 2017. ##### Equals Operator Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "locale": "en-us", "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } }, { "related_products": { "products": [ { "uid": "blta278bb5672180c94", "_content_type_uid": "product" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt8312af2299516ccf", "_content_type_uid": "bank" } ], "card_type": [], "discount_in_percentage": 15 } ], "ACL": {}, "uid": "bltf2fa776b05a127a2", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:21.851Z", "updated_at": "2019-08-23T12:41:07.543Z", "_version": 5, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T12:41:13.700Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Equals Operator Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"group_UID.field_UID": "value"}` Get entries where the value of a field within a Group field matches the condition in the query. This query is specifically for fields that are part of the Group field. This query will work for entries only. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Card Type ("uid":"card\_type"). If, for instance, you want to retrieve the entries in which the value for the Card Type field is 'Debit Card', you can use the following value in the ‘query’ parameter: {"bank\_offers.card\_type": "Debit Card"} ##### Equals Operator Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "locale": "en-us", "title": "Redmi Note Prime", "url": "/redmi-note-prime", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 117.3, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "size": 16, "color": "Black", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } } ], "bank_offers": [ { "bank": [ { "uid": "bltd9dc1c7363c42bbd", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "blt98058bb38f89fc5f", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "ACL": {}, "uid": "blt4f1fd991ec80e52f", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:25.397Z", "updated_at": "2019-08-23T13:02:21.457Z", "_version": 4, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T13:02:25.439Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "iPhone 7 128GB", "url": "/mobiles/iphone-7", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 749, "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "launch_date": "2016-09-07", "instock": true, "tags": [], "size": 128, "color": "Black", "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } } ], "bank_offers": [ { "bank": [ { "uid": "bltf05621cb52725856", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 } ], "ACL": {}, "uid": "bltbd92ac498e3d5f96", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:20.072Z", "updated_at": "2019-08-23T12:50:53.424Z", "_version": 13, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T12:50:56.727Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "iPhone 7 64GB", "url": "/mobiles/iphone-7", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "price_in_usd": 649, "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "launch_date": "2016-09-07", "instock": true, "tags": [], "size": 32, "color": "Rose Gold", "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } }, { "related_products": { "products": [ { "uid": "bltbd92ac498e3d5f96", "_content_type_uid": "product" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt98058bb38f89fc5f", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "bltd9dc1c7363c42bbd", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "ACL": {}, "uid": "blt70cc672f4f806d3e", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:23.624Z", "updated_at": "2019-08-23T12:42:21.386Z", "_version": 4, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T12:59:36.361Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "Galaxy Note", "url": "/mobiles/galaxy-note", "description": "

    Snapdragon

    ", "size": 32, "color": "Gold", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 101, "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "launch_date": "2016-07-07", "instock": false, "tags": [ "redmi" ], "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } }, { "related_products": { "products": [ { "uid": "bltf8ab1ad67af3c66b", "_content_type_uid": "product" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt6e94809281fc418f", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "ACL": {}, "uid": "blt5b85ef3b0587565c", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:18.286Z", "updated_at": "2019-08-23T12:41:55.402Z", "_version": 4, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T12:41:59.165Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "Galaxy J1", "url": "/mobiles/galaxyj1", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "price_in_usd": 159.78, "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "launch_date": "2017-01-06", "instock": true, "tags": [], "size": 8, "color": "Black", "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } } ], "bank_offers": [ { "bank": [ { "uid": "bltc00b46e648007a0c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "blt6e94809281fc418f", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "ACL": {}, "uid": "bltf8ab1ad67af3c66b", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:28.965Z", "updated_at": "2019-08-23T11:38:15.309Z", "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T11:38:18.546Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Equals Operator Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"modular_block_UID.block_UID.field_UID": "value"}` Get entries where the value of a field within a Modular Blocks field matches the condition in the query. This query is specifically for fields that are part of the Modular Blocks field. This query will work for entries only. **Example:** In the Products content type, we have a Modular Blocks field named Additional Info ("uid":"additional\_info") that contains the Deals ("uid":"deals") block. And, within this Deals block, we have a field named Deal Name ("uid":"deal\_name"). If, for instance, you want to retrieve the entries in which the value for the Deal Name field is 'Christmas Deal', you can use the following value in the query parameter: {"additional\_info.deals.deal\_name": "Christmas Deal"} #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "locale": "en-us", "title": "Galaxy Note", "url": "/mobiles/galaxy-note", "description": "

    Snapdragon

    ", "size": 32, "color": "Gold", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 101, "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "launch_date": "2016-07-07", "instock": false, "tags": [ "redmi" ], "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } }, { "related_products": { "products": [ { "uid": "bltf8ab1ad67af3c66b", "_content_type_uid": "product" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt6e94809281fc418f", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "ACL": {}, "uid": "blt5b85ef3b0587565c", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:18.286Z", "updated_at": "2019-08-23T12:41:55.402Z", "_version": 4, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T12:41:59.165Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } }, { "related_products": { "products": [ { "uid": "blta278bb5672180c94", "_content_type_uid": "product" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt8312af2299516ccf", "_content_type_uid": "bank" } ], "card_type": [], "discount_in_percentage": 15 } ], "ACL": {}, "uid": "bltf2fa776b05a127a2", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:21.851Z", "updated_at": "2019-08-23T12:41:07.543Z", "_version": 5, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T12:41:13.700Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Not-equals Operator ### Not-equals Operator **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"field_UID": { "$ne": "value"}}` Get all the entries in which the value of a field does not match the value provided in the condition. This query will work for both entries as well as assets. **Example:** In the Product content type, you have a field named Price in USD. Now, you need to retrieve all entries where the value of this field not equal to '146' for this field. The parameter can be used as: { "price\_in\_usd": { "$ne": 146 } } This will give you all the entries that have the value for Price in USD not set to '146'. Let’s consider another example. You want to retrieve all the entries except the ones that have their start date as 8th December, 2017. Now, you need to set this parameter with the date in the ISO Date format as below: { "start\_date": { "$ne": "2017-12-08T00:00:00.000Z" } } This will give you all the entries where the start date is not 8th December, 2017. ##### Not-equals Operator Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "locale": "en-us", "title": "Redmi Note Prime", "url": "/redmi-note-prime", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 117.3, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "size": 16, "color": "Black", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } } ], "bank_offers": [ { "bank": [ { "uid": "bltd9dc1c7363c42bbd", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "blt98058bb38f89fc5f", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "ACL": {}, "uid": "blt4f1fd991ec80e52f", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:25.397Z", "updated_at": "2019-08-23T13:02:21.457Z", "_version": 4, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T13:02:25.439Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "iPhone 7 128GB", "url": "/mobiles/iphone-7", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 749, "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "launch_date": "2016-09-07", "instock": true, "tags": [], "size": 128, "color": "Black", "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } } ], "bank_offers": [ { "bank": [ { "uid": "bltf05621cb52725856", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 } ], "ACL": {}, "uid": "bltbd92ac498e3d5f96", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:20.072Z", "updated_at": "2019-08-23T12:50:53.424Z", "_version": 13, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T12:50:56.727Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "iPhone 7 64GB", "url": "/mobiles/iphone-7", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "price_in_usd": 649, "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "launch_date": "2016-09-07", "instock": true, "tags": [], "size": 32, "color": "Rose Gold", "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } }, { "related_products": { "products": [ { "uid": "bltbd92ac498e3d5f96", "_content_type_uid": "product" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt98058bb38f89fc5f", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "bltd9dc1c7363c42bbd", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "ACL": {}, "uid": "blt70cc672f4f806d3e", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:23.624Z", "updated_at": "2019-08-23T12:42:21.386Z", "_version": 4, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T12:59:36.361Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "Galaxy Note", "url": "/mobiles/galaxy-note", "description": "

    Snapdragon

    ", "size": 32, "color": "Gold", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 101, "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "launch_date": "2016-07-07", "instock": false, "tags": [ "redmi" ], "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } }, { "related_products": { "products": [ { "uid": "bltf8ab1ad67af3c66b", "_content_type_uid": "product" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt6e94809281fc418f", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "ACL": {}, "uid": "blt5b85ef3b0587565c", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:18.286Z", "updated_at": "2019-08-23T12:41:55.402Z", "_version": 4, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T12:41:59.165Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } }, { "related_products": { "products": [ { "uid": "blta278bb5672180c94", "_content_type_uid": "product" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt8312af2299516ccf", "_content_type_uid": "bank" } ], "card_type": [], "discount_in_percentage": 15 } ], "ACL": {}, "uid": "bltf2fa776b05a127a2", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:21.851Z", "updated_at": "2019-08-23T12:41:07.543Z", "_version": 5, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T12:41:13.700Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "Galaxy J1", "url": "/mobiles/galaxyj1", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "price_in_usd": 159.78, "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "launch_date": "2017-01-06", "instock": true, "tags": [], "size": 8, "color": "Black", "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } } ], "bank_offers": [ { "bank": [ { "uid": "bltc00b46e648007a0c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "blt6e94809281fc418f", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "ACL": {}, "uid": "bltf8ab1ad67af3c66b", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:28.965Z", "updated_at": "2019-08-23T11:38:15.309Z", "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T11:38:18.546Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Not-equals Operator Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"group_UID.field_UID": { "$ne": "value"}}` Get entries where the value of a field does not match the value provided in the condition. This query is specifically for fields that are part of the Group field. This query will work for entries only. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Card Type ("uid":"card\_type"). If, for instance, you want to retrieve the entries in which the value for the Card Type field is _NOT_ 'Debit Card', use the following value in the query parameter: {"bank\_offers.card\_type": {"$ne": "Debit Card"}} ##### Not-equals Operator Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "locale": "en-us", "title": "Redmi Note 3", "url": "/mobiles/redmi-note-3", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "price_in_usd": 146, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-03-09", "instock": true, "tags": [ "redmi", "smart" ], "size": 16, "color": "Gold", "additional_info": [ { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } }, { "rating": { "stars": 4 } } ], "bank_offers": [ { "bank": [ { "uid": "bltc00b46e648007a0c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "ACL": {}, "uid": "blta278bb5672180c94", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:27.182Z", "updated_at": "2019-08-23T13:01:19.866Z", "_version": 4, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T13:01:23.290Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "locale": "en-us", "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } }, { "related_products": { "products": [ { "uid": "blta278bb5672180c94", "_content_type_uid": "product" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt8312af2299516ccf", "_content_type_uid": "bank" } ], "card_type": [], "discount_in_percentage": 15 } ], "ACL": {}, "uid": "bltf2fa776b05a127a2", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2019-08-16T08:19:21.851Z", "updated_at": "2019-08-23T12:41:07.543Z", "_version": 5, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-23T12:41:13.700Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Not-equals Operator Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"modular_block_UID.block_UID.field_UID": { "$ne": "value"}}` Get entries where the value of a field within the Modular Blocks field does not match the condition in the query. This query is specifically for fields that are part of any block within a Modular Block field. This query will work for entries only. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Deals ("uid":"deals") block. And, within this Deals block, we have a field named Deal Name ("uid":"deal\_name"). If, for instance, you want to retrieve the entries in which the value for the Deal Name field is _NOT_ 'Christmas Deal', use the following value in the query parameter: {"additional\_info.deals.deal\_name": {"$ne": "Christmas Deal"}} #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries":[ { "_version":3, "locale":"en-us", "uid":"blte63b2ff6f6414d8e", "ACL":{ }, "_in_progress":false, "additional_info":[ { "rating":{ "stars":2 } }, { "deals":{ "deal_name":"Deals of the Day", "deal_details":"If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons":[ { "daily_coupons":{ "coupon_name":"Lucky Twenty", "coupon_details":"First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate":20 } }, { "special_coupons":{ "special_coupon_name":"Kitchen Bonanza", "special_coupon_details":"Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate":60 } } ] } }, { "related_products":{ "products":[ { "uid":"blta250054cfa4f5aab", "_content_type_uid":"product" }, { "uid":"bltd383742b89bef7af", "_content_type_uid":"product" } ], "home_appliances":[ { "uid":"blt10e68dbbfc14b75b", "_content_type_uid":"electronics" } ] } } ], "bank_offers":[ { "bank":[ { "uid":"blt27729fae9269607c", "_content_type_uid":"bank" } ], "card_type":[ "Debit Card" ], "discount_in_percentage":27 }, { "bank":[ { "uid":"bltfbe674ca5af1ffa3", "_content_type_uid":"bank" } ], "card_type":[ "Debit Card", "Credit Card" ], "discount_in_percentage":24 } ], "brand":[ ], "categories":[ { "uid":"blt9d72fa3afc11d27f", "_content_type_uid":"category" } ], "color":"Black", "created_at":"2020-05-11T12:44:49.928Z", "created_by":"blt42e55757d70d5f81026a2b9f", "description":"

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images":[ { "uid":"blt50a7a9dd6866776f", "created_at":"2019-08-16T08:05:18.932Z", "updated_at":"2019-08-16T08:05:18.932Z", "created_by":"bltcd82b2c6bf913241", "updated_by":"bltcd82b2c6bf913241", "content_type":"image/jpeg", "file_size":"145200", "tags":[ ], "filename":"01.jpg", "url":"https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL":[ ], "is_dir":false, "_version":1, "title":"01.jpg", "publish_details":{ "environment":"blta39a4441696e35e0", "locale":"en-us", "time":"2019-08-19T12:28:56.964Z", "user":"blt587a89fc7883c56700a95bfe" } } ], "instock":true, "launch_date":"2016-08-17", "price_in_usd":117.3, "size":16, "tags":[ ], "title":"Redmi Note Prime", "updated_at":"2020-05-11T15:14:45.980Z", "updated_by":"blt42e55757d70d5f81026a2b9f", "url":"/redmi-note-prime", "publish_details":{ "environment":"blta39a4441696e35e0", "locale":"en-us", "time":"2020-05-11T15:15:36.629Z", "user":"blt42e55757d70d5f81026a2b9f" } }, { "_version":3, "locale":"en-us", "uid":"bltdbe63e789fd3d08e", "ACL":{ }, "_in_progress":false, "additional_info":[ { "rating":{ "stars":5 } }, { "deals":{ "deal_name":"Independence Day Deal", "deal_details":"If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons":[ { "special_coupons":{ "special_coupon_name":"Independence Bumper Offer", "special_coupon_details":"Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate":40 } }, { "faqs":{ "coupon_faqs":[ { "question":"How to avail coupon benefits?", "answer":"

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question":"Where can I find the coupons I collected?", "answer":"

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question":"Can you collect a coupon first and purchase an item later?", "answer":"

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products":{ "products":[ { "uid":"blt6549021b3bbeae5c", "_content_type_uid":"product" } ], "home_appliances":[ { "uid":"blt0e302e4595da19c1", "_content_type_uid":"electronics" } ] } } ], "bank_offers":[ { "bank":[ { "uid":"blt27729fae9269607c", "_content_type_uid":"bank" } ], "card_type":[ "Credit Card" ], "discount_in_percentage":60 }, { "bank":[ { "uid":"blt4526259b9dc1dd3e", "_content_type_uid":"bank" } ], "card_type":[ "Credit Card", "Debit Card" ], "discount_in_percentage":55 } ], "brand":[ { "uid":"blte6095f030e4b7a30", "_content_type_uid":"brand" } ], "categories":[ { "uid":"blt9d72fa3afc11d27f", "_content_type_uid":"category" }, { "uid":"blt9fa0f59d03862aa7", "_content_type_uid":"category" } ], "color":"Rose Gold", "created_at":"2020-05-11T12:47:32.533Z", "created_by":"blt42e55757d70d5f81026a2b9f", "description":"

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images":[ { "uid":"bltda02effe8bc97bb9", "created_at":"2019-08-16T08:05:09.588Z", "updated_at":"2019-08-16T08:05:09.588Z", "created_by":"bltcd82b2c6bf913241", "updated_by":"bltcd82b2c6bf913241", "content_type":"image/jpeg", "file_size":"45091", "tags":[ ], "filename":"Apple-iPhone-SE-Rose-Gold.jpg", "url":"https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL":[ ], "is_dir":false, "_version":1, "title":"Apple-iPhone-SE-Rose-Gold.jpg", "publish_details":{ "environment":"blta39a4441696e35e0", "locale":"en-us", "time":"2019-08-19T12:28:56.964Z", "user":"blt587a89fc7883c56700a95bfe" } } ], "instock":true, "launch_date":"2016-09-07", "price_in_usd":649, "size":32, "tags":[ ], "title":"iPhone 7 64GB", "updated_at":"2020-05-11T15:08:56.567Z", "updated_by":"blt42e55757d70d5f81026a2b9f", "url":"/mobiles/iphone-7", "publish_details":{ "environment":"blta39a4441696e35e0", "locale":"en-us", "time":"2020-05-11T15:09:05.364Z", "user":"blt42e55757d70d5f81026a2b9f" } }, { "_version":3, "locale":"en-us", "uid":"blt6549021b3bbeae5c", "ACL":{ }, "_in_progress":false, "additional_info":[ { "rating":{ "stars":1 } }, { "deals":{ "deal_name":"Black Friday Deal", "deal_details":"If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons":[ { "special_coupons":{ "special_coupon_name":"Friday Bumper Coupon", "special_coupon_details":"Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate":70 } }, { "faqs":{ "coupon_faqs":[ { "question":"How to avail coupon benefits?", "answer":"

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question":"Where can I find the coupons I collected?", "answer":"

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question":"Can you collect a coupon first and purchase an item later?", "answer":"

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products":{ "products":[ { "uid":"bltdbe63e789fd3d08e", "_content_type_uid":"product" } ], "home_appliances":[ { "uid":"bltee5deb99c3be1b75", "_content_type_uid":"electronics" }, { "uid":"blt2349e9c0b7ce06fa", "_content_type_uid":"electronics" }, { "uid":"blt7375bb3c0e4859de", "_content_type_uid":"electronics" }, { "uid":"blt44857e1ae5e9e272", "_content_type_uid":"kitchen_appliances" }, { "uid":"blt49139d483f5799bc", "_content_type_uid":"kitchen_appliances" }, { "uid":"blt1ecc761f990dc547", "_content_type_uid":"kitchen_appliances" } ] } } ], "bank_offers":[ { "bank":[ { "uid":"bltfbe674ca5af1ffa3", "_content_type_uid":"bank" } ], "card_type":[ "Debit Card" ], "discount_in_percentage":12 }, { "bank":[ { "uid":"bltd477bad133866222", "_content_type_uid":"bank" } ], "card_type":[ "Debit Card" ], "discount_in_percentage":10 } ], "brand":[ { "uid":"blte6095f030e4b7a30", "_content_type_uid":"brand" } ], "categories":[ { "uid":"blt9d72fa3afc11d27f", "_content_type_uid":"category" } ], "color":"Black", "created_at":"2020-05-10T13:09:01.499Z", "created_by":"blt42e55757d70d5f81026a2b9f", "description":"

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images":[ { "uid":"bltc4f54f7ce3155b0e", "created_at":"2019-08-16T08:05:15.889Z", "updated_at":"2019-08-16T08:05:15.889Z", "created_by":"bltcd82b2c6bf913241", "updated_by":"bltcd82b2c6bf913241", "content_type":"image/jpeg", "file_size":"48163", "tags":[ ], "filename":"iphone7.jpg", "url":"https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL":[ ], "is_dir":false, "_version":1, "title":"iphone7.jpg", "publish_details":{ "environment":"blta39a4441696e35e0", "locale":"en-us", "time":"2019-08-19T12:28:56.964Z", "user":"blt587a89fc7883c56700a95bfe" } } ], "instock":true, "launch_date":"2016-09-07", "price_in_usd":749, "size":128, "tags":[ ], "title":"iPhone 7 128GB", "updated_at":"2020-05-11T14:29:53.230Z", "updated_by":"blt42e55757d70d5f81026a2b9f", "url":"/mobiles/iphone-7", "publish_details":{ "environment":"blta39a4441696e35e0", "locale":"en-us", "time":"2020-05-11T14:30:07.305Z", "user":"blt42e55757d70d5f81026a2b9f" } }, { "_version":1, "locale":"en-us", "uid":"blta250054cfa4f5aab", "ACL":{ }, "_in_progress":false, "additional_info":[ { "rating":{ "stars":5 } }, { "deals":{ "deal_name":"Summer Deal", "deal_details":"If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons":[ { "daily_coupons":{ "coupon_name":"Early Bird Coupon", "coupon_details":"Save 50 percent on your first three purchases.", "coupon_discount_rate":50 } }, { "special_coupons":{ "special_coupon_name":"Beat the Heat Coupon", "special_coupon_details":"Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate":40 } }, { "faqs":{ "coupon_faqs":[ { "question":"How to avail coupon benefits?", "answer":"

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question":"Where can I find the coupons I collected?", "answer":"

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question":"Can you collect a coupon first and purchase an item later?", "answer":"

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products":{ "products":[ { "uid":"blte63b2ff6f6414d8e", "_content_type_uid":"product" }, { "uid":"bltd383742b89bef7af", "_content_type_uid":"product" } ], "home_appliances":[ { "uid":"bltee5deb99c3be1b75", "_content_type_uid":"electronics" }, { "uid":"blt7d3413d9daf14f5f", "_content_type_uid":"electronics" }, { "uid":"blt1ecc761f990dc547", "_content_type_uid":"kitchen_appliances" } ] } } ], "bank_offers":[ { "bank":[ { "uid":"blt83b7564e5d749a90", "_content_type_uid":"bank" } ], "card_type":[ "Credit Card" ], "discount_in_percentage":12 } ], "brand":[ { "uid":"blta2e0d2130eb86263", "_content_type_uid":"brand" } ], "categories":[ { "uid":"blt9d72fa3afc11d27f", "_content_type_uid":"category" }, { "uid":"blt9fa0f59d03862aa7", "_content_type_uid":"category" } ], "color":"Gold", "created_at":"2020-05-11T14:12:28.805Z", "created_by":"blt42e55757d70d5f81026a2b9f", "description":"

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images":[ { "uid":"blt9c3dff6e3151d374", "created_at":"2019-08-16T08:05:27.886Z", "updated_at":"2019-08-16T08:05:27.886Z", "created_by":"bltcd82b2c6bf913241", "updated_by":"bltcd82b2c6bf913241", "content_type":"image/jpeg", "file_size":"5275", "tags":[ ], "filename":"download.jpg", "url":"https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL":[ ], "is_dir":false, "_version":1, "title":"download.jpg", "publish_details":{ "environment":"blta39a4441696e35e0", "locale":"en-us", "time":"2019-08-19T12:28:47.432Z", "user":"blt587a89fc7883c56700a95bfe" } } ], "instock":true, "launch_date":"2016-03-09", "price_in_usd":146, "size":16, "tags":[ "redmi", "smart" ], "title":"Redmi Note 3", "updated_at":"2020-05-11T14:12:28.805Z", "updated_by":"blt42e55757d70d5f81026a2b9f", "url":"/mobiles/redmi-note-3", "publish_details":{ "environment":"blta39a4441696e35e0", "locale":"en-us", "time":"2020-05-11T14:12:38.975Z", "user":"blt42e55757d70d5f81026a2b9f" } }, { "_version":2, "locale":"en-us", "uid":"blt1e1d4385e656835a", "ACL":{ }, "_in_progress":false, "additional_info":[ { "rating":{ "stars":4 } }, { "deals":{ "deal_name":"Black Friday Deal", "deal_details":"If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons":[ { "special_coupons":{ "special_coupon_name":"Friday Bumper Coupon", "special_coupon_details":"Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate":70 } }, { "faqs":{ "coupon_faqs":[ { "question":"How to avail coupon benefits?", "answer":"

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question":"Where can I find the coupons I collected?", "answer":"

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question":"Can you collect a coupon first and purchase an item later?", "answer":"

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products":{ "products":[ { "uid":"bltd8ff819f10c6973b", "_content_type_uid":"product" } ], "home_appliances":[ { "uid":"blt23f4282bd1173ae9", "_content_type_uid":"electronics" }, { "uid":"blt49139d483f5799bc", "_content_type_uid":"kitchen_appliances" } ] } } ], "bank_offers":[ { "bank":[ { "uid":"blt4526259b9dc1dd3e", "_content_type_uid":"bank" } ], "card_type":[ "Credit Card", "Debit Card" ], "discount_in_percentage":25 }, { "bank":[ { "uid":"bltd477bad133866222", "_content_type_uid":"bank" } ], "card_type":[ "Credit Card" ], "discount_in_percentage":30 } ], "brand":[ { "uid":"blt5499dd00bb716b14", "_content_type_uid":"brand" } ], "categories":[ { "uid":"blt9d72fa3afc11d27f", "_content_type_uid":"category" } ], "color":"Black", "created_at":"2020-05-11T13:32:18.406Z", "created_by":"blt42e55757d70d5f81026a2b9f", "description":"

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images":[ { "uid":"blt11b00b9a335ed526", "created_at":"2019-08-16T08:05:18.935Z", "updated_at":"2019-08-16T08:05:18.935Z", "created_by":"bltcd82b2c6bf913241", "updated_by":"bltcd82b2c6bf913241", "content_type":"image/jpeg", "file_size":"166189", "tags":[ ], "filename":"samsung-galaxy-j1.jpg", "url":"https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL":[ ], "is_dir":false, "_version":1, "title":"samsung-galaxy-j1.jpg", "publish_details":{ "environment":"blta39a4441696e35e0", "locale":"en-us", "time":"2019-08-19T12:28:56.964Z", "user":"blt587a89fc7883c56700a95bfe" } } ], "instock":true, "launch_date":"2017-01-06", "price_in_usd":159.78, "size":8, "tags":[ ], "title":"Galaxy J1", "updated_at":"2020-05-11T14:05:25.577Z", "updated_by":"blt42e55757d70d5f81026a2b9f", "url":"/mobiles/galaxy-j1", "publish_details":{ "environment":"blta39a4441696e35e0", "locale":"en-us", "time":"2020-05-11T14:05:33.715Z", "user":"blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Array Equals Operator ### Array Equals Operator **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={ "field_UID": { "$in": [ value1, value2, ...] } }` Get entries in which the value of a field matches to any of the given values. This parameter will compare field values of entries to that of the values provided in the condition. This query will work for entries only. **Example:** In the Product content type, you have a field named Price in USD. Now, you need to retrieve all the entries where value of this field is one among the given set of values. The query fired using the '$in' parameter is given below: { "price\_in\_usd": { "$in": \[ 101, 749 \] } } This will retrieve all the entries that have the value of Price in USD field set to '101' or 749'. ##### Array Equals Operator Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries":[ { "_version":3, "locale":"en-us", "uid":"bltd8ff819f10c6973b", "ACL":{ }, "_in_progress":false, "additional_info":[ { "rating":{ "stars":2 } }, { "deals":{ "deal_name":"Christmas Deal", "deal_details":"If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons":[ { "daily_coupons":{ "coupon_name":"Early Bird Coupon", "coupon_details":"Save 50 percent on your first three purchases.", "coupon_discount_rate":50 } }, { "special_coupons":{ "special_coupon_name":"High Five", "special_coupon_details":"Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate":5 } }, { "faqs":{ "coupon_faqs":[ { "question":"How to avail coupon benefits?", "answer":"

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question":"Where can I find the coupons I collected?", "answer":"

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question":"Can you collect a coupon first and purchase an item later?", "answer":"

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products":{ "products":[ { "uid":"blt1e1d4385e656835a", "_content_type_uid":"product" } ], "home_appliances":[ { "uid":"blt23f4282bd1173ae9", "_content_type_uid":"electronics" }, { "uid":"blt49139d483f5799bc", "_content_type_uid":"kitchen_appliances" } ] } } ], "bank_offers":[ { "bank":[ { "uid":"blt83b7564e5d749a90", "_content_type_uid":"bank" } ], "card_type":[ "Debit Card" ], "discount_in_percentage":8 } ], "brand":[ { "uid":"blt5499dd00bb716b14", "_content_type_uid":"brand" } ], "categories":[ { "uid":"blt9fa0f59d03862aa7", "_content_type_uid":"category" }, { "uid":"blt9d72fa3afc11d27f", "_content_type_uid":"category" } ], "color":"Gold", "created_at":"2020-05-10T13:47:02.576Z", "created_by":"blt42e55757d70d5f81026a2b9f", "description":"

    Snapdragon

    ", "images":[ { "uid":"blt19c34e5374418484", "created_at":"2019-08-16T08:05:30.460Z", "updated_at":"2019-08-16T08:05:30.460Z", "created_by":"bltcd82b2c6bf913241", "updated_by":"bltcd82b2c6bf913241", "content_type":"image/jpeg", "file_size":"69609", "tags":[ ], "filename":"in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url":"https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL":[ ], "is_dir":false, "_version":1, "title":"in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details":{ "environment":"blta39a4441696e35e0", "locale":"en-us", "time":"2019-08-19T12:28:47.432Z", "user":"blt587a89fc7883c56700a95bfe" } }, { "uid":"bltf8c7852efd06d11f", "created_at":"2019-08-16T08:05:05.009Z", "updated_at":"2019-08-16T08:05:05.009Z", "created_by":"bltcd82b2c6bf913241", "updated_by":"bltcd82b2c6bf913241", "content_type":"image/png", "file_size":"63422", "tags":[ ], "filename":"in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url":"https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL":[ ], "is_dir":false, "_version":1, "title":"in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details":{ "environment":"blta39a4441696e35e0", "locale":"en-us", "time":"2019-08-19T12:29:04.717Z", "user":"blt587a89fc7883c56700a95bfe" } } ], "instock":false, "launch_date":"2016-07-07", "price_in_usd":101, "size":32, "tags":[ "redmi" ], "title":"Galaxy Note", "updated_at":"2020-05-11T14:56:10.946Z", "updated_by":"blt42e55757d70d5f81026a2b9f", "url":"/mobiles/galaxy-note", "publish_details":{ "environment":"blta39a4441696e35e0", "locale":"en-us", "time":"2020-05-11T14:56:31.536Z", "user":"blt42e55757d70d5f81026a2b9f" } }, { "_version":3, "locale":"en-us", "uid":"blt6549021b3bbeae5c", "ACL":{ }, "_in_progress":false, "additional_info":[ { "rating":{ "stars":1 } }, { "deals":{ "deal_name":"Black Friday Deal", "deal_details":"If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons":[ { "special_coupons":{ "special_coupon_name":"Friday Bumper Coupon", "special_coupon_details":"Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate":70 } }, { "faqs":{ "coupon_faqs":[ { "question":"How to avail coupon benefits?", "answer":"

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question":"Where can I find the coupons I collected?", "answer":"

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question":"Can you collect a coupon first and purchase an item later?", "answer":"

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products":{ "products":[ { "uid":"bltdbe63e789fd3d08e", "_content_type_uid":"product" } ], "home_appliances":[ { "uid":"bltee5deb99c3be1b75", "_content_type_uid":"electronics" }, { "uid":"blt2349e9c0b7ce06fa", "_content_type_uid":"electronics" }, { "uid":"blt7375bb3c0e4859de", "_content_type_uid":"electronics" }, { "uid":"blt44857e1ae5e9e272", "_content_type_uid":"kitchen_appliances" }, { "uid":"blt49139d483f5799bc", "_content_type_uid":"kitchen_appliances" }, { "uid":"blt1ecc761f990dc547", "_content_type_uid":"kitchen_appliances" } ] } } ], "bank_offers":[ { "bank":[ { "uid":"bltfbe674ca5af1ffa3", "_content_type_uid":"bank" } ], "card_type":[ "Debit Card" ], "discount_in_percentage":12 }, { "bank":[ { "uid":"bltd477bad133866222", "_content_type_uid":"bank" } ], "card_type":[ "Debit Card" ], "discount_in_percentage":10 } ], "brand":[ { "uid":"blte6095f030e4b7a30", "_content_type_uid":"brand" } ], "categories":[ { "uid":"blt9d72fa3afc11d27f", "_content_type_uid":"category" } ], "color":"Black", "created_at":"2020-05-10T13:09:01.499Z", "created_by":"blt42e55757d70d5f81026a2b9f", "description":"

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images":[ { "uid":"bltc4f54f7ce3155b0e", "created_at":"2019-08-16T08:05:15.889Z", "updated_at":"2019-08-16T08:05:15.889Z", "created_by":"bltcd82b2c6bf913241", "updated_by":"bltcd82b2c6bf913241", "content_type":"image/jpeg", "file_size":"48163", "tags":[ ], "filename":"iphone7.jpg", "url":"https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL":[ ], "is_dir":false, "_version":1, "title":"iphone7.jpg", "publish_details":{ "environment":"blta39a4441696e35e0", "locale":"en-us", "time":"2019-08-19T12:28:56.964Z", "user":"blt587a89fc7883c56700a95bfe" } } ], "instock":true, "launch_date":"2016-09-07", "price_in_usd":749, "size":128, "tags":[ ], "title":"iPhone 7 128GB", "updated_at":"2020-05-11T14:29:53.230Z", "updated_by":"blt42e55757d70d5f81026a2b9f", "url":"/mobiles/iphone-7", "publish_details":{ "environment":"blta39a4441696e35e0", "locale":"en-us", "time":"2020-05-11T14:30:07.305Z", "user":"blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Array Equals Operator Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={ "group_UID.field_UID": { "$in": [ value1, value2, ...] } }` Get entries where the value of a field, within a Group field, matches any of the given values. This parameter will compare field values of entries to that of the values provided in the condition. This query is specifically for fields that are part of the Group field. This query will work for entries only. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Card Type ("uid":"card\_type"). If, for instance, you want to retrieve the entries in which the values for the Card Type field are ‘Credit Card’ and 'Debit Card', use the following value in the query parameter: {"bank\_offers.card\_type": {"$in": \["Credit Card", "Debit Card"\]}} ##### Array Equals Operator Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Array Equals Operator Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={ "modular_block_UID.block_UID.field_UID": { "$in": [ value1, value2, ...] } }` Get entries where the value of a field within Modular Blocks matches to any of the given values. This query is specifically for fields that are part of any block within a Modular Block field. This query will work for entries only. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Deals ("uid":"deals") block. And, within this Deals block, we have a field named Deal Name ("uid":"deal\_name"). If, for instance, you want to retrieve the entries in which the values for the Deal Name field are 'Christmas Deal’ and ‘Summer Deal', use the following value in the query parameter: {"additional\_info.deals.deal\_name": {"$in": \["Christmas Deal", "Summer Deal"\]}} #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Array Not-equals Operator ### Array Not-equals Operator **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={ "field_UID": { "$nin": [ value1, value2, ...]}}` Get all entries in which the value of a field does not match to any of the given values. This parameter will compare field values of entries to that of the values provided in the condition, and the query will retrieve entries that have field values that does not match to any of the values provided. This query will work for entries only. **Example:** In the Product content type, you have a field named Price in USD. Now, you need to retrieve the entries where the field value does not fall in the given set. You can send the parameter as: { "price\_in\_usd": { "$nin": \[ 101, 749 \] } } This will give you all the entries that do not have the value for Price in USD set to '101' or '749'. ##### Array Not-equals Operator Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Array Not-equals Operator Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={ "group_UID.field_UID": { "$nin": [ value1, value2, ...]}}` Get entries in which the value of a field does not match any of the values provided in the condition. This query is specifically for fields that are part of the Group field. This query will work for entries only. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Card Type ("uid":"card\_type"). If, for instance, you want to retrieve the entries in which the values for the Card Type field are _NOT_ 'Debit Card', use the following value in the query parameter: {"bank\_offers.card\_type": {"$nin": \["Debit Card"\]}} ##### Array Not-equals Operator Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Array Not-equals Operator Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={ "modular_block_UID.block_UID.field_UID": { "$nin": [ value1, value2, ...]}}` Get entries where the values of the fields within Modular Blocks does not match the condition in the query. This query is specifically for fields that are part of any block within a Modular Block field. This query will work for entries only. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Deals ("uid":"deals") block. And, within this Deals block, we have a field named Deal Name ("uid":"deal\_name"). If, for instance, you want to retrieve the entries in which the values for the Deal Name field are _NOT_ 'Christmas Deal’ and ‘Summer Deal', use the following value in the query parameter: { "additional\_info.deals.deal\_name": { "$nin": \[ "Christmas Deal", "Summer Deal" \] } } #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (optional) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Include Reference ### Include Reference **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&include[]={reference_field_UID}` When fetching an entry, the content of referred entries that are part of the parent entry is NOT included in the Response body; you only get their UIDs. To include the content of the referred entries in your response, you need to use the include\[\] parameter and specify the UID of the reference field as value.The API request should be as follows: https://cdn.contentstack.io/v3/content\_types/product/entries?include\[\]={reference\_field\_UID. This query will work for entries only. **Example:** In the Product content type, there is a reference field called Categories, which refers entries of another content type. Let’s assume that you had created an entry for the Product content type, and the value selected in the Categories field was ‘Mobiles’. If you fetch the entry using the [Get a Single Entry](/docs/developers/apis/content-delivery-api#get-a-single-entry) API request, you would get all the details of the entry in the response, but the value against the Categories field would be UID of the referenced entry (i.e., UID of the ‘Mobiles’ entry in this case). In order to fetch the details of the entry used in the Categories reference field, you need to use the include\[\] parameter in the following manner: https://cdn.contentstack.io/v3/content\_types/product/entries?include\[\]=categories In case you wish to fetch the data of the entries of multiple reference fields, use the include\[\] parameter in the following manner: https://cdn.contentstack.io/v3/content\_types/product/entries?include\[\]=categories&include\[\]=brands **Note:** * The maximum reference depth limit to which a multiple content type referencing Reference field works is **3 levels** deep. * A maximum of **100 reference** paths can be queried in a single request using the include\[\] parameter. ##### Include Reference Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **include[]** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "locale": "en-us", "title": "Mobiles", "description": "

    Find the latest smartphones of 2017 by leading brands at one stop. We cover all phones from all the brands to help you to buy the latest mobile in India.

    ", "tags": [], "ACL": {}, "uid": "blt9d72fa3afc11d27f", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:19:32.498Z", "updated_at": "2019-08-16T08:19:32.498Z", "_content_type_uid": "category", "_version": 1, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:29.103Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "locale": "en-us", "title": "Mobiles", "description": "

    Find the latest smartphones of 2017 by leading brands at one stop. We cover all phones from all the brands to help you to buy the latest mobile in India.

    ", "tags": [], "ACL": {}, "uid": "blt9d72fa3afc11d27f", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:19:32.498Z", "updated_at": "2019-08-16T08:19:32.498Z", "_content_type_uid": "category", "_version": 1, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:29.103Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "locale": "en-us", "title": "Bestseller", "description": "

    The top-selling products based on the currently trend in the market.

    ", "tags": [], "ACL": {}, "uid": "blt9fa0f59d03862aa7", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:19:30.742Z", "updated_at": "2019-08-16T08:19:30.742Z", "_content_type_uid": "category", "_version": 1, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:29.103Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "locale": "en-us", "title": "Mobiles", "description": "

    Find the latest smartphones of 2017 by leading brands at one stop. We cover all phones from all the brands to help you to buy the latest mobile in India.

    ", "tags": [], "ACL": {}, "uid": "blt9d72fa3afc11d27f", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:19:32.498Z", "updated_at": "2019-08-16T08:19:32.498Z", "_content_type_uid": "category", "_version": 1, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:29.103Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "locale": "en-us", "title": "Bestseller", "description": "

    The top-selling products based on the currently trend in the market.

    ", "tags": [], "ACL": {}, "uid": "blt9fa0f59d03862aa7", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:19:30.742Z", "updated_at": "2019-08-16T08:19:30.742Z", "_content_type_uid": "category", "_version": 1, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:29.103Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "locale": "en-us", "title": "Mobiles", "description": "

    Find the latest smartphones of 2017 by leading brands at one stop. We cover all phones from all the brands to help you to buy the latest mobile in India.

    ", "tags": [], "ACL": {}, "uid": "blt9d72fa3afc11d27f", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:19:32.498Z", "updated_at": "2019-08-16T08:19:32.498Z", "_content_type_uid": "category", "_version": 1, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:29.103Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "locale": "en-us", "title": "Mobiles", "description": "

    Find the latest smartphones of 2017 by leading brands at one stop. We cover all phones from all the brands to help you to buy the latest mobile in India.

    ", "tags": [], "ACL": {}, "uid": "blt9d72fa3afc11d27f", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:19:32.498Z", "updated_at": "2019-08-16T08:19:32.498Z", "_content_type_uid": "category", "_version": 1, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:29.103Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "locale": "en-us", "title": "Mobiles", "description": "

    Find the latest smartphones of 2017 by leading brands at one stop. We cover all phones from all the brands to help you to buy the latest mobile in India.

    ", "tags": [], "ACL": {}, "uid": "blt9d72fa3afc11d27f", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:19:32.498Z", "updated_at": "2019-08-16T08:19:32.498Z", "_content_type_uid": "category", "_version": 1, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:29.103Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "locale": "en-us", "title": "Bestseller", "description": "

    The top-selling products based on the currently trend in the market.

    ", "tags": [], "ACL": {}, "uid": "blt9fa0f59d03862aa7", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:19:30.742Z", "updated_at": "2019-08-16T08:19:30.742Z", "_content_type_uid": "category", "_version": 1, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:29.103Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "locale": "en-us", "title": "Mobiles", "description": "

    Find the latest smartphones of 2017 by leading brands at one stop. We cover all phones from all the brands to help you to buy the latest mobile in India.

    ", "tags": [], "ACL": {}, "uid": "blt9d72fa3afc11d27f", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:19:32.498Z", "updated_at": "2019-08-16T08:19:32.498Z", "_content_type_uid": "category", "_version": 1, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:29.103Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Include Reference Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&include[]={reference_group_UID.field_UID OR group_uid.reference_group_UID.field_uid}` If the reference field is part of a Group field, you need to use the Group field UID as well as the reference field UID using a dot operator. This query will work for entries only. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a Reference field named Bank ("uid":"bank"). If, for instance, you want to retrieve entries and include the data of the reference field as well, you need to use the include\[\] parameter in the following manner: https://cda.contentstack.io/v3/content\_types/product/entries?include\[\]=bank\_offers.bank ##### Include Reference for Nested Referenced Field In case the referenced entry further has reference to another entry (nested referencing), you can use the dot operator to fetch the content of the nested references as well. This query will work for entries only. **Example:** Consider that you have a content type named ‘Blogs’ which has two reference fields (‘Authors’ and ‘Related Articles’) referring to the ‘Authors’ and ‘Blogs’ content types (self-referencing), respectively. So, we have the following reference relationships between the content types: * ‘Blogs’ refers to ‘Author’ content type * ‘Blogs’ refers to ‘Blogs’ content type (self-referencing) Now, consider that you want to retrieve an entry of the ‘Blogs’ content type along with the data of the author (details from the ‘Author’ content type) who authored the entry. You also want to fetch the data of the authors who wrote the ‘Related Articles’ as well that are referenced in this entry, (details from the ‘Blogs’ content type). In this case, you need to use related\_articles.authors in the include\[\] parameter as follows: https://cdn.contentstack.io/v3/content\_types/content\_type\_uid/entries?include\[\]=authors&include\[\]=related\_articles.authors ##### Include Reference Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **include[]** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "locale": "en-us", "title": "iPhone 7 128GB", "url": "/mobiles/iphone-7", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [], "price_in_usd": 749, "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "launch_date": "2016-09-07", "instock": true, "tags": [], "size": 128, "color": "Black", "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } } ], "bank_offers": [ { "bank": [], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 } ], "ACL": {}, "uid": "bltbd92ac498e3d5f96", "created_by": "bltcd82b2c6bf913241", "updated_by": "blt587a89fc7883c56700a95bfe", "created_at": "2019-08-16T08:19:20.072Z", "updated_at": "2019-08-19T13:53:16.240Z", "_version": 11, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T13:53:19.611Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "locale": "en-us", "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } } ], "bank_offers": [ { "bank": [], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "ACL": {}, "uid": "bltf2fa776b05a127a2", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:19:21.851Z", "updated_at": "2019-08-16T08:19:48.548Z", "_version": 2, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T11:44:59.974Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "locale": "en-us", "title": "iPhone 7 64GB", "url": "/mobiles/iphone-7", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [], "price_in_usd": 649, "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "launch_date": "2016-09-07", "instock": true, "tags": [], "size": 32, "color": "Rose Gold", "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } } ], "bank_offers": [ { "bank": [], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "ACL": {}, "uid": "blt70cc672f4f806d3e", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:19:23.624Z", "updated_at": "2019-08-16T08:19:46.765Z", "_version": 2, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T11:44:59.974Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "locale": "en-us", "title": "Redmi Note Prime", "url": "/redmi-note-prime", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [], "price_in_usd": 117.3, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "size": 16, "color": "Black", "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } } ], "bank_offers": [ { "bank": [], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "ACL": {}, "uid": "blt4f1fd991ec80e52f", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:19:25.397Z", "updated_at": "2019-08-16T08:19:44.984Z", "_version": 2, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T11:44:59.974Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "locale": "en-us", "title": "Redmi Note 3", "url": "/mobiles/redmi-note-3", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [], "price_in_usd": 146, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-03-09", "instock": true, "tags": [ "redmi", "smart" ], "size": 16, "color": "Gold", "additional_info": [ { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } }, { "rating": { "stars": 5 } } ], "bank_offers": [ { "bank": [], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "ACL": {}, "uid": "blta278bb5672180c94", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:19:27.182Z", "updated_at": "2019-08-16T08:19:43.214Z", "_version": 2, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T11:44:59.974Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "locale": "en-us", "title": "Galaxy J1", "url": "/mobiles/galaxyj1", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [], "price_in_usd": 159.78, "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "launch_date": "2017-01-06", "instock": true, "tags": [], "size": 8, "color": "Black", "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } } ], "bank_offers": [ { "bank": [], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "ACL": {}, "uid": "bltf8ab1ad67af3c66b", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:19:28.965Z", "updated_at": "2019-08-16T08:19:41.430Z", "_version": 2, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T11:44:59.974Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "locale": "en-us", "title": "Galaxy Note", "url": "/mobiles/galaxy-note", "description": "

    Snapdragon

    ", "size": 32, "color": "Gold", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [], "price_in_usd": 101, "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "launch_date": "2016-07-07", "instock": false, "tags": [ "redmi" ], "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products." } } ], "bank_offers": [ { "bank": [], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "ACL": {}, "uid": "blt5b85ef3b0587565c", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:19:18.286Z", "updated_at": "2019-08-16T08:19:39.630Z", "_version": 2, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T11:44:59.974Z", "user": "blt587a89fc7883c56700a95bfe" } } ] } ``` ### Include Reference Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&include[]={modular_block_UID.block_UID.reference_field_uid}` If the reference field is part of a Modular Blocks field, you need to use the Modular Blocks UID, Block UID, as well as the reference field UID using a dot operator. This query will work for entries only. **Example:** In the Products’ content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Related Products ("uid":"related\_products") block. And, within this Block field, we have a field named Products ("uid":"products"). If, for instance, you want to retrieve entries and include the data of the reference field, you need to use the include\[\] parameter in the following manner: https://cda.contentstack.io/v3/content\_types/product/entries?include\[\]=additional\_info.related\_products.products #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **include[]** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" }, "_content_type_uid": "product" }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "_content_type_uid": "product", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "_content_type_uid": "product", "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" }, "_content_type_uid": "product" }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" }, "_content_type_uid": "product" }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "_content_type_uid": "product", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" }, "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" }, "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" }, "_content_type_uid": "product" }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "_content_type_uid": "product", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" }, "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Include All References ### Include all references **GET** `/content_types/{content_type_uid}/entries?include_all=true&include_all_depth=3` When fetching an entry or a list of entries, the referenced entries are not included in the response by default—you only get their UIDs. To retrieve the content of referenced entries (up to **depth 1**), use the include\_all=true parameter. To fetch deeper references, use the include\_all\_depth parameter to specify the depth (up to **5 levels**). Each level reflects a reference chain—for example, an entry referencing a blog (level 1), which references articles (level 2), and further, articles linking to authors (level 3). **Note**: * The maximum allowed depth of **5** is applicable throughout your organization; exceeding this limit will result in an error. * The maximum number of reference paths that can be retrieved in a single request is **100**, regardless of the depth specified. If the number of reference paths exceeds 100, the API returns an error. To avoid this, reduce the value of the include\_all\_depth parameter and try again. * The include\_all parameter functions only with a delivery token. **Example API Request**: ``` https://cdn.contentstack.io/v3/content_types/home/entries/?include_all=true&include_all_depth=3 ``` #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **include_all** (required) Set this to true to include referenced entries. - **include_all_depth** (optional) Enter a value between 1 to 5 to specify levels of referenced entries to include in the response. - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "uid": "blt7c8c0ba8b6cd6cc8", "_version": 2, "locale": "en-us", "ACL": {}, "_in_progress": false, "blog_list": [ { "_content_type_uid": "blog", "uid": "blt264df199fd36c703", "title": "Blog Landing Page", "article_list": [ { "_content_type_uid": "article", "uid": "blt6203ac40fb15299b", "title": "Article Landing Page", "author": [ { "_content_type_uid": "author", "uid": "blt268a4358bbea44fb", "title": "Author Profile", "tags": [], "locale": "en-us", "created_by": "blte93d4119f79db761", "updated_by": "blte93d4119f79db761", "created_at": "2024-10-24T05:54:27.194Z", "updated_at": "2024-10-24T05:54:27.194Z", "ACL": {}, "_version": 1, "_in_progress": false, "publish_details": { "time": "2024-10-24T05:54:46.614Z", "user": "blte93d4119f79db761", "environment": "blta39a4441696e35e0", "locale": "en-us" } } ], "tags": [], "locale": "en-us", "created_by": "blte93d4119f79db761", "updated_by": "blte93d4119f79db761", "created_at": "2024-10-24T05:54:07.348Z", "updated_at": "2024-10-24T05:54:31.465Z", "ACL": {}, "_version": 2, "_in_progress": false, "publish_details": { "time": "2024-10-24T05:54:46.511Z", "user": "blte93d4119f79db761", "environment": "blta39a4441696e35e0", "locale": "en-us" } } ], "tags": [], "locale": "en-us", "created_by": "blte93d4119f79db761", "updated_by": "blte93d4119f79db761", "created_at": "2024-10-24T05:53:45.648Z", "updated_at": "2024-10-24T05:54:10.953Z", "ACL": {}, "_version": 2, "_in_progress": false, "publish_details": { "time": "2024-10-24T05:54:46.144Z", "user": "blte93d4119f79db761", "environment": "blta39a4441696e35e0", "locale": "en-us" } } ], "created_at": "2024-10-24T05:53:29.549Z", "created_by": "blte93d4119f79db761", "tags": [], "title": "Home Page", "updated_at": "2024-10-24T05:53:52.932Z", "updated_by": "blte93d4119f79db761", "publish_details": { "time": "2024-10-24T05:54:46.012Z", "user": "blte93d4119f79db761", "environment": "blta39a4441696e35e0", "locale": "en-us" }, "_embedded_items": {} } ] } ``` ## Reference Search Equals ### Reference Search Equals **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"reference_field_uid":{"$in_query":{"referenced_content_type's_field_uid":"value"}}}` Get entries having values based on referenced fields. This query retrieves all entries that satisfy the query conditions made on referenced fields. This query will work for entries only. **Example:** In the Product content type, if you wish to retrieve all entries that have their brand (Reference field) title set to Apple Inc. So, the query that needs to be run is given below: {"brand": { "$in\_query": { "title": "Apple Inc."}}} If you have enabled multiple content type referencing, you need to mention the content type UID of the parent content type as follows: {"brand":{"$in\_query":{"title":"Apple Inc.", "\_content\_type\_uid":"brand"}, "\_content\_type\_uid":"product"}} You can use queries within this query (nested querying) in order to query on the referred entries. In this case, the syntax of the query will be as follows: * General query: {"reference\_field\_uid":{"$in\_query":{"referred\_content\_type's\_field\_uid":{"query\_to\_be\_applied"}}}} * Multiple content type reference query: {"reference\_field\_uid":{"$in\_query":{"referred\_content\_type's\_field\_uid":{"query\_to\_be\_applied"}}}, "\_content\_type\_uid":"UID\_of\_referred\_content\_type"} Additionally, to retrieve entries that also include references to entries of multiple content types, you need to specify the content type UIDs of all the referred entries when querying. For example, “Parent Reference” has a Reference field that points to “Reference content type 1” and “Reference content type 1” has a Reference field that points to both “Reference content type 2” and “Reference content type 3”. So, to retrieve an entry in “Parent Reference” that has referred to an entry of “Reference content type 1” whose Reference field has referred an entry titled “Sample” of “Reference content type 2”. The query format is as follows: * General query: {"referred\_parent\_content\_type\_field\_uid": {"$in\_query": {"referred\_content\_type\_2\_field\_uid": { "$in\_query": {"title": "Sample"}}}}} * Multiple content type reference query: {"referred\_parent\_content\_type\_field\_uid": {"$in\_query": {"referred\_content\_type\_2\_field\_uid": { "$in\_query": {"title": "Sample", "\_content\_type\_uid": "referred\_content\_type\_3\_uid"} }, "\_content\_type\_uid": "referred\_content\_type\_2\_uid"}, "\_content\_type\_uid": "referred\_parent\_content\_type\_uid"}} ##### Reference Search Equals for Nested Querying You can use queries within this query (nested querying) in order to query on the referred entries.This query will work for entries only. The syntax of the query will be as follows: * General query: {"reference\_field\_uid": { "$in\_query": { "referred\_fieldname": {"query\_to\_be\_applied"}}}} * Multiple content type referencing query: {"reference\_field\_uid": { "$in\_query": { "referred\_fieldname": {"query\_to\_be\_applied"}}, "\_content\_type\_uid ":"UID\_of\_parent\_content\_type"}} **Example**: If you want to retrieve all entries that have referenced entries with title that starts with ‘S’ within the frequently\_bought\_together field, you need to run the query given below: * General query: {"frequently\_bought\_together": {"$in\_query": {"title": {"$regex": "^s", "$options": "i"}}}} * Multiple content type referencing query: {"frequently\_bought\_together": {"$in\_query": {"title": {"$regex": "^a", "$options": "i"}, "\_content\_type\_uid": "electronics"}, "\_content\_type\_uid": "kitchen\_appliances"}} In the above query, ‘[Search by Regex](#search-by-regex)’ query has been applied on the referred field. Other queries that can be applied are: [Equals Operator](#equals-operator), [Equals Within Group Operator](#equals-operator-within-group), [Not-equals Operator](#not-equals-operator), [Array Equals Operator,](#array-equals-operator) [Array Not-equals Operator](#array-not-equals-operator), [AND Operator](#and-operator), [OR Operator](#or-operator), [Less Than](#less-than), [Less Than Or Equal To](#less-than-or-equal-to), [Greater Than](#greater-than), [Greater Than Or Equal To](#greater-than-or-equal-to), and [Exists](#exists). ##### Reference Search Equals Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Reference Search Equals Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"group_field_id"."reference_field_uid":{"$in_query":{"referenced_content_type's_group_uid.field_uid":"value"}}}` Get entries having values based on referenced fields. This query retrieves all entries that satisfy query conditions made on referenced fields. If the reference field is part of a Group field, you need to mention the Group field UID as well as the reference field UID using a dot operator, as given below. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a Reference field named Bank ("uid":"bank"). If, for instance, you want to retrieve the entries in which the value for the Bank field is ‘Citigroup,’ use the following value in the query parameter: * General query: {"bank\_offers.bank": {"$in\_query": { "title": "Citigroup"}}} * Multiple content type referencing query: {"bank\_offers.bank":{"$in\_query":{"title":"Wells Fargo", "\_content\_type\_uid": "bank"} , "\_content\_type\_uid": "blog"}} ##### Reference Search Equals Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. #### Headers - **api_key** (required) Enter the API key of stack of which you wish to retrieve the content types. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Reference Search Equals Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"modular_block_uid.block_uid.reference_field_uid":{"$in_query":{"referenced_content_type's_field_uid":"value"}}}` Get entries having values based on referenced fields. This query retrieves all entries that satisfy query conditions made on referenced fields.If the reference is part of a Modular Blocks field, you need to mention the Modular Blocks UID, Block UID, as well as the reference field UID using a dot operatorNote that this query will work for entries only. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Related Products ("uid":"related\_products") block. And, within this Related Products block, we have a field named Products ("uid":"products"). If, for instance, you want to retrieve the entries in which the values for the Title field is iPhone 7 128GB, use the following value in the ‘query’ parameter: * General query: {"additional\_info.related\_products.products": {"$in\_query": { "title": "iPhone 7 128GB"}}} * Multiple content type referencing query: {"additional\_info.related\_products.products":{"$in\_query":{"title":"iPhone 7 128GB", "\_content\_type\_uid": "product"}, "\_content\_type\_uid": "electronics"}} #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of stack of which you wish to retrieve the content types. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Reference Search Not-equals ### Reference Search Not-equals **GET** `/content_types/{content_type_uid}/entries?environment={environment_name}&locale={locale_code}&query={"reference_field_uid":{"$nin_query":{"referenced_content_type's_field_uid":"value"}}}` Get entries having values based on referenced fields. This query works the opposite of $in\_query and retrieves all entries that does not satisfy query conditions made on referenced fields. Note that this query will work for entries only. **Example:** Let’s say you wish to retrieve all entries that have brand names other than Apple Inc. So, the query that needs to be made is given below: * General query: {"brand": {"$nin\_query": {"title": "Apple Inc."}}} * Multiple content type referencing query: { "brand": {"$nin\_query": {"title": "Apple Inc.", "\_content\_type\_uid": "UID\_of\_referred\_content\_type"}, "\_content\_type\_uid": "UID\_of\_parent\_content\_type"}} **Note:** When querying on Reference field, users need to specify the Content Type UID (using the\_content\_type\_uid parameter) of entry to which the Reference field belongs to. ##### Reference Search Not-equals Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **environment** (required) Enter the name of the environment of which the entries needs to be included. - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Reference Search Not-equals Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"group_field_id"."reference_field_uid":{"$nin_query":{"referenced_content_type's_group_uid.field_uid":"value"}}}` Get entries having values based on referenced fields. This query works the opposite of $in\_query and retrieves all entries that does not satisfy query conditions made on referenced fields.Note that this query will work for entries only.If the reference is part of a Group field, you need to use the Group field UID as well as the reference field UID using a dot operator. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a Reference field named Bank ("uid":"bank"). If, for instance, you want to retrieve the entries in which the value for the Bank field is _NOT_ ‘Citigroup', use the following query: * General query: {"bank\_offers.bank": {"$nin\_query": {"title": "Citigroup"}}} * Multiple content type query: {"bank\_offers.bank": {"$nin\_query": {"title": "Citigroup", "\_content\_type\_uid": "UID\_of\_referred\_content\_type"}, "\_content\_type\_uid": "UID\_of\_parent\_content\_type"}} ##### Reference Search Not-equals Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the reference field. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Reference Search Not-equals Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"modular_block_uid.block_uid.reference_field_uid":{"$nin_query":{"referenced_content_type's_field_uid":"value"}}}` Get entries having values based on referenced fields. This query works the opposite of $in\_query and retrieves all entries that does not satisfy query conditions made on referenced fields. **Note:** This query will work for entries only. If the reference is part of a Modular Blocks field, you need to use the Modular Blocks UID, Block UID, as well as the reference field UID using a dot operator. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Related Products ("uid":"related\_products") block. And, within this Block field, we have a field named Products ("uid":"products"). If, for instance, you want to retrieve the entries in which the value for the Title field is _NOT_ ‘iPhone 7 128GB', use the following query: * General query: { "additional\_info.related\_products.products": {"$nin\_query": {"title": "iPhone 7 128GB"}}} * Multiple content type referencing query: { "additional\_info.related\_products.products": {"$nin\_query": {"title": "iPhone 7 128GB", "\_content\_type\_uid": "UID\_of\_referred\_content\_type"}, "\_content\_type\_uid": "UID\_of\_parent\_content\_type"}} #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Search by Regex ### Search by Regex **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={ "field_UID": { "$regex": "value" } }` Get entries by using regular expressions to query fields of a content type. These regex queries will help to retrieve all the entries of a content type that have field values matching the condition provided in the query parameter.This query will work for both entries as well as assets. **Example:** In the Product content type, you have a field named Color ("uid":"color") in your content type, and you want to retrieve all the entries within this content type that have values for this field starting with 'Bl'. You can use the parameter as: { "color": { "$regex": "^Bl" } }. Now, in order to perform a case-insensitive search, you can use the $options key to specify any regular expressions options:  { "color": { "$regex": "^bl", "$options": "i" } }. **Tip:** Some useful values for $options are m for making dot match newlines and x for ignoring whitespace in regex. ##### Search by Regex Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Search By Regex Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={ "group_UID.field_UID": { "$regex": "value" } }` Get entries by using regular expressions to query fields of a Group field. These regex queries will help to retrieve all the entries of a content type that have field values matching the condition provided in the query parameter. **Note:** This query is specifically for fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a Reference field named Bank ("uid":"bank"). If, for instance, you want to retrieve the entries in which the value for the Card Type starts with “Credit Card,” use the following value in the query parameter: { "bank\_offers.card\_type": { "$regex": "^Credit Card" } } ##### Search by Regex Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "title": "Redmi Note 3", "url": "/mobiles/redmi-note-3", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "size": 16, "color": "Gold", "images": [ { "uid": "blt9c3dff6e3151d374", "title": "download.jpg", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "content_type": "image/jpeg", "file_size": "5275", "filename": "download.jpg", "ACL": [], "_version": 1, "is_dir": false, "tags": [], "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" }, "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "price_in_usd": 146, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-03-09", "instock": true, "additional_info": [ { "rating": { "stars": 5, "_metadata": { "uid": "csf8f6535afcf26334" } } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50, "_metadata": { "uid": "cs180286fc85d60546" } } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40, "_metadata": { "uid": "cs9f7c67a727d57393" } } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    ", "_metadata": { "uid": "cs19857ac5abc467f3" } }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    ", "_metadata": { "uid": "csc0ada9a8725ff210" } }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    ", "_metadata": { "uid": "cs7a60d1dd3e4327f8" } } ], "_metadata": { "uid": "csb5652c661bc7276c" } } } ], "_metadata": { "uid": "cs5f189ae7f3044866" } } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ], "_metadata": { "uid": "cs4d3587e8e37736ae" } } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12, "_metadata": { "uid": "cs92f2dd7b31db24e8" } } ], "tags": [ "redmi", "smart" ], "locale": "en-us", "uid": "blta250054cfa4f5aab", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt6563a9b067fc1bc9", "created_at": "2020-05-11T14:12:28.805Z", "updated_at": "2021-07-18T15:51:14.934Z", "ACL": {}, "_version": 4, "_in_progress": false, "frequently_bought_together": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ], "product_rating": 5, "helpful_links": { "seller": "https://company-name.com", "return-policy": "https://policies.com" }, "cart_items": { "type": "doc", "attrs": {}, "uid": "f5bb3be707ed4929b5afad253626163d", "children": [ { "type": "p", "attrs": {}, "uid": "df52846a8b554b01831d3c7a2547986b", "children": [ { "text": "Items in your Shopping Cart:" } ] }, { "type": "p", "attrs": {}, "uid": "e32cd5e033a74a4198830b09bfde1918", "children": [ { "text": "" } ] }, { "uid": "690b99c453374f1f9db532c303fe46af", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "bltee5deb99c3be1b75", "locale": "en-us", "content-type-uid": "electronics" }, "children": [ { "text": "" } ] }, { "uid": "ef7011b9481e4ce18df23d9048b61096", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt46128ea08fdeb168", "locale": "en-us", "content-type-uid": "kitchen_appliances" }, "children": [ { "text": "" } ] }, { "uid": "0350a91ca6454ae1aef23b350e820a71", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt1ecc761f990dc547", "locale": "en-us", "content-type-uid": "kitchen_appliances" }, "children": [ { "text": "" } ] }, { "uid": "a3a55e55258d4bcbb8c5ff4c5fe83681", "type": "p", "attrs": {}, "children": [ { "text": "" } ] }, { "uid": "bf32bd0b7ed548f8b331746d50c7cc53", "type": "p", "attrs": {}, "children": [ { "text": "" } ] }, { "uid": "541c8ade61c5475e981272cb4a415dba", "type": "reference", "attrs": { "display-type": "display", "asset-uid": "blt6e0b1713123d2566", "content-type-uid": "sys_assets", "asset-link": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt6e0b1713123d2566/60f44c5180ce947e9b4fbe0b/Logo.png", "asset-name": "Logo.png", "asset-type": "image/png", "type": "asset", "class-name": "embedded-asset", "inline": false }, "children": [ { "text": "" } ] } ], "_version": 4 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2021-07-18T15:51:55.121Z", "user": "blt6563a9b067fc1bc9" } }, { "title": "iPhone 7 128GB", "url": "/mobiles/iphone-7", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "title": "iphone7.jpg", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "content_type": "image/jpeg", "file_size": "48163", "filename": "iphone7.jpg", "ACL": [], "_version": 1, "is_dir": false, "tags": [], "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" }, "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "price_in_usd": 749, "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "launch_date": "2016-09-07", "instock": true, "tags": [], "locale": "en-us", "size": 128, "color": "Black", "additional_info": [ { "rating": { "stars": 1, "_metadata": { "uid": "cscc24c2cc9cb09048" } } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 68, "_metadata": { "uid": "csafb68d37b06d5300" } } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    ", "_metadata": { "uid": "cs17336dc2d6990bc5" } }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    ", "_metadata": { "uid": "cs39abbcbd75de27ed" } }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    ", "_metadata": { "uid": "cs02f8db316b3be669" } } ], "_metadata": { "uid": "cs59ea9c4069a88ddf" } } } ], "_metadata": { "uid": "cs7da177f7ae4e245e" } } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" } ], "_metadata": { "uid": "cs2a9c02cd41711ba1" } } } ], { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 10, "_metadata": { "uid": "cs898e84810f3e2553" } } ], "uid": "blt6549021b3bbeae5c", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt6563a9b067fc1bc9", "created_at": "2020-05-10T13:09:01.499Z", "updated_at": "2021-07-18T15:50:07.899Z", "ACL": {}, "_version": 6, "_in_progress": false, "frequently_bought_together": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ], "product_rating": 5, "helpful_links": { "seller": "https://company-name.com", "return-policy": "https://policies.com" }, "cart_items": { "type": "doc", "attrs": {}, "uid": "16c79b3b075048a9ba829bfd2ab5f948", "children": [ { "type": "p", "attrs": {}, "uid": "dc8342eb5899466ab9dde915dee44646", "children": [ { "text": "Items in your Shopping Cart:" } ] }, { "type": "p", "attrs": {}, "uid": "85ef916a99ee4cb18b40b429ac377626", "children": [ { "text": "" } ] }, { "uid": "1761c3a9ba954bab9e516bf2f498f70b", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt44857e1ae5e9e272", "locale": "en-us", "content-type-uid": "kitchen_appliances" }, "children": [ { "text": "" } ] }, { "uid": "9beb74de52964ccb972c33022f2e7051", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt10e68dbbfc14b75b", "locale": "en-us", "content-type-uid": "electronics" }, "children": [ { "text": "" } ] }, { "uid": "33c00b31c0224c749d28837090cafe51", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt49139d483f5799bc", "locale": "en-us", "content-type-uid": "kitchen_appliances" }, "children": [ { "text": "" } ] }, { "uid": "8d740b6c0a3144ddb82e47d13ae5be35", "type": "p", "attrs": {}, "children": [ { "text": "" } ] }, { "uid": "b578c192d6f6415e9eb6035d915e9769", "type": "p", "attrs": {}, "children": [ { "text": "" } ] }, { "uid": "fa0826918c8a475a8631d49a06aaf375", "type": "reference", "attrs": { "display-type": "display", "asset-uid": "blt6e0b1713123d2566", "content-type-uid": "sys_assets", "asset-link": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt6e0b1713123d2566/60f44c5180ce947e9b4fbe0b/Logo.png", "asset-name": "Logo.png", "asset-type": "image/png", "type": "asset", "class-name": "embedded-asset", "inline": false }, "children": [ { "text": "" } ] } ], "_version": 6 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2021-07-18T15:51:55.129Z", "user": "blt6563a9b067fc1bc9" } }, { "title": "iPhone 7 64GB", "url": "/mobiles/iphone-7", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "title": "Apple-iPhone-SE-Rose-Gold.jpg", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "content_type": "image/jpeg", "file_size": "45091", "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "_version": 1, "is_dir": false, "tags": [], "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" }, "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "price_in_usd": 649, "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "launch_date": "2016-09-07", "instock": true, "tags": [], "locale": "en-us", "size": 32, "color": "Rose Gold", "additional_info": [ { "rating": { "stars": 5, "_metadata": { "uid": "csaf7044f6ec878c06" } } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40, "_metadata": { "uid": "csabd69c10a6d182c0" } } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    ", "_metadata": { "uid": "cs4f42a56dc637cb40" } }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    ", "_metadata": { "uid": "cs043d4c2b3b499e78" } }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    ", "_metadata": { "uid": "cs392b72bdc654c66f" } } ], "_metadata": { "uid": "csfed25618659ed58a" } } } ], "_metadata": { "uid": "cs79b806ce3f9ce242" } } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" }, { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ], "_metadata": { "uid": "csa3614a080ea030c6" } } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60, "_metadata": { "uid": "csdd78a3f3499070db" } }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55, "_metadata": { "uid": "cs011d11b13ff490a9" } } ], "uid": "bltdbe63e789fd3d08e", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt6563a9b067fc1bc9", "created_at": "2020-05-11T12:47:32.533Z", "updated_at": "2021-07-18T15:47:11.766Z", "ACL": {}, "_version": 6, "_in_progress": false, "frequently_bought_together": [ { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" } ], "product_rating": 4, "helpful_links": { "seller": "https://company-name.com", "return-policy": "https://policies.com" }, "cart_items": { "type": "doc", "attrs": {}, "uid": "e2b3c8a0c42b4f9fb951678a6ad1bae6", "children": [ { "type": "p", "attrs": {}, "uid": "cf07af8ac9f34e55ab68b35a3d19756f", "children": [ { "text": "Items in your Shopping Cart:" } ] }, { "type": "p", "attrs": {}, "uid": "1f68ee412830432f88fe96fb6d5445e1", "children": [ { "text": "" } ] }, { "uid": "db7920cc2a5a41faad1d27db252328c0", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt0e302e4595da19c1", "locale": "en-us", "content-type-uid": "electronics" }, "children": [ { "text": "" } ] }, { "uid": "0c3c4dae7837491bb81fce8987768fd6", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt46128ea08fdeb168", "locale": "en-us", "content-type-uid": "kitchen_appliances" }, "children": [ { "text": "" } ] }, { "uid": "b518379240794d1bb1e0124564fddea5", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt44857e1ae5e9e272", "locale": "en-us", "content-type-uid": "kitchen_appliances" }, "children": [ { "text": "" } ] }, { "uid": "d3f73824313046e4a0546f755ed8b871", "type": "p", "attrs": {}, "children": [ { "text": "" } ] }, { "uid": "d5d74e99e7774d97b0650bb09af94fcc", "type": "p", "attrs": {}, "children": [ { "text": "" } ] }, { "uid": "3912e4b364b7475b9063a5912ee3bdc0", "type": "reference", "attrs": { "display-type": "display", "asset-uid": "blt6e0b1713123d2566", "content-type-uid": "sys_assets", "asset-link": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt6e0b1713123d2566/60f44c5180ce947e9b4fbe0b/Logo.png", "asset-name": "Logo.png", "asset-type": "image/png", "type": "asset", "class-name": "embedded-asset", "inline": false }, "children": [ { "text": "" } ] } ], "_version": 6 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2021-07-18T15:51:55.114Z", "user": "blt6563a9b067fc1bc9" } }, { "title": "Redmi Note Prime", "url": "/redmi-note-prime", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "title": "01.jpg", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "content_type": "image/jpeg", "file_size": "145200", "filename": "01.jpg", "ACL": [], "_version": 1, "is_dir": false, "tags": [], "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" }, "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "price_in_usd": 117.3, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Black", "additional_info": [ { "rating": { "stars": 2, "_metadata": { "uid": "cs291c6399e1539311" } } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20, "_metadata": { "uid": "cs2a17f3f059dd9e7b" } } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60, "_metadata": { "uid": "cse8bc70b701541c2b" } } } ], "_metadata": { "uid": "csc9f344e9eed58485" } } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ], "_metadata": { "uid": "cs572e9c4a17ad2692" } } } ], { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24, "_metadata": { "uid": "cs9cc5da2d0bfbc08d" } } ], "uid": "blte63b2ff6f6414d8e", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt6563a9b067fc1bc9", "created_at": "2020-05-11T12:44:49.928Z", "updated_at": "2021-07-18T15:45:50.906Z", "ACL": {}, "_version": 6, "_in_progress": false, "frequently_bought_together": [ { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ], "product_rating": 4, "helpful_links": { "seller": "https://company-name.com", "return-policy": "https://policies.com" }, "cart_items": { "type": "doc", "attrs": {}, "uid": "2b35f3429dca426e9dcfdb614b5ce60f", "children": [ { "type": "p", "attrs": {}, "uid": "833515f543e44c4f99c6e8c406129256", "children": [ { "text": "Items in your Shopping Cart:" } ] }, { "type": "p", "attrs": {}, "uid": "818774a71f8047d990d1a2ab8ad0ee17", "children": [ { "text": "" } ] }, { "uid": "319a19710e0b4601b93bfff2d85cce2b", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt49139d483f5799bc", "locale": "en-us", "content-type-uid": "kitchen_appliances" }, "children": [ { "text": "" } ] }, { "uid": "7d0472d3f4984e19bad7dfc672f2120d", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt10e68dbbfc14b75b", "locale": "en-us", "content-type-uid": "electronics" }, "children": [ { "text": "" } ] }, { "uid": "d69bf28413a645e88da17927341f54be", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt1ecc761f990dc547", "locale": "en-us", "content-type-uid": "kitchen_appliances" }, "children": [ { "text": "" } ] }, { "uid": "1dbc20aa47a349db8f1b1fd3ce192f13", "type": "p", "attrs": {}, "children": [ { "text": "" } ] }, { "uid": "df6e776bc88142f9a391c7d37b931852", "type": "p", "attrs": {}, "children": [ { "text": "" } ] }, { "uid": "bf5295ea97c34661b26b21d735136d4d", "type": "reference", "attrs": { "display-type": "display", "asset-uid": "blt6e0b1713123d2566", "content-type-uid": "sys_assets", "asset-link": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt6e0b1713123d2566/60f44c5180ce947e9b4fbe0b/Logo.png", "asset-name": "Logo.png", "asset-type": "image/png", "type": "asset", "class-name": "embedded-asset", "inline": false }, "children": [ { "text": "" } ] } ], "_version": 6 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2021-07-18T15:51:55.101Z", "user": "blt6563a9b067fc1bc9" } }, { "title": "Galaxy J1", "url": "/mobiles/galaxy-j1", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "size": 8, "color": "Black", "images": [ { "uid": "blt11b00b9a335ed526", "title": "samsung-galaxy-j1.jpg", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "content_type": "image/jpeg", "file_size": "166189", "filename": "samsung-galaxy-j1.jpg", "ACL": [], "_version": 1, "is_dir": false, "tags": [], "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" }, "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 159.78, "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "launch_date": "2017-01-06", "instock": true, "additional_info": [ { "rating": { "stars": 4, "_metadata": { "uid": "cs27ff637006a76423" } } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70, "_metadata": { "uid": "cs20f74cc5a6e04d6c" } } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    ", "_metadata": { "uid": "cs87b6d2e8a1d339de" } }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    ", "_metadata": { "uid": "cs88ecda7859078845" } }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    ", "_metadata": { "uid": "cs80452887bd7278d8" } } ], "_metadata": { "uid": "cs0780c9446a68875c" } } } ], "_metadata": { "uid": "cs04a24121462c26a1" } } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" }, { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ], "_metadata": { "uid": "cs3dbebc9a30618e31" } } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 25, "_metadata": { "uid": "csb29efc6f8ef02d01" } }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 30, "_metadata": { "uid": "csbb444f7ec5d40610" } } ], "tags": [], "locale": "en-us", "uid": "blt1e1d4385e656835a", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt6563a9b067fc1bc9", "created_at": "2020-05-11T13:32:18.406Z", "updated_at": "2021-07-18T15:44:32.861Z", "ACL": {}, "_version": 6, "_in_progress": false, "frequently_bought_together": [ { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" } ], "product_rating": 2, "helpful_links": { "seller": "https://company-name.com", "return-policy": "https://policies.com" }, "cart_items": { "type": "doc", "attrs": {}, "uid": "b1698509b1544b7db2dba99ca1f4f8ec", "children": [ { "type": "p", "attrs": {}, "uid": "03a7cd34c2f747ed935796a417f77ad1", "children": [ { "text": "Items in your Shopping Cart:" } ] }, { "type": "p", "attrs": {}, "uid": "7aef68e211cf4368b2915e77a1394cdf", "children": [ { "text": "" } ] }, { "uid": "0316b37defe14122ab8deaab655ccc42", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt44857e1ae5e9e272", "locale": "en-us", "content-type-uid": "kitchen_appliances" }, "children": [ { "text": "" } ] }, { "uid": "19e2c3cb90f742f7a636ba550b2b32bb", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt0e302e4595da19c1", "locale": "en-us", "content-type-uid": "electronics" }, "children": [ { "text": "" } ] }, { "uid": "1ce6281292ff4405912b004db181af1e", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt49139d483f5799bc", "locale": "en-us", "content-type-uid": "kitchen_appliances" }, "children": [ { "text": "" } ] }, { "uid": "21e5c329ca9e45d4ad9714e24836c1a1", "type": "p", "attrs": {}, "children": [ { "text": "" } ] }, { "uid": "5026a2b9171c4dc9a10f51b922dc54ea", "type": "p", "attrs": {}, "children": [ { "text": "" } ] }, { "uid": "91bebb33099748068e8d048be217256f", "type": "reference", "attrs": { "display-type": "display", "asset-uid": "blt6e0b1713123d2566", "content-type-uid": "sys_assets", "asset-link": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt6e0b1713123d2566/60f44c5180ce947e9b4fbe0b/Logo.png", "asset-name": "Logo.png", "asset-type": "image/png", "type": "asset", "class-name": "embedded-asset", "inline": false }, "children": [ { "text": "" } ] } ], "_version": 6 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2021-07-18T15:51:55.144Z", "user": "blt6563a9b067fc1bc9" } } ] } ``` ### Search by Regex Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={ "modular_block_UID.block_UID.field_UID": { "$regex": "value" }}` Get entries by using regular expressions to query fields of a Modular Block. These Regex queries will help to retrieve all the entries of a content type that have field values matching the condition provided in the query parameter. This query will work for entries only and works specifically for fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Deals ("uid":"deals") block. And, within this Deals block, we have a field named Deal Name ("uid":"deal\_name"). If, for instance, you want to retrieve the entries where Deal Name starts with “Christmas Deal,” use the following value in the query parameter: { "additional\_info.deals.deal\_name": { "$regex": "^Christmas Deal" }} #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## AND Operator ### AND operator **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"$and":[{"field1_UID": "value1"},{"field2_UID": "value2"}]}` Get entries that satisfy all the conditions provided in the '$and' query.This query will work for both entries as well as assets. **Example:** Let’s say you want to retrieve entries in which the Title field is set to 'Redmi Note 3' and the Color field is 'Gold'. The query to be used for such a case would be: {"$and":\[{"title": "Redmi Note 3"},{"color": "Gold"}\]} The response will contain the entries where the values for Title is 'Redmi Note 3' and Color is 'Gold'. ##### AND Operator Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### AND Operator Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"$and":[{"group_UID.field1_UID": "value1"},{"group_UID.field2_UID": "value2"}]}` Get entries that satisfy all the conditions provided in the $and query.This query is specifically for entries and works on fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have fields named Card Type ("uid":"card\_type") and Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve the entries in where the value for Card Type is ‘Credit Card’ and ‘Discount in Percentage’ is '12', use the following value in the query parameter: {"$and":\[{"bank\_offers.card\_type": "Credit Card"},{"bank\_offers.discount\_in\_percentage": 12}\]} ##### AND Operator Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### AND Operator Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"$and":[{"modular_block_UID.block_UID.field1_UID": "value1"},{"modular_block_UID.block_UID.field2_UID": "value2"}]}` Get entries that satisfy all the conditions provided in the $and query.This query is specifically for entries and works on fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Deals ("uid":"deals") and Rating ("uid":"rating") blocks. And, within the Deals and Rating blocks, we have the Deal Name ("uid":"deal\_name") and Stars ("uid":"stars") fields, respectively. If, for instance, you want to retrieve the entries in where the values for Deals and Ratings fields are ‘Christmas Deal’ and '2', respectively, use the following value in the query parameter: {"$and":\[{"additional\_info.deals.deal\_name": "Christmas Deal"},{"additional\_info.rating.stars": 2}\]} #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## OR Operator ### OR Operator **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"$or":[{"field1_UID": "value1"},{"field2_UID": "value2"}]}` Get all entries that satisfy at least one of the given conditions provided in the '$or' query. This query will work for both entries as well as assets. **Example:** Let’s say you want to retrieve entries in which either the value for the Color field is 'Gold' or 'Black'. The query to be used for such a case would be: { "$or": \[{ "color": "Gold" }, { "color": "Black" }\] } The response will contain the entries that have their Color fields set to either 'Gold' or 'Black'. ##### OR Operator Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### OR Operator Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"$or":[{"group_UID.field1_UID": "value1"},{"group_UID.field2_UID": "value2"}]}` Get all entries that satisfy at least one of the given conditions provided in the $or query. This query is specifically for entries and works for fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have fields named Card Type ("uid":"card\_type") and Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve the entries where either the value for Card Type is ‘Debit Card’ or the value for Discount in Percentage is '12', use the following value in the query parameter: { "$or": \[{ "bank\_offers.card\_type": "Debit Card" }, { "bank\_offers.discount\_in\_percentage": 12}\]} ##### OR Operator Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### OR Operator Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"$or":[{"modular_block_UID.block_UID.field1_UID": "value1"},{"modular_block_UID.block_UID.field2_UID": "value2"}]}` Get all entries that satisfy at least one of the given conditions provided in the '$or' query. This query is specifically for entries and works on fields that are part of any block within a Modular Block field. **Example:** In the ‘Products’ content type, we have a Modular Group field named ‘Additional Info’ ("uid":"additional\_info") that contains the Deals ("uid":"deals") and Rating ("uid":"rating") blocks. And, within the Deals and Rating blocks, we have the Deal Name ("uid":"deal\_name") and Stars ("uid":"stars") fields, respectively. If, for instance, you want to retrieve the entries where either the value for Deal Name is ‘Christmas Deal’ or the value for Stars is '2', respectively, use the following value in the query parameter: {"$or":\[{"additional\_info.deals.deal\_name": "Christmas Deal"},{"additional\_info.rating.stars": 2}\]} #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Less Than ### Less Than **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"field_UID": { "$lt": "value" }}` Get entries in which the value of a field is lesser than the value provided in the condition. This query will work for both entries as well as assets. **Example:** Let’s say you want to retrieve all the entries that have value of the Price in USD field set to a value that is less than but not equal to 600. You can send the parameter as: { "price\_in\_usd": { "$lt": 600 } } This will give you all the entries of mobile phones costing less than but not equal to $600. Let’s consider another example. You want to retrieve all the entries that have their start date before 8th December, 2017. Now, you need to set this parameter with the date in the ISO Date format as below: { "start\_date": { "$lt": "2017-12-08T00:00:00.000Z" } } This will give you all the entries where the start date is before 8th December, 2017, but you will not get the entries of the same date. **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). ##### Less Than Operator Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Less Than Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"group_UID.field_UID": { "$lt": "value" }}` Get entries in which the value of a field is lesser than the value provided in the condition. This query is specifically for fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve the entries in which the values for the Discount in Percentage field is less than ‘25’, use the following value in the query parameter: { "bank\_offers.discount\_in\_percentage": { "$lt": 25 } } **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). ##### Less Than Operator Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Less Than Operator Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"modular_block_UID.block_UID.field_UID": { "$lt": "value" }}` Get entries in which the value of a field is lesser than the value provided in the condition. This query is specifically for fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Rating ("uid":"rating") block. And, within this Block field, we have a field named Stars ("uid":"stars"). If, for instance, you want to retrieve the entries in which the values for the Stars field is less than ‘3’, use the following value in the query parameter: { "additional\_info.rating.stars": { "$lt": 3 } } **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Less Than Or Equal To ### Less Than or Equal To **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"field_UID": { "$lte": "value" }}` Get entries in which the value of a field is lesser than or equal to the value provided in the condition.This query will work for both entries as well as assets. **Example:** Let’s say you want to retrieve all the entries that have value of the Price in USD field set to a value that is less than or equal to 146. To achieve this, send the parameter as: { "price\_in\_usd": { "$lte": 146 } } This will give you all the entries of mobile phones costing less than and equal to $146. Let’s consider another example. If you want to retrieve all the entries that have their start date before and on 8th December, 2017. Now, you need to set this parameter with the date in the ISO Date format as below: { "start\_date": { "$lte": "2017-11-08T00:00:00.000Z" } } This will give you all the entries before 8th December, 2017, along with the entries of 8th December, 2017. **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). ##### Less Than Or Equal To Operator Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Less Than Or Equal To Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"group_UID.field_UID": { "$lte": "value" }}` Get entries in which the value of a field is lesser than or equal to the value provided in the condition.This query is specifically for fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve the entries in which the values for the Discount in Percentage field is less than or equal to ‘24’, use the following value in the query parameter: { "bank\_offers.discount\_in\_percentage": { "$lte": 27 } } **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). ##### Less Than Or Equal To Operator Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Less Than Or Equal To Operator Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"modular_block_UID.block_UID.field_UID": { "$lte": "value" }}` Get entries in which the value of a field is lesser than or equal to the value provided in the condition.This query is specifically for entries and works on fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Rating ("uid":"rating") block. And, within this Rating block, we have a field named Stars ("uid":"stars"). If, for instance, you want to retrieve the entries in which the values for the Stars field is less than or equal to ‘3’, use the following value in the query parameter: { "additional\_info.rating.stars": { "$lte": 3 } } **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Greater Than ### Greater Than **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"field_UID": { "$gt": "value" }}` Get entries in which the value for a field is greater than the value provided in the condition.This query will work for both entries as well as assets. **Example:** Let’s say you want to retrieve all the entries that have value of the Price in USD field set to a value that is greater than but not equal to 146. You can send the parameter as: { "price\_in\_usd": { "$gt": 146 } } This will give you all the entries of mobile phones costing greater than and not equal to $146. Let’s consider another example. If you want to retrieve all the entries that have their start date later than 8th December, 2017. Now, you need to set this parameter with the date in the ISO Date format as below: { "start\_date": { "$gt": "2017-11-08T00:00:00.000Z" } } This will give you all the entries after 8th December, 2017. **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). ##### Greater Than Operator Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Greater Than Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"group_UID.field_UID": { "$gt": "value" }}` Get entries in which the value for a field is greater than the value provided in the condition.This query is specifically for entries and works on fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve the entries in which the values for the Discount in Percentage field is greater than ‘20’, use the following value in the query parameter: { "bank\_offers.discount\_in\_percentage": { "$gt": 20 } } **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). ##### Greater Than Operator Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Greater Than Operator Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"modular_block_UID.block_UID.field_UID": { "$gt": "value" }}` Get entries in which the value for a field is greater than the value provided in the condition.This query is specifically for entries and works on fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Rating ("uid":"rating") block. And, within this Block field, we have a field named Stars ("uid":"stars"). If, for instance, you want to retrieve the entries in which the values for the Stars field is greater than ‘3’, use the following value in the query parameter: {"additional\_info.rating.stars": {"$gt": 3}} **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Greater Than Or Equal To ### Greater Than or Equal To **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"field_UID": { "$gte": "value" }}` Get entries in which the value of a field is greater than or equal to the value provided in the condition. This query will work for both entries as well as assets. **Example:** Let’s say you want to retrieve all the entries that have value of the Price in USD field set to a value that is greater than or equal to 146. You can send the parameter as: { "price\_in\_usd": { "$gte": 146 } } This will give you all the entries of mobile phones costing greater than and equal to $146. Let’s consider another example. You want to retrieve all the entries that have their start date 8th December, 2017, and later. Now, you need to set this parameter with the date in the ISO Date format as below: { "start\_date": { "$gte": "2017-11-08T00:00:00.000Z" } } This will give you all the entries where the start date falls after 8th December, 2017, along with the entries of the same date. **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). ##### Greater Than Or Equal To Operator Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Greater Than Or Equal To Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"group_UID.field_UID": { "$gte": "value" }}` Get entries in which the value of a field is greater than or equal to the value provided in the condition.This query is specifically for fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve the entries in which the values for the Discount in Percentage field is greater than or equal to ‘20’, use the following value in the query parameter: { "bank\_offers.discount\_in\_percentage": { "$gte": 20 } } **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). ##### Greater Than Or Equal To Operator Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Greater Than Or Equal To Operator Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"modular_block_UID.block_UID.field_UID": { "$gte": "value" }}` Get entries in which the value of a field is greater than or equal to the value provided in the condition. This query is specifically for fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Rating ("uid":"rating") block. And, within this Rating block, we have a field named Stars' ("uid":"stars"). If, for instance, you want to retrieve the entries in which the values for the Stars field is greater than or equal to ‘3’, use the following value in the query parameter: {"additional\_info.rating.stars": {"$gte": 3} **Note:** Avoid using seconds and milliseconds in date/time queries. We recommend to round off to the nearest minute (at most 5 minutes). #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Limit ### Limit **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&limit={limit_value}` The limit parameter will return a specific number of entries in the output. So for example, if the content type contains more than 100 entries and you wish to fetch only the first 2 entries, you need to specify '2' as value in this parameter. This query will work for both entries as well as assets. **Example:** https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&limit=2 **Note**: By default, the limit for response details per request is 100. #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **limit** (required) Enter the maximum number of entries to be returned. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Skip ### Skip **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&skip={skip_value}` The skip parameter will skip a specific number of entries in the output. So, for example, if the content type contains around 12 entries and you want to skip the first 2 entries to get only the last 10 in the response body, you need to specify ‘2’ here.This query will work for both entries as well as assets. **Example:** https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&skip=2 #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **skip** (required) Enter the number of entries to be skipped. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Order by asc ### Order by asc **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&asc={field_UID}` When fetching entries, you can sort them in the ascending order with respect to the value of a specific field in the response body. This query will work for both entries as well as assets. Example: In the Product content type, if you wish to sort the entries with respect to their prices, the parameter can be used as: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&asc=price\_in\_usd This will give you all the entries sorted in the ascending order with respect to the Price in USD field. **Note:** In situations where identical or empty/null values are present in the field selected for sorting, the sorting process may not yield accurate results, potentially leading to duplicate results in the output. To avoid this, consider utilizing fields without duplicate values, or fields that are indexed (for e.g., updated\_at), to effectively sort your data. Alternatively, if you must use the non-indexed fields for sorting, please contact our [Support](mailto:support@contentstack.com) team for assistance in adding indexes to the field and ensuring the correct sorting of your data within the query results. Please note that a maximum of 5 fields can be indexed per Organization. ##### Order by asc Operator Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **asc** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Order by asc Operator Within Group **GET** `/content_types/{content_type_uid}/entries?environment={environment_name}&locale={locale_code}&asc={group_UID.field_UID}` Sort your fetched entries in the ascending order with respect to the value of a specific field in the response body.This query is specifically for entries and works on fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve entries in the ascending order with respect to the Discount in Percentage field, use the following URL: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&asc=bank\_offers.discount\_in\_percentage ##### Order by asc Operator within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **asc** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Order by asc Operator within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&asc={modular_block_UID.block_UID.field_UID}` When fetching entries, you can sort your fetched entries in the ascending order with respect to the values of any block within a Modular Block field. This query is specifically for entries and works on fields that are part of any block within a Modular Block field. **Note:** Currently, this query is not applicable for Reference fields within Modular Blocks. **Example:** In the Products content type, we have a Modular Block field named Additional Info ("uid":"additional\_info") that contains the Rating ("uid":"rating") block. And, within this Rating block, we have a field named Stars ("uid":"stars"). Use the following URL to retrieve entries in ascending order based on the values of the Stars field: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&asc=additional\_info.rating.stars #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries need to be included. Only the entries published in this locale will be displayed. - **asc** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [{ "title": "Galaxy Note", "url": "/mobiles/galaxy-note", "description": "

    Snapdragon

    ", "size": 32, "color": "Gold", "images": [{ "uid": "blt19c34e5374418484", "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "content_type": "image/jpeg", "file_size": "69609", "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "_version": 1, "is_dir": false, "tags": [], "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" }, "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg" }, { "uid": "bltf8c7852efd06d11f", "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "content_type": "image/png", "file_size": "63422", "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "_version": 1, "is_dir": false, "tags": [], "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" }, "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png" } ], "categories": [{ "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 101, "brand": [{ "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" }], "launch_date": "2016-07-07", "instock": false, "tags": [ "redmi" ], "locale": "en-us", "additional_info": [{ "rating": { "stars": 2, "_metadata": { "uid": "cs46f74dadd613e09f" } } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [{ "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50, "_metadata": { "uid": "cs4fec082310f933dc" } } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5, "_metadata": { "uid": "csd636c1a11257a441" } } }, { "faqs": { "coupon_faqs": [{ "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    ", "_metadata": { "uid": "csa2cee03fe308b928" } }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    ", "_metadata": { "uid": "cs0dd7cea1a72d730f" } }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    ", "_metadata": { "uid": "csacf3cdc9a9ac56b9" } } ], "_metadata": { "uid": "cs4d01ac5b84c9adf4" } } } ], "_metadata": { "uid": "csa1a68c5c926c9d9b" } } }, { "related_products": { "products": [{ "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" } ], "home_appliances": [{ "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ], "_metadata": { "uid": "csc9ff9c5b2819355c" } } } ], "bank_offers": [{ "bank": [{ "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" }], "card_type": [ "Debit Card" ], "discount_in_percentage": 8, "_metadata": { "uid": "cse76e89589b3aa0f9" } }], "uid": "bltd8ff819f10c6973b", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt6563a9b067fc1bc9", "created_at": "2020-05-10T13:47:02.576Z", "updated_at": "2021-07-18T15:49:06.250Z", "ACL": {}, "_version": 6, "_in_progress": false, "frequently_bought_together": [{ "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ], "product_rating": 4, "helpful_links": { "seller": "https://company-name.com", "return-policy": "https://policies.com" }, "cart_items": { "type": "doc", "attrs": {}, "uid": "023c0530719c438aafaf7d7afbf10bb5", "children": [{ "type": "p", "attrs": {}, "uid": "642f3257a86c4928a877e9cbd474be2d", "children": [{ "text": "Items in your Shopping Cart:" }] }, { "type": "p", "attrs": {}, "uid": "21faecb3d39d43449fb623994abc780f", "children": [{ "text": "" }] }, { "uid": "10eb3255e63447ffb103d1085608a378", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt10e68dbbfc14b75b", "locale": "en-us", "content-type-uid": "electronics" }, "children": [{ "text": "" }] }, { "uid": "0d99c6ab42d94e92b7149b303c16e655", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt44857e1ae5e9e272", "locale": "en-us", "content-type-uid": "kitchen_appliances" }, "children": [{ "text": "" }] }, { "uid": "4ae0565eab834b14b2f2107f371d28ef", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt1ecc761f990dc547", "locale": "en-us", "content-type-uid": "kitchen_appliances" }, "children": [{ "text": "" }] }, { "uid": "1fc33192c79c4f46be8fa70d17387397", "type": "p", "attrs": {}, "children": [{ "text": "" }] }, { "uid": "e095fce1d1ff45e192502c7a01316f51", "type": "p", "attrs": {}, "children": [{ "text": "" }] }, { "uid": "b56879ccd99c4f339736740a28b8720f", "type": "reference", "attrs": { "display-type": "display", "asset-uid": "blt6e0b1713123d2566", "content-type-uid": "sys_assets", "asset-link": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt6e0b1713123d2566/60f44c5180ce947e9b4fbe0b/Logo.png", "asset-name": "Logo.png", "asset-type": "image/png", "type": "asset", "class-name": "embedded-asset", "inline": false }, "children": [{ "text": "" }] } ], "_version": 6 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2021-07-18T15:51:55.135Z", "user": "blt6563a9b067fc1bc9" } }, { "title": "Redmi Note Prime", "url": "/redmi-note-prime", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [{ "uid": "blt50a7a9dd6866776f", "title": "01.jpg", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "content_type": "image/jpeg", "file_size": "145200", "filename": "01.jpg", "ACL": [], "_version": 1, "is_dir": false, "tags": [], "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" }, "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg" }], "categories": [{ "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "price_in_usd": 117.3, "brand": [{ "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" }], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Black", "additional_info": [{ "rating": { "stars": 2, "_metadata": { "uid": "cs291c6399e1539311" } } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [{ "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20, "_metadata": { "uid": "cs2a17f3f059dd9e7b" } } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60, "_metadata": { "uid": "cse8bc70b701541c2b" } } } ], "_metadata": { "uid": "csc9f344e9eed58485" } } }, { "related_products": { "products": [{ "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [{ "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ], "_metadata": { "uid": "cs572e9c4a17ad2692" } } } ], "bank_offers": [{ "bank": [{ "uid": "blt27729fae9269607c", "_content_type_uid": "bank" }], "card_type": [ "Debit Card" ], "discount_in_percentage": 27, "_metadata": { "uid": "cs1afd9bc9e656a8c4" } }, { "bank": [{ "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" }], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24, "_metadata": { "uid": "cs9cc5da2d0bfbc08d" } } ], "uid": "blte63b2ff6f6414d8e", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt6563a9b067fc1bc9", "created_at": "2020-05-11T12:44:49.928Z", "updated_at": "2021-07-18T15:45:50.906Z", "ACL": {}, "_version": 6, "_in_progress": false, "frequently_bought_together": [{ "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ], "product_rating": 4, "helpful_links": { "seller": "https://company-name.com", "return-policy": "https://policies.com" }, "cart_items": { "type": "doc", "attrs": {}, "uid": "2b35f3429dca426e9dcfdb614b5ce60f", "children": [{ "type": "p", "attrs": {}, "uid": "833515f543e44c4f99c6e8c406129256", "children": [{ "text": "Items in your Shopping Cart:" }] }, { "type": "p", "attrs": {}, "uid": "818774a71f8047d990d1a2ab8ad0ee17", "children": [{ "text": "" }] }, { "uid": "319a19710e0b4601b93bfff2d85cce2b", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt49139d483f5799bc", "locale": "en-us", "content-type-uid": "kitchen_appliances" }, "children": [{ "text": "" }] }, { "uid": "7d0472d3f4984e19bad7dfc672f2120d", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt10e68dbbfc14b75b", "locale": "en-us", "content-type-uid": "electronics" }, "children": [{ "text": "" }] }, { "uid": "d69bf28413a645e88da17927341f54be", "type": "reference", "attrs": { "display-type": "block", "type": "entry", "class-name": "embedded-entry redactor-component block-entry", "entry-uid": "blt1ecc761f990dc547", "locale": "en-us", "content-type-uid": "kitchen_appliances" }, "children": [{ "text": "" }] }, { "uid": "1dbc20aa47a349db8f1b1fd3ce192f13", "type": "p", "attrs": {}, "children": [{ "text": "" }] }, { "uid": "df6e776bc88142f9a391c7d37b931852", "type": "p", "attrs": {}, "children": [{ "text": "" }] }, { "uid": "bf5295ea97c34661b26b21d735136d4d", "type": "reference", "attrs": { "display-type": "display", "asset-uid": "blt6e0b1713123d2566", "content-type-uid": "sys_assets", "asset-link": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt6e0b1713123d2566/60f44c5180ce947e9b4fbe0b/Logo.png", "asset-name": "Logo.png", "asset-type": "image/png", "type": "asset", "class-name": "embedded-asset", "inline": false }, "children": [{ "text": "" }] } ], "_version": 6 }, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2021-07-18T15:51:55.101Z", "user": "blt6563a9b067fc1bc9" } } ] } ``` ## Order by desc ### Order by desc **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&desc={field_UID}` When fetching entries, you can sort them in the descending order with respect to the value of a specific field in the response body. This query will work for both entries as well as assets. **Example:** In the Product content type, if you wish to sort the entries with respect to their prices, the parameter can be used as: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&desc=price\_in\_usd This will give you all the entries sorted in the descending order with respect to the Price in USD field. **Note:** In situations where identical or empty/null values are present in the field selected for sorting, the sorting process may not yield accurate results, potentially leading to duplicate results in the output. To avoid this, consider utilizing fields without duplicate values, or fields that are indexed (for e.g., updated\_at), to effectively sort your data. Alternatively, if you must use the non-indexed fields for sorting, please contact our [Support](mailto:support@contentstack.com) team for assistance in adding indexes to the field and ensuring the correct sorting of your data within the query results. Please note that a maximum of 5 fields can be indexed per Organization. ##### Order by desc Operator Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **desc** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Order By desc Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&desc={group_UID.field_UID}` Sort your fetched entries in the descending order with respect to the value of a specific field in the response body.This query is specifically for entries and works on fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve entries in the descending order with respect to the values of the Discount in Percentage field, use the following URL: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&desc=bank\_offers.discount\_in\_percentage ##### Order by desc Operator Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **desc** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Order by desc Operator Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&desc={modular_block_UID.block_UID.field_UID}` Sort your fetched entries in the descending order with respect to the value of a specific field in the response body.This query is specifically for entries and works on fields that are part of any block within a Modular Block field. **Note:** Currently, this query is not applicable for Reference fields within Modular Blocks. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Rating ("uid":"rating") block. And, within this Rating block, we have a field named Stars ("uid":"stars"). If, for instance, you want to retrieve entries in the descending order with respect to the values of the Stars field, use the following URL: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&desc=additional\_info.rating.stars #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **desc** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Exists ### Exists **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"field_UID": { "$exists": true } }` Get entries if value of the field, mentioned in the condition, exists.This query will work for entries only. **Example:** In the Product content type, we have a field named Price in USD. Now, you want to retrieve all the entries in the content type in which the field exists. You can send the parameter as: { "price\_in\_usd": { "$exists": true } }. ##### Exists Operator Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Exists Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"group_UID.field_UID": { "$exists": true } }` Get entries if value of the field, mentioned in the condition, exists.This query is specifically for entries and work on fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Card Type ("uid":"card\_type"). If, for instance, you want to retrieve the entries in which the values for the Discount in Percentage field exists, use the following value in the query parameter: {"bank\_offers.discount\_in\_percentage": { "$exists": true }} ##### Exists Operator Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Exists Operator Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale_code}&query={"modular_block_UID.block_UID.field_UID": { "$exists": true } }` Get entries if value of the field, mentioned in the condition, exists.This query is specifically for entries and works on fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Deals ("uid":"deals") block. And, within this Block field, we have a field named Deal Name ("uid":"deal\_name"). If, for instance, you want to retrieve the entries in which the values for the Stars field exists, use the following value in the query parameter: {"additional\_info.rating.stars": {"$exists": true }} #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **query** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Only Operator ### Only operator **GET** `/content_types/{content_type_uid}/entries?locale={locale}&only[BASE][]=field_UID` The only\[\]\[\] parameter will include the data of only the specified fields for each entry and exclude the data of all other fields. There are two approaches to this parameter. Firstly, we have the only\[BASE\]\[\] parameter, where 'BASE' is the default value and refers to the top-level fields of the schema. Secondly, we have the only\[Reference\_field\_uid\]\[\] parameter, where you need to enter the UID of the reference field in place of "Reference\_field\_uid".This query will work for entries only. **Example:** In the Product content type, if we need to retrieve the data of only the Price in USD parameter of all the entries, you can send the parameter as: https://cdn.contentstack.io/v3/content\_types/author/entries?environment=production&only\[BASE\]\[\]=price\_in\_usd **Note**: To retrieve multiple fields use the following syntax: https://cdn.contentstack.io/v3/content\_types/author/entries?environment=production&only\[BASE\]\[\]=price\_in\_usd&only\[BASE\]\[\]=color ##### Only Operator Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **only[BASE][]** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "price_in_usd": 749, "uid": "bltbd92ac498e3d5f96" }, { "price_in_usd": 102.63, "uid": "bltf2fa776b05a127a2" }, { "price_in_usd": 649, "uid": "blt70cc672f4f806d3e" }, { "price_in_usd": 117.3, "uid": "blt4f1fd991ec80e52f" }, { "price_in_usd": 146, "uid": "blta278bb5672180c94" }, { "price_in_usd": 159.78, "uid": "bltf8ab1ad67af3c66b" }, { "price_in_usd": 101, "uid": "blt5b85ef3b0587565c" } ] } ``` ### Only Operator Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale}&only[BASE][]=group_UID.field_UID` Get entries in which the data of a specific field is included in the response JSON.This query is specifically for entries and works on fields that are part of the Group field. **Example:** In the Products’ content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve only the values of the Discount in Percentage field of all the entries, you can send the parameters as: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&only\[BASE\]\[\]=bank\_offers.discount\_in\_percentage ##### Only Operator Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **only[BASE][]** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "bank_offers": [ { "discount_in_percentage": 12 } ], "uid": "bltbd92ac498e3d5f96" }, { "bank_offers": [ { "discount_in_percentage": 15 } ], "uid": "bltf2fa776b05a127a2" }, { "bank_offers": [ { "discount_in_percentage": 60 }, { "discount_in_percentage": 55 } ], "uid": "blt70cc672f4f806d3e" }, { "bank_offers": [ { "discount_in_percentage": 27 }, { "discount_in_percentage": 24 } ], "uid": "blt4f1fd991ec80e52f" }, { "bank_offers": [ { "discount_in_percentage": 12 } ], "uid": "blta278bb5672180c94" }, { "bank_offers": [ { "discount_in_percentage": 25 }, { "discount_in_percentage": 30 } ], "uid": "bltf8ab1ad67af3c66b" }, { "bank_offers": [ { "discount_in_percentage": 8 } ], "uid": "blt5b85ef3b0587565c" } ] } ``` ### Only Operator Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale}&only[BASE][]=modular_block_UID.block_UID.field_UID` Get entries in which the data of a specific field is included in the response JSON.This query is specifically for fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Rating ("uid":"rating") block. And, within this Rating block, we have a field named Stars ("uid":"stars"). If, for instance, you want to retrieve the values of all the Stars field from all the entries, you can send the parameters as: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&only\[BASE\]\[\]=additional\_info.rating.stars #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **only[BASE][]** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "additional_info": [ { "rating": { "stars": 1 } }, {} ], "uid": "bltbd92ac498e3d5f96" }, { "additional_info": [ { "rating": { "stars": 3 } }, {} ], "uid": "bltf2fa776b05a127a2" }, { "additional_info": [ { "rating": { "stars": 5 } }, {} ], "uid": "blt70cc672f4f806d3e" }, { "additional_info": [ { "rating": { "stars": 2 } }, {} ], "uid": "blt4f1fd991ec80e52f" }, { "additional_info": [ {}, { "rating": { "stars": 5 } } ], "uid": "blta278bb5672180c94" }, { "additional_info": [ { "rating": { "stars": 4 } }, {} ], "uid": "bltf8ab1ad67af3c66b" }, { "additional_info": [ { "rating": { "stars": 2 } }, {} ], "uid": "blt5b85ef3b0587565c" } ] } ``` ## Exclude Operator ### Exclude operator **GET** `/content_types/{content_type_uid}/entries?locale={locale}&except[BASE][]=field_UID` The except\[\]\[\] parameter will exclude the data of the specified fields for each entry and will include the data of the rest of the fields. There are two approaches to this parameter. Firstly, we have the except\[BASE\]\[\] parameter, where 'BASE' is the default value and refers to the top-level fields of the schema. Secondly, we have the except\[Reference\_field\_uid\]\[\] parameter, where you need to enter the UID of the reference field in place of Reference\_field\_uid.This query will work for entries only. **Example:** In the Product content type, if we need to retrieve the data of entries of all the other fields except the Price in USD parameter, you can send the parameter as: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&except\[BASE\]\[\]=price\_in\_usd **Note**: To exclude multiple fields use the following syntax: https://cdn.contentstack.io/v3/content\_types/author/entries?environment=production&except\[BASE\]\[\]=price\_in\_usd&except\[BASE\]\[\]=color ##### Exclude Operator Within Group #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **except[BASE][]** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Exclude Operator Within Group **GET** `/content_types/{content_type_uid}/entries?locale={locale}&except[BASE][]=group_UID.field_UID` Get entries in which the data of a specific field is excluded from the response JSON, but the data of the rest of the fields are included.This query is specifically for entries and works with fields that are part of the Group field. **Example:** In the Products content type, we have a Group field named Bank Offers ("uid":"bank\_offers"). And, within this Group field, we have a subfield named Discount in Percentage ("uid":"discount\_in\_percentage"). If, for instance, you want to retrieve all the entries of a content type, but exclude the data for the Discount in Percentage field in the JSON response, you can send the parameters as: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&except\[BASE\]\[\]=bank\_offers.discount\_in\_percentage ##### Exclude Operator Within Modular Blocks #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **except[BASE][]** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ] }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ] } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ] }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ] } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ] } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ] } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ] }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ] } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ] } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ] }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ] } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ### Exclude Operator Within Modular Blocks **GET** `/content_types/{content_type_uid}/entries?locale={locale}&except[BASE][]=modular_block_UID.block_UID.field_UID` Get entries in which the data of a specific field is excluded from the response JSON, but the data of the rest of the fields are included.This query is specifically for entries and works with fields that are part of any block within a Modular Block field. **Example:** In the Products content type, we have a Modular Group field named Additional Info ("uid":"additional\_info") that contains the Rating ("uid":"rating") block. And, within this Block field, we have a field named Stars ("uid":"stars"). If, for instance, you want to retrieve all the entries of a content type, but exclude the data for the Stars field in the JSON response, you can send the parameters as: https://cdn.contentstack.io/v3/content\_types/product/entries?environment=production&except\[BASE\]\[\]=additional\_info.rating.stars #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **except[BASE][]** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": {} }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": {} }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": {} }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": {} }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": {} }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": {} }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": {} }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ] } ``` ## Count ### Count **GET** `/content_types/{content_type_uid}/entries?locale={locale}&include_count={boolean_value}` To retrieve the count of entries, we have two parameters: include\_count (retrieves entries' details and their count) and count (retrieves only the count of entries).This query will work for both entries as well as assets. **Example:** If you wish to know the total number of entries in the Product content type and also retrieve all the data, you need to run the following API request: ``` https://cdn.contentstack.io/v3/content_types/product/entries?environment={environment}&include_count=true ``` To get only the count, run the following API request: ``` https://cdn.contentstack.io/v3/content_types/product/entries?environment={environment}&count=true ``` #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **include_count** (required) Enter 'true' to get the total count of the entries and their details. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. - **count** (optional) Enter 'true' to only get the count of entries. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "_version": 3, "locale": "en-us", "uid": "blte63b2ff6f6414d8e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Deals of the Day", "deal_details": "If you are looking for good Amazon deals and bargains, Deal's of The Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Lucky Twenty", "coupon_details": "First five users to purchase an electronic item receive a discount of 20 percent on that item.", "coupon_discount_rate": 20 } }, { "special_coupons": { "special_coupon_name": "Kitchen Bonanza", "special_coupon_details": "Save 60 percent when you purchase kitchen appliances worth a total price of 3000 USD.", "special_coupon_discount_rate": 60 } } ] } }, { "related_products": { "products": [ { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 27 }, { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card", "Credit Card" ], "discount_in_percentage": 24 } ], "brand": [], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T12:44:49.928Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    64-bit Qualcomm® SnapdragonTM 410, 2GB RAM,

    \n

    16GB Flash (up to 32GB microSD support), 13.97cm (5.5) HD IPS display, 13MP rear camera, 4G dual SIM, 3100mAh removable battery

    ", "images": [ { "uid": "blt50a7a9dd6866776f", "created_at": "2019-08-16T08:05:18.932Z", "updated_at": "2019-08-16T08:05:18.932Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "145200", "tags": [], "filename": "01.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt50a7a9dd6866776f/5d5663be34d39437c37c5376/01.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "01.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-08-17", "price_in_usd": 117.3, "size": 16, "tags": [], "title": "Redmi Note Prime", "updated_at": "2020-05-11T15:14:45.980Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/redmi-note-prime", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:15:36.629Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltdbe63e789fd3d08e", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Independence Day Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Independence Day Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Independence Bumper Offer", "special_coupon_details": "Receive a discount of flat 40 percent on purchasing any laptop on Independence Day.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt6549021b3bbeae5c", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt0e302e4595da19c1", "_content_type_uid": "electronics" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt27729fae9269607c", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 60 }, { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 55 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Rose Gold", "created_at": "2020-05-11T12:47:32.533Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltda02effe8bc97bb9", "created_at": "2019-08-16T08:05:09.588Z", "updated_at": "2019-08-16T08:05:09.588Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "45091", "tags": [], "filename": "Apple-iPhone-SE-Rose-Gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltda02effe8bc97bb9/5d5663b546d2e3383a96ec5e/Apple-iPhone-SE-Rose-Gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "Apple-iPhone-SE-Rose-Gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 649, "size": 32, "tags": [], "title": "iPhone 7 64GB", "updated_at": "2020-05-11T15:08:56.567Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:09:05.364Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ], "count": 7 } ``` ## Pagination ### Pagination **GET** `/content_types/{content_type_uid}/entries?locale={locale}&include_count={boolean_value}&skip={skip_value}&limit={limit_value}` The 'Get all entries' API request returns only the first 100 entries of the specified content type. Similarly, the 'Get all assets' request fetches the first 100 assets of a particular stack. In both requests, first, use the include\_count parameter to get the total count of the items (entries/assets). Learn more about the [Count](#count) parameter. Since only 100 items are returned at a time in your response (in case of both requests), you can get the rest of the items in batches using the skip parameter in subsequent requests. Learn more about the [Skip](#skip) parameter. You can paginate the output of a request by using the limit parameter. For example, if you have 200 entries and/or assets and you want to retrieve them all but display only 10 items at a time. Use the limit=10 and skip=10 parameters, to get them all but display only 10 items per page. The syntax of the pagination request will look like the following: * For entries: https://cdn.contentstack.io/v3/content\_types/product/entries?environment={environment}&locale={locale}&include\_count=true&skip={skip\_value}&limit={limit\_value} * For assets: https://cdn.contentstack.io/v3/assets?environment={environment\_name}&include\_dimension={boolean\_value}&include\_count=true&skip={skip\_value}&limit={limit\_value} #### URL Parameters - **content_type_uid** (required) Enter the unique ID of the content type in which you wish to search for entries. #### Query Parameters - **locale** (optional) Enter the code of the language of which the entries needs to be included. Only the entries published in this locale will be displayed. - **include_count** (required) Set this parameter to 'true' to include in response the total count of entries available in a content type. - **skip** (required) Enter the actual query that will be executed to retrieve entries. This query should be in JSON format. - **limit** (required) Enter the maximum number of entries to be returned. - **include_branch** (optional) Set this to true to include the \_branch top-level key in the response. This key states the unique ID of the branch where the concerned Contentstack module resides. #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Enter your branch unique ID. Default: `main` #### Sample Response ```json { "entries": [ { "title": "Redmi 3S", "url": "/mobiles/redmi-3s", "description": "

    The next step in the Redmi evolution, Redmi 3S is dressed in a premium metal body. That's not all, it houses a powerful Qualcomm® SnapdragonTM 430 processor, massive 4100mAh battery, 13MP Phase Detection Autofocus (PDAF) camera and 12.6cm (5) HD display.

    \n

    Despite these upgrades, it is surprisingly 0.9mm thinner than Redmi 2 and sits comfortably in your hand. The combination of these in Redmi 3S are just the tools you need to connect, explore and take on the rest of the world.\n

    ", "images": [ { "uid": "blt198546991c0eea0a", "created_at": "2019-08-16T08:05:21.114Z", "updated_at": "2019-08-16T08:05:21.114Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "28485", "tags": [], "filename": "xiaomi-redmi-note-3-gray.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt198546991c0eea0a/5d5663c1295d353852cf6bce/xiaomi-redmi-note-3-gray.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "xiaomi-redmi-note-3-gray.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "price_in_usd": 102.63, "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "launch_date": "2016-08-17", "instock": true, "tags": [], "locale": "en-us", "size": 16, "color": "Gray", "additional_info": [ { "rating": { "stars": 3 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "blta250054cfa4f5aab", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt10e68dbbfc14b75b", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt46128ea08fdeb168", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 15 } ], "uid": "bltd383742b89bef7af", "created_by": "blt42e55757d70d5f81026a2b9f", "updated_by": "blt42e55757d70d5f81026a2b9f", "created_at": "2020-05-11T12:37:33.194Z", "updated_at": "2020-05-11T15:05:06.916Z", "ACL": {}, "_version": 3, "_in_progress": false, "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T15:05:26.083Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "bltd8ff819f10c6973b", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 2 } }, { "deals": { "deal_name": "Christmas Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Christma's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "High Five", "special_coupon_details": "Save 5 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 5 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blt1e1d4385e656835a", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 8 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" }, { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-10T13:47:02.576Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Snapdragon

    ", "images": [ { "uid": "blt19c34e5374418484", "created_at": "2019-08-16T08:05:30.460Z", "updated_at": "2019-08-16T08:05:30.460Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "69609", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt19c34e5374418484/5d5663ca9e9032233cab321a/in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000003-back-gold.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } }, { "uid": "bltf8c7852efd06d11f", "created_at": "2019-08-16T08:05:05.009Z", "updated_at": "2019-08-16T08:05:05.009Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/png", "file_size": "63422", "tags": [], "filename": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltf8c7852efd06d11f/5d5663b166aa1a361fba10f9/in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "ACL": [], "is_dir": false, "_version": 1, "title": "in-galaxy-note-5-n9208-sm-n9208zdvins-000000006-l30-2-gold-thumb.png", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:29:04.717Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": false, "launch_date": "2016-07-07", "price_in_usd": 101, "size": 32, "tags": [ "redmi" ], "title": "Galaxy Note", "updated_at": "2020-05-11T14:56:10.946Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-note", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:56:31.536Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 3, "locale": "en-us", "uid": "blt6549021b3bbeae5c", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 1 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltdbe63e789fd3d08e", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt2349e9c0b7ce06fa", "_content_type_uid": "electronics" }, { "uid": "blt7375bb3c0e4859de", "_content_type_uid": "electronics" }, { "uid": "blt44857e1ae5e9e272", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "bltfbe674ca5af1ffa3", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 12 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Debit Card" ], "discount_in_percentage": 10 } ], "brand": [ { "uid": "blte6095f030e4b7a30", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-10T13:09:01.499Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    iPhone 7 dramatically improves the most important aspects of the iPhone experience. It introduces advanced new camera systems. The best performance and battery life ever in an iPhone. Immersive stereo speakers. The brightest, most colorful iPhone display. Splash and water resistance. And it looks every bit as powerful as it is. This is iPhone 7.

    ", "images": [ { "uid": "bltc4f54f7ce3155b0e", "created_at": "2019-08-16T08:05:15.889Z", "updated_at": "2019-08-16T08:05:15.889Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "48163", "tags": [], "filename": "iphone7.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/bltc4f54f7ce3155b0e/5d5663bbdf859f364dbe36dd/iphone7.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "iphone7.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-09-07", "price_in_usd": 749, "size": 128, "tags": [], "title": "iPhone 7 128GB", "updated_at": "2020-05-11T14:29:53.230Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/iphone-7", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:30:07.305Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 1, "locale": "en-us", "uid": "blta250054cfa4f5aab", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 5 } }, { "deals": { "deal_name": "Summer Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Summer's Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "daily_coupons": { "coupon_name": "Early Bird Coupon", "coupon_details": "Save 50 percent on your first three purchases.", "coupon_discount_rate": 50 } }, { "special_coupons": { "special_coupon_name": "Beat the Heat Coupon", "special_coupon_details": "Save 40 percent on electronic items purchased during the summer when your item costs 1500 USD and above.", "special_coupon_discount_rate": 40 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "blte63b2ff6f6414d8e", "_content_type_uid": "product" }, { "uid": "bltd383742b89bef7af", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "bltee5deb99c3be1b75", "_content_type_uid": "electronics" }, { "uid": "blt7d3413d9daf14f5f", "_content_type_uid": "electronics" }, { "uid": "blt1ecc761f990dc547", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt83b7564e5d749a90", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 12 } ], "brand": [ { "uid": "blta2e0d2130eb86263", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" }, { "uid": "blt9fa0f59d03862aa7", "_content_type_uid": "category" } ], "color": "Gold", "created_at": "2020-05-11T14:12:28.805Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Redmi Note 3 is really fast—flagship fast. The high-performance Snapdragon 650 processor uses ARM's flagship Cortex-A72 cores to launch apps in a split-second. Its next-gen Adreno 510 graphics processor delivers a fluid gaming experience. The hexa-core processor delivers up to 1.8GHz clock speed, supports dual-channel memory and eMMC 5.0 flash. Combined with MIUI 7's system-level speed optimizations, Redmi Note 3 responds to every touch in a snap.

    ", "images": [ { "uid": "blt9c3dff6e3151d374", "created_at": "2019-08-16T08:05:27.886Z", "updated_at": "2019-08-16T08:05:27.886Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "5275", "tags": [], "filename": "download.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt9c3dff6e3151d374/5d5663c79722fb38d7db52e5/download.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "download.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:47.432Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2016-03-09", "price_in_usd": 146, "size": 16, "tags": [ "redmi", "smart" ], "title": "Redmi Note 3", "updated_at": "2020-05-11T14:12:28.805Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/redmi-note-3", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:12:38.975Z", "user": "blt42e55757d70d5f81026a2b9f" } }, { "_version": 2, "locale": "en-us", "uid": "blt1e1d4385e656835a", "ACL": {}, "_in_progress": false, "additional_info": [ { "rating": { "stars": 4 } }, { "deals": { "deal_name": "Black Friday Deal", "deal_details": "If you are looking for good Amazon deals and bargains, Black Friday Deals is the place to come. We are your online one-stop shop for savings and specials on our products.", "coupons": [ { "special_coupons": { "special_coupon_name": "Friday Bumper Coupon", "special_coupon_details": "Save up to 70 percent on purchasing items worth a total price of 2000 USD.", "special_coupon_discount_rate": 70 } }, { "faqs": { "coupon_faqs": [ { "question": "How to avail coupon benefits?", "answer": "

    Just click on the \"Collect Coupon\" button and enjoy using your coupons while purchasing various items across our site.

    " }, { "question": "Where can I find the coupons I collected?", "answer": "

    On the Homepage, navigate to the Services & Benefits section and then click on Coupons. Here, you can find all the coupons you have collected under My Coupons.

    " }, { "question": "Can you collect a coupon first and purchase an item later?", "answer": "

    Sure, every coupon can be used any time before its expiry date. Once the coupon expires, however it would be deemed invalid.

    " } ] } } ] } }, { "related_products": { "products": [ { "uid": "bltd8ff819f10c6973b", "_content_type_uid": "product" } ], "home_appliances": [ { "uid": "blt23f4282bd1173ae9", "_content_type_uid": "electronics" }, { "uid": "blt49139d483f5799bc", "_content_type_uid": "kitchen_appliances" } ] } } ], "bank_offers": [ { "bank": [ { "uid": "blt4526259b9dc1dd3e", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card", "Debit Card" ], "discount_in_percentage": 25 }, { "bank": [ { "uid": "bltd477bad133866222", "_content_type_uid": "bank" } ], "card_type": [ "Credit Card" ], "discount_in_percentage": 30 } ], "brand": [ { "uid": "blt5499dd00bb716b14", "_content_type_uid": "brand" } ], "categories": [ { "uid": "blt9d72fa3afc11d27f", "_content_type_uid": "category" } ], "color": "Black", "created_at": "2020-05-11T13:32:18.406Z", "created_by": "blt42e55757d70d5f81026a2b9f", "description": "

    Enjoy vibrant colours and deeper contrast while you watch your favourite videos on a Super AMOLED display. All the while getting the most out of your 4G experience with Ultra Data Saving Mode that helps you save up to 50% of data.

    ", "images": [ { "uid": "blt11b00b9a335ed526", "created_at": "2019-08-16T08:05:18.935Z", "updated_at": "2019-08-16T08:05:18.935Z", "created_by": "bltcd82b2c6bf913241", "updated_by": "bltcd82b2c6bf913241", "content_type": "image/jpeg", "file_size": "166189", "tags": [], "filename": "samsung-galaxy-j1.jpg", "url": "https://images.contentstack.io/v3/assets/blt02f7b45378b008ee/blt11b00b9a335ed526/5d5663be995bf53944dfaf7b/samsung-galaxy-j1.jpg", "ACL": [], "is_dir": false, "_version": 1, "title": "samsung-galaxy-j1.jpg", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2019-08-19T12:28:56.964Z", "user": "blt587a89fc7883c56700a95bfe" } } ], "instock": true, "launch_date": "2017-01-06", "price_in_usd": 159.78, "size": 8, "tags": [], "title": "Galaxy J1", "updated_at": "2020-05-11T14:05:25.577Z", "updated_by": "blt42e55757d70d5f81026a2b9f", "url": "/mobiles/galaxy-j1", "publish_details": { "environment": "blta39a4441696e35e0", "locale": "en-us", "time": "2020-05-11T14:05:33.715Z", "user": "blt42e55757d70d5f81026a2b9f" } } ], "count": 7 } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/content-delivery-api/synchronization --- title: "CDA | Synchronization" description: "

    The Sync API takes care of syncing your Contentstack data with your app and ensures that the data is always up-to-date by providing delta updates.

    Note: When executing the following synchronization API Requests, you need to pass the Delivery Token as the value to the access_token parameter.

    " url: "https://www.contentstack.com/docs/developers/apis/content-delivery-api/synchronization" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: synchronization.md --- # CDA | Synchronization The Sync API takes care of syncing your Contentstack data with your app and ensures that the data is always up-to-date by providing delta updates. **Note:** When executing the following synchronization API Requests, you need to pass the Delivery Token as the value to the access\_token parameter. ## Initial Synchronization ### Initial Sync **GET** `/stacks/sync?init=true&content_type_uid={content_type_uid}&locale={locale_code}&start_from={iso_date}&type={type}` The Initial Sync request syncs the entries and assets of a stack, published on a specific environment. Set init to ‘true’ if you want to sync all the published entries and assets. This is usually used when the app does not have any content and you want to get all the content for the first time. **Note:** When executing the API request, pass the Delivery Token as the value to the access\_token parameter. Applicable parameters: **Parameter** **Values** content\_type\_uid Enter content type UID. e.g., products This retrieves published entries of specified content type. locale Enter locale code. e.g., en-us This retrieves published entries of specific locale. start\_from Enter the start date. e.g., 2018-08-14T00:00:00.000Z This retrieves published entries starting from a specific date. type Applicable values are: * entry\_published * asset\_published * entry\_unpublished * asset\_unpublished * entry\_deleted * asset\_deleted * content\_type\_deleted If you do not specify any value, it will bring all published entries and published assets. You can pass multiple types as comma-separated values, for example, entry\_published,entry\_unpublished,asset\_published. **Note**: If you specify any value for content\_type\_uid, locale, start\_from, or type, the values for these parameters will remain unchanged for all subsequent sync requests. Once you perform an initial sync, you will either get a sync\_token or a pagination\_token in response. These tokens don't have an expiry time. You can use the sync\_token later to perform subsequent sync, which fetches only new changes through delta updates. If there are more than 100 records, you get a pagination\_token in response. This token can be used to fetch the next batch of data. Read [Sync using pagination token](#sync-using-pagination-token) for more details. #### Query Parameters - **init** (required) Enter ‘true’ to perform a complete sync of all your app data. - **content_type_uid** (optional) Enter the content type UID, if you want to sync entries of specific content types. - **locale** (optional) Enter the locale to retrieve and sync the content published on a specific locale. - **start_from** (optional) Specify the start date, if you want to retrieve and sync data starting from a specific date. - **type** (optional) Enter the type(s) of content you want to retrieve and sync. You can pass multiple types as comma-separated values. #### Headers - **api_key** (required) Enter the API key of your stack Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the delivery token of the publishing environment. [Read more](/docs/headless-cms/types-of-tokens#access-tokens). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Default: `main` #### Sample Response ```json { "items": [{ "type": "entry_published", "event_at": "2017-11-23T00:00:000Z", "content_type_uid": "Blog", "data": { "uid": "1", "locale": "en-us", "title": "My First Blog" } }, { "type": "asset_published", "event_at": "2017-11-22T22:59:000Z", "content_type_uid": "Blog", "data": { "uid": "3", "locale": "en-us", "title": "My Third Blog Image", "filename": "Blog3.jpg" } }, { "type": "entry_unpublished", "event_at": "2017-11-22T23:50:000Z", "content_type_uid": "Blog", "data": { "uid": "2", "locale": "en-us", "title": "My Second Blog" } } ], "skip": 100, "limit": 100, "total_count": 300, "sync_token": "blt122334455667" } ``` ## Sync using pagination token ### Sync using pagination token **GET** `/stacks/sync?pagination_token={pagination_token}` When running the [Initial Synchronization](#initial-synchronization) or the [Subsequent Sync](#subsequent-sync) request, if the result of the sync (initial or subsequent) request exceeds 100 records you will get a pagination\_token. The Sync using pagination token request uses the pagination\_token to retrieve the next batch of data (100 records) while performing the sync. You can reiterate the process until you get a sync\_token. **Note:** When executing the API request, pass the Delivery Token as the value to the access\_token parameter. #### Query Parameters - **pagination_token** (required) Enter the pagination token that you received in the response body of the previous sync process. #### Headers - **api_key** (required) Enter the API key of stack of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Default: `main` #### Sample Response ```json { "items": [{ "type": "entry_published", "event_at": "2017-11-23T00:00:000Z", "content_type_uid": "Blog", "data": { "uid": "1", "locale": "en-us", "title": "My First Blog" } }, { "type": "entry_published", "event_at": "2017-11-22T23:50:000Z", "content_type_uid": "Blog", "data": { "uid": "2", "locale": "en-us", "title": "My Second Blog" } }, { "type": "asset_published", "event_at": "2017-11-22T22:59:000Z", "content_type_uid": "Blog", "data": { "uid": "3", "locale": "en-us", "title": "My Third Blog Image", "filename": "Blog3.jpg" } }, { "type": "entry_published", "event_at": "2017-12-23T00:00:000Z", "content_type_uid": "Blog", "data": { "uid": "4", "locale": "en-us", "title": "My Fourth Blog" } }, { "type": "asset_published", "event_at": "2017-12-22T22:59:000Z", "content_type_uid": "Blog", "data": { "uid": "4", "locale": "en-us", "title": "My Fourth Blog Image", "filename": "Blog4.jpg" } } ], "skip": 100, "limit": 100, "total_count": 300, "pagination_token": "blt122334455667" } ``` ## Subsequent Sync ### Subsequent Sync **GET** `/stacks/sync?sync_token={sync_token}` The Subsequent Sync request is used to retrieve the updated content (i.e., published or unpublished content, or any published content that has been deleted) since the last performed complete Sync. In this API request, you need to provide the sync\_token that you received in the last complete sync process. If there are more than 100 records, you will get a pagination\_token instead. This token can be used to fetch the next batch of data. Refer the [Sync using pagination token](#sync-using-pagination-token) section for more details. **Tip:** Once you have performed the Initial Sync process, you do not need to perform it again. For retrieving the subsequent delta changes, use the sync\_token received either in the Initial Sync process or the previous Subsequent Sync requests to sync new changes. Also, when executing the API request, pass the Delivery Token as the value to the access\_token parameter. #### Query Parameters - **sync_token** (required) Enter the sync token that you received in the response body of the previous completed Synchronization process to get the delta updates #### Headers - **api_key** (required) Enter the API key of your stack. Default: `blt02f7b45378b008ee` - **access_token** (required) Enter the environment-specific delivery token of your stack. Check [Authentication](#authentication). Default: `cs5b69faf35efdebd91d08bcf4` - **branch** (optional) Default: `main` #### Sample Response ```json { "items": [{ "type": "entry_unpublished", "event_at": "2017-11-23T00:00:000Z", "content_type_uid": "Blog", "data": { "uid": "5", "locale": "en-us", "title": "My Fifth Blog" } }, { "type": "asset_unpublished", "event_at": "2017-11-23T00:00:000Z", "data": { "uid": "5", "locale": "en-us", "title": "My Fifth Blog Image", "filename": "Blog6.img" } }, { "type": "content_type_deleted", "event_at": "2017-11-22T00:00:000Z", "content_type_uid": "Blog Suggestions", "data": {} } ], "skip": 0, "limit": 3, "total_count": 3, "sync_token": "blt1223344556677" } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/content-delivery-api/taxonomy --- title: "CDA | Taxonomy" description: "

    Taxonomy, simplifies the process of organizing content in your system, making it effortless to find and retrieve information. It allows you to arrange your web properties in a hierarchy according to your specific needs, whether it's their purpose, intended audience, or other aspects of your business.

    Note: Refer to the Taxonomy Queries section for more query filters.

    " url: "https://www.contentstack.com/docs/developers/apis/content-delivery-api/taxonomy" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-02" filename: taxonomy.md --- # CDA | Taxonomy Taxonomy, simplifies the process of organizing content in your system, making it effortless to find and retrieve information. It allows you to arrange your web properties in a hierarchy according to your specific needs, whether it's their purpose, intended audience, or other aspects of your business. **Note**: Refer to the [Taxonomy Queries](/docs/developers/apis/content-delivery-api#taxonomy-queries) section for more query filters. ## Get all taxonomies ### Get all taxonomies **GET** `/taxonomies` The Get all taxonomies request retrieves all published taxonomies for the given environment. #### Query Parameters - **limit** (optional) Number of results to return. - **skip** (optional) Number of results to skip (for pagination). #### Headers - **api_key** (optional) Enter the API key of the stack. Default: `your_stack_api_key` - **access_token** (optional) Enter your environment-specific delivery token. Check [Authentication](/docs/developers/apis/content-delivery-api#authentication). Default: `your_access_token` #### Sample Response ```json { "taxonomies": [ { "uid": "categories", "name": "Categories", "description": "All categories for products.", "publish_details": { "time": "2025-09-01T13:19:28.365Z", "user": "blt368bfe4e50023d0e", "environment": "bltd7f8cacaf649b485", "locale": "en-us" } } ], "count": 1 } ``` ## Get a single taxonomy ### Get a single taxonomy **GET** `/taxonomies/{taxonomy_uid}` The Get a single taxonomy request retrieves details of a single published taxonomy. #### URL Parameters - **taxonomy_uid** (optional) Enter the unique ID of the taxonomy you want to update. The UID of a taxonomy is unique across a stack. #### Query Parameters - **limit** (optional) Number of results to return. - **skip** (optional) Number of results to skip (for pagination). #### Headers - **api_key** (optional) Enter the API key of the stack. Default: `your_stack_api_key` - **access_token** (optional) Enter your environment-specific delivery token. Check [Authentication](/docs/developers/apis/content-delivery-api#authentication). Default: `your_access_token` #### Sample Response ```json { "taxonomy": { "uid": "categories", "name": "Categories", "description": "All categories for products.", "publish_details": { "time": "2025-09-01T13:19:28.365Z", "user": "blt368bfe4e50023d0e", "environment": "bltd7f8cacaf649b485", "locale": "en-us" } } } ``` ## Get all terms ### Get all terms **GET** `/taxonomies/{taxonomy_uid}/terms` The Get all terms request retrieves all published terms in a taxonomy for the specified environment and locale. #### URL Parameters - **taxonomy_uid** (optional) Enter the unique ID of the taxonomy you want to update. The UID of a taxonomy is unique across a stack. #### Query Parameters - **limit** (optional) Number of results to return. - **skip** (optional) Number of results to skip (for pagination). - **depth** (optional) Depth of term hierarchy to retrieve. #### Headers - **api_key** (optional) Enter the API key of the stack. Default: `your_stack_api_key` - **access_token** (optional) Enter your environment-specific delivery token. Check [Authentication](/docs/developers/apis/content-delivery-api#authentication). Default: `your_access_token` #### Sample Response ```json { "terms": [ { "uid": "california", "name": "California", "parent_uid": "usa", "taxonomy_uid": "regions", "order": 1, "locale": "en-us", "created_at": "2024-02-01T10:30:00.000Z", "updated_at": "2024-02-01T10:30:00.000Z", "created_by": "admin", "updated_by": "admin" } ], "count": 1 } ``` ## Get a single term ### Get a single term **GET** `/taxonomies/{taxonomy_uid}/terms/{term_uid}` The Get a single term request retrieves a specific published term within a taxonomy. #### URL Parameters - **taxonomy_uid** (optional) Enter the unique ID of the taxonomy you want to update. The UID of a taxonomy is unique across a stack. - **term_uid** (optional) Enter the unique ID of the term of which you want to retrieve the details. The UID of a term is unique across a stack. #### Query Parameters - **limit** (optional) Number of results to return. - **skip** (optional) Number of results to skip (for pagination). - **depth** (optional) Depth of term hierarchy to retrieve. #### Headers - **api_key** (optional) Enter the API key of the stack. Default: `your_stack_api_key` - **access_token** (optional) Enter your environment-specific delivery token. Check [Authentication](/docs/developers/apis/content-delivery-api#authentication). Default: `your_access_token` #### Sample Response ```json { "term": { "uid": "gaming_laptops", "name": "Gaming Laptops", "parent_uid": "laptops", "order": 1, "locale": "en-us", "publish_details": { "time": "2025-09-01T13:19:28.365Z", "user": "blt368bfe4e50023d0e", "environment": "bltd7f8cacaf649b485", "locale": "en-us" } } } ``` ## Get a single term in all locales ### Get a single term in all locales **GET** `/taxonomies/{taxonomy_uid}/terms/{term_uid}/locales` The Get a single term in all locales request retrieves all localized versions of a published term. #### URL Parameters - **taxonomy_uid** (optional) Enter the unique ID of the taxonomy you want to update. The UID of a taxonomy is unique across a stack. - **term_uid** (optional) Enter the unique ID of the term of which you want to retrieve the details. The UID of a term is unique across a stack. #### Query Parameters - **limit** (optional) Number of results to return. - **skip** (optional) Number of results to skip (for pagination). #### Headers - **api_key** (optional) Enter the API key of the stack. Default: `your_stack_api_key` - **access_token** (optional) Enter your environment-specific delivery token. Check [Authentication](/docs/developers/apis/content-delivery-api#authentication). Default: `your_access_token` #### Sample Response ```json { "terms": [ { "uid": "gaming_laptops", "name": "Gaming Laptops", "locale": "en-us", "publish_details": { "time": "2025-09-01T13:19:28.365Z", "user": "blt368bfe4e50023d0e", "environment": "bltd7f8cacaf649b485", "locale": "en-us" } }, { "uid": "gaming_laptops", "name": "Ordinateurs Portables de Jeu", "locale": "fr-fr", "publish_details": { "time": "2025-09-01T13:25:00.000Z", "user": "blt368bfe4e50023d0e", "environment": "bltd7f8cacaf649b485", "locale": "fr-fr" } } ] } ``` ## Get descendants of a term ### Get descendants of a term **GET** `/taxonomies/{taxonomy_uid}/terms/{term_uid}/descendants` The Get descendants of a term request retrieves all descendant terms of a given term. #### URL Parameters - **taxonomy_uid** (optional) Enter the unique ID of the taxonomy you want to update. The UID of a taxonomy is unique across a stack. - **term_uid** (optional) Enter the unique ID of the term of which you want to retrieve the details. The UID of a term is unique across a stack. #### Query Parameters - **limit** (optional) Number of results to return. - **skip** (optional) Number of results to skip (for pagination). - **depth** (optional) Depth of term hierarchy to retrieve. #### Headers - **api_key** (optional) Enter the API key of the stack. Default: `your_stack_api_key` - **access_token** (optional) Enter your environment-specific delivery token. Check [Authentication](/docs/developers/apis/content-delivery-api#authentication). Default: `your_access_token` #### Sample Response ```json { "term": { "uid": "electronics", "name": "Electronics", "parent_uid": null, "order": 1, "locale": "en-us", "descendants": [ { "uid": "laptops", "name": "Laptops", "parent_uid": "electronics", "order": 1, "locale": "en-us" } ] } } ``` ## Get ancestors of a term ### Get ancestors of a term **GET** `/taxonomies/{taxonomy_uid}/terms/{term_uid}/ancestors` The Get ancestors of a term request retrieves all ancestor terms of a given term up to the root. #### URL Parameters - **taxonomy_uid** (optional) Enter the unique ID of the taxonomy you want to update. The UID of a taxonomy is unique across a stack. - **term_uid** (optional) Enter the unique ID of the term of which you want to retrieve the details. The UID of a term is unique across a stack. #### Query Parameters - **limit** (optional) Number of results to return. - **skip** (optional) Number of results to skip (for pagination). - **depth** (optional) Depth of term hierarchy to retrieve. #### Headers - **api_key** (optional) Enter the API key of the stack. Default: `your_stack_api_key` - **access_token** (optional) Enter your environment-specific delivery token. Check [Authentication](/docs/developers/apis/content-delivery-api#authentication). Default: `your_access_token` #### Sample Response ```json { "term": { "uid": "gaming_laptops", "name": "Gaming Laptops", "parent_uid": "laptops", "order": 1, "locale": "en-us", "ancestors": [ { "uid": "laptops", "name": "Laptops", "parent_uid": "electronics", "order": 1, "locale": "en-us" }, { "uid":"electronics", "name": "Electronics", "parent_uid": null, "order": 1, "locale": "en-us" } ] } } ``` --- ## URL: https://www.contentstack.com/docs/developers/apis/content-management-api --- title: "Content Management API" description: "Contentstack's Content Management API helps you manage the content of your account. To learn more about creating and fetching content, read our reference doc!" url: "https://www.contentstack.com/docs/developers/apis/content-management-api" product: "Contentstack" doc_type: "guide" audience: - developers - admins version: "current" last_updated: "2026-06-08" filename: content-management-api.md --- # Content Management API ## Introduction ### Base URL * AWS North America (AWS NA): https://api.contentstack.io/ * AWS Europe (EU): https://eu-api.contentstack.com/ * AWS Australia (AWS AU): https://au-api.contentstack.com/ * Azure North America (Azure NA): https://azure-na-api.contentstack.com/ * Azure Europe (Azure EU): https://azure-eu-api.contentstack.com/ * GCP North America (GCP NA): https://gcp-na-api.contentstack.com/ * GCP Europe (GCP EU): https://gcp-eu-api.contentstack.com/ ### Overview Contentstack is a headless, API-first content management system (CMS) that provides everything you need to power your web or mobile properties. To learn more about Contentstack, visit our [website](https://www.contentstack.com) or refer to our [documentation site](https://www.contentstack.com/docs) to understand what we do. This document is a detailed reference to Contentstack’s Content Management API. 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. To use the Content Management API, you will need to authenticate yourself with a [Management Token](/docs/headless-cms/about-management-tokens) or an [Authtoken](#how-to-get-authtoken). Read more about it in [Authentication](#authentication). **Note:** The Content Management APIs also include many GET requests. However, it is highly recommended that you always use the [Content Delivery API](/docs/developers/apis/content-delivery-api) to deliver content to your web or mobile properties. ### Content Management SDKs We have created SDKs, API references, getting started guides, and [sample apps](/docs/developers/sample-apps) for some of the popular languages and platforms. You can use them to build your own apps and manage your content from Contentstack. Contentstack Management SDKs interact with the Content Management APIs and allow you to create, update, delete, and fetch content from your Contentstack account. They are read-write in nature. You will find a list of all the available management SDKs under the [Content Management SDKs](/docs/developers/sdks/) section. We provide Management SDKs for the following platform: * [JavaScript](/docs/developers/sdks/content-management-sdk/javascript/about-javascript-management-sdk/) * [.NET](/docs/developers/sdks/content-management-sdk/dot-net/about-dot-net-management-sdk/) * [Java](/docs/developers/sdks/content-management-sdk/java/about-java-management-sdk/) * [Python](/docs/developers/sdks/content-management-sdk/python/about-python-management-sdk/) ### Authentication Contentstack provides **token-based authentication** that allows you to create, update, delete, and fetch the content of your Contentstack account. You can use either the stack’s Management Token, OAuth Token, or the user Authtoken, along with the stack API key, to make Content Management API requests. The API key is a unique key assigned to each [stack](/docs/headless-cms/about-stack). Management Tokens are stack-level read-write tokens that allow making CMA requests without the need to provide user credentials. The Contentstack OAuth server generates access tokens (both App and User tokens), which client applications can employ to retrieve restricted data on behalf of the resource owner. However, Authtokens are user-specific tokens generated when user logs in to Contentstack. Read more about the different [types of tokens](/docs/headless-cms/types-of-tokens). #### For API Key and Authtoken-based authentication * Pass the stack’s API key against the api\_key parameter as header * Pass the user Authtoken against the authtoken parameter as header #### For API Key and Management Token-based authentication * Pass the stack’s API key against the api\_key parameter as header * Pass the user Management Token value against the authorization parameter as header #### For API Key and OAuth Token-based authentication * Pass the stack’s API key against the api\_key parameter as header for stack based APIs * Pass the OAuth Token value against the authorization parameter as header #### Authtokens vs Management Tokens vs OAuth Token An **Authtoken** is a read-write token used to make authorized CMA requests, and it is a **user-specific** token. This means that your personal user details are attached to every API request that you make using the authtoken. So, if a person were to obtain access to your authtoken, and knows the Stack API key, this person would be able to make API requests that appeared to be coming from you. **Management Tokens**, on the other hand, are **stack-level** tokens, with no users attached to them. They can do everything that authtokens can do. Since they are not personal tokens, no role-specific permissions are applicable to them. It is recommended to use these tokens for automation scripts, third-party app integrations, and for **Single Sign On (SSO)-enabled organizations**. **Contentstack OAuth** employs the OAuth 2.0 protocol, enabling external applications to access Contentstack APIs on behalf of users. It issues access tokens (App & User tokens) to client applications, allowing them to retrieve restricted data from the Contentstack resource server without the need for the resource owner to share their credentials. Learn more about [Contentstack OAuth](/docs/developer-hub/contentstack-oauth) and [OAuth Scopes](/docs/developer-hub/oauth-scopes). **Authtoken** lets you make almost all the Content Management requests, while with **Management Tokens**, you have a few limitations. For more information, read our [Limitations of Management Tokens](/docs/headless-cms/limitations-of-management-tokens) documentation. **Note:** When trying out POST/PUT calls, in addition to the API Key and Authtoken / Management token, you need to mandatorily pass Content-Type:application/json in the Header. #### How to Get Stack API Key To retrieve the stack API key, perform the steps given below: 1. Go to your stack. 2. Navigate to **Settings** > **Stack**. 3. On the right-hand side of the page, under **API Credentials**, you will get the API Key of your stack. **Note**: Only the developers, admins and stack owners can view the API key. #### How to Get Authtoken To retrieve the authtoken, log in to your Contentstack account by using the "[Log in to your account](/docs/developers/apis/content-management-api#logging-in-out)" request. This request will return the authtoken in the response body. You can generate multiple authtokens by executing the "[Log in to your account](/docs/developers/apis/content-management-api#logging-in-out)" request multiple times. These tokens do not have an expiration time limit. However, currently, there is a maximum limit of **20 valid tokens** that a user can use per account at a time, to execute CMA requests. If you already have valid 20 tokens, creating a new authtoken will automatically cause the oldest authtoken to expire without warning. For SSO-enabled organizations, the "[Log in to your account](/docs/developers/apis/content-management-api#logging-in-out)" request will not return the user authtoken for users who access the organization through Identity Provider login credentials. Consequently, any requests that require user authtoken will not work. Only the owner of the organization and users with permission to access the organization without SSO can use the Content Management APIs. Learn more about [REST API Usage](/docs/administration/rest-api-usage). #### How to Get Management Tokens To get the Management Token, perform the steps given below after logging into your Contentstack account: 1. Go to your stack. 2. Navigate to **Settings** > **Tokens** > **Management Tokens**. 3. From the list, pick the Management Token that you want. Read more about how you can [create a new Management Token](/docs/headless-cms/generate-a-management-token). **Note**: Only the stack [Owner](/docs/headless-cms/types-of-roles#owner) and [Admin](/docs/headless-cms/types-of-roles#admin) users can create Management Tokens. You can generate multiple management tokens for a specific stack within your organization. However, there is a maximum limit of **10 valid tokens** that can exist per stack at a time, to execute CMA requests. If you already have 10 valid tokens, creating a new management token will automatically cause the oldest management token to expire without warning. #### How to Get OAuth Tokens To get the OAuth Token, perform the steps given within the [Configuring Contentstack OAuth](/docs/developer-hub/contentstack-oauth#configuring-contentstack-oauth) section after logging into your Contentstack account. **Note**: Only the organization Owner and Admin users can create OAuth Tokens. ### Rate limiting Rate limit is the maximum number of requests you can make using Contentstack’s API in a given time period. By default, the Contentstack Management API enforces the following rate limits: * **Read (GET) requests**: 10 requests per second per organization. * **Write (POST/PUT/DELETE) requests**: 10 requests per second per organization. Your application will receive the HTTP 429 response code if the requests for a given time period exceed the defined rate limits. **Note**: Bulk actions do not follow the standard CMA rate limit of 10 requests per second. The default rate limit for bulk actions is **1 request per second** i.e., in one second you can make only one bulk action API request. We also have set a limit on stack creation. Organizations can create only one stack per minute. The aforementioned limits are configurable depending on your plan. For more information, contact our [support](mailto:support@contentstack.com) team. To get the current rate limit status, you can check the returned HTTP headers of any API request. These rate limits are reset at the start of each time period. Headers Description X-RateLimit-Limit The maximum number of request a client is allowed to make per second per organization. X-RateLimit-Remaining The number of requests remaining in the current time period. ### API conventions * The base URL for Content Management API for different regions can be found in the [Base URL](#base-url) section. * The API version (in our case, 'v3') can be found in the URL, e.g. api.contentstack.io/v3/endpoint. * Content Management API supports GET/POST/PUT/DELETE verbs or methods. * URL paths are written in lower case. * Query parameters and JSON fields use lower case, with underscores (\_) separating words. * The success/failure status of an operation is determined by the HTTP status it returns. Additional information is included in the HTTP response body. * The JSON number type is bounded to a signed 32-bit integer. ### Errors If there is something wrong with the API request, Contentstack returns an error. Contentstack uses conventional, standard HTTP status codes for errors, and returns a JSON body containing details about the error. In general, codes in the 2xx range signify success. The codes in the 4xx range indicate error, mainly due to information provided (for example, a required parameter or field was omitted). Lastly, codes in the 5xx range mean that there is something wrong with Contentstack’s servers; it is very rare though. Let’s look at the error code and their meanings. HTTP status code Description 400 Bad Request The request was incorrect or corrupted. 401 Access Denied The login credentials are invalid. 403 Forbidden Error The page or resource that is being accessed is forbidden. 404 Not Found The requested page or resource could not be found. 412 Pre Condition Failed The entered API key is invalid. 422\* Unprocessable Entity (also includes Validation Error and Unknown Field) The request is syntactically correct but contains semantic errors. 429 Rate Limit Exceeded The number of requests exceeds the allowed limit for the given time period. 500 Internal Server Error The server is malfunctioning and is not specific on what the problem is. 502 Bad Gateway Error A server received an invalid response from another server. 504 Gateway Timeout Error A server did not receive a timely response from another server that it was accessing while attempting to load the web page or fill another request by the browser. **\*** Contentstack returns the **422** HTTP status code with the "UID is not valid" message when an entry doesn’t exist, has been deleted, or belongs to a different content type. To check if an entry has been deleted, first try retrieving it from the CDN, then from the origin server if needed. This error can also occur due to invalid query parameters, such as using an empty array with logical operators like $and. Always ensure your queries contain valid conditions. For example, {"$and": \[{}, {}\]} is not a valid query. **Note**: The error codes that we get in the JSON response are not HTTP error codes but are custom Contentstack error codes that are used for internal purposes. ### Using Postman Collection Contentstack offers you a Postman Collection that helps you try out our Content Management API. You can download this collection, connect to your Contentstack account, and try out the Content Management API with ease. Learn more about how to [get started with using the Postman Collection](/docs/developers/apis/content-management-api#postman-collection) for Contenstack Content Management API. ### Using OpenAPI Files Contentstack provides the OpenAPI files of the Contentstack’s Content Management APIs (CMA) that you can use to try out Contentstack APIs on any OpenAPI platform such as Swagger. You can download the OpenAPI JSON file of the Content Management API and open it on Swagger Editor to start using it. Learn more about how to get started with using the [OpenAPI files for Contenstack Content Management API](https://github.com/contentstack/contentstack-openapi). ## API Reference ### Stacks A [stack](/docs/headless-cms/about-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. #### Get Single Stack The Get a single stack call fetches comprehensive details of a specific stack. **Note**: For SSO-enabled organizations, it is mandatory to pass the organization UID in the header. #### Get All Stacks The Get all stacks call fetches the list of all stacks owned by and shared with a particular user account. **Note**: For SSO-enabled organizations, it is mandatory to pass the organization UID in the header. #### Create Stack The Create stack call creates a new stack in your Contentstack account. In the 'Body' section, provide the schema of the stack in JSON format. **Note**: At any given point of time, an organization can create only one stack per minute. #### Update Stack The Update stack call lets you update the name and description of an existing stack. In the 'Body' section, provide the updated schema of the stack in JSON format. **Warning:** The master locale cannot be changed once it is set while stack creation. So, you cannot use this call to change/update the master language. #### Delete stack The Delete stack call is used to delete an existing stack permanently from your Contentstack account. #### Get all users The Get all users of a stack call fetches the list of all users of a particular stack #### Update Existing User Role 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. For example, we have an existing user with the "Developer" role, and if you execute this API request with "Content Manager" role, the user role will lose "Developer" rights and the user role be updated to just "Content Manager". When executing the API call, under the 'Body' section, enter the user UID and UIDs of roles that you want to assign the user. This information should be in JSON format. #### Transfer Stack Ownership The Transfer stack ownership to other users call sends the specified user an email invitation for accepting the ownership of a particular stack. Once the specified user accepts the invitation by clicking on the link provided in the email, the ownership of the stack gets transferred to the new user. Subsequently, the previous owner will no longer have any permission on the stack. In the 'Body' section, you need to provide the email address of the user to whom you wish to transfer the ownership of the stack in JSON format. **Additional Resource**: To transfer ownership of a stack to other users via Contentstack's UI, refer to the [Transfer Stack Ownership](/docs/developers/set-up-stack/transfer-stack-ownership) article. #### Accept Stack Ownership The Accept stack owned by other user call allows a user to accept the ownership of a particular stack via an email invitation. The email invitation includes a link (i.e., /stack/accept\_ownership/{ownership\_token}?api\_key={api\_key}&uid={user\_uid} ) that consists of the ownership token, the API key, and user uid. Once the user accepts the invitation by clicking on the link, the ownership is transferred to the new user account. Subsequently, the user who transferred the stack will no longer have any permission on the stack. When executing the API call, in the 'URL Parameters' section, you need to provide the ownership token and the user uid that you received in the invitation mail. #### Stack Settings The Get stack settings call retrieves the configuration settings of an existing stack. The Add stack settings request lets you add additional settings for your existing stack. You can add specific settings for your stack by passing any of the following parameters in the “Request Body”: * Following parameters can be passed within the stack\_variables section: * "enforce\_unique\_urls": true: Ensures that entry URLs are not duplicated across the stack. * "sys\_rte\_allowed\_tags": "figure, style, script": You can pass a combination of the three values, figure, style, and script, to this parameter (e.g., "sys\_rte\_allowed\_tags": "figure, style, script", "sys\_rte\_allowed\_tags": "figure", etc.): * figure: Wraps images inside the “Rich Text Editor” field within the
    tag. * style: Allows to use the