Pular para o conteúdo principal

Referência REST

Base URL: https://api.ciphervault.com.br/v1

Todas as requisições requerem Authorization: Bearer <token> (ver Autenticação). Conteúdo é JSON UTF-8. Datas em ISO 8601 UTC.

Vaults

GET /vaults

Lista vaults visíveis ao token.

{
"vaults": [
{
"id": "vault_01HXYZ...",
"name": "producao",
"environment": "production",
"secrets_count": 1247,
"created_at": "2025-01-15T10:00:00Z"
}
],
"total": 4
}

POST /vaults

{
"name": "staging-billing",
"description": "Cofre de billing — staging",
"environment": "staging",
"encryption": {
"algorithm": "AES-256-GCM",
"key_source": "ciphervault",
"rotation_days": 90
}
}

GET /vaults/{name}

Detalhes do vault, incluindo configuração de criptografia, policies anexadas e contagem de secrets.

PATCH /vaults/{name}

Atualiza descrição, tags, configurações de auditoria. Nome é imutável.

DELETE /vaults/{name}

Soft delete com retenção de 30 dias (configurável). Requer aprovação multi-nível em produção.

Secrets

GET /vaults/{vault}/secrets

Lista paths. Não retorna valores — use /secrets/{path}.

Parâmetros: prefix, tags, type, limit (default 100, max 1000), cursor.

POST /vaults/{vault}/secrets

{
"path": "api/stripe/secret_key",
"type": "api_key",
"value": "sk_live_...",
"metadata": {
"description": "Stripe billing key",
"tags": ["stripe", "production"],
"owner": "billing-team@acme.com.br"
}
}

GET /vaults/{vault}/secrets/{path}

Retorna o secret descriptografado. Parâmetro opcional version (int) — sem ele, retorna a versão atual.

{
"path": "api/stripe/secret_key",
"type": "api_key",
"value": "sk_live_...",
"version": 7,
"created_at": "2026-04-15T13:00:00Z",
"rotated_at": "2026-04-15T13:00:00Z",
"next_rotation": "2026-07-14T13:00:00Z",
"metadata": { "..." }
}

PUT /vaults/{vault}/secrets/{path}

Atualiza valor e/ou metadados. Cria nova versão.

DELETE /vaults/{vault}/secrets/{path}

Soft delete. Versões antigas permanecem por retenção do plano.

GET /vaults/{vault}/secrets/{path}/versions

Lista versões com timestamp e autor de cada mudança.

POST /vaults/{vault}/secrets/{path}/rotate

Aciona rotação imediata.

{ "reason": "Suspeita de vazamento — SEC-1234" }

POST /vaults/{vault}/secrets/{path}/rollback

{ "to_version": 5, "reason": "Rotação v6 quebrou app X" }

GET /vaults/{vault}/aggregate?prefix=api/stripe

Path aggregator — retorna múltiplos secrets em uma chamada, respeitando policies.

Policies

POST /policies

{
"name": "billing-readers",
"document": { "version": "2025-01-01", "statement": [ ] }
}

POST /policies/{name}/attach

{ "principal": { "group": "billing-team" } }

POST /policies/simulate

Avalia uma policy contra um contexto sem aplicar — ver exemplo.

AppConnections

POST /app-connections

{
"name": "billing-api",
"vault": "producao",
"allowed_paths": ["api/stripe/*", "db/postgres/billing-master"],
"ip_allowlist": ["10.0.0.0/8"],
"mtls_required": true
}

Retorna client_id, client_secret (única exibição), e CSR a assinar com a CA do CipherVault.

POST /app-connections/{id}/rotate

Rotaciona client_secret e/ou certificado.

Auditoria

GET /audit

Filtros: vault, actor, action, resource, from, to, decision, cursor.

curl "https://api.ciphervault.com.br/v1/audit?vault=producao&action=secrets:read&from=2026-04-01T00:00:00Z"

POST /audit/exporters

Configura export para SIEM — ver Auditoria.

Erros

Todos os erros seguem o formato:

{
"error": {
"code": "INSUFFICIENT_PRIVILEGE",
"message": "Token não tem permissão secrets:read em vault/producao/api/stripe/*",
"request_id": "req_01HXYZ..."
}
}

HTTP status:

StatusSignificado
200Sucesso
201Criado
400Request inválido
401Token inválido/expirado
403Sem permissão
404Recurso não encontrado
409Conflito (rotação em curso, versão já existe)
422Validação falhou
429Rate limit
5xxErro do servidor

Versionamento da API

A API é versionada na URL (/v1). Mudanças não compatíveis vão para /v2. Deprecações são anunciadas no changelog com pelo menos 6 meses de antecedência.