Skip to main content

Data Models Reference

This page documents all response models returned by the Adapto CMS Public API. These schemas define the shape of data you will receive from API calls.


PaginatedResponse

The standard envelope for all paginated list endpoints.

{
  "items": [],       // Array of resource objects
  "total": 0,        // Total number of matching items across all pages
  "page": 1,         // Current page number
  "limit": 20,       // Items per page
  "pages": 0         // Total number of pages
}
FieldTypeDescription
itemsarrayArray of resource objects for the current page
totalintegerTotal matching items across all pages
pageintegerCurrent page number (1-based)
limitintegerNumber of items per page
pagesintegerTotal number of pages

ArticleResponseModel

Full article object returned by article endpoints.

FieldTypeRequiredDescription
idstringYesUnique identifier (UUID)
titlestringYesArticle title
contentstringYesFull HTML content body
slugstringYesURL-friendly identifier
authorstringYesAuthor name
sourceArticleSourceModelYesContent source information
categoriesstring[]YesArray of category IDs
tagsstring[]YesArray of tag strings
summarystringYesShort summary or excerpt
languagestringYesISO 639-1 language code
statusstringYesOne of: draft, published, archived, deleted
created_atstring | nullNoCreation timestamp
updated_atstring | nullNoLast update timestamp
published_atstring | nullNoPublication timestamp
media_objects_placementsobject[]YesMedia object placement data
custom_fieldsobjectYesMap of field name to CustomFieldModel
translation_of_idstring | nullNoID of the source article (if this is a translation)
file_urlsobject | nullNoMap of file_id to CDN URL for referenced files

ArticlePreviewResponseModel

Lightweight article object (no content, custom_fields, file_urls, or media_objects_placements).

Contains: id, title, slug, author, source, categories, tags, summary, language, status, created_at, updated_at, published_at, translation_of_id.


ArticleSourceModel

Describes where the article content originated.

FieldTypeRequiredDescription
typestringYesOne of: internal, external, user_submitted, ai_generated
namestringYesSource name (e.g. "Dashboard", "RSS Feed")
urlstring | nullNoSource URL (for external content)
authorstring | nullNoOriginal author (for external content)
published_dateinteger | nullNoOriginal publication date (Unix timestamp)
licensestring | nullNoContent license identifier

CategoryResponseModel

FieldTypeRequiredDescription
idstringYesUnique identifier (UUID)
namestringYesCategory name
slugstringYesURL-friendly identifier
descriptionstring | nullYesCategory description
parent_idstring | nullYesParent category ID (null for root categories)
languagestringYesISO 639-1 language code
created_atstringYesCreation timestamp
updated_atstringYesLast update timestamp
translation_of_idstring | nullYesSource category ID (if translation)
custom_fieldsobjectYesMap of custom fields
file_urlsobject | nullNoMap of file_id to CDN URL

PageResponseModel

FieldTypeRequiredDescription
idstringYesUnique identifier (UUID)
titlestringYesPage title
contentstringYesFull HTML content
slugstringYesURL-friendly identifier
menu_labelstring | nullYesShort label for navigation menus
parent_idstring | nullYesParent page ID (for hierarchical pages)
languagestringYesISO 639-1 language code
tagsstring[]YesArray of tag strings
statusstringYesOne of: draft, published, archived, deleted
created_atstringYesCreation timestamp
updated_atstringYesLast update timestamp
published_atstring | nullYesPublication timestamp
media_objects_placementsobject[]YesMedia object placement data
translation_of_idstring | nullYesSource page ID (if translation)
custom_fieldsobjectYesMap of custom fields
file_urlsobject | nullNoMap of file_id to CDN URL

PagePreviewResponseModel

Lightweight page object (no content, custom_fields, file_urls, or media_objects_placements).

Contains: id, title, slug, menu_label, parent_id, language, tags, status, created_at, updated_at, published_at, translation_of_id.


CustomCollectionResponseModel

FieldTypeRequiredDescription
idstringYesUnique identifier (UUID)
namestringYesCollection name
slugstringYesURL-friendly identifier
descriptionstringYesCollection description
languagestringYesISO 639-1 language code
fieldsFieldDefinitionModel[]YesArray of field schema definitions
statusstringYesOne of: draft, published, archived, deleted
created_atstringYesCreation timestamp
updated_atstringYesLast update timestamp

FieldDefinitionModel

Defines a field within a custom collection's schema.

FieldTypeRequiredDescription
namestringYesField identifier (used as key in item data)
labelstringYesHuman-readable display label
typestringYesField type (see below)
requiredbooleanNoWhether the field is required (default: false)
multiplebooleanNoWhether multiple values are allowed (default: false)
descriptionstring | nullNoHelp text or description
default_valueany | nullNoDefault value for the field
related_collectionstring | nullNoFor reference type: the related collection ID
optionsobject[] | nullNoFor select/multi_select: array of option objects
validationobject | nullNoValidation rules

Available Field Types

TypeDescription
textSingle-line text input
textareaMulti-line text input
rich_textHTML rich text content
numberNumeric value
dateDate value
date_rangeDate range (start and end)
booleanTrue/false toggle
selectSingle selection from predefined options
multi_selectMultiple selections from predefined options
referenceReference to item(s) in another collection
imageImage file reference
fileFile reference
urlURL string
emailEmail address
colorColor value

CustomCollectionItemResponseModel

FieldTypeRequiredDescription
idstringYesUnique identifier (UUID)
collection_idstringYesParent collection ID
titlestringYesItem title
slugstringYesURL-friendly identifier
dataobjectYesItem data matching the collection's field schema
languagestringYesISO 639-1 language code
statusstringYesOne of: draft, published, archived, deleted
created_atstringYesCreation timestamp
updated_atstringYesLast update timestamp
published_atstring | nullYesPublication timestamp
media_objects_placementsobject[]YesMedia object placement data
translation_of_idstring | nullYesSource item ID (if translation)
meta_dataobject | nullNoArbitrary metadata
file_urlsobject | nullNoMap of file_id to CDN URL for files referenced in data

CustomCollectionItemPreviewResponseModel

Lightweight item object (no data, file_urls, or media_objects_placements).

Contains: id, collection_id, title, slug, language, status, created_at, updated_at, published_at, translation_of_id, meta_data.


MediaObjectPlacement

Media placements appear on Articles, Pages, and Custom Collection Items in the media_objects_placements array. Each placement associates a media object with a named slot on the content item.

FieldTypeRequiredDescription
placement_keystringYesNamed slot identifier (e.g., "hero", "thumbnail", "gallery_1")
media_objectMediaObjectYesThe media object with file details and URL
captionstring | nullNoCaption text for the media
alt_textstring | nullNoAlt text for accessibility (use for images)
meta_datastring | nullNoFree-form metadata (JSON string)

Placement keys are arbitrary strings defined by your application. Common conventions include "hero", "thumbnail", "og_image", "avatar", "gallery_1", "gallery_2", etc.

Example

{
  "placement_key": "hero",
  "media_object": {
    "id": "mo-001",
    "title": "Product hero image",
    "description": "Main product shot on white background",
    "file_id": "file-abc-123",
    "url": "https://media.adaptocms.com/tenants/.../hero.jpg",
    "type": "image",
    "created_at": "2026-01-15T10:00:00",
    "updated_at": "2026-01-15T10:00:00"
  },
  "caption": "The new Adapto dashboard",
  "alt_text": "Screenshot of the Adapto CMS dashboard",
  "meta_data": null
}

MediaObject

Represents a media asset (image, video, audio, document, or external embed) stored in Adapto's media system.

FieldTypeRequiredDescription
idstringYesUnique identifier (UUID)
titlestring | nullNoMedia title
descriptionstring | nullNoMedia description
file_idstringYesID of the underlying file in storage
urlstringYesDirect CDN URL to the file (served from media.adaptocms.com)
typestringYesMedia type — see MediaType values below
created_atstring | nullNoCreation timestamp (ISO 8601)
updated_atstring | nullNoLast update timestamp (ISO 8601)

MediaType Values

The type field on a MediaObject identifies the kind of media. This determines how your frontend should render it.

ValueDescriptionRendering Approach
imageImage files (JPEG, PNG, GIF, WebP, AVIF, SVG, HEIC)<img> tag
videoUploaded video files (MP4, WebM, MOV, AVI, etc.)<video> tag with src
audioAudio files (MP3, WAV, AAC, FLAC, OGG)<audio> tag
documentDocuments (PDF, DOC, DOCX, CSV, XLS, XLSX)Download link or <iframe> for PDF
youtubeYouTube video (URL stored in url field)YouTube <iframe> embed
vimeoVimeo videoVimeo <iframe> embed
tiktokTikTok videoTikTok embed script
instagram_reelInstagram ReelInstagram embed
instagram_postInstagram PostInstagram embed
otherAny other file typeDownload link

MicroCopyResponseModel

FieldTypeRequiredDescription
idstringYesUnique identifier (UUID)
keystringYesUnique key identifier (e.g. nav.home)
valuestringYesThe text value
languagestringYesISO 639-1 language code
translation_ofstring | nullYesSource micro copy ID (if translation)
tagsstringYesComma-separated tags
created_atstringYesCreation timestamp
updated_atstringYesLast update timestamp
custom_fieldsobjectYesMap of custom fields
file_urlsobject | nullNoMap of file_id to CDN URL

CustomFieldModel

Represents a custom field value on articles, categories, pages, or micro copy entries.

FieldTypeRequiredDescription
typestringYesField type (same types as FieldDefinitionModel)
multiplebooleanNoWhether multiple values are present (default: false)
related_collectionstring | nullNoRelated collection ID (for reference type)
media_objects_placementsobject[]NoMedia placements (for rich_text type)
valueanyNoThe actual field value

SearchResultModel

FieldTypeRequiredDescription
entity_typestringYesType: article, page, or collection_item
idstringYesEntity unique identifier
titlestringYesEntity title
slugstringYesURL-friendly slug
parent_idstring | nullNoParent page ID or collection ID
parent_namestring | nullNoParent page title or collection name

HTTPValidationError

Returned when request validation fails (HTTP 422).

{
  "detail": [
    {
      "loc": ["query", "limit"],
      "msg": "value is not a valid integer",
      "type": "type_error.integer"
    }
  ]
}
FieldTypeDescription
detailValidationError[]Array of validation errors

ValidationError

FieldTypeDescription
loc(string | integer)[]Location of the error (e.g. ["query", "limit"])
msgstringHuman-readable error message
typestringError type identifier