Strapi · Schema

Strapi Content Entry

Represents a content entry in the Strapi headless CMS. Content entries are instances of content-types and contain the field values defined by the content-type schema. In Strapi 5, entry attributes are directly accessible at the first level of the data object (flattened response format).

CMSContent ManagementHeadless CMSNode.jsOpen Source

Properties

Name Type Description
id integer The unique integer identifier for the content entry
documentId string The unique document identifier for the content entry, used as the primary key in REST API operations
createdAt string The ISO 8601 timestamp when the entry was created
updatedAt string The ISO 8601 timestamp when the entry was last updated
publishedAt stringnull The ISO 8601 timestamp when the entry was published, or null if the entry is in draft status. Only present when Draft and Publish is enabled on the content-type.
locale stringnull The locale code of the entry (e.g., en, fr, de). Only present when internationalization (i18n) is enabled on the content-type.
localizations array An array of localized versions of this entry. Only present when internationalization is enabled and the populate parameter includes localizations.
View JSON Schema on GitHub

JSON Schema

strapi-content-entry-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://strapi.io/schemas/strapi/content-entry.json",
  "title": "Strapi Content Entry",
  "description": "Represents a content entry in the Strapi headless CMS. Content entries are instances of content-types and contain the field values defined by the content-type schema. In Strapi 5, entry attributes are directly accessible at the first level of the data object (flattened response format).",
  "type": "object",
  "required": ["id", "documentId"],
  "properties": {
    "id": {
      "type": "integer",
      "description": "The unique integer identifier for the content entry"
    },
    "documentId": {
      "type": "string",
      "description": "The unique document identifier for the content entry, used as the primary key in REST API operations"
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "The ISO 8601 timestamp when the entry was created"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time",
      "description": "The ISO 8601 timestamp when the entry was last updated"
    },
    "publishedAt": {
      "type": ["string", "null"],
      "format": "date-time",
      "description": "The ISO 8601 timestamp when the entry was published, or null if the entry is in draft status. Only present when Draft and Publish is enabled on the content-type."
    },
    "locale": {
      "type": ["string", "null"],
      "description": "The locale code of the entry (e.g., en, fr, de). Only present when internationalization (i18n) is enabled on the content-type.",
      "pattern": "^[a-z]{2}(-[A-Z]{2})?$"
    },
    "localizations": {
      "type": "array",
      "description": "An array of localized versions of this entry. Only present when internationalization is enabled and the populate parameter includes localizations.",
      "items": {
        "$ref": "#"
      }
    }
  },
  "additionalProperties": true,
  "$defs": {
    "ContentTypeSchema": {
      "type": "object",
      "title": "Content Type Schema",
      "description": "Defines the structure of a content-type in Strapi, including its display name, kind, and attribute definitions.",
      "required": ["displayName", "singularName", "pluralName", "kind"],
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The human-readable display name of the content-type shown in the admin panel"
        },
        "singularName": {
          "type": "string",
          "description": "The singular name used internally and in the API identifier",
          "pattern": "^[a-z][a-z0-9-]*$"
        },
        "pluralName": {
          "type": "string",
          "description": "The plural name used in REST API route paths",
          "pattern": "^[a-z][a-z0-9-]*$"
        },
        "kind": {
          "type": "string",
          "description": "Whether this content-type is a collection (multiple entries) or single (one entry)",
          "enum": ["collectionType", "singleType"]
        },
        "draftAndPublish": {
          "type": "boolean",
          "description": "Whether Draft and Publish is enabled for this content-type",
          "default": true
        },
        "attributes": {
          "type": "object",
          "description": "The field definitions for the content-type, keyed by attribute name",
          "additionalProperties": {
            "$ref": "#/$defs/Attribute"
          }
        }
      }
    },
    "Attribute": {
      "type": "object",
      "title": "Content Type Attribute",
      "description": "Defines a single field attribute within a content-type schema.",
      "required": ["type"],
      "properties": {
        "type": {
          "type": "string",
          "description": "The data type of the attribute",
          "enum": [
            "string",
            "text",
            "richtext",
            "blocks",
            "email",
            "password",
            "uid",
            "integer",
            "biginteger",
            "float",
            "decimal",
            "boolean",
            "date",
            "time",
            "datetime",
            "timestamp",
            "json",
            "enumeration",
            "media",
            "relation",
            "component",
            "dynamiczone"
          ]
        },
        "required": {
          "type": "boolean",
          "description": "Whether this field is required",
          "default": false
        },
        "unique": {
          "type": "boolean",
          "description": "Whether this field must have unique values",
          "default": false
        },
        "private": {
          "type": "boolean",
          "description": "Whether this field is hidden from API responses",
          "default": false
        },
        "default": {
          "description": "The default value for this field"
        },
        "minLength": {
          "type": "integer",
          "description": "Minimum character length for string-type fields",
          "minimum": 0
        },
        "maxLength": {
          "type": "integer",
          "description": "Maximum character length for string-type fields",
          "minimum": 1
        },
        "min": {
          "type": "number",
          "description": "Minimum value for numeric fields"
        },
        "max": {
          "type": "number",
          "description": "Maximum value for numeric fields"
        },
        "enum": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allowed values for enumeration-type fields"
        },
        "multiple": {
          "type": "boolean",
          "description": "Whether multiple files are allowed for media-type fields"
        },
        "allowedTypes": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": ["images", "files", "videos", "audios"]
          },
          "description": "Allowed file types for media-type fields"
        },
        "relation": {
          "type": "string",
          "description": "The relation type for relation-type fields",
          "enum": [
            "oneToOne",
            "oneToMany",
            "manyToOne",
            "manyToMany"
          ]
        },
        "target": {
          "type": "string",
          "description": "The target content-type UID for relation-type fields"
        },
        "component": {
          "type": "string",
          "description": "The component UID for component-type fields"
        },
        "repeatable": {
          "type": "boolean",
          "description": "Whether the component is repeatable (array of components)"
        },
        "components": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allowed component UIDs for dynamic zone fields"
        }
      }
    },
    "PaginationMeta": {
      "type": "object",
      "title": "Pagination Metadata",
      "description": "Pagination information returned with list responses from the Strapi REST API.",
      "properties": {
        "page": {
          "type": "integer",
          "description": "The current page number",
          "minimum": 1
        },
        "pageSize": {
          "type": "integer",
          "description": "The number of entries per page",
          "minimum": 1,
          "maximum": 100
        },
        "pageCount": {
          "type": "integer",
          "description": "The total number of pages",
          "minimum": 0
        },
        "total": {
          "type": "integer",
          "description": "The total number of entries matching the query",
          "minimum": 0
        }
      }
    },
    "ErrorResponse": {
      "type": "object",
      "title": "Error Response",
      "description": "The standard error response format returned by Strapi APIs when a request fails.",
      "properties": {
        "data": {
          "description": "Always null in error responses"
        },
        "error": {
          "type": "object",
          "required": ["status", "name", "message"],
          "properties": {
            "status": {
              "type": "integer",
              "description": "The HTTP status code of the error"
            },
            "name": {
              "type": "string",
              "description": "The error type name (e.g., ValidationError, NotFoundError, ForbiddenError)"
            },
            "message": {
              "type": "string",
              "description": "A human-readable description of the error"
            },
            "details": {
              "type": "object",
              "description": "Additional error details, such as validation errors per field"
            }
          }
        }
      }
    }
  }
}