/api/v1/consents para integração server-to-server com API Key. Eles são distintos do fluxo público do banner (POST /api/v1/public/consent), que usa o header X-Site-Token.
Para obter e usar uma API Key, consulte API Key.
Autenticação
Inclua o header em toda chamada:api_access).
Endpoints
Especificação OpenAPI completa, com schemas e exemplos por endpoint, está disponível na aba API Reference.
Criar consentimento
Corpo mínimo:site_id é obrigatório; os demais campos refinam a evidência. Resposta 201 com o ConsentDTO completo.
Listar consentimentos
GET /api/v1/consents retorna uma página paginada por cursor. Filtre por site_id, subject_id, consent_id, accepted, e janela temporal from/to (ISO 8601). limit padrão é 50, máximo 100. Use next_cursor da resposta para a próxima página; quando vier null, você chegou ao fim.
Detalhe de um consentimento
GET /api/v1/consents/{id} retorna o ConsentDTO completo.
Atualizar aceite / preferências
PUT /api/v1/consents/{id} aceita accepted e/ou preferences. A alteração é registrada na trilha de auditoria do consentimento.
Excluir (soft-delete)
DELETE /api/v1/consents/{id} marca o consentimento como excluído (deleted_at preenchido). O histórico permanece para evidência regulatória.
Trilha de auditoria
GET /api/v1/consents/{id}/history devolve todos os snapshots já registrados para aquele consentimento — útil para apresentar a “linha do tempo” da decisão do titular em auditoria.
Batch ingestion
Para importar dados históricos ou sincronizar lotes grandes usePOST /api/v1/consents/batch (até 1000 consentimentos por chamada). A resposta volta no formato Stripe-like: created, failed, skipped_quota e um array results indexado por linha.
A primeira linha é coberta pela cobrança do request; cada linha adicional consome +1 unidade da cota mensal. Se a cota acabar no meio do batch, as linhas restantes voltam com status="skipped_quota" e nada é gravado.
Recibo regulador (DSAR)
GET /api/v1/consents/{id}/receipt devolve um recibo canônico cuja forma JSON é estável (version: "1.0") — arquive-o como evidência. Inclui o titular, escolha, preferências, versão de política, país/região e timestamps.
Direito ao esquecimento (DSAR erase)
DELETE /api/v1/consents/by-subject/{subjectId} apaga (logicamente) todos os consentimentos do titular sob a sua conta. O histórico continua íntegro — reguladores querem prova de que a remoção aconteceu, então apenas o deleted_at é marcado. Passe ?site_id=<uuid> para limitar a um único site.
{ "subject_id": "user_sha256_a1b2c3d4e5f6", "erased": 7 }
Não confundir com o banner no site
Erros frequentes
O corpo de erro segue o schema APIErrorResponse: camposerror (código) e message (texto).
unauthorized— API Key inválida ou revogada.quota_exceeded— cota mensual da API esgotada (429).not_found— consentimento ou site não encontrado para o utilizador da chave.invalid_request— corpo ou query inválidos (ex.: cursor malformado).
Dúvidas? suporte@consentfly.com.br
