PerpetuusPerpetuus Developers

Convenções e Padrões de Dados

Padrões de requisições, envelopes de respostas e tratamento de IDs e tags na Perpetuus API.

A Perpetuus API utiliza padrões consistentes em todos os seus módulos para garantir clareza nas integrações. Esta página detalha as principais convenções arquiteturais do sistema.

Identificadores Únicos (documentId)

Em conformidade com a arquitetura moderna de nosso motor de persistência, todos os registros acessíveis pela API expõem e utilizam identificadores únicos de string conhecidos como documentId (ex: qt1a2b3c, pr9x8y7z).

Atenção: Evite o uso de chaves primárias numéricas internas (como id: 42). O documentId é o único identificador estável entre atualizações e migrações de dados, sendo obrigatório na URL de rotas customizadas.

Convenções de Parâmetros nas URLs

Nos endpoints que exigem parâmetros de caminho (path parameters), você encontrará principalmente as seguintes variáveis:

  • :boardId / :boardDocumentId: O documentId do quadro. Ex: /boards/{boardId}/cards.
  • :id: Usado no CRUD básico de recursos individuais. Ex: /contacts/{id} ou /boards/{id}.
  • :cardId / :membershipId: Parâmetros específicos em relacionamentos ou sub-recursos. Ex: /teams/{id}/members/{membershipId}.

Envelopes de Resposta

A API responde utilizando dois formatos principais de estrutura de dados:

1. Envelope Padrão (Tipo Strapi)

Utilizado pela maioria dos endpoints de listagem de dados e CRUD. Segue a estrutura com chaves data (que pode ser um objeto ou uma lista de objetos) e meta.

{
  "data": [
    {
      "documentId": "card_9x8y7z",
      "title": "Proposta Comercial ACME",
      "createdAt": "2026-07-09T18:00:00Z"
    }
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "pageSize": 25,
      "pageCount": 1,
      "total": 1
    }
  }
}

2. Envelope Analítico (Tipo Report)

Utilizado exclusivamente em endpoints de agregação e métricas de inteligência comercial, como o GET /boards/{boardId}/report. Estes payloads retornam dados prontos para análise sem chaves internas de paginação.

{
  "boardId": "board_xyz",
  "summary": {
    "totalCards": 120,
    "wonValue": 450000.00
  },
  "phases": [
    {
      "documentId": "phase_abc",
      "name": "Proposta Enviada",
      "cardsCount": 15
    }
  ],
  "period": {
    "from": "2026-07-01",
    "to": "2026-07-09"
  }
}

Associações de Tags em Cards

Ao criar ou atualizar cards via API (POST ou PUT), o campo tags é flexível: você pode enviar tanto o documentId da tag quanto o slug cadastrado no board.

{
  "data": {
    "title": "Novo Card",
    "tags": ["prioritario", "tag_doc_id_123"]
  }
}
  • Se o slug de tag fornecido não existir previamente no board, a API retornará status 400 Bad Request com a lista de tags válidas.
  • Na leitura de dados (GET), a associação de tags sempre retornará objetos estruturados contendo documentId, name e slug.

On this page