Show examples in:
    Create a new field

    Body Parameters

    id  string  Optional
    RFC 4122 UUID of field expressed in URL-safe base64 format
    label  Required  string  Example: "Title"

    The label of the field

    field_type  Required  enum  Example: "string"

    Type of input

    api_key  Required  string  Example: "title"

    Field API key

    localized  Optional  boolean  Example: true

    Whether the field needs to be multilanguage or not

    validators  Optional  object  Example: {"required":{}}

    Optional field validations

    appearance  Optional  object  Example: {"editor":"single_line","parameters":{"heading":false},"addons":[{"id":"1234","field_extension":"lorem_ipsum","parameters":{}}]}

    Field appearance details, plugin configuration and field add-ons

    position  Optional  integer  Example: 1

    Ordering index

    hint  Optional  string, null  Example: "This field will be used as post title"

    Field hint

    default_value  Optional  boolean, null, string, number, object  Example: {"en":"A default value","it":"Un valore di default"}

    Default value for Field. When field is localized accepts an object of default values with site locales as keys

    deep_filtering_enabled  Optional  boolean  Example: true

    Whether deep filtering for block models is enabled in GraphQL or not

    fieldset  Optional  null, { type: "fieldset", id: fieldset.id }

    Fieldset linkage

    Returns

    Returns a field resource object.

    Examples

    Example Basic example

    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: '<YOUR_API_TOKEN>' });
    const modelIdOrApiKey = 'blog_post';
    const field = await client.fields.create(modelIdOrApiKey, {
    label: 'Title',
    field_type: 'string',
    api_key: 'title'
    });
    console.log(field);
    }
    run();
    Example Creating Modular Content fields

    In this example:

    • first we create some block models using the 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;
    • we then create a Modular content field, passing down the allowed block models in the 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();
    Example Creating Structured Text fields

    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:

    • first we create some block models using the 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;
    • we then create the Structured Text field, passing down the embeddable block models in the 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();