Sorry, no results found for "".
RFC 4122 UUID of field expressed in URL-safe base64 format
"Pkg-oztERp6o-Rj76nYKJg"
The label of the field
"Title"
Type of input
"string"
Field API key
"title"
Whether the field needs to be multilanguage or not
Optional field validations
{ required: {} }
Field appearance details, plugin configuration and field add-ons
{
editor: "single_line",
parameters: { heading: false },
addons: [{ id: "1234", field_extension: "lorem_ipsum", parameters: {} }],
}
A valid editor can be a DatoCMS default field editor type (ie. "single_line"
), or a plugin ID offering a custom field editor
The editor plugin's parameters
An array of add-on plugins with id and parameters
The ID of a plugin offering a field addon
The specific field extension to use for the field (only if the editor is a modern plugin)
The specific field extension to use for the field (only if the editor is a modern plugin)
Ordering index
1
Field hint
"This field will be used as post title"
Default value for Field. When field is localized accepts an object of default values with site locales as keys
{ en: "A default value", it: "Un valore di default" }
Whether deep filtering for block models is enabled in GraphQL or not
Field appearance
This field contains a typo and will be removed in future versions: use appearance
instead
Returns a resource object of type field
This is a complete example for creating a new localized Single-line string field:
import { buildClient } from "@datocms/cma-client-node";
async function run() { const client = buildClient({ apiToken: process.env.DATOCMS_API_TOKEN });
const modelIdOrApiKey = "blog_post";
const field = await client.fields.create(modelIdOrApiKey, { label: "Title", field_type: "string", api_key: "title", });
// Check the 'Returned output' tab for the result ☝️ console.log(field);}
run();
{ id: "Pkg-oztERp6o-Rj76nYKJg", label: "Title", field_type: "string", api_key: "title", localized: true, validators: { required: {} }, position: 1, hint: "This field will be used as post title", default_value: { en: "A default value", it: "Un valore di default" }, appearance: { editor: "single_line", parameters: { heading: false }, addons: [{ id: "1234", field_extension: "lorem_ipsum", parameters: {} }], }, deep_filtering_enabled: true, item_type: { type: "item_type", id: "DxMaW10UQiCmZcuuA-IkkA" }, fieldset: null,}
In this example:
client.itemTypes.create()
method, making sure to set the modular_block
attribute to true
— this tells the API that they're in fact block models, and not regular models;rich_text_blocks
validator:import { buildClient } from "@datocms/cma-client-node";
async function run() { // Make sure the API token has access to the CMA, and is stored securely const client = buildClient({ apiToken: process.env.DATOCMS_API_TOKEN });
const modularBlock1 = await client.itemTypes.create({ name: "Modular Block 1", api_key: "modular_block1", modular_block: true, });
const modularBlock2 = await client.itemTypes.create({ name: "Modular Block 2", api_key: "modular_block2", modular_block: true, });
const itemTypeId = "1234";
const field = await client.fields.create(itemTypeId, { label: "Content", field_type: "rich_text", api_key: "content", validators: { rich_text_blocks: { item_types: [modularBlock1.id, modularBlock2.id], }, }, });
console.log(field);}
run();
{ id: "Pkg-oztERp6o-Rj76nYKJg", label: "Title", field_type: "string", api_key: "title", localized: true, validators: { required: {} }, position: 1, hint: "This field will be used as post title", default_value: { en: "A default value", it: "Un valore di default" }, appearance: { editor: "single_line", parameters: { heading: false }, addons: [{ id: "1234", field_extension: "lorem_ipsum", parameters: {} }], }, deep_filtering_enabled: true, item_type: { type: "item_type", id: "DxMaW10UQiCmZcuuA-IkkA" }, fieldset: null,}
Structured Text fields support both embedded block records and links to other regular records.
For DatoCMS, a block model is just like a regular model, so we'll create them with client.itemTypes.create()
, passing the modularBlock
property to true
:
In this example:
client.itemTypes.create()
method, making sure to set the modular_block
attribute to true
— this tells the API that they're in fact block models, and not regular models;structured_text_blocks
validator, and the linkable record models in the structured_text_links
validator:import { buildClient } from "@datocms/cma-client-node";
async function run() { // Make sure the API token has access to the CMA, and is stored securely const client = buildClient({ apiToken: process.env.DATOCMS_API_TOKEN });
const modularBlock1 = await client.itemTypes.create({ name: "Modular Block 1", api_key: "modular_block1", modular_block: true, });
const modularBlock2 = await client.itemTypes.create({ name: "Modular Block 2", api_key: "modular_block2", modular_block: true, });
const itemTypeId = "1234";
const field = await client.fields.create(itemTypeId, { label: "Structured content", field_type: "structured_text", api_key: "content", validators: { structured_text_blocks: { item_types: [modularBlock1.id, modularBlock2.id], }, structured_text_links: { item_types: [itemTypeId], }, }, });
console.log(field);}
run();
{ id: "Pkg-oztERp6o-Rj76nYKJg", label: "Title", field_type: "string", api_key: "title", localized: true, validators: { required: {} }, position: 1, hint: "This field will be used as post title", default_value: { en: "A default value", it: "Un valore di default" }, appearance: { editor: "single_line", parameters: { heading: false }, addons: [{ id: "1234", field_extension: "lorem_ipsum", parameters: {} }], }, deep_filtering_enabled: true, item_type: { type: "item_type", id: "DxMaW10UQiCmZcuuA-IkkA" }, fieldset: null,}