Was this article helpful?
Thanks for your feedback
If you have used any other export utility (apart from Contentstack’s export utility) to export content from your CMS, you can still use our import utility to import data into Contentstack. However, you need to restructure your data in a format that is understood and can be used by the Contentstack import utility tool.
You should follow the folder structure given below:
Let’s see the content of these folders in detail.
The main asset folder should contain all of your asset files in separate subfolders and each subfolder should be named on the basis of the asset uid. This folder consists of a JSON file named assets.json that will contain the list of all asset uids. With the help of this JSON file, the old asset uids will be later mapped to the new uids.
The structure of the assets.json file looks like the following:
{ "asset_uid": { "uid": "asset_uid", "filename": "asset_filename", "url": "easy_download_URL", "status": true } ... }
The contentTypes folder should contain the details of all the content types stored in JSON format.
The structure of a content type JSON file should look like the example given below:
{ "title": "Content_type_name", "uid": "Content_type_uid", "schema": [{ "display_name": "Title", "uid": "title", "data_type": "text", "mandatory": true, "unique": true, "field_metadata": { "_default": true }, "multiple": false }, { "display_name": "URL", "uid": "url", "data_type": "text", "mandatory": false, "field_metadata": { "_default": true }, "multiple": false, "unique": false } ... ], "options": { "is_page": true, "singleton": false, "title": "title", "sub_title": [], "url_pattern": "/:title", "url_prefix": "/" }, "description": "" }
Apart from the content type files, this folder also contains two additional files named _master.json and _priority.json.
{ "content_type1": { "uid": "", "references": [], "fields": { "file": [], "reference": [] } }, "content_type2": { "uid": "content_type2", "references": [{ "uid": "", "path": "", "entryPath": "", "content_type_uid": "content_type2", "isCycle": true }], "fields": { "file": [], "reference": [] } }, "content_type3": { "uid": "content_type2", "references": [{ "uid": "", "path": "", "entryPath": "", "content_type_uid": "content_type1" }], "fields": { "file": [], "reference": [] } } }
Note: In the above code snippet, you will notice the isCycle field, which is used to indicate cyclic reference.
["content_type1","content_type2","content_type3"]
These two files are extremely important in order to successfully import data.
The ‘entries’ folder should contain details of all the entries of each of the content types.
These should be specifically stored in separate JSON files for separate locales. For instance, all the entries in ‘English (U.S.A.)’ or ‘en-us’ will be stored in a file named ‘en-us’.
The structure of a locale JSON file should be as follows:
{ "entry_uid": { "title": "title_uid", "url": "/", "name": "value", "age": value, "gender": "value", "address": "value", "telephone_number": value, "additional_data": [], "tags": [], "locale": "en-us", "uid": "entry_uid", "ACL": {}, "_version": version_number, "publish_details": [{ "environment": "environment_uid", "locale": "locale_code", "time": "time_in_ISO_format", "user": "user_uid", "version": version_number }] } }
Note: If you are uploading a manually created JSON file of your entry, you need to provide an entry UID. This UID can be any random value, because it is mandatory to provide the entry UID to run the import script. Once the entry is imported, Contentstack will assign it an authorized UID.
The environments folder should contain the details of all the created environments.
The details should be recorded in the environments.json file and should include details such as ‘updated_at’, ‘created_at’, ‘deploy_content’, ‘servers, ‘urls’ (includes details of ‘locale’ and the corresponding ‘url), ‘name’, ‘updated_by’, ‘created_by’, and ‘version’.
Here’s an example of the environments.json file:
{ "environment_uid": { "deploy_content": false, "servers": [], "urls": [{ "url": "URL", "locale": "locale_code" }], "name": "environment_name", "created_by": "user_uid", "updated_by": "user_uid", "created_at": "date_in_ISO_format", "updated_at": "date_in_ISO_format", "ACL": [], "_version": version_number } }
The locales folder should include the details of the created locales saved in the locales.json file.
Here’s an example of how your locales.json file looks like:
{ "locale_uid": { "code": "locale_code", "name": "locale_name" } }
The master folder should include the mapping details of all the data components in a stack. The files included in this folder are assets.json, entries.json, environments.json, locales.json, and url_master.json.
The structure of each file are discussed below:
{"old_asset_uid1":"", "old_asset_uid2":"", ...}
{ "locale_code1": { "old_entry_uid1": "", "old_entry_uid1: "", ... }, "locale_code2": { "old_entry_uid1": "", "old_entry_uid1: "", ... } }
{"old_environment_uid1":"", "old_environment_uid2":"", ...}
{"old_locale_uid1":"", "old_locale_uid2":"", ...}
{"old_asset_url1":"", "old_asset_url2":"", ...}
Was this article helpful?
Thanks for your feedback