docs · api
EN
Fundamentos

Formato das respostas

Todas as respostas são JSON (application/json). Os endpoints de conteúdo seguem um envelope único de sucesso{ success, data, meta? } — e um envelope único de erro. A exceção são os endpoints de Anúncios (Delivery), que atendem um contrato legado sem envelope.

Envelope de sucesso

Toda resposta 2xx dos endpoints de conteúdo (posts, categorias, tags e busca) tem o mesmo formato:

successboolean
Sempre true em respostas 2xx e false em erros.
dataobject | array
O payload do recurso: um objeto único (ex.: Post), um array (listagens) ou um objeto composto (busca).
metaobject
Metadados opcionais. Em listagens paginadas por page/pageSize, contém pagination no formato canônico. Ausente quando não há metadados.
messagestring
Mensagem informativa opcional. Raramente presente em leituras.
{
  "success": true,
  "data": {
    "id": "clxxx101",
    "title": "Meu Primeiro Post",
    "slug": "meu-primeiro-post",
    "status": "PUBLISHED"
  }
}

Exceção: Anúncios (Delivery)

Os endpoints de Anúncios · Delivery atendem um contrato legado/externo e não usam o envelope: a entrega por formato retorna o objeto AdDeliveryResult diretamente, e a entrega em lote retorna um array de AdDeliverySlotResult no nível raiz.

Paginação canônica

Listagens paginadas por page/pageSize retornam os itens em data (array) e os metadados em meta.pagination, no formato canônico PaginationMetaCanonical: page, pageSize, total, totalPages, hasNextPage e hasPrevPage. Detalhes e exemplos de laços em Paginação.

Envelope de erro

Respostas 4xx/5xx vêm com success: false e um objeto error estruturado, com código estável (error.code), indicação de retry (error.retryable) e o identificador da requisição (error.requestId):

404 Not Found
{
  "success": false,
  "error": {
    "message": "Post não encontrado",
    "code": "NOT_FOUND",
    "type": "not_found",
    "statusCode": 404,
    "timestamp": "2026-07-01T18:58:22.562Z",
    "retryable": false,
    "path": "/public/posts/abc123",
    "requestId": "req_5c26469a-1234-4c8b-9e21-370450bbda3a",
    "docs": "https://docs.draftin.io/errors/NOT_FOUND"
  }
}

A referência completa de campos, códigos e a estratégia de tratamento estão em Tratamento de erros.

Headers relevantes

HeaderQuando aparecePara que serve
X-Request-Id Toda resposta (sucesso ou erro). Identifica a requisição de ponta a ponta. Registre-o em logs e envie ao suporte para correlação.
Retry-After 429 e erros marcados como retryable. Segundos até valer a pena tentar de novo (espelha error.retryDelay, que é em milissegundos).
Allow 405 Method Not Allowed. Lista os métodos HTTP aceitos naquele path.

Tipos e convenções

TipoFormatoExemplo
Identificadores string opaca (estilo cuid) "clxxx101"
Datas e horas string ISO 8601 (date-time, UTC) "2026-06-01T12:00:00.000Z"
Contadores integer 42
Enumerações string com valores fixos "PUBLISHED"
Campos vazios null (não omitidos) "publishedAt": null

Charset e codificação

  • Respostas são UTF-8. Acentuação e emojis são preservados.
  • O campo content dos posts pode conter HTML ou Markdown, conforme produzido no editor — trate-o de acordo ao renderizar.