Contentstack Demonstrates 295% ROI as Part of New Go Composable Initiative295% ROI with ContentstackRead more
cs-icon.svg

Product changelog

Stay up-to-date with all the Improvements, features, and changes introduced to the product, APIs, docs, and other resources.
  • Powerful new updates for search

    Jan 20, 2023

    Contentstack App

    We have added some powerful enhancements to our search to make it more intuitive for you. Here’s a glance at what’s new:

    1. Adding support for stemming and word forms

      This means that if you, for example, search for “like”, it will fetch results that contain “likes”, “liked”, “liking”, and other words that share the same root. This helps you find what you are looking for, even when you don’t feed in the exact query.

    2. Making search accent insensitive

      You can now search content without using diacritics (or accents) and still find what you are looking for. So, for example, the search query “cafe” will fetch results that contain “cafe” and “café”.

    3. Ignoring stop words for more relevancy

      Our search algorithm now automatically ignores stop words (common articles, pronouns and prepositions such as “a”, “the”, “are”, “and” etc.) from your query to boost search relevancy.

    Expand
  • Introducing JSON RTE v2

    Jan 13, 2023

    APIs

    Post January 13, 2023, when updating the content of your JSON Rich Text Editor, you do NOT need to pass the "dirty":true attribute within the request body.



    Previously, when updating the content within the JSON Rich Text Editor, you had to pass the "dirty":true attribute within the request body to accommodate the changes introduced.



    With this improvement, if the user doesn't supply the "dirty" attribute, the API takes care of this on its own. However, even if the user passes the dirty attribute, the entry is not affected.

    Expand
  • Automation Hub January Release Highlights: Streamline your business processes with a new advanced user interface

    Jan 12, 2023

    Contentstack App

    The January release of Automation Hub is a game-changer. With a host of new features and improvements, this release will make it easier than ever to create and manage automated workflow processes to streamline your integrations and workflows.

    What's new in this release:

    1. New actionable step outline tool

      This new outline will display the automation flow of steps, and a user can easily jump into any step and edit it just by clicking on the step within the step outline tool. The outline is a visual display of the full automation process and logic. This feature is designed to make it easy to build and maintain complex automations with ease.

      In addition, the step outline now features a search capability that, as you’re typing a query, will automatically filter results to display the search term.

    2. Each step is displayed in a new, easy-to-read vertical display

      Next, after clicking on a step in the step outline, we have a step wizard on the right side of the page. This vertical step display provides easy visualization of the automation step setup. You can quickly view steps and related data and see previous steps and their configurations as needed. This feature makes it easy to understand how your automations are configured and how they fit together.

    3. Introducing a powerful new feature: Conditional Paths

      A powerful new feature called Conditional Paths allows for if/else statement support. This enables you to create more complex business processes and logic. This feature allows you to create a multi-filtered query to target specific information. It supports OR and AND operators and has several different conditional checks like "matches," "is empty," and more. Each conditional path can have multiple statements to produce robust automations. This feature allows you to build automations that handle much more complex business processes.

      Learn more about Conditional Paths.

    4. Basic Information page provides an automation overview

      Finally, we've added a Basic Information page for each automation. This page will display an intro to the automaton, including the title, description, when it was created, and by whom. In the future, this page will incorporate additional information, such as the number of times the automation has run and if there have been errors, etc. This feature was designed to give you a quick overview of your automations and their history, making it easy to understand how they are being used and how they can be improved.

    In summary, the January release of Automation Hub is packed with new features that make it easier than ever to create and manage automated processes. As always, please let us know if you have any questions or need help with this new functionality.

    Expand
  • Your best work done in less time with the new entry editor

    Jan 04, 2023

    Contentstack App

    We have made some refreshing new visual updates to the entry editor experience, so content managers can work faster and with ease. Here is a rundown of what’s new:

    1. Prominent field blocks: The earlier formless editor gets a form-like design, with each field now more prominently displayed for better visual convenience for content managers.Entry Editor - What
    2. Smarter nested fields: Fields like “Group”, “Global”, and “Modular Blocks” — that can hold nested fields — now have color-coded icons and an easy way to collapse all child items. The nested fields also have color-coded icons so you can visually distinguish one from the other.Entry Editor - What
    3. Flexible custom fields: Custom fields are enclosed in accordions, so you can expand/collapse them as required.Entry Editor - What

    This is the first of many new updates planned for making entry editor much more efficient and elegant. so, stay tuned updates.

    Expand
  • Announcing the General Availability of Automation Hub

    Jan 02, 2023

    Contentstack App

    We are excited to announce the general availability of Automation Hub, an integrated automation and streamlining tool for the Contentstack Content Experience Platform.

    As we transition out of our Early Access phase, customers who were previously beta testing Automation Hub will be moved to our Explorer Plan, which offers up to 200 executions at no cost each month. Since Contentstack does not count additional usage for multi-step automations or charge extra for premium connectors, 200 executions is a generous allotment that can be used in production to help with critical but lower-frequency business tasks. Also, paid plans are available for those interested in additional usage of this valuable streamlining tool.

    Some highlights for the release include:

    1. The new JSON RTE Formatter connector streamlines the output of JSON RTE fields to work more efficiently with third-party integrations.
    2. Improved connector actions enable additional functionality.
    3. New actions to several connectors, such as publishing assets and unpublishing entries in the Contentstack connector, updating or deleting entries from an Algolia index, and more!
    4. Custom options for various triggers enable additional use cases.
    5. More complex options are available for the Contentstack entry trigger, such as adding referenced or custom query parameters.

    We’re thrilled to be able to offer Automation Hub to all of our customers and look forward to seeing all of the creative ways in which it will be used to streamline and automate business processes.

    If you have any questions or need more information, please contact our Customer Support team.

    Expand
  • Automation Hub December Release Highlights

    Dec 21, 2022

    Contentstack App

    We are happy to announce some exciting new updates available for Automation Hub! What's new in this release:

    1. Introducing the RTE Formatter connector

      We’ve created a new Automation Hub connector, the RTE Formatter, to help with the complex nested nature of the JSON output that may need to be supported by some external systems to create automations or integrations.

      The RTE Formatter currently has two action types, “Format JSON RTE Content to HTML” and “Format JSON RTE Content to Text.”

      Learn more about RTE Formatter through our documentation.

    2. New actions for the Algolia connector

      Previously, the Algolia connector could index content but could not delete an entry or do partial updates. These options are now available with the "Delete Entries" and the "Update Entries" actions.

      Learn more about the new Algolia actions.

    3. The Scheduler connector now generates mock data

      Using triggers involves raising the trigger event first, thus triggering further automation steps to capture the payload. It is unreasonable to wait hours, days, or weeks for a scheduled trigger to happen.

      So, we've now added mock data to the Scheduler connector. Instead of waiting for the event to happen, testing the trigger will display default data, which can be saved and used in later steps.

    4. Other improvements:
      • The Algolia connector will now appropriately index items that contain quotes or other special characters.
      • We’ve fixed an issue related to the filename format with the Amazon S3 connector.
    Expand
  • Version 1.2.3 - Release date: Nov 18, 2022

    Nov 18, 2022

    CLI

    Fixes:

    • Resolved - Issue while updating references in global fields while CLI import
    • Resolved - Marketplace private app UI location update issue fixes

    Documentation Updates:

  • Introducing PKCE Support for Contentstack OAuth

    Nov 11, 2022

    Contentstack App

    Contentstack OAuth now supports PKCE as a security extension to prevent malicious attacks and perform secure authorization flow.

    For more information, refer to our documentation on PKCE for Contentstack OAuth.

  • Entry List Page Now More Flexible and Intuitive

    Nov 08, 2022

    Contentstack App

    We are glad to introduce some cool new capabilities to the entry list page, making it easier to filter and find your favorite entries. Here’s a peek at what’s new:

    1. Filter for table column headers: Select columns and apply filters to display only what you want.
      Filter for Headers.gif
    2. Column resizing: All columns can now be resized so you can accommodate just the data that you want.
      Column Resizing.gif
    3. Column shuffling: You can drag and move columns in the column selector to customize your table view.
      Column Shuffling.gif
    4. Add/remove columns: There are now no restrictions on which columns you can hide or display on the entry list page, giving you complete control of your view.
      Add or Remove Columns.gif
    Expand
  • Version 1.2.1 - Release date: Nov 4, 2022

    Nov 04, 2022

    CLI

    Features/Enhancements:

    • Introduced a new flag (--yes) for asserting boolean migration flags in the clone command
    • Logical code improvements in import and export modules

    Fixes:

    • Resolved - New app names are not updated and are shown in console success messages
    • Resolved - Prompt showing to select branch even if target/source branch already provided
    • Resolved - Unable to create private apps on EU region stacks while importing data.
    • Resolved - Stack-clone: Failed to create entries in ‘undefined’ language error
    • Resolved - CLI script breaks while importing labels
    • Resolved - Backspace option not available in case of new stack flow in import step of clone
    • Resolved - Stack-clone: Cannot set properties of undefined (setting ‘dirty’)
    • Security and Vulnerability fixes
    Expand
  • Introducing User Provisioning with Microsoft Azure AD

    Nov 03, 2022

    Contentstack App

    Introducing SCIM provisioning in Contentstack with Azure Active Directory. You can now use your Azure AD IdP to manage users and groups within your Contentstack organization.

    For more information, refer to our Set Up SCIM Provisioning with Microsoft Azure AD document.

  • Introducing .NET and Java Management SDKs

    Oct 20, 2022

    Contentstack App

    Contenstack introduces .NET and Java Management SDKs to help you manage your content. Integrate your .NET or Java applications with Contentstack to create, update, delete, and fetch data using these SDKs.

    Refer to our documentation on .NET and Java Management SDK for more information.

    Expand
  • Version 1.1.0 - Release date: Oct 14, 2022

    Oct 14, 2022

    CLI

    Features/Enhancements:

    • Marketplace apps import/export/clone support
    • Existing roles & custom roles export/import/clone support
    • Vue & Stencil apps support in bootstrap command
    • Introduced a ‘branch’ option in stack-clone command
    • Create Live Preview settings while creating starter apps using CLI bootstrap command
    • Utility to clone the stack data with different master locale

    Fixes:

    • Resolved - Clone/import/export not working for stacks having Marketplace Apps 
    • Resolved - Entries having image preset data are not getting created while import using CLI import command 
    • Resolved - CLI and bulk publish utility gives error while cross publishing assets
    • Resolved - Regex Validation CLI plugin throws error while running csdx cm:stacks:validate-regex
    • Security and Vulnerability fixes

    Documentation Updates:

    Expand
  • Introducing Markdown Support to Format Content within the JSON RTE

    Oct 13, 2022

    Contentstack App

    The JSON Rich Text Editor now supports Markdown syntax for formatting content. You can add headings, inline characters, or lists, as well as more complex formatting, like images, URLs, or code blocks using the Markdown Syntax.

    For more information, refer to our documentation on Use Markdown to Format Content within the JSON RTE.

    Makrdown_GIF.gif

    Expand
  • UI Enhancements for the Label Modal

    Oct 13, 2022

    Contentstack App

    The Create and Edit Label modal has been enhanced with the following:

    - Each parent label now has a line divider.

    - Long label names are now truncated and an on-hover tooltip displays the full label name.

    - Create Label Modal.png

    Expand
  • Introducing Modal Support for Apps/Extensions

    Sep 22, 2022

    Contentstack App

    Contentstack now lets you use the “venus-components” to open a modal within apps and extensions to display additional information, collect additional inputs from users, or draw attention to a specific feature (or features) on a page, etc. You can use "cbModal" to launch a new modal using the Contentstack’s Venus Modal Component.

    Note: For a comprehensive collection of Contentstack’s UI components that you can use to build UI Extensions and Contentstack-based applications, please refer to the Contentstack Venus Component Library and the App SDK documentation.

    For more information, refer to our documentation on Modal Support for Apps/Extensions.

    Expand
  • Version 1.0.4 - Release date: Sept 16, 2022

    Sep 16, 2022

    CLI

    Fixes:

    • Resolved - Unable to add tokens(Delivery/Management) without login
    • Resolved - All locally stored tokens got removed after updating/installing new version of CLI from Beta version
    • Resolved error Parent UID is not valid while importing assets
    • Resolved - Auth commands was showing template messages
    • Vulnerability fixes
  • Version 1.0.3 - Release date: Aug 11, 2022

    Aug 11, 2022

    CLI

    Features/Enhancements:

    • Major general access (GA) release for Contentstack Command-line Interface (CLI)
    • Command respecification and restructuring for achieving command standardization

    Fixes:

    • Vulnerability fixes
    • Minor bug fixes
    • Added backward compatibility for old commands and their flags

    Documentation Updates:

    Expand
  • CLI Version 1.0.3 Released

    Aug 11, 2022

    Contentstack App

    We are launching the Contenstack command-line interface (CLI) version 1.0.3. Along with overall improvements to, and bug fixes on the product, and introduces command respecification and restructuring for achieving command standardization.

    With this release, we have:

    - Resolved vulnerabilities and fixed minor bugs

    - Added backward compatibility for old commands and their flags

    Note: All other features and plugins remain as is.

    For more information, refer to our documentation on the Contentstack command-line interface (CLI).

    Upcoming Roadmap Items:

    - Core CLI scripts stability (Import, Export, and Clone)

    - Branches support on CLI

    Expand
  • Improved UI for the Search Bar and Reference Field entry name

    Aug 10, 2022

    Contentstack App

    Search Bar Enhancements

    Introducing the following UI enhancements for the search bar:

    - An interactive search icon is enabled as soon as you type something.

    - Option for Saved Searches.

    - In the Saved Searches option, only five searches are shown. Click View All to see other saved searches.

    - Reordered sections in the search bar popup.

    - Recent Searches displays the searched texts instead of the whole query.

    - Use the Clear All button to delete all recent searches.

    - In the Recently Used Fields section, you will see only the top five most recent searches.

    View Complete Entry Title in the Popup Modal

    While hovering over an entry name in the reference field pop-up, you can now see the full title.

    Alphabetical Sorting of Reference Field Entries

    Content types within reference field entries modal are now alphabetized.

    Expand
  • Accept or Skip Source Font Size While Copying Content in HTML RTE

    Aug 04, 2022

    Accept or Skip Source Font Size While Copying Content in HTML RTE

    Post this release, i.e., August 4, 2022, you will be allowed to skip the font size attribute while pasting content from a vendor (Google Document) while executing the Add stack settings API request. You can pass the "sys_rte_skip_format_on_paste" key within the stack_variables section in the request body.

    While copying content from an external app (e.g., Google Drive) into the HTML RTE field (using the Add stack settings API requests), the font-size attribute helps you copy content along with the font size used in the source.

    If you wish to ignore the font size of the source and use the default or user-defined font size, you can skip this attribute while executing the API request.

    To skip the font-size attribute, you can use the "sys_rte_skip_format_on_paste":"GD:font-size" key. Here, GD indicates the external app’s prefix (Google Document), while font-size signifies the attribute to skip.

    Note: We are currently only supporting one attribute (GD:font-size) for this key. This is only applicable for the HTML Rich Text Editor.

    Here’s a sample of the Request Body:

    {
       "stack_settings":{
          "stack_variables":{
             "enforce_unique_urls":true,
             "sys_rte_allowed_tags":"style,figure,script",
             "sys_rte_skip_format_on_paste":"GD:font-size"
          },
          "rte":{
             "cs_only_breakline":true
          }
       }
    }
    
    Expand
  • Accept or Skip Source Font Size While Copying Content in HTML RTE

    Aug 04, 2022

    Contentstack App

    While copying content from an external app (e.g., Google Drive) into the HTML RTE field (using the Add stack settings API requests), the font-size attribute helps you copy content along with the font size used in the source.

    If you wish to ignore the font size of the source and use the default or user-defined font size, you can skip this attribute while executing the API request.

    To skip the font-size attribute, you can use the "sys_rte_skip_format_on_paste":"GD:font-size" key. Here, GD indicates the external app’s prefix (Google Document), while font-size signifies the attribute to skip.

    Note: We currently support only one attribute (GD:font-size) for this key. This is only applicable for the HTML Rich Text Editor. For more information, refer to the API Change Log for this update.

    Here’s a sample of the Request Body:

    {
       "stack_settings":{
          "stack_variables":{
             "enforce_unique_urls":true,
             "sys_rte_allowed_tags":"style,figure,script",
             "sys_rte_skip_format_on_paste":"GD:font-size"
          },
          "rte":{
             "cs_only_breakline":true
          }
       }
    }
    
    
    Expand
  • Introducing Mission Control and Product Analytics

    Aug 04, 2022

    Contentstack App

    The Mission Control dashboard is a plan-based feature that helps you monitor the overall health of your organization. Additionally, you can use it to identify and track issues in your organization, helping you minimize the impact of the issues on customers.

    Refer to our documentation on Mission Control for more information.

    Introducing Product Analytics

    Organization Analytics is now called Product Analytics under Organization Settings. With this release, the dashboard gets enhanced UX and new capabilities to explore your organization’s usage.

    In case you are unable to access the Product Analytics dashboard, please contact our support team.

    Refer to our documentation on Product Analytics for more information.

    Expand
  • Deploy Content to Multiple Servers Feature Discontinued

    Jul 26, 2022

    Deploy Content to Multiple Servers Feature Discontinued

    Post this release, i.e., July 26, 2022, we will stop supporting the ability to add multiple content deployment servers while setting up a specific publishing environment in Contentstack. We recommend that you instead make use of Webhooks to trigger deployment to multiple web servers whenever you publish content to an environment.

    Once this product update goes live, all Content Management API (CMA) requests related to environments will no longer return the deploy_content and servers keys in the response. Here's a sample of an updated response body that returns environment data when you run the Get all environments API request:

    {
        "environments": [{
                "urls": [{
                    "url": "http://localhost.com",
                    "locale": "en-us"
                }],
                "name": "local",
                "uid": "blta1212be1fcfdfad2",
                "created_by": "blt12e12121d12d1f81212a1b2f",
                "updated_by": "blt12e12121d12d1f81212a1b2f",
                "created_at": "2017-06-13T12:28:59.488Z",
                "updated_at": "2018-11-01T13:25:00.349Z",
                "ACL": [
                ],
                "_version": 2
            },
            {
                "urls": [{
                    "url": "/staging",
                    "locale": "en-us"
                }],
                "name": "staging",
                "uid": "bltf66ca6a66d66cecf",
                "created_by": "blt6565a6b056fc5bc6",
                "updated_by": "blt6565a6b056fc5bc6",
                "created_at": "2019-05-03T08:11:12.583Z",
                "updated_at": "2019-05-03T08:11:12.583Z",
                "ACL": [
                ],
                "_version": 1
            },
            {
                "urls": [{
                    "url": "/production",
                    "locale": "en-us"
                }],
                "name": "production",
                "uid": "bltfd8888c8bd8cb8cb",
                "created_by": "blt22e22222d22d2f22222a2b2f",
                "updated_by": "blt22e22222d22d2f22222a2b2f",
                "created_at": "2018-08-09T13:39:37.117Z",
                "updated_at": "2018-08-09T13:39:37.117Z",
                "ACL": [
                ],
                "_version": 1
            }
        ]
    }
    

    Please consider these missing parameters to avoid breaking changes in your application.

    Expand
  • Deploy Content to Multiple Servers Feature Discontinued

    Jul 26, 2022

    Contentstack App

    Post July 26, 2022, we will stop supporting the ability to add multiple content deployment servers while setting up a specific publishing environment in Contentstack. We recommend that you instead make use of Webhooks to trigger deployment to multiple web servers whenever you publish content to an environment.

    This update will be effective across both the new and classic Contentstack interfaces.

    Breaking Changes: Once the July 26, 2022, product update is completed, all Content Management API (CMA) requests related to environments will no longer return the deploy_content and servers keys in the response. Please consider these parameters to avoid breaking changes in your application. For any inquiries, please reach out to our support team at support@contentstack.com.

    For more information on this update, refer to our API Change Log documentation.

    Expand
  • New Asset filters, Sorting Options, and UI Enhancements Sample

    Jul 21, 2022

    Contentstack App

    New Asset Filters

    Finding assets is now easier than ever. Introducing three new filters — Code, Executable, and Archive — on the assets list page that help you find your code files, executable (.exe) files, and zip files, respectively. These filters are also available while searching for assets in the global search. Refer to our documentation on More asset filters for more information.

    asset filter.png

    More Sorting Options

    We have added new sorting functionality to some of the common list pages:

    • Users & Roles (sort by Status)
    • Webhooks (sort by Status)
    • Workflow (sort by Status)
    • Extensions (sort by Name, Type, Field data type, Hosting method, Last modified)
    • Audit Log (sort by Date, Module, Remote address, Title).

    UI Enhancements

    Disabled past date selection while scheduling publishing

    It is no longer possible to select a date that has passed while scheduling a release.

    past date graded out.png

    Improved search experience

    The search bar now has a dedicated “Advanced Search” button that lets you switch to an advanced mode where you can add complex and nested condition sets. We have also added a shortcut to our documentation site and have improved the look and feel of the “Filters” button.

    “See more” Localized language entries in a separate pop-up

    When you click on the "See more" option under the Localization Status section (see screenshot), the list now opens up in a separate pop-up modal window, making it easier to see all of the languages for which that entry has been adapted.

    See more - modal:

    see more modal.png

    Selected localized language entry opens in a separate tab:

    new screen visibility.png

    New “Default field” tag for default fields of content types

    We have added a “Default field” tag to the fields that come by default while creating a content type.

    default tag.png

    Change in the “Remove” icon in the entry reference field

    The “Remove” icon, which appears when you hover over the reference field of an entry, has been changed to be more consistent with other icons in the interface.

    icon change.png

    Cancel scheduled publishing of an entry

    You can now easily cancel the scheduled publishing of an entry from the Publish Queue by simply hovering over the entry and clicking on “Cancel Scheduling".

    cancel scheduling.png

    Expand
  • Environments are now sorted alphabetically on the publish/unpublish modal

    Jul 01, 2022

    Contentstack App

    Publishing content is now quicker and simpler for content managers. The list of your environments on the publish/unpublish modal for entries and assets is now sorted alphabetically, making it easier to find your preferred option(s) from the list.

  • Webhook Rate Limit

    Jun 29, 2022

    Webhook Rate Limit

    Earlier, an Organization could perform as many webhook executions as they wanted at any given time, without restrictions. Due to this setup, there was a huge probability that a single customer could flood the network by occupying higher positions in the queue.

    To avoid this bottleneck situation, we have imposed a rate limit of 200 Webhook executions per minute for all Organizations. So, when an Organization reaches this rate limit, further webhook messages will be set to process in the next queue, without dropping any of the events beyond the rate limit. For more information, refer the documentation on Webhook Rate Limit.

    Expand
  • Notify Users about Disabled Webhooks

    Jun 09, 2022

    Contentstack App

    Now, you can choose which users you want to notify when Webhook Circuit Breaker disables a particular webhook. You can specify the email addresses of the users to be notified under the Users(s) to Notify section when creating your webhook.

    For more information, refer to the Create a Webhook and Webhook Circuit Breaker documentation.

    Expand
  • Partial Text-based Search for Assets and Asset Folders

    Jun 08, 2022

    Partial Text-based Search for Assets and Asset Folders

    We introduced the following changes in our June 8, 2022 release:

    • Contentstack now allows you to run a text-based search for an asset folder present in your stack. You can enter a search phrase that entirely or partially matches the name of the asset folder to bring it up in your search results.

      For example, you can run a Basic Search based on a search phrase such as “Marketing” to search for the “Marketing Images” asset folder, thus reducing effort and time.
    • Partial_Search_for_Asset_Folder.png

    • Contentstack now allows you to run a Basic Search for assets and asset folders based on a search phrase that partially matches the name of the asset or folder to bring it up in your search results. Instead of entering an exactly matching search phrase, you can type in a specific part of the asset or folder name for your basic search.

      For example, you can run a basic search using partially matching search phrases such as “smart” or “phone” to search for the “Smartphone.jpg” asset in your stack.
    • Partial_Search_for_an_Asset.png

    Expand
  • Partial Text-based Search for Assets and Asset Folders

    Jun 08, 2022

    Contentstack App

    We introduced the following changes in our June 8, 2022 release:

    • Contentstack now allows you to run a text-based search for an asset folder present in your stack. You can enter a search phrase that entirely or partially matches the name of the asset folder to bring it up in your search results.
      For example, you can run a Basic Search based on a search phrase such as “Marketing” to search for the “Marketing Images” asset folder, thus reducing effort and time.

    • Contentstack now allows you to run a Basic Search for assets and asset folders based on a search phrase that partially matches the name of the asset or folder to bring it up in your search results. Instead of entering an exactly matching search phrase, you can type in a specific part of the asset or folder name for your basic search.
      For example, you can run a basic search using partially matching search phrases such as “smart” or “phone” to search for the “Smartphone.jpg” asset in your stack.

    For more information, refer to our API Change Log documentation.

    Expand
  • Introducing Contentstack Marketplace and Contentstack Developer Hub

    May 23, 2022

    Contentstack App

    We are excited to introduce Contentstack Marketplace and our App Development Framework (in Public Beta).

    • Contentstack Marketplace is a one-stop platform that allows you to explore and use third-party integrations and pre-built extensions to solve all your business-specific needs. Read more about Contentstack Marketplace.
    • Contentstack Developer Hub is an app development platform that allows you to build your own apps and publish them to Contentstack Marketplace. It is currently in the Beta phase. Please reach out to your CSM to get access. Read more about how you can use Contentstack Developer Hub to build apps for Marketplace.

    Note: This plan-based feature is available only in the new Contentstack interface.

    Expand
  • Introducing Asset Sidebar Extensions

    May 20, 2022

    Contentstack App

    Asset Sidebar Extension, a new type of Experience Extension, allows developers to create custom sidebars for assets. With this new extension, they can add powerful new capabilities for content managers to manage, transform, and optimize assets easily.

    select sidebar extn.png

    Refer to our documentation on Asset Sidebar Extensions for more information.

    Note: This plan-based feature is available only in the new Contentstack interface.

    Expand
  • Introducing Additional Metadata Support for Entries and Assets

    May 20, 2022

    Contentstack App

    Developers can now add custom metadata to entries and assets, so content managers can easily organize, categorize, and find content. You can add new metadata without incrementing the version, using the Metadata Content Management API requests.

    Refer to our documentation on Metadata for entries and assets for more information.

    Note: This plan-based feature is available only in the new Contentstack interface.

    Expand
  • Export the Organization Users List in a CSV File

    May 13, 2022

    Contentstack App

    Contentstack now allows you to use the "Export" option to export details of all the users on the organization users list page into a Comma Separated Values (CSV) file. You can open this CSV file using any spreadsheet application to clearly view the exported user details.

    With this option, you can skim through user details in a single view instead of viewing only 30 users on a page at a time, avoiding the need to constantly scroll through long user lists.

    Note: The "Export users list" feature is available only in the new Contentstack interface.

    For more information, read our Export Users List documentation

    Expand
  • Webhook Channel Support for Entry Comments and Discussions

    May 13, 2022

    Contentstack App

    Now, you can also set trigger conditions based on actions performed on entry comments and discussions. Refer to our Comments and Discussions webhook documentation to learn more about the trackable events.

    Expand
  • Restrict Content Types and Global Fields with Upper Case Unique IDs

    Apr 11, 2022

    Restrict Content Types and Global Fields with Upper Case Unique IDs

    Post this release, i.e., April 11, 2022, Contentstack will restrict you from creating or importing content types and global fields with unique IDs specified in upper case. If you try to create or import a content type or global field with an uppercase unique ID, your Content Management API (CMA) requests will return an error in the response.

    Content Type Related Error Messages

    For content type creation requests (with upper case UIDs), you will encounter the following error:

    {
        "error_message":"Content Type creation failed. Please try again.",
        "error_code":118,
        "errors":{
            "uid":[
                "is not valid."
            ]
        }
    }
    

    For content type import requests (with upper case UIDs), you will encounter the following error:

    {
        "error_message":"There was a problem importing the Content Type. Please correct the Content Type and try again.",
        "error_code":118,
        "errors":{
            "uid":[
                "is not valid."
            ]
        }
    }
    

    Global Field Related Error Messages

    For global field creation requests (with upper case UIDs), you will encounter the following error:

    {
        "error_message":"Global Field creation failed. Please try again.",
        "error_code":118,
        "errors":{
            "uid":[
                "is not valid."
            ]
        }
    }
    

    For global field import requests (with upper case UIDs), you will encounter the following error:

    {
        "error_message":"There was a problem importing the Global Field. Please try again.",
        "error_code":118,
        "errors":{
            "uid":[
                "is not valid."
            ]
        }
    }
    
    Expand
  • Introducing Encryption for SAML Attributes

    Apr 04, 2022

    Contentstack App

    SAML attributes can now be encrypted in SSO login requests. This provides an additional layer of protection for your personal or corporate data. Once you enable encryption in your IdP and Contentstack, the IdP encrypts the SAML attributes using Contentstack's public key certificate.

    Refer to our Enable SAML Encryption documentation for more information.

  • [Potential Breaking Change] Additional "branch" Key in Webhook-related API Responses

    Feb 25, 2022

    [Potential Breaking Change] Additional "branch" Key in Webhook-related API Responses

    If the "Branches'' feature is part of your plan, all webhook-related API requests that hit the Content Management API (CMA) will return the branch key in the response body. This key specifies the unique ID of the branch on which the concerned webhook was triggered. Additionally, it also highlights the unique ID for any alias assigned to the branch and the source branch from which it inherits data.

    Here's a sample of the webhook data returned along with the branch key when you run the Get webhook executions API request:

    {
      "webhooks":[
        {
          "uid":"bltf00ec3b37082288b",
          "channel":[
            "content_types.create"
          ],
          "created_at":"2021-09-21T07:24:48.757Z",
          "event_data":{
            "module":"content_type",
            "api_key":"blt29ec365eaa0c8d67",
            "event":"create",
            "data":{
              "uid":"new_content_type",
              "title":"New Content Type",
              "branch":{
                "alias":[
                  "test"
                ],
                "uid":"development",
                "source":"main"
              }
            }
          },
          "event_headers":{
            "Content-Type":"application/json",
            "User-Agent":"Contentstack",
            "X-Contentstack-Signature":"d7b6d307f35086885f64a8a8sd7s878d7s8"
          },
          "org_uid":"blteac54a27425b3b0e",
          "request_details":[
            {
              ...
                "body":{
                  "triggered_at":"2021-09-21T07:24:43.734Z",
                  "module":"content_type",
                  "api_key":"blt29ec365eaa0c8d67",
                  "event":"create",
                  "data":{
                    "uid":"new_content_type",
                    "title":"New Content Type",
                    "branch":{
                      "alias":[
                        "test"
                      ],
                      "uid":"development",
                      "source":"main"
                    }
                  }
                },
                "headers":{
                  ...
                },
                "json":true,
                "resolveWithFullResponse":true,
                "timeout":30000
              },
              "response":{
                "statusCode":500,
                "message":"Unable to connect to host.",
                "request":{
                  "uri":{
                    "href":"https://webhook.gatsbee.com/hooks/data_source/12345"
                  },
                  "method":"POST",
                  "headers":{
                    "Content-Type":"application/json",
                    "User-Agent":"Contentstack",
                    "X-Contentstack-Signature":"d7b6d307f35086885f64a8a2a47ef2e374837"
                  }
                }
              },
              "created_at":"2021-09-21T07:24:48.757Z"
            }
          ],
          "retry_count":1,
          "status":500,
          "updated_at":"2021-09-21T07:25:28.860Z",
          "webhooks":[
            "blt6b256750460b99c0"
          ],
          "destination":{}
        }
      ]
    }
    
    

    Additional "branches" and "branch_aliases" Keys to Specify Branch/Alias Scope in Responses

    If the "Branches" feature is part of your plan, you will see additional keys named branches and branch_aliases in the API responses in some of the Contentstack modules (listed below). The branches and branch_aliases keys specify the unique IDs of the branches and aliases selected within the scope for the concerned modules.

    • Webhooks-related API requests that hit the Content Management API (CMA) will return a top-level branches key in the response body. This key specifies the unique ID of the branch to which the webhook is applicable.

      When creating or updating a webhook, you need to specify the branch scope through the following schema in the request body:

      "branches":[
          "main"
      ]
      
      

      For instance, here’s the response that you will get for the Create a webhook API request:

      {
          "notice":"The webhook was created successfully",
          "webhook":{
              "uid":"blta4c0a90071d12f38",
              "channels":[
                  "assets.create"
              ],
              "branches":[
                  "main"
              ],
              "disabled":false,
              "concise_payload":true,
              "name":"Test",
              "destinations":[
                  {
                      "target_url":"http://example.com",
                      "http_basic_auth":"basic",
                      "http_basic_password":"test",
                      "custom_header":[
                          {
                              "header_name":"Custom",
                              "value":"testing"
                          }
                      ]
                  }
              ],
              "retry_policy":"manual",
              "updated_by":"blta7eaf6883dd73a0b",
              "created_by":"blta7eaf6883dd73a0b",
              "created_at":"2021-09-20T18:54:01.105Z",
              "updated_at":"2021-09-20T18:54:01.105Z"
          }
      }
      
      
    • Workflows-related API requests that hit the Content Management API (CMA) will return a top-level branches key in the response body. This key specifies the unique IDs of the branches to which the workflow is applicable.

      When creating or updating a workflow, you need to specify the branch scope through the following schema in the request body:

      "branches":[
          "main"
      ]
      
      

      For instance, here’s the response that you will get for the Create a workflow API request:

      {
          "notice":"Workflow created successfully.",
          "workflow":{
              "workflow_stages":[
                  {
                      "color":"#74ba76",
                      "SYS_ACL":{
                          "others":{
                              "read":true,
                              "write":true,
                              "transit":false
                          },
                          "users":{
                              "uids":[
                                  "$all"
                              ],
                              "read":true,
                              "write":true,
                              "transit":true
                          },
                          "roles":{
                              "uids":[
                                  
                              ],
                              "read":true,
                              "write":true,
                              "transit":true
                          }
                      },
                      "next_available_stages":[
                          "$all"
                      ],
                      "allStages":true,
                      "allUsers":true,
                      "specificStages":false,
                      "specificUsers":false,
                      "name":"Review",
                      "uid":"blt7336c2c86ede8b9a"
                  },
                  {
                      "color":"#2196f3",
                      "SYS_ACL":{
                          "others":{
                              "read":true,
                              "write":true,
                              "transit":false
                          },
                          "users":{
                              "uids":[
                                  "$all"
                              ],
                              "read":true,
                              "write":true,
                              "transit":true
                          },
                          "roles":{
                              "uids":[
                                  
                              ],
                              "read":true,
                              "write":true,
                              "transit":true
                          }
                      },
                      "allStages":true,
                      "allUsers":true,
                      "specificStages":false,
                      "specificUsers":false,
                      "next_available_stages":[
                          "$all"
                      ],
                      "name":"Complete",
                      "uid":"bltace4f008c3156e97"
                  }
              ],
              "admin_users":{
                  "users":[
                      
                  ],
                  "roles":[
                      "bltc5412bb640c8cce1"
                  ]
              },
              "name":"Sample Workflow",
              "enabled":true,
              "branches":[
                  "main"
              ],
              "content_types":[
                  "author",
                  "header"
              ],
              "uid":"bltf502c1bf4b742857",
              "api_key":"blt29ec365eaa0c8d67",
              "org_uid":"blteac54a27425b3b0e",
              "created_by":"blt1fd0057b90905592",
              "created_at":"2021-09-22T14:05:54.454Z",
              "deleted_at":false
          }
      }
      
      
    • Publish Rules-related API requests that hit the Content Management API (CMA) will return a top-level branches key in the response body. This key specifies the unique IDs of the branches for which the publishing rule is applicable.

      When creating or updating a publishing rule, you need to specify the branch scope through the following schema in the request body:

      "branches":[
          "main"
      ]
      
      

      For instance, here’s the response that you will get for the Create publish rules API request:

      {
          "notice": "Publish rule created successfully.",
          "workflow": {
              "status": {
                  "publishing_rules": true
              },
              "publishing_rules": [
                  {
                      "uid": "blta7e8171bdaf013cd",
                      "actions": [],
                      "environment": "blta6fa90d8fc8a35b3",
                      "branches": [
                          "main"
                      ],
                      "content_types": [
                          "$all"
                      ],
                      "locales": [
                          "en-us"
                      ],
                      "approvers": [
                          "blt1fd0057b90905592"
                      ],
                      "status": true
                  }
              ]
          }
      }
      
      
    • Delivery Token and Management Token-related API requests that hit the Content Management API (CMA) will return the branches and branch_aliases keys under the scope section in the response body. These keys specify the unique IDs of the branches and branch aliases for which a delivery or management token is applicable.

      When creating or updating a delivery or management token, you need to specify the branch and alias scope through the following schema in the request body:

      {
          "module":"branch",
          "branches":[
              "main",
              "development"
          ],
          "acl":{
              "read":true
          }
      },
      {
          "module":"branch_alias",
          "branch_aliases":[
              "deploy",
              "release"
          ],
          "acl":{
              "read":true
          }
      }
      
      

      For instance, here’s the response that you will get for the Create a delivery token API request:

      {
          "notice": "Delivery Token created successfully.",
          "token": {
              "name": "Sample Delivery Token",
              "description": "Sample token.",
              "scope": [
                  {
                      "environments": [
                          {
                              "name": "staging",
                              "servers": [
                                  {
                                      "name": "default"
                                  }
                              ],
                              "urls": [
                                  {
                                      "locale": "en-us",
                                      "url": "http://example.com/"
                                  }
                              ],
                              "deploy_content": true,
                              "app_user_object_uid": "system",
                              "uid": "blta6fa90d8fc8a35b3",
                              "created_by": "blta7eaf6883dd73a0b",
                              "updated_by": "blta7eaf6883dd73a0b",
                              "created_at": "2021-09-16T19:27:18.898Z",
                              "updated_at": "2021-09-16T19:27:18.898Z",
                              "ACL": [],
                              "_version": 1,
                              "tags": []
                          }
                      ],
                      "module": "environment",
                      "acl": {
                          "read": true
                      },
                      "_metadata": {
                          "uid": "csfa77cbd080f5afbd"
                      }
                  },
                  {
                      "module": "branch",
                      "acl": {
                          "read": true
                      },
                      "branches": [
                          "main",
                          "development"
                      ],
                      "_metadata": {
                          "uid": "cs766df728fb56e697"
                      }
                  },
                  {
                      "module": "branch_alias",
                      "acl": {
                          "read": true
                      },
                      "branch_aliases": [
                          "deploy",
                          "release"
                      ],
                      "_metadata": {
                          "uid": "cs27a40bf57db84414"
                      }
                  }
              ],
              "uid": "blt9d62d10720189b2e",
              "created_by": "blt1fd0057b90905592",
              "updated_by": "blt1fd0057b90905592",
              "created_at": "2021-09-22T16:01:34.410Z",
              "updated_at": "2021-09-22T16:01:34.410Z",
              "token": "cs93d9e3bb4bf8a0612d8bdb77",
              "type": "delivery",
              "_metadata": {
                  "references": []
              }
          }
      }
      
      
    • User Roles-related API requests that hit the Content Management API (CMA) will return the branches and branch_aliases keys under the rules section in the response body. These keys specify the unique IDs of the branches and branch aliases of which a particular user role can access data.

      When creating or updating a user role, you need to specify the branch and alias scope through the following schema in the request body:

      {
          "module":"branch",
          "branches":[
              "main"
          ],
          "acl":{
              "read":true
          }
      },
      {
          "module":"branch_alias",
          "branch_aliases":[
              "deploy"
          ],
          "acl":{
              "read":true
          }
      }
      
      

      For instance, here’s the response that you will get for the Create a role API request:

      {
          "notice":"The role created successfully.",
          "role":{
              "name":"Demo role",
              "description":"Demo role.",
              "rules":[
                  {
                      "module":"content_type",
                      "content_types":[
                          "author"
                      ],
                      "acl":{
                          "read":true,
                          "sub_acl":{
                              "read":true,
                              "create":true,
                              "update":true,
                              "publish":true,
                              "delete":true
                          }
                      }
                  },
                  {
                      "module":"asset",
                      "assets":[
                          "$all"
                      ],
                      "acl":{
                          "read":true,
                          "create":true,
                          "update":true,
                          "publish":true,
                          "delete":true
                      }
                  },
                  {
                      "module":"environment",
                      "environments":[
                          "blta6fa90d8fc8a35b3"
                      ],
                      "acl":{
                          "read":true
                      }
                  },
                  {
                      "module":"locale",
                      "locales":[
                          "blt37255d0c5a6d20b1"
                      ],
                      "acl":{
                          "read":true
                      }
                  },
                  {
                      "module":"branch",
                      "branches":[
                          "main"
                      ],
                      "acl":{
                          "read":true
                      }
                  },
                  {
                      "module":"branch_alias",
                      "branch_aliases":[
                          "deploy"
                      ],
                      "acl":{
                          "read":true
                      }
                  }
              ],
              "users":[
                  
              ],
              "uid":"bltc590a9b813590e8e",
              "org_uid":"blteac54a27425b3b0e",
              "api_key":"blt29ec365eaa0c8d67",
              "created_by":"blt1fd0057b90905592",
              "updated_by":"blt1fd0057b90905592",
              "created_at":"2021-09-23T08:09:30.971Z",
              "updated_at":"2021-09-23T08:09:30.971Z"
          }
      }
      
      

    [Potential Breaking Change] Updated Asset Download URL Format as per Branch

    If the "Branches" feature is part of your plan, you will see an updated download URL format for all assets part of any branch, except the default main branch. The branch={branch_UID} query parameter is attached to the download URL.

    For instance, if you upload an asset to the development branch, Contentstack generates the following asset download URL:

    https://assets.contentstack.com/v3/assets/blt252b550c5ccdae26/bltc56f275260214c0b/61280d9625aca65092ce7f15/Sample_Image.jpg?branch=development
    
    

    For any asset that you upload to the main branch, Contentstack will continue to generate asset download URLs in the earlier format:

    https://assets.contentstack.com/v3/assets/blt252b550c5ccdae26/bltc56f275260214c0b/61280d9625aca65092ce7f15/Sample_Image.jpg
    
    

    Support "include_branch" as Query Parameter in CMA and CDA API Requests

    If the "Branches" feature is part of your plan, you can pass the include_branch query parameter while running Content Delivery API (CDA) / CDN and Content Management API (CMA) requests. Set the include_branch key to true to allow the API to return the _branch top-level key in the response. This key specifies the unique ID of the branch and helps identify where the concerned Contentstack module resides.

    Here’s the list of the components that support the include_branch query parameter:

    • Content Types [CDA / CMA]
    • Global fields [CDA / CMA]
    • Assets [CDA / CMA]
    • Entries [CDA / CMA]
    • Extensions
    • Languages
    • Releases
    • Audit Log
    • Publish Queue
    • Note: For Publish Queue and Audit Log related API requests, instead of "_branch": "{branch_ID}", you will see the "branch": "{branch_ID}" top-level key in the response.

      Let us look at an example to understand how the response would look when you pass the include_branch query parameter. For instance, here’s the response that you will get for the Get all content types API request:

      {
          "content_types": [
              {
                  ...,
                  "schema": [
                      {
                          "display_name": "Title",
                          ...
                      },
                      {
                          "display_name": "URL",
                          ...
                      },
                  ],
                  "last_activity": {},
                  "maintain_revisions": true,
                  "description": "",
                  "DEFAULT_ACL": {
                      "others": {
                          "read": false,
                          "create": false
                      },
                      "users": [
                          {
                              "read": true,
                              "sub_acl": {
                                  "read": true
                              },
                              "uid": "blt690a3fed2a593445"
                          }
                      ],
                      "management_token": {
                          "read": true
                      }
                  },
                  "SYS_ACL": {
                      "roles": [
                          {
                              "uid": "bltdc9d89cd41565777",
                              "read": true,
                              "sub_acl": {
                                  ...
                              },
                              "update": true,
                              "delete": true
                          },
                          {
                              ... 
                              }
                          },
                          {
                              ...
                              },
                              ...
                          }
                      ],
                      "others": {
                          ...
                          }
                      }
                  },
                  "_branch": "development",
                  "options": {
                      "title": "title",
                      "publishable": true,
                      "is_page": true,
                      "singleton": false,
                      "sub_title": [
                          "url"
                      ],
                      "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
                  }
              }
          ]
      }
      
      

      Note: The “branches” feature is available in Contentstack only for the new interface.

    Expand
  • Introducing Branches

    Feb 25, 2022

    Contentstack App

    Contentstack now offers branching functionality that allows developers to experiment and innovate freely and collaborate with business teams. With Branches, developers can create copies of content type structures (schemas) to make changes and iterate without affecting deployments on the production server.

    Branches can have their separate workflows to involve business users in making content modifications, enabling cross-functional innovation. Read our docs for more information.

    Breaking Changes: When activating “Branches,” you will see a change in the API responses returned for several Content Delivery API (CDA) / CDN and Content Management API (CMA) requests. We have listed the changes introduced within the Breaking Changes PDF file for smooth adoption of the feature. You need to update your code with the relevant parameters to avoid breaking changes in your application.

    Note: The Branches feature will be rolled out to all customers gradually over the next few weeks. It is available in Contentstack only for the new interface. For any inquiries, please reach out to our support team at support@contentstack.com.

    Branches flow.png

    Expand
  • Updated UI for Adding Key-value Choices in Select Field

    Feb 18, 2022

    Contentstack App

    With the latest update to Key-value choices of Select fields, you no longer need to add spaces before and after the colon (:) of your key-value pairs. For example, if you're adding key-value choices for t-shirt sizes, you need to add the choices as: Large:L, Medium:M, Small:S, and so on.

    Learn more about this change in the Select field documentation.

  • Restrict Records Maintenance for Publish Queue Activities

    Feb 11, 2022

    Restrict Records Maintenance for Publish Queue Activities

    Post this release, i.e., February 11, 2022, the Publish Queue of the stack will only maintain records of publishing/unpublishing activities performed within the last 90 days. This update ensures that constant publishing activity does not overload the queue.

    For more information, refer to the Publish Queue documentation. You can also refer to the Publish Queue API documentation to understand how to fetch details using the Content Management API.

    Restrict Records Maintenance for Audit Log Activities

    Post this release, i.e., February 11, 2022, the Audit Log of the stack will only maintain records of activities (updates, deletes, publishing/unpublishing activities, etc.) performed within the last 90 days.

    For more information, refer to the Audit Log documentation.

    Webhook Signatures for Webhook Events

    Post this release, i.e., February 11, 2022, Contentstack will sign all webhook events sent to your endpoints with a signature. This signature appears in each event's X-Contentstack-Request-Signature header. It allows you to verify the integrity of the data and the provider's authenticity (Contentstack) from which data is coming.

    For more information, refer to the Webhook Signature documentation.

    Expand
  • Webhook Signatures for Webhook Events

    Feb 11, 2022

    Contentstack App

    Contentstack now signs all webhook events sent to your endpoints with a signature. This signature appears in each event's X-Contentstack-Request-Signature header. It allows you to verify the integrity of the data and the provider's authenticity (Contentstack) from which data is coming.

    For more information, refer to the Webhook Signature documentation.

    Expand
  • Restrict Records Maintenance for Publish Queue and Audit Log Activities

    Feb 11, 2022

    Contentstack App

    We introduced the following changes in our February 11, 2022 release:

    • The Publish Queue of your stack now only maintains records of publishing/unpublishing activities performed within the last 90 days. This update ensures that constant publishing activity does not overload the queue.
    • The Audit Log of your stack now only maintains records of activities (events) performed within the last 90 days.

    Read more about these updates in our API Change Log documentation.

    Expand
  • Update Release Items to their Latest Versions

    Jan 31, 2022

    Contentstack App

    The new Update release items to their latest versions button updates all entries and assets in a release to their latest versions. This update feature ensures publishing up-to-date content with a release.

    Whats new-update.png

    For more information, refer to our documentation on Update Release Items to their Latest Versions.

    Expand
  • Use Slash Command for Formatting Shortcuts in JSON Rich Text Editor

    Jan 31, 2022

    Contentstack App

    You can now type in "/" in the JSON Rich Text Editor to open a formatting menu that contains options for formatting texts and bullets, embedding entries and assets, and so on. With the slash command, you can style and edit your content efficiently at a faster pace. To select a formatting option, choose from the displayed list or type the option you need to add.

    For more information, read our documentation on Slash Command.

    Expand
  • Create or Update Roles with Language-Specific Permissions

    Jan 31, 2022

    Contentstack App

    You can now restrict access to the master language and add custom exceptions for all or specific languages while creating or updating a user role. For example, you can restrict a role from being able to "Create," "Update," or "Delete" entries localized in a specific language, e.g., English (United States) or French (France).

    Read our documentation for more information.

    Expand
  • Prefix Dollar Sign in Webhook JSON Payload with Wildcard

    Jan 21, 2022

    Prefix Dollar Sign in Webhook JSON Payload with Wildcard

    Post this release, i.e., January 21, 2022, whenever a webhook sends data to a specified notification URL, if any key name in the response begins with a dollar sign ($), it will be prefixed with the acronym "cs" as a wildcard. For example, the key named "$success" would be replaced with "cs$success."

    Let's consider the following sample webhook data that contains a key prefixed with a dollar sign:

    {
        "$success": true
    }
    

    The key name will be prefixed with the "cs" acronym, as shown in the following webhook data:

    {
        "cs$success": true
    }
    
    Expand
  • Prefix Dollar Sign in Webhook JSON Payload Keys with Wildcard

    Jan 21, 2022

    Contentstack App

    With this update, whenever a webhook sends data to a specified notification URL, if any key name in the response begins with a dollar sign ($), it will be prefixed with the acronym "cs" as a wildcard. For example, the key named "$success" would be replaced with "cs$success."

    Let's consider the following sample webhook data that contains a key prefixed with a dollar sign:

    {
        "$success": true 
    }
    

    The key name will be prefixed with the "cs" acronym, as shown in the following sample webhook data:

    {
        "cs$success": true
    }
    

    Read more about this feature in our API Change Log.

    Expand
  • January 7, 2022

    Jan 07, 2022

    Password Reset Link Expiration

    Earlier, Contentstack did not impose an expiration timeframe on password reset links you generate when you forget the password. This vulnerability could expose users to information security attacks.

    Post January 07, 2022, Contentstack will invalidate all password reset links within 60 minutes from when you generate them. This update maintains a robust security mechanism and prevents accounts from being hacked. Once the link expires, you can create another link using Forgot password and reset your password.

    Expand
  • JSON RTE Plugins and Password Reset Link Expiration

    Jan 07, 2022

    Contentstack App

    You can now extend the functionality of your JSON Rich Text Editor with our latest JSON RTE Plugins. These plugins let you inject specific functional logic directly into the JSON Rich Text Editor through third-party tools, without the need to add separate fields to perform complex content checks.

    JSON RTE Plugins lets you dynamically interact with and improve the rich text content by introducing features such as auto suggestions, grammar, and terminology checks that helps enhance content quality and accelerate editorial velocity.

    Entry.png

    Note: This plan-based feature will be available only for the JSON Rich Text Editor in the new Contentstack interface.

    Read our documentation on JSON Rich Text Editor Plugins to get started with this feature.

    Password Reset Link Expiration

    Contentstack now disables all password reset links within 60 minutes from the time you generate them. Once the link expires, you can reuse the Forgot password option to generate a new link and reset the password.

    For more information on this update, refer to our Password Reset Link Expiry API Change Log documentation.

    Expand
  • Restrict Multiple Entry Creation for Singleton Content Types using CMA

    Oct 19, 2021

    Restrict Multiple Entry Creation for Singleton Content Types using CMA

    Earlier, even though the Contentstack user interface did not allow the creation of multiple entries in a content type marked as "Single," users could still create them using the API. Post this release, i.e., October 19, 2021, Contentstack will restrict you from using the Content Management API (CMA) to create more than one entry in a content type that has been marked as "Single."

    Note: This change will not affect existing entries created in a content type of type "Single" using the Content Management API (CMA). You will still be able to fetch those entries using the CMA.

    To create multiple entries using the same content type, you need to mark that content type as "Multiple."

    Expand
  • Webhook Circuit Breaker

    Oct 07, 2021

    APIsContentstack AppBreaking changes

    Webhook Circuit Breaker

    A webhook request may fail to retrieve data from a specific notification URL under the following scenarios:

    • The provided domain name is either invalid or does not exist
    • The API fails to respond with data within 30 seconds
    • The destination server aborted the connection

    When a webhook request repeatedly fails 10 times under any of the above scenarios, the system detects the invalid URL and automatically disables the webhook configured for that client. Contentstack then marks the faulty webhook with an Unhealthy status.

    If any webhook goes into an unhealthy state, webhook-related Content Management API (CMA) requests will return the unhealthy key in the response:

    {
        "unhealthy":{
            "state":true
        }
    }
    

    We also send a notification email to the concerned client (user) whenever the Webhook Circuit Breaker disables any webhook in Contentstack. To enable the webhook again, you can refer to the webhook logs and debug the issue.

    For more information, refer to our Webhook Circuit Breaker documentation.

    Expand
  • Webhook Circuit Breaker

    Oct 07, 2021

    Contentstack App

    Contentstack now deploys the Webhook Circuit Breaker (WCB) whenever any webhook uses up its allotted execution retry attempts. WCB automatically disables a webhook that repeatedly fails to retrieve data from a specific notification URL 10 times. The faulty webhook is then marked with an Unhealthy status.

    If any webhook goes into an unhealthy state, webhook-related Content Management API (CMA) requests will return the unhealthy key in the response:

    {
        "unhealthy":{
            "state":true
        }
    }
    

    Read more about this feature in our API Change Log.

    Expand
  • Invalid Regex Prevention

    Sep 06, 2021

    Contentstack AppAPIs

    Post this release, i.e., September 6, 2021, any regulars expression added within the validation property of your content type should be valid. This update will restrict you from saving your content type if an invalid regex has been entered to avoid catastrophic backtracking.

  • September 6, 2021

    Sep 06, 2021

    Any regular expression added within the validation property of your content type should be valid. This update will restrict you from saving your content type if an invalid regex has been entered to avoid catastrophic backtracking.

    The Regex Validation property helps you define a set of validation options for a given field. Initially, content types with invalid regexes were saved, and the validation check became time-consuming when executed. Regular expressions like these either freeze the browser or utilize 100% of the CPU core process.


    Expand
  • Add Valid Regexes while Creating a Content Type

    Sep 06, 2021

    Contentstack App

    With this update, you will be restricted from saving a content type that contains an invalid regular expression. This update will avoid catastrophic backtracking that may end up freezing your browser or utilizing 100% of the CPU core process.

    Learn more about catastrophic backtracking.

  • Date Range Filtering for Webhook Execution Details

    Aug 19, 2021

    Date Range Filtering for Webhook Execution Details

    The Get executions of a webhook API request now allows you to filter the webhook execution details based on a particular date range. To do so, you can pass from and to as query parameters within the API request. For both of these parameters, you need to provide a date in ISO format as the value. For instance, to set the start date in the from parameter to December 8, 2017, you can pass the date in ISO format as shown below:

    from="2017-12-08T00:00:00.000Z"
    

    Linking Content Management API Requests with Audit Log

    Audit Log tracks and displays activities (events) performed in a particular stack. Initially, the API response body only contained information about the operations being performed. With multiple API requests being executed throughout the stack by various users, mapping each request was a tedious task.

    After this release, you will be able to view a request_id key in the response body of the GET Audit Log and GET Audit Log Item requests. This key helps map the API requests made throughout a stack with the Audit Log.

    The response schema would look as follows:

    {
      "logs":[
        {
          "uid":"blt6f02145fb8599a9757be",
          "stack":"blt323b040550e614e3",
          "created_at":"2021-08-16T05:51:10.378Z",
          "created_by":"blt151bca2f320b01be",
          "module":"content_type",
          "event_type":"update",
          "request_id":"21028215907fbfe454c88df49ee5352a",
          "metadata":{
            "title":"Audit-log Test",
            "uid":"audit_log_test",
            "version":2,
            "scope":null
          }
        }
      ]
    }
    
    Expand
  • Date Range Filter for Webhook Execution Details and Linking Content Management API Requests with Audit Log

    Aug 19, 2021

    Contentstack App
    You can now use the "from" and "to" query parameters to filter the webhook execution details based on a specific date range. Here's more about these query parameters:
    • from: Allows you to provide the start date in ISO format as value, e.g., from="2016-10-07T12:34:36.000Z"
    • to: Allows you to provide the end date in ISO format as value, e.g., to="2017-12-08T00:00:00.000Z"
    Learn more about this update in the Get executions of a webhook API documentation.
    • Linking Content Management API Requests with Audit Log: We have updated the response body of the GET Audit Log and GET Audit Log Item requests with a request_id key which helps map all API requests made throughout a stack with the Audit Log. Let's look at a sample Audit Log schema:
      {
        "logs":[
          {
            "uid":"blt6f02145fb8599a9757be",
            "stack":"blt323b040550e614e3",
            "created_at":"2021-08-16T05:51:10.378Z",
            "created_by":"blt151bca2f320b01be",
            "module":"content_type",
            "event_type":"update",
            "request_id":"21028215907fbfe454c88df49ee5352a",
            "metadata":{
              "title":"Audit-log Test",
              "uid":"audit_log_test",
              "version":2,
              "scope":null
            }
          }
        ]
      }
      
      Learn more about the change in our API Change Log.
    Expand
  • July 31, 2021

    Jul 31, 2021

    Whenever any webhook fails to send data to the desired notification URL or a session timeout occurs, Contentstack's exponential webhook retry policy attempts to send data to the destination URL again four more times after certain intervals. Setting a resend interval avoids several requests constantly hitting the server and prevents database overload.

    The resend interval time lasts for 5 seconds, by default, for the first retry attempt. It increases exponentially as the retry instance number increases. The exponential backoff formula will look as follows:

    {resend_interval} + {retry_instance} ^ 4
    

    Read our Webhook Retry Policy section to know more.

    Expand
  • Introducing the JSON-powered Rich Text Editor (JSON RTE) Field

    Jul 17, 2021

    Contentstack App

    The new JSON RTE field provides a hassle-free content editing experience for writers and enables developers to render rich-text data across all channels seamlessly. It stores and returns field data in JSON format, allowing developers to serialize the data in any human-readable format, paving the way for a truly omnichannel experience for your customers.

    You can migrate your existing content from the HTML-based RTE to the new JSON RTE field using our CLI or change JSON data of the RTE into HTML using our serializer package. For more information, read our docs.

    Note: This feature is available only in the new Contentstack interface.

    Expand
  • Permanent Asset URLs

    Jul 08, 2021

    Contentstack App

    You can now assign permanent URLs to assets and create custom URLs for every asset. These URLs remain unchanged even if the assets are updated multiple times, so you don’t have to update the referring hyperlinks in entries ever and can maintain your SEO scores. Learn more about permanent asset URLs.

  • Add Custom Languages to Your Stack

    Jul 02, 2021

    Contentstack App

    Good news for developers! You don’t have to reach out to our support team any more to get a language added to our list of supported languages. You can add custom languages of your choice to your stack in a click. Here’s how.

  • Add Key-value Choices in Select Field

    Jun 24, 2021

    Contentstack App

    You can now add key-value pairs as choices in the Select field. For example, to specify the state code for a state while defining choices in a government website, you can specify key-value pairs such as New York : NY. Learn more about this change in the Select field documentation.

  • Set Max Limit for Custom Fields that can be Added to Content Types

    May 07, 2021

    Contentstack App

    You can now add a maximum of 10 JSON type custom fields per content type. Learn more about this change in the Limitations of Custom Fields section.

  • Release of January 11, 2021 - Force user to type the name of the delivery token before deleting

    Jan 11, 2021

    Contentstack App
    • Confirmation Step to Delete Delivery Token: We now force the user to type and confirm the name of the delivery token that they want to delete. Refer to the Delete a Delivery Token section to learn more about this change.
    • New Languages: We added a number of languages to the existing list of supported languages in which you can localize your entry. Learn more about these "Supported Languages".
    Expand
  • December 16, 2020

    Dec 16, 2020

    We have stopped supporting Access Token for all stacks created post this release, i.e., December 16, 2020. For stacks created after this release, the Access Token will no longer be generated. Instead, you need to use the value of the environment-specific Delivery Token against the ‘access_token’ key to make authorized Content Delivery API (CDA) or CDN requests. Subsequently, you can use Management Tokens to make Content Management API (CMA) requests.

    For stacks created before December 16, 2020, we will continue to support Access Tokens. However, we strongly recommend switching to Delivery Tokens and Management Tokens for the respective API requests mentioned above.

    Read our FAQs on Access Token Removal to know more.

    Note: Though we have stopped supporting Access Tokens, we haven’t removed the usage of the ‘access_token’ key for Content Delivery API requests. To make authorized Content Delivery API requests, you need to now pass the value of the delivery token against the access_token key.

    Expand
  • Access Tokens Deprecation for New Stacks and Improvements in Upload Asset API Request

    Dec 16, 2020

    Contentstack App
    • Access Tokens Deprecation: We have stopped supporting Access Tokens for stacks created after December 16, 2020. This means that we will not generate Access Tokens for new stacks. You need to use Delivery Tokens for making authorized Content Delivery API requests and use Management Token or Authtoken for Content Management API requests.
      Learn more about this change through our FAQs on Access Token Removal.
    • Improvements in Upload Asset API Request: We now provide the ability to include image dimensions (height and width) in the API response while uploading an asset. You need to pass the include_dimension=true query parameter while running the API request.
      Learn how to upload an asset using our Content Management API.
    Expand
  • Stockholm Release - Retrieve Fallback Language Content for Published Entries

    Dec 05, 2020

    Contentstack App

    When fetching published content, if the requested entry is not available for the specified language, you can get its published fallback language content in the same API request. You no longer need to make multiple queries or write custom code to get the fallback language content. Learn how to retrieve fallback language content for published entries.

    Expand
  • December 4, 2020

    Dec 04, 2020

    Adding support for the include_fallback query parameter for the following Content Delivery API requests: Get All Entries, Get Single Entry, Get All Assets, and Get Single Asset.

    Using the include_fallback=true parameter in the above API requests, you can fetch published content from the fallback languages, if the requested entry is not available for the specified language.

    You can refer to our API documentation on entries and assets to learn more about retrieving published fallback content. Additionally, you can learn more about this feature in our Retrieve Fallback Language Content for Published Entries guide.

    Expand
  • Release of November 4 - Limited Webhook Retry Attempts

    Nov 04, 2020

    Contentstack App
    • In case of a failure or if a session timeout occurs (webhook request timeout is 30 seconds), the webhook will immediately retry to send data to the destination URL again for three more times. After three unsuccessful attempts, the webhook will not make any further attempts automatically. However, you can trigger the webhook manually up to seven more times by clicking on the Retry link.
      Learn how to view webhook logs.
    Expand
  • September 25, 2020

    Sep 25, 2020

    You can create discussions for each of the subfields present inside “Group,” “Modular Blocks,” or “Global” fields. However, when you mark the parent field as multiple, the discussion fails to recognize which subfield was linked to it.

    To identify each instance of a field marked as “Multiple”, we send the _metadata key in the response of GET requests for draft entries. This key contains the unique ID assigned to each field instance.

    This is useful in cases where “Group,” “Modular Blocks,” or “Global” fields have comments added to multiple instances of their subfields.

    For example, consider an entry named “Demo Entry” that consists of the “Employee Address” Global field. If the Global field has been marked as “Multiple”, then the following response is returned for a “Get entry” API request:

    {
        "entries": [
            {
                "_version": 6,
                "locale": "en-us",
                "uid": "blt60e06920a98836a6",
                "ACL": {},
                "_in_progress": false,
                "created_at": "2020-04-08T03:05:37.254Z",
                "created_by": "blt42e55757d70d5f81026a2b9f",
                "employee_address": [
                    {
                        "rich_text_editor": "Sample address",
                        "boolean": true,
                        "_metadata": {
                            "uid": "csc8c89feb26118172"
                        }
                    },
                    {
                        "rich_text_editor": "<p>Two are there.</p>",
                        "boolean": true,
                        "_metadata": {
                            "uid": "cs1d57fbd82e175ba7"
                        }
                    }
                ],
                "title": "Demo Entry",
                "updated_at": "2020-10-21T13:34:52.718Z",
                "updated_by": "blt6563a9b067fc1bc9",
                "url": "/demo",
                "publish_details": [
                    {
                        "environment": "bltfd8970c7bd9cb0cb",
                        "locale": "en-us",
                        "time": "2020-10-21T13:40:35.127Z",
                        "user": "blt6563a9b067fc1bc9",
                        "version": 6
                    }
                ]
            }
        ]
    }
    
    
    Expand
  • Entry Comments Feature Release

    Sep 25, 2020

    Contentstack App
    • Contentstack provides the ability to add comments to entry fields. With this feature, content managers can add comments to fields of an entry and reply inline, letting them initiate discussions around the content to collaborate efficiently. Learn how to work with entry comments.
  • August 31, 2020

    Aug 31, 2020

    We have deprecated the include_workflow parameter for all Content Delivery API (CDA) or CDN requests. For stacks created post this release, i.e., August 31, 2020, users will no longer be able to fetch workflow stage details for published entries. However, for stacks created before this release, users will be able to retrieve workflow stage details for existing published entries. Read more about adding workflows and workflow stages.

    Expand
  • Release of August 31, 2020 - Concise Webhook Payloads and Option to Require Unique URLs in a Stack

    Aug 31, 2020

    Contentstack App
    • Contentstack allows you to send a concise JSON payload to the specified URL whenever the selected event occurs. Learn how to send concise webhook payload.
    • Contentstack allows you to ensure that entry URLs are not duplicated across the stack and provide a warning when a duplicate URL is detected. This can be done through the API. Read more.
    Expand
  • Organization Bulk Task Queue and GraphQL Beta Hotfix 0.1.2

    Aug 25, 2020

    Contentstack App
    • GraphQL Beta Hotfix 0.1.2: The Contentstack GraphQL API Beta version underwent the following changes in Hotfix 0.1.2:
      • The maximum objects that can be fetched in a single query is 7,500.
      • Contentstack’s GraphQL API paginates all the items referred in the Reference field, irrespective of whether they have been published or not.
      Read more about the Contentstack GraphQL API Beta.
    • Organization Bulk Task Queue: The "Bulk Task Queue" section under "Organization Settings" displays the queue of bulk operations that the users of your organization perform. Read more about the Bulk Task Queue.
    • Enable or Disable Releases through Super Admin: Incorporated the ability to disable the "Releases" feature from super admin.
    • Select Field: Added the ability to select all options when entering data for a Select field in the entry.
    Expand
  • Rome Release - Contentstack GraphQL API Beta Version

    Jul 23, 2020

    Contentstack App
    • The Contentstack GraphQL API Beta version is now publicly available. This version facilitates optimized schema handling, returns error debugging responses, uses database resources efficiently, prevents malicious requests to the database, and has an increased rate limit. Read more about the Contentstack GraphQL API Beta.
    • Download and install our latest Postman Collection that covers all the GraphQL Content Delivery API endpoints for Contentstack.
    Expand
  • Queens Release - The Trash

    Jul 06, 2020

    Contentstack App
    • Trash maintains a backup of all deleted items for up to 14 days from the date of deletion. You can restore the deleted items back to their original condition before they are permanently deleted. The following items are stored in the Trash after being deleted:
      • Content Types
      • Global Fields
      • Entries
      • Assets

    Read more about the Trash feature.

    Expand
  • June 24, 2020

    Jun 24, 2020

    Following changes have been introduced to new stacks of Organizations created post this release, i.e., June 24, 2020:

    • Users will no longer be able to use the stack Access Token to make authorized Content Delivery API (CDA) or CDN requests. Instead, you need to use the value of the environment-specific delivery token of the stack against the access_token key. Read more about the relevant authentication parameters.
    • Users will no longer be able to pass 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. Read more about Queries.
    Expand
  • Release of June 02, 2020 - Enable or Disable Webhooks

    Jun 02, 2020

    Contentstack App
  • Port Louis Release

    Apr 24, 2020

    Contentstack App
    • Edit Access Permissions for Workflow Stages: A stack administrator or developer, can now define who can edit entries on different stages of a workflow. This access control ensures that your content reaches the end of its lifecycle, without any unwanted modifications. Read more about setting edit access permissions on workflow stages.
    • Webhook Log Enhancements: You can now filter out the Webhook Logs information according to days by using the date filter located at the top of the page. Additionally, you can apply the Call Status filter to retrieve only the logs with successfully triggered webhooks.
    • Contentstack Extensions SDK Enhancements: Extension fields that support data types such as text, number, boolean, or date can now programmatically change the data of another extension field using the field.setData() function. The field.onChange() function is called as soon as the other extension field witnesses change in data. We have also added the following new methods for the Entry class:
      • onChange(): Executes the callback function every time an entry has been updated.
      • onPublish(): Executes the callback function every time an entry has been published with the respective payload.
      • onUnpublish(): Executes the callback function every time an entry has been unpublished with the respective payload.
        Refer to the Extensions SDK API Reference document to learn more about the changes.
    Expand
  • Paris Release - Complex Global Fields

    Apr 17, 2020

    Contentstack App
    • You can now add the “Group,” “Modular Blocks,” and “Reference” fields, along with other fields, to the Global fields. Also, you can add Global fields within Group fields or use Global field as a block within the Modular Blocks field. This means that developers can create really complex structures and use them across multiple content types. Read more about Complex Global Fields.

    Read more about Complex Global Fields.

    Expand
  • Release of March 20, 2020

    Mar 20, 2020

    Contentstack App
    • Contentstack allows you to delete multiple localized versions of an entry right from the “Delete” modal of the master language version of the entry. Read more.
    • Area-specific languages allow you to create content that caters to a specific continent or a group of politically or economically influential countries (for example, all Latin American regions). Read more.
    Expand
  • Enhanced Image Optimization Parameters

    Mar 13, 2020

    Contentstack App
    • Contentstack's Image Delivery API now provides enhanced image optimization parameters that serve pixel-perfect and bandwidth efficient images to your devices. The new parameters are: Smart and Fail-safe Cropping parameters, Canvas, Overlay Pad, Brightness, Contrast, Saturation, Resize-filter, Sharpen, Blur, and Frame.

    Refer to the Image Delivery API documentation to learn how to use these parameters.

    Expand
  • Nashville Release - Enhanced Advanced Search Capabilities & Bulk Actions on Search Results

    Dec 07, 2019

    Contentstack App
    • Bulk Actions on Search Results: Content managers can now perform bulk actions on the result set of Basic or Advanced searches. The bulk action options available are Publish, Unpublish, Delete, and Change Workflow Details.
    • Perform Advanced Search Within Multiple Content Types: While using Advanced search, you can now select multiple content types within which you want to perform the search (previously, a search could be done on a single content type or all content types). This offers more flexibility to content managers and helps in getting accurate results.
    • Adding support for ‘Workflow Stage’ option in Advanced Search: You can now search entries by their workflow stage, provided they are associated with the same workflow.

    Read more about these features.

    Expand
  • Madison Release - Nested Modular Blocks & Reference and File Field Type for Custom Field Extensions

    Nov 24, 2019

    Contentstack App
    • Nested Modular Blocks: Developers can now add Modular Blocks within a Modular Block field while creating a content type. This enables content managers to create complex, flexible content pages without the help of developers. Read more.
    • Reference and File Field Type for Custom Field Extensions: Developers can now save the input data of their custom field extensions in the form of Reference or File data types. Read more.
    Expand
  • Introducing Global Fields

    Nov 15, 2019

    Contentstack App
    • Global Field: A 'Global Field' is a standalone, reusable field (or group of fields) that you can create once and use in multiple content types. It eliminates the need to create the same bunch of fields repeatedly in different content types. For example, an ‘SEO’ Global Field can be used to quickly add the subfields “Meta Title” and “Meta Data” across content types. Read more
    Expand
  • October 18, 2019

    Oct 18, 2019

    • Management Token is a stack-level read-write token that lets you make authorized Content Management API requests. The token value needs to be passed in the new authorization header parameter. Read more about this token in the Authentication section.
    • The Get executions of a webhook API request will return a maximum of 100 records while fetching the execution details for a specific webhook. Previously, there was no limit on the number of records returned.
    Expand
  • Kansas Release - Introducing Management Tokens

    Oct 18, 2019

    Contentstack App
    • Management Tokens for your stack: Management Tokens are stack-specific, read-write tokens, used along with the Stack API key to make authorized Content Management API (CMA) requests. While Authtokens are user-specific, Management Tokens are not personal and no role-specific permissions are applicable to them. They are recommended to be used when you do not wish to use Authtokens in CMA requests, for example, for third-party integrations, in automation scripts, or for SSO-enabled organizations. Read more.
    Expand
  • Jackson Release - Asset Folder-level Permissions & Improved Error Messages

    Oct 01, 2019

    Contentstack App
    • Set asset folder-level permissions: While setting up or modifying custom roles, you can now assign permissions to asset folders and subfolders as well. This allows flexible and granular access control over the asset folders of your stack. Read more.

    Improvements

    • Improved error messages on content type builder page: The new error messages are now crisper, friendlier, and more accurate than before. This ensures that you can save time diagnosing a problem and focus on fixing it right away. Read more.
    Expand
  • Gatsby Preview Extension

    Sep 13, 2019

    Contentstack App
    • Introducing “Gatsby Preview” extension: The Gatsby Preview widget extension helps content managers preview content changes instantly on their “Contentstack + Gatsby” websites and web apps. Read more.
  • Idaho Release - Dashboard 2.0

    Aug 30, 2019

    Contentstack App
    • Set preferences for your Dashboard and its widgets: You can now reorder the widgets on your stack Dashboard, and choose to show or hide them. Dashboard account preferences now work everywhere,  irrespective of the device or browser you use to access your stack. Read more.
  • Deprecation of TLS 1.0 and 1.1

    Aug 23, 2019

    Contentstack App
    • TLS 1.0 and 1.1 have been deprecated and will not longer be supported. Read more.
    • Please reach out to Contentstack Support or your dedicated Customer Success Manager with questions.
  • Bulk Publish Localized Entry Versions and Non-localizable Fields

    Aug 09, 2019

    Contentstack App
    • Bulk publish localized entry versions: You can now bulk publish the localized versions of an entry from the master language entry. Read more.
    • Non-localizable Field: Specify fields as “non-localizable,” such as a URL or an image field that doesn’t require translation, to ensure that the contents of the fields are not editable in local entries. Read more.
    Expand
  • July 29, 2019

    Jul 29, 2019

    The upgraded Reference field now allows you to add references to the entries of multiple content type. For example, the “Sample” Reference field in your “Demo” content type can refers to the “Content Type 1,” "Content Type 2", ... content types. So, while creating an entry for the “Demo” content type, the content manager can add any entry from the above mentioned content types as a reference to the “Sample” field.

    This has an impact on some of the existing API Requests. They are as follows:

    Create a content type

    OLDNEW
    Method: POST/PUTMethod: POST/PUT
    URL: https://api.contentstack.io/v3/content_typesURL: https://api.contentstack.io/v3/content_types
    Request Body

    {

    "content_type": {

    "title": "Old content type",

    "uid": "old_content_type",

    "schema": [{

    "display_name": "Title",

    "uid": "title",

    "data_type": "text"

    "field_metadata": {

    "_default": true

    },

    "unique": true,

    "mandatory": true,

    "multiple": true,

    }, {

    "data_type": "reference",

    "display_name": "Reference",

    "reference_to": "referred_content_type",

    "field_metadata": {

    "ref_multiple": true

    },

    "uid": "reference",

    "mandatory": false,

    "multiple": false,

    "unique": false

    }],

    "options": {

    "title": "title",

    "publishable": true,

    "is_page": false,

    "singleton": false,

    "sub_title": [],

    "url_pattern": false,

    "url_prefix": ""

    }

    }

    }

    Request Body

    {

    "content_type": {

    "title": "Content Type With Multiple Content Type Referencing Field",

    "uid": "content_type_with_multiple_content_type_referencing_field",

    "schema": [{

    "display_name": "Title",

    "uid": "title",

    "data_type": "text",

    "field_metadata": {

    "_default": true,

    },

    "unique": true,

    "mandatory": true,

    "multiple": true

    }, {

    "data_type": "reference",

    "display_name": "Reference",

    "reference_to": ["content_type_1", "content_type_2"],

    "field_metadata": {

    "ref_multiple_content_types": true,

    "ref_multiple": true

    },

    "uid": "reference",

    "mandatory": false,

    "multiple": false,

    "unique": false

    }],

    "options": {

    "title": "title",

    "publishable": true,

    "is_page": false,

    "singleton": false,

    "sub_title": [],

    "url_pattern": false,

    "url_prefix": ""

    }

    }

    }

    Response Body

    {

    "notice": "Content Type updated successfully.",

    "content_type": {

    "title": "Old content type",

    "uid": "Old_content_type",

    "schema": [{

    "display_name": "Title",

    "uid": "title",

    "data_type": "text",

    "field_metadata": {

    "_default": true

    },

    "unique": true,

    "mandatory": true,

    "multiple": false

    }, {

    "data_type": "reference",

    "display_name": "Reference",

    "reference_to": "referred_content_type",

    "field_metadata": {

    "ref_multiple": true

    },

    "uid": "reference",

    "unique": false,

    "mandatory": false,

    "multiple": false

    }],

    "options": {

    "title": "title",

    "publishable": true,

    "is_page": false,

    "singleton": false,

    "sub_title": [],

    "url_pattern": false,

    "url_prefix": ""

    }

    }

    }

    Response Body

    {

    "notice": "Content Type updated successfully.",

    "content_type": {

    "title": "Content Type With Multiple Content Type Referencing Field",

    "uid": "content_type_with_multiple_content_type_referencing_field",

    "schema": [{

    "display_name": "Title",

    "uid": "title",

    "data_type": "text",

    "field_metadata": {

    "_default": true

    },

    "unique": true,

    "mandatory": true,

    "multiple": false

    }, {

    "data_type": "reference",

    "display_name": "Reference",

    "reference_to": ["content_type_1", "content_type_2"],

    "field_metadata": {

    "ref_multiple_content_types": true,

    "ref_multiple": true

    },

    "uid": "reference",

    "mandatory": false,

    "multiple": false,

    "unique": false

    }],

    "options": {

    "title": "title",

    "publishable": true,

    "is_page": false,

    "singleton": false,

    "sub_title": [],

    "url_pattern": false,

    "url_prefix": ""

    }

    }

    }

    Create an entry

    OLDNEW
    Method: POST/PUTMethod: POST/PUT
    URL: https://api.contentstack.io/v3/content_types/:content_type_uid/entries/:entry_uidURL: https://api.contentstack.io/v3/content_types/:content_type_uid/entries/:entry_uid
    Request Body

    {

    "entry": {

    "title": "Old Entry",

    "uid": "old_entry",

    "reference_field": ["blt1231232123123"],

    "tags": []

    }

    }

    Request Body

    {

    "entry": {

    "title": "New Entry",

    "uid": "new_entry",

    "reference_field": [{

    "uid": "blt111111111111",

    "_content_type_uid": "footer"

    }, {

    "uid": "blt123123123123",

    "_content_type_uid": "author"

    }],

    "tags":[]

    }

    Response Body

    {

    "notice": "Entry updated successfully."

    "entry":{

    "title": "Old Entry",

    "uid": "old_entry",

    "reference_field": ["blt123123123123"],

    "tags": [],

    "locale": "en-us",

    "uid": "blt35a04ea07a42f95f",

    "created_by": "blte75599b1e529fa3a",

    "updated_by": "blte75599b1e529fa3a",

    "created_at": "2019-01-09T10:03:25.096Z",

    "updated_at": "2019-01-09T10:03:25.096Z",

    "ACL": {},

    "_version": 2

    }

    }

    Response Body

    {

    "notice": "Entry updated successfully."

    "entry":{

    "title": "New Entry",

    "uid": "new_entry",

    "reference_field": [{

    "uid": "blt111111111111",

    "_content_type_uid": "footer"

    }, {

    "uid": "blt123123123123",

    "_content_type_uid": "author"

    }],

    "tags": [],

    "locale": "en-us",

    "uid": "blt35a04ea07a42f95f",

    "created_by": "blte75599b1e529fa3a",

    "updated_by": "blte75599b1e529fa3a",

    "created_at": "2019-01-09T10:03:25.096Z",

    "updated_at": "2019-01-09T10:03:25.096Z",

    "ACL": {},

    "_version": 2

    }

    }

    Get all entries of a content type

    OLDNEW
    Method: GETMethod: GET
    URL: https://api.contentstack.io/v3/content_types/:content_type_uid/entriesURL: https://api.contentstack.io/v3/content_types/:content_type_uid/entries
    CDN users: https://cdn.contentstack.io/v3/content_types/:content_type_uid/entriesCDN Users: https://cdn.contentstack.io/v3/content_types/:content_type_uid/entries
    Response Body

    {

    "entries": [{

    "title": "Old entry",

    "reference_field": ["blt123123123123"],

    "tags": [],

    "locale": "en-us",

    "uid": "blta777c7777777d777",

    "created_by": "blt15adac31fdb46cd9",

    "updated_by": "blt15adac31fdb46cd9",

    "created_at": "2019-04-15T09:36:19.960Z",

    "updated_at": "2019-04-15T09:36:19.960Z",

    "ACL": {},

    "_version": 1,

    "publish_details": [],

    "_rules": []

    }]

    }

    Response Body

    {

    "entries":{

    "title": "New Entry",

    "reference_field": [{

    "uid": "blt111111111111",

    "_content_type_uid": "footer"

    }, {

    "uid": "blt123123123123",

    "_content_type_uid": "author"

    }],

    "tags": [],

    "locale": "en-us",

    "uid": "blta777c7777777d777",

    "created_by": "blte75599b1e529fa3a",

    "updated_by": "blte75599b1e529fa3a",

    "created_at": "2019-01-09T10:03:25.096Z",

    "updated_at": "2019-01-09T10:03:25.096Z",

    "ACL": {},

    "_version": 2

    }

    }

    Get all entries with include reference

    OLDNEW
    Method: GETMethod: GET
    URL: https://api.contentstack.io/v3/content_types/:content_type_uid/entries?include[]=reference_fieldURL: https://api.contentstack.io/v3/content_types/:content_type_uid/entries?include[]=reference_field
    CDN Users: https://cdn.contentstack.io/v3/content_types/:content_type_uid/entries?include[]=reference_fieldCDN Users: https://cdn.contentstack.io/v3/content_types/:content_type_uid/entries?include[]=reference_field
    Response Body

    {

    "entries":[{

    "title": "Old Entry",

    "reference_field": [{

    "title": "Forbes",

    "about_us": {

    "title": "About US",

    "href": "/about-us"

    },

    "tags": [],

    "locale": "en-us",

    "uid": "blt1137fe73e677645f",

    "ACL": {},

    "_version": 1,

    }],

    "tags": [],

    "locale": "en-us",

    "uid": "blta785c1339591d092",

    "_version": 1

    }]

    }

    Response Body

    {

    "entries":[{

    "title": "Old Entry",

    "reference_field": [{

    "title": "Forbes",

    "about_us": {

    "title": "About US",

    "href": "/about-us"

    },

    "tags": [],

    "locale": "en-us",

    "uid": "blt1137fe73e677645f",

    "_content_type_uid": "footer",

    "ACL": {},

    "_version": 1,

    }],

    "locale": "en-us",

    "uid": "blta785c1339591d092",

    "_version": 1

    }]

    }

    Expand
  • Hamilton - MultiCT

    Jul 29, 2019

    Contentstack App
    • Referencing Multiple Content Types: The upgraded Reference field now allows users to add references to more than one content types in a single instance. Read more.
  • In-Progress Entries

    Jul 12, 2019

    Contentstack App
    • In-progress Entries: Content managers can now save entries that are "in-progress," even if mandatory fields are left blank, and come back to continue adding content and editing later without losing their work. The "mandatory" field validation is checked only when publishing the entry. Contact us to enable this feature for your organization. Read more.
    Expand
  • Edison

    May 31, 2019

    Contentstack App
    • Set a ‘Fallback Language’ for easy localization: You can now specify the language to use as source content if the entry does not exist in the specified primary language. Read more.
    • Support for generic languages: Create content in generic languages, i.e., languages that are not tied to any region or country (e.g., English, Spanish, French). Read more.
    Expand
  • Denver 2

    Apr 19, 2019

    Contentstack App
    • Analytics dashboard: Introducing the all-new Analytics dashboard for organizations. Get one-click access to the overall usage and API analytics of your organization, and make better, more informed business decisions.
  • Denver

    Apr 12, 2019

    Contentstack App
    • Version Naming: You can now assign names to versions of entries and assets to quickly identify the status of the entry or asset. For example, you can specify an entry as important ('Production Ready') or less urgent ('First Draft').
  • Casa Blanca

    Apr 05, 2019

    Contentstack App
    • Dashboard for stacks: Dashboard—the new homepage for your stack—is a collection of widgets that provide a quick overview of your stack’s recent entries and assets.
    • Dashboard Widget: This release introduces our third type of Experience Extension, the Dashboard Widget, that allows you to add useful widgets to the dashboard of your stack. 
    • Instance-level config for custom fields: You can now add a separate configuration for each instance of a custom field in a content type. 
    • New functions in SDK: We have added support for new functions in the Extensions SDK.
    Expand
  • Contentstack DataSync

    Mar 26, 2019

    Contentstack App
    • DataSync: The latest addition to our data synchronization offering, DataSync, lets you sync your Contentstack data (assets and entries) with your database (FileSystem, MongoDB, etc.) over 8x faster.


  • SSO IdP Role Mapping Release

    Mar 16, 2019

    Contentstack App
    • IdP Role Mapping in SSO: Now you can map your SAML Identity Provider (IdP) roles to Contentstack roles for your SSO-enabled organizations, and manage users and roles from your IdP. Read more.
  • March 8, 2019

    Mar 08, 2019

    When a webhook is triggered for an entry or asset because it was published/unpublished via a release, the webhook data of such an event contains a source key. This key contains the JSON data of the release (type, title, and uid) through which it was deployed.

    This is useful in cases where a lot depends on the webhook data. For example, in the case of static site generators, a build is generated every time an item (entry or asset) is published or unpublished. So, if a release is deployed with 200 items, it will generate a build 200 times, instead of just one time for the release. To avoid such cases, the developer can write custom code that ignores events whose response contains the source key. So, only one build will be generated for the whole release.

    Here's what's added to the webhook data:

    {
        "event": "publish",
        "source": {
            "title": "March'19 Release",
            "uid": "blt1111111d11cd111a",
            "type": "release"
        },
        "data": {
            ...
        },
        "api_key": "blt2222d2ad222beedc",
        "module": "entry",
        "triggered_at": "2019-03-07T04:55:11.352Z"
    }
    
    Expand
  • Webhooks Update

    Mar 08, 2019

    Contentstack App

    Our webhooks just got stronger. Here’s what’s new in our webhooks:

    • New support for ‘Release Deployment’ events in webhooks: You can now set up webhook events related to the deployment of releases on any or specific environments. Read more.
    • We’ve added the ability for you to import and export webhooks: Import and export webhooks at the click of a button.
    Expand
  • Customized Rich Text Editor

    Mar 01, 2019

    Contentstack App

    Customizations for Rich Text Editor (RTE): Developers can now customize the formatting options in the toolbar of the Rich Text Editor (RTE) field.  This will allow you to deliver an experience that is more tailored to your content managers’ needs.

  • GraphQL Content Delivery APIs

    Feb 19, 2019

    Contentstack App
    • GraphQL Content Delivery API: GraphQL is a popular query language that enables one-trip relational queries. It lets you fetch exactly the data you want via Contentstack’s API as an alternative to making multiple round-trip queries with RESTful calls.
  • Ximenez

    Jan 18, 2019

    Contentstack App
    • Field Visibility Rules: Dynamically show or hide fields on the entry page, based on the value entered in other fields. Read more.
    • New Content Type Builder: Content Type Builder has a new look that makes the process of building content types quicker and more enjoyable. Read more.
    Expand
  • Waldo

    Dec 29, 2018

    Contentstack App
    • Advanced Search: Contentstack now offers advanced search capabilities that let you perform field-level searches and combine multiple search queries to find your proverbial needles in a (content) haystack.
    • Bulk Operations: Perform bulk operations (such as publish, unpublish, delete) on multiple entries and assets at once.
  • Verma

    Nov 30, 2018

    Contentstack App

    We’ve added some powerful and exciting capabilities to our workflows, giving you more flexibility and control over your content creation process. Here’s a rundown of what’s new:

    • Multiple workflows in a stack: Create different workflows for different content types within your stack.
    • Stage transition rules: Define next stage options for each stage, and manage who can move from one step to another.
    • Superusers with unrestricted access: Superusers can change the entry stage without any restrictions. The purview of stage transition rules does not limit them.
    • Birds-eye view of all tasks: Stack owners and administrators have visibility into all workflow tasks assigned to all users.
    • Conditional publishing: Add conditions to publishing/unpublishing actions. For example, allow publishing "only if" the entry reaches a particular workflow stage.

    Read more about Workflows.

    Expand
  • Upton

    Oct 26, 2018

    Contentstack App
    • Sync API: We have introduced the Sync API that takes care of syncing your Contentstack data with your apps and ensures that data is always up-to-date and updates are performed with maximum efficiency by fetching only incremental changes. Read more.

    Improvements

    • Upgraded RTE: We upgraded the Rich Text Editor field to provide users with new and improved editing features. For any new stacks you create, you will automatically be using the upgraded Rich Text Editor. All of your existing stacks will continue to use the same Rich Text Editor as before until you are ready to upgrade, which you can do (and undo) at any time by editing the appropriate content types. Learn how to upgrade to the new RTE.

      Here’s what’s new in the new Rich Text Editor field:

      • New ‘Undo’ and ‘Redo’ shortcut keys
      • Support for ‘Heading level 6’ under the Format option
      • Option to apply custom ID and class without switching to the HTML mode
      • New ‘List’ button that contains ‘Unordered List,’ ‘Ordered List,’ ‘Outdent,’ and ‘Indent’ options
      • Options to add title, caption, and hyperlink to images; set position of the image
      • Keyboard shortcut ‘ALT + ENTER’ to unselect image or video
      • Removed options to change font properties (size, family, color, background color)
      • Removed keys ‘Horizontal Rule’, ‘Superscript’ and ‘Subscript’

      List of bugs fixed:

      • Improper rendering of code snippets when switched to HTML view
      • Text formatting doesn’t work as expected on Google Chrome browser
      • Link is wrapped automatically when a URL is inserted in a code block
      • Improper alignment of the ‘Choose File’ option in Internet Explorer 11
      • The field doesn’t work as expected if an invalid script tag is used
      • Internet Explorer 11 crashes if more than 300KB of data is inserted
      • Small images disappear is added in a table
      • Heading-1 tag doesn’t render properly on Google Chrome and Mozilla Firefox when published
      • Random HTML tags added when switched to HTML mode
    Expand
  • Account lockout policy

    Oct 13, 2018

    Contentstack App

    New Features

    • Account Lockout Policy: To secure your account from potential hacking threats, we have introduced account lockout policy that locks your account after several unsuccessful login attempts. Learn more.
  • Tucker

    Sep 29, 2018

    Contentstack App

    New Features

    • Delivery tokens: Create a separate delivery token for each environment. These delivery tokens ensure only specified people have access to the content of the required environment.
    • Fine-grained permissions for roles: Custom roles are now more customizable. You can assign entry-level, field-level as well as asset-level permissions to roles for greater control.
    • Custom widgets: Build powerful custom functionality and incorporate it directly into your CMS editing environment. Custom Widgets can integrate with any third-party app and data source to, for example, perform sentiment analysis on a text entry, provide SEO recommendations, and deliver realtime translation capabilities. The possibilities are endless. 
    Expand
  • Ramanujan

    Aug 03, 2018

    Contentstack App
    • Custom Fields: Custom Fields are part of Contentstack’s new ‘Experience Extensions’ integrations framework that allows developers to create a unique, custom-built field. For example, you might create a Custom Field to add a ‘color picker,’ ‘video selector,’ or a ‘star rating’ review widget.
    • Global search (beta): The new search bar in the header lets you search content, entries, and assets, across your entire stack.
  • Enhancement Release [27-07-2018]

    Jul 27, 2018

    Contentstack App
    • ‘Title’ field becomes more flexible: You can now set minimum and maximum character limits for the ‘Title’ field and also rename it according to your preferences.
    • New languages added: We have added support for two additional languages – ‘English - China’ and ‘English - Korea’.
    • No default master language: When creating a new stack, no master language is selected by default (previously, the default was set to ‘English - US’).
    • Spaces allowed in tags: We have added support for spaces in tags (e.g., Business News) to allow multi-word tags for entries. You can use a comma to separate multiple tags.
    Expand
  • Quinn Part II

    Jun 22, 2018

    Contentstack App
    • Upload assets in bulk: You can now bulk upload multiple assets to the platform.
    • View active collaborators: ‘Entry presence’ allows you and your team to see a list of all collaborators currently working on an entry.
    • Organize all your assets into even more folders: We have raised the maximum limit for asset folders to 500 from 300.
  • Quinn

    May 21, 2018

    Contentstack App
    • Introducing .NET SDK: Power the content and ensure lightning-fast content delivery of your .NET applications using our new .NET SDK.
    • Content type versioning: Contentstack now maintains a history of all versions of your content types. You can retrieve any previous version through the API.
  • Pascal

    May 07, 2018

    Contentstack App
    • Reference field 2.0: Reference field gets a makeover. You can now edit referenced entries/assets quickly, create new references on-the-go, and do a lot more.
    • Compare languages of an entry: Now perform a side-by-side comparison of versions across all languages of an entry. 
    • View entry localization status: We have added a new ‘Localization Status’ section within the ‘Entry Information’ tab in the entry. It gives you localization details of all languages of the entry.
    • Reference info of an entry: Get a list of all the entries within which the current entry is referenced.
    Expand
  • Ohm

    Apr 21, 2018

    Contentstack App
    • Workflow: A powerful feature that streamlines content creation and optimizes content review and approval processes for your team.
    • Releases: By assigning entries/assets to a ‘Release’, content can be published/unpublished in bulk and perfectly timed with a critical event, such as an announcement or product release.
  • Newton

    Feb 23, 2018

    Contentstack App
    • Introducing ‘Modular Blocks’ Field: A powerful tool that gives content managers the flexibility to dynamically create components of a page or app without requiring developer’s assistance. 
  • Manfredi 2

    Dec 15, 2017

    Contentstack App
    • Introducing Single Sign-On: Contentstack introduces Single Sign-On (SSO) for organizations, so you can authenticate users securely with your corporate identity provider.
  • Manfredi

    Dec 02, 2017

    Contentstack App
    • Introducing ‘Select’ Field: A multiple choice field that allows users to choose one or more options from a given set of values (choices). This allows your content editors to pick options quickly without creating a reference content type.
    • Image dimension validation: Set width and height dimension limits to images that can be uploaded in the ‘File’ field.
  • October 14, 2017

    Oct 14, 2017

    • The URL of assets for stacks created after this release will include the file name, and the URL pattern will be /v3/assets/:api_key/:asset_uid/:token/:filename. To enforce the changes on images of existing RTE or Markdown fields, you need to re-upload the images and then re-publish the entry for the changes to reflect. For more information, contact us.
    • It will now be possible to get entries by URL even if the entries use default URL pattern. This change will be applicable only to the stacks created after this release.
    • Entries that have empty URL after the upgrade, the user will have to re-save the entry to get them autopolulated in the URL field.
    Expand
  • Lambert

    Oct 14, 2017

    Contentstack App
    • Organization: Manage your users and stacks from one administrative panel. 
    • Image Delivery API: Manipulate and optimize images with a new set of APIs for best delivery in your sites and apps.
    • Limit Multiple field instances: Set a maximum limit to the number of instances that can be created for the fields marked as ‘Multiple’.

    New SDKs

    • We’re excited to announce four brand new SDKs: PHP, Ruby, Java, and React Native. 

    Enhancements, Improvements & Bug Fixes:

    • The URL of assets for stacks created after this release will include the file name, and the URL pattern will be /v3/assets/:api_key/:asset_uid/:token/:filename.
    • It is now possible to get entries by URL even if the entries use default URL pattern. This change is applicable only to the stacks created after this release.
    Expand
  • Upgrading To TLS Version 1.2

    Sep 13, 2017

    Contentstack App

    Built.io Contentstack is upgrading its TLS version and is deprecating TLS 1.0 and 1.1. Support for the older versions will end on March 30, 2018.

    What You Need To Know

    After March 30, 2018, our CDN/API services will use the upgraded TLS version and will no longer support TLS 1.0 or TLS 1.1 over HTTPS on the api/cdn/images/assets.contentstack.io domain. We will only accept requests made by browsers or API clients that have TLS 1.2 or higher.

    Why Are We Making 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 provides protection against cipher block chaining (CBC) attacks. One of the major 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 Do I Need To Do?

    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 very old libraries. A comprehensive list of support is available here: https://www.ssllabs.com/ssltest/clients.html

    API Library Support

    If you have code that connects with the Built.io Contentstack API, it is important to ensure that it will continue to work after March 30, 2018. While each language and library is different, we have identified some of the popular ones as a starting reference.

    Here’s the list of languages that will need significant changes/upgrades in order to continue operating uninterrupted:

    • Java 6u45 / 7u45
    • .NET before 4.5 (does not support TLS 1.2)
    • .NET 4.5 (must be have setting changed to explicitly enable TLS 1.2)
    • OpenSSL 0.9.8

    Most dynamic languages such as Ruby, PHP, and Python rely on the underlying operating system’s OpenSSL version. You can check it by running openssl 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
    • Firefox 26
    • Internet Explorer 10
    • Safari 8
    • iOS 4
    • Android 4

    Please let us know if you have any questions. You can reach us using the chat function in your Built.io Contentstack account or by email at support-contentstack@built.io.

    Expand
  • Kane

    Aug 19, 2017

    Contentstack App
    • Introducing asset versioning: Any new update to an existing asset will be saved as a new version of the asset, enabling you to rollback to or retrieve data from the earlier versions.
    • Give an identity to assets: We have added the ‘Title’ and ‘Description’ fields for assets so you can store your file in a organized manner and retrieve them with ease.

    Enhancements and improvements

    • A product update page has been added in the Built.io Contentstack UI that will provide updates on all the newly introduced features and changes.
    • Updates in Assets Management:
      • Asset will now be displayed in List View (latest on top), instead of Grid View.
      • You can now search assets on a global scale irrespective of the folder you currently working on.
    Expand
  • June 24, 2017

    Jun 24, 2017

    1. Change in Response of GET requests of Entries and Assets

    The 'publish_details' key that was available in the response of 'Get Entry', 'Get Entries', 'Get Asset' and 'Get Assets' API requests will be no longer returned by default. To include it in the response, use the 'include_publish_details' parameter.

    Affected endpoints

    Get Entries:

    /v3/content_types/{content_type_id}/entries
    
    

    Get Entry:

    /v3/content_types/{content_type_id}/entries/{entry_id}
    
    

    Get Assets:

    /v3/assets/
    
    

    Get Asset:

    /v3/assets/{asset_id}
    
    

    Webhook: All entry relevant webhook channel response

    2. Change in response of GET requests of Entries and Assets for specific environment(s)

    • The 'publish_details' response key now contains the details of only the environment(s) specified in the 'environment' parameter, and not of all the environments.
    • The format of the 'publish_details' response key has been changed from array to JSON object.

    Affected endpoints

    Get Entries:

    /v3/content_types/{content_type_id}/entries?environment={environment}
    
    

    Get Entry:

    /v3/content_types/{content_type_id}/entries/{entry_id}?environment={environment}
    
    

    Get Assets:

    /v3/assets/?environment={environment}
    
    

    Get Asset:

    /v3/assets/{asset_id}?environment={environment}
    
    

    Webhook: All asset relevant webhook channel response

    Example Response

    {
    "uid": "blte3458e663de6bef5",
    ...
    ...
    "publish_details": {
              "environment": "blt381ebc884693ff29",
              "locale": "en-us",
              "version": 37,
              "user": "blt2a4852543181169c2e36d422",
              "time": "2017-05-17T19:16:26.983Z"
            },
    ...
    }
    
    

    3. Default disposition value of Images API changed to inline

    When an image URL is opened in a browser, it now renders the image in the browser, instead of downloading it (which was the case earlier).

    4. Maximum pagination limit set to 100 records

    All endpoints will return a maximum of 100 records (changed from 1000 earlier). The next batch of records can be retrieved by making the same request and changing the 'skip' parameter to 100 from 0.

    Expand
  • Jordan

    Jun 24, 2017

    Contentstack App

    Publish references in a click: When you publish an entry that has references to other unpublished (or draft) entries or assets (like images, a blog post author, or category), you will get an alert. This alert works as a reminder as well as tool to publish all the references in a single click.

    API changes

    We have made some changes to our APIs. However, these changes are applicable only for stacks that have been created after June 24, 2017.

    • The ‘publish_details’ key in the response of the GET requests of draft entries and assets has been made optional. To include it in the response, use the ‘include_publish_details’ parameter.
    • The ‘publish_details’ key in the response of GET requests of entries and assets of specific environment(s) now contains the details of only the environment(s) specified in the ‘environment’ parameter.
    • The image URL, when opened in the browser will render the image, instead of downloading it.
    • A single API request will return a maximum of 100 records (reduced from 1000 earlier). The next batch of records can be retrieved by using the ‘skip’ parameter.

    UI changes

    This release also includes some minor changes to the user interface.

    • On the entry page, clicking or hovering over a field will highlight the field.
    • The ‘Not Published’ filter option has been removed from the entries and assets list page.
    • The checkboxes for filter options on the entries and assets list page have been changed to radio buttons. Consequently, only one filter option can be selected at a time.
    • The ‘Mark as group title’ property has been added to the ‘Date’ and ‘Link’ fields.
    Expand
  • Ivory

    Jun 09, 2017

    Contentstack App
    • Create and manage folders in Assets: Users will now be able to create folders for Assets. The folders can be renamed, deleted, and moved with ease. Also, you can create nested folders, i.e., folders within folders, too.
      Note: This feature is available for V3 stacks only.
  • Galileo

    Mar 17, 2017

    Contentstack App
    • New validation properties for 'File' and 'Date' fields: New validation properties have been introduced for two of the existing fields: 'File' and 'Date'.

      In the 'File' field, we have introduced File Type, that will let you specify the types of files that can be uploaded, and File Size, that will let you set validations on the size of an uploaded file. In the 'Date' field, we have introduced the 'Date Range' property that will allow you to set the range of dates that a user can select in a 'Date' field.
    • Field validation error message: You can now define and display custom validation error messages for single-line and multiline text fields if the regex validation that you have set fails.
    Expand
  • Foster

    Jan 13, 2017

    Contentstack App
    • Introducing two-factor authentication (2FA): We have introduced two-factor authentication in Built.io Contentstack. After logging into the account using their credentials, users will be prompted to verify the security code that they get on Authy app. It is an opt-in security feature, so users can enable/disable it at will.
  • October 30, 2016

    Oct 30, 2016

    Stack

    The ‘master_locale’ key has been introduced.

    Version 3 (New)Version 2

    {

      "stack": {

        "name": "My New Stack",

        "description": "My new test stack",

        "master_locale": "en-us"

      }

    }

    {

      "stack": {

        "name": "My New Stack",

        "description": "My new test stack"

      }

    }

    Content Type

    The request/response format has been changed. The default value of 'unique' field under 'schema' has been changed. The position of ‘description’ and ‘singleton’ keys have been changed.

    Version 3 (New)Version 2

    {

      "content_types": [

        {

         “title”:”Page”,

         ‘uid”:”page”

          ...

          "schema": [

            {

              "display_name": "Title",

              "uid": "title",

              "data_type": "text",

              "field_metadata": {

                "_default": true

              },

              "unique": false,

              "mandatory": true,

              "multiple": false

            }],

         "options": {      

             ...

             "singleton": false

          },

        "description": "Content_type Description"

      }

    }

    {

      "content_types": [

        {

         “title”:”Page”,

         ‘uid”:”page”

          ...

           "schema": [

            {

              "display_name": "Title",

              "uid": "title",

              "data_type": "text",

              "field_metadata": {

                "_default": true

              },

              "unique": "global",

              "mandatory": true,

              "multiple": false

            }],

          "options": {

            ...

            "description": "Content_type Description"

          },

          "singleton": false

        }

    }

    Entry

    The ‘_metdata’ key has been removed from the ‘entry’ response body, and all they keys ('locale', 'uid', and 'publish_details') that were under ‘_metadata’ are now available directly under the ‘entry’ key.

    Version 3 (New)Version 2

    {

     ...

      "entry": {

       “title”:”example”,

       “url”:”/example”,

        "locale": "en-us",

        "uid": "abcdefhgi123",

        "publish_details": []

      }

    }

    {

      ...

      "entry": {

       “title”:”example”,

       “url”:”/example”

        "_metadata": {

          "locale": "en-us",

          "uid": "abcdefghi12345",

          "publish_details": []

       },

    }

    Entry published/unpublished

    The environment name is now mentioned instead of its UID. ‘locale’ and ‘version’ keys have been made independant. Finally, the ‘content_type’ key has been eliminated.

    Version 3 (New)Version 2

    {

      "entry": {

        "locales": [

          "en-us"

        ],

        "environments": [

          "development"

        ]

      },

      "locale": "en-us",

      "version": 1

    }

    {

      "entry": {

        "content_type": {

          “title”:”Page”,

         “uid’:”page”

        },

        "entry": {

          "locale": "en-us",

          "version": "1"

        },

        "locale": [

          "en-us"

        ],

        "environment": [

          "qwertyuiop123456"

        ]

      }

    }

    Asset

    The ‘_metadata’ object has been removed from the asset body, and the response data, ‘publish_details’, is now wrapped in the ‘asset’ object instead of the ‘upload’ object. The format of the 'url' key has been changed.

    Version 3 (New)
    Version 2

    {

        "asset": {

          ...

          “uid”:”blt7b6c042533cdb1eb”,

          “filename”:”filename.jpg”,

          "url":"https://images.contentstack.io/v3/assets/
        {{api_key}}/{{asset_uid}}/{{unique_id}}/download",

          "publish_details": []

        }

    }

    {

        "upload": {

        ...

        “uid”:”blt7b6c042533cdb1eb”,

        “filename”:”filename.jpg”,

        "url":"https://api.contentstack.io/v2/uploads/
            {{unique_id}}/download?uid={{asset_uid}}",

          "_metadata": {

    ...

            "publish_details": []

         },

    }

    Asset published/unpublished

    The asset details are now wrapped in the ‘asset’ object instead of the ‘entry’ object. The ‘entry’ and ‘action’ keys have been eliminated.

    Version 3 (New)Version 2

    {

      "asset": {

        "locales": [

          "en-us"

        ],

        "environments": [

          "development"

        ]

      }

    }

    {

      "entry": {

        "locale": [

          "en-us"

        ],

        "environment": [

          "1234567890abcdef"

        ],

        "entry": {

          “title”:”filename.jpg”,

           “entry_uid”:”blt7b6c042533cdb1eb”

        },

        "action": "action"

      }

    }

    Locales

    The request/response format of the locale object has been changed from ‘locale_uid’ to ‘code’.

    Version 3 (New)
    Version 2

    {

      "locale": {

        "code": "zh-cn"

      }

    }

    {

      "locale": {

        "locale_uid": "zh-cn"

      }

    }

    Environment

    The ‘_metadata’ object removed from the environment response body and the ‘status’ key has been brought to the top level.

    Version 3 (New)
    Version 2

    {

       "environment": {

          “uid”:”blt7b6c042533cdb1eb”,

         “name”:”development”, 

        "status": “1”

      },

    }

    {

     "environment": {

        “uid”:”blt7b6c042533cdb1eb”,

         “name”:”development”,

        "_metadata": {

          "status": “1”

         },

    }

    Publish Queue

    The ‘form’ object has been replaced with ‘content_type’ and the ‘entry_uid’ key under the ‘entry’ object has been replaced with ‘uid’. The ‘_metadata’ object has been eliminated and all the keys (i.e., publish_details, user, roles, and cancelled_by) within it has become independent objects. The ‘status’ key has been included under the ‘publish_details’ object.

    Version 3 (New)
    Version 2

    {

      "queue": [

        {

          ...

          "content_type": {

            "title": "Title",

            "uid": "uid"

          },

         ...

          "publish_details": {

            "status": 2,

            "user": "sys_bltd0f5afe8abcd",

            "roles": []

          },

          ...

        }

      ]

    }

    {

      "queue": [

        {

          “uid”:”abcd123”

          "form": {

            “title”:”form title”,

            “form_uid”:”uid”

          },

         ...

          "entry": {

            “locale”:”en-us”,

           “title”:”title of entry”

            "entry_uid": "abcdefhgi1234567890"

          },

        ...

          "_metadata": {

            "publish_details": [

              {

                "name": "server-name",

                "status": "-1",

                "message": ""

              }

            ],

            "user": "abcd1234567890",

            "roles": []

          },

          ...

        }

      ]

    }

    Audit Logs

    The ‘_metadata’ object has been renamed to ‘metadata’ from audit log body.

    Version 3 (New)
    Version 2

    {

      "logs": [{

        ...

        “event_type”:”create”,

        “module”:”entry”,

        "metadata": {

          "title": "Test",

          "locale": {

            "title": "English - United States"  ,

            "code": "en-us",

          }

          "content_type": {

            "title": "Page",

            "uid": "page",

          }

        }

      }]

    }

    {

      "logs": [{

        ...

        “event_type”:”create”,

        “module”:”entry”,

        "_metadata": {

          "title": "Test",

          "locale": {

            "title": "English - United States",

            "uid": "en-us",

          }

          "content_type": {

            "title": "Page",

            "uid": "page", 

          }

        }

      }]

    }

    Roles

    The ‘rights’ object has been renamed to ‘permission’ and the ‘locales’ object has been added.

    Version 3 (New)
    Version 2

    {

      “role”:{

        “uid”:”abcd1323”

        ...

        "permissions": {

          "content_types": [{

            "uid": "content_type_uid",

            “name”:”content_type_name”,

            "SYS_ACL": {

              "sub_acl": {}

            }

          }],

          "environments": [

            {   

              "uid": "environment_uid",

              "SYS_ACL": {

                "sub_acl": {}

              }

            }

          ],

          "locales": [

            {

               "uid": "locale_uid",

                "SYS_ACL": {

                "sub_acl": {}

              } ...

            } ]

          }

        }

      }

    }

    {

      “role”:{

        “uid”:”abcd1323”

        ...

        "rights": {

          "content_types": [{

            "uid": "content_type_uid",

            “name”:”content_type_name”,

            "SYS_ACL": {

              "sub_acl": {}

            }

          }],

          "environments": [

          {   

            "uid": "environment_uid",

            "SYS_ACL": {

              "sub_acl": {}

          }

        }]

        }

      }

    }

    Webhook

    Three new calls, ‘execution’, ‘logs’, and ‘retry’, have been incorporated in the new release.

    Webhook Request

    The ‘webhook’ request object has been modified to include ‘basic_auth’ and ‘custom_header’ subkeys. The ‘url’ key has been renamed to ‘target_url’ and is now included under the ‘destinations’ key. Finally, we have added the ‘retry_policy’ key which will enable the user to manually trigger a webhook.

    Version 3 (New)Version 2

    {

      "webhook": {

        "name": "Test",

        "destinations": [

        {

          "target_url": "http://example.com",

          "http_basic_auth": "basic",

          "http_basic_password": "test",

          "custom_header": [

          {

            "header_name": "Custom-Header",

            "value": "testing"

          }]

        }],

        "channels": [

          "content_types.entries.create"

        ],

        "retry_policy": "manual"

      }

    }

    {

      "webhook": {

        "name": "Test",

        "url": "http://example.com",

        "channels": [

          "content_types.entries.create"

        ]

      }

    }

    Webhook Trigger Response

    The trigger response body has been modified. The changes are illustrated in the following examples:

    Publishing Entries:

    Version 3 (New)Version 2

    {

        "event": "publish",

        "data": {

            "content_type": {

                "options": {

                ...

                    "singleton": false

                },

                 "schema": [{

                    "multiple": false,

                    "mandatory": true,

                    "unique": false,

                    "field_metadata": {

                        "_default": true

                    },

                    "data_type": "text",

                    "uid": "title",

                    "display_name": "Title"

                }],

                 "description": "Description"

                "uid": "content_type_uid",

                "title": "content_type_title"

            },

            "entry": {

                "publish_details": [{

                ...

                    "locale": "en-us",

                    "environment": "aabcdf9733d7045cde5"

                }],

                "title": "example",

                "url": "/example"

            },

            "environment": {

                "uid": "babcd9ff9733d7045cde5",

                "name": "environment_name"

            }

        },

        "api_key": "abcdc820784d36d152f",

        "module": "entry"

    }


    {

        "event": "publish.success",

        "data": {

            "form": {

                "singleton": false,

                "options": {

                ...

                    "description": "Description"

                },

                "schema": [{

                    "multiple": false,

                    "mandatory": true,

                    "unique": "global",

                    "field_metadata": {

                        "_default": true

                    },

                    "data_type": "text",

                    "uid": "title",

                    "display_name": "Title"

                }],

                "uid": "content_type_uid",

                "title": "content_type_title"

            },

            "entry": {

                "_metadata": {

                    "publish_details": [{

                ...

                        "locale": "en-us",

                        "environment": "aabcdf9733d7045cde5"

                    }]

                },

                "title": "example",

                "url": "/example"

            },

            "environment": {

                "uid": "babcd9ff9733d7045cde5",

                "name": "environment_name"

            }

        },

        "api_key": "abcdc820784d36d152f",

        "module": "entry"

    }

    Publishing Assets:

    Version 3 (New)Version 2

    {

        "event": "publish",

        "data": {

            "asset": {

        ...

                "publish_details": [{

        ...

                    "locale": "en-us",

                    "environment": "bdffff9733d7045cde5"

                }],

                "filename": "test.png"

            },

            "environment": {

                "uid": "bldgs733d7045cde5",

                "name": "environment_name"

            }

        },

        "api_key": "abcd820784d36d152f",

        "module": "asset"

    }

    {

        "event": "publish.success",

        "data": {

            "upload": {

        ...

                "_metadata": {

                    "publish_details": [{

        ...

                        "locale": "en-us",

                        "environment": "bdffff9733d7045cde5"

                    }]

                },

                "filename": "test.png"

            },

            "environment": {

                "uid": "bldgs733d7045cde5",

                "name": "environment_name"

            }

        },

        "api_key": "abcd820784d36d152f",

        "module": "asset"

    }

    Expand
^