Secret Rotation

Gerencie políticas de rotação de segredos para manter suas credenciais sempre atualizadas. O CriptEnv suporta manual e notify; a rotação automática está planejada, mas ainda não foi implementada.

Info

Políticas disponíveis:
• manual — você rotaciona quando quiser
• notify — alerta quando o segredo expira
• auto — planejada; ainda não implementada
Mutações de rotação/expiração exigem admin ou owner; consultas continuam disponíveis para membros do projeto.

post Rotacionar segredo

Rotaciona o valor de um segredo imediatamente. O valor anterior é mantido no histórico. Requer admin/owner.

ParâmetroTipoDescrição
valueobrigatóriostringNovo valor do segredo
bash
curl -X POST https://criptenv-api.77mdevseven.tech/api/v1/projects/{pid}/secrets/sec_abc123/rotate \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"value": "new-secret-value-here"}'

post Definir expiração

Configura a data de expiração e a política de rotação para um segredo. Requer admin/owner.

ParâmetroTipoDescrição
expires_atobrigatóriostringData de expiração (ISO 8601)
policyobrigatóriostringPolítica: manual ou notify; auto está planejada e não implementada
bash
curl -X POST https://criptenv-api.77mdevseven.tech/api/v1/projects/{pid}/secrets/sec_abc123/expiration \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "expires_at": "2025-03-01T00:00:00Z",
    "policy": "notify"
  }'

get Status da rotação

Consulta o status atual da rotação de um segredo, incluindo política, expiração e dias restantes.

bash
curl https://criptenv-api.77mdevseven.tech/api/v1/projects/{pid}/secrets/sec_abc123/rotation/status \
  -H "Authorization: Bearer {token}"

get Histórico de rotações

Retorna o histórico completo de rotações do segredo.

bash
curl https://criptenv-api.77mdevseven.tech/api/v1/projects/{pid}/secrets/sec_abc123/rotation/history \
  -H "Authorization: Bearer {token}"

delete Remover expiração

Remove a política de expiração e rotação de um segredo. Requer admin/owner.

bash
curl -X DELETE https://criptenv-api.77mdevseven.tech/api/v1/projects/{pid}/secrets/sec_abc123/expiration \
  -H "Authorization: Bearer {token}"

get Segredos expirando

Lista todos os segredos do projeto que estão próximos da expiração.

ParâmetroTipoDescrição
daysintegerDias até a expiração (padrão: 30)
bash
curl "https://criptenv-api.77mdevseven.tech/api/v1/projects/{pid}/secrets/expiring?days=30" \
  -H "Authorization: Bearer {token}"

Configurações de alertas do projeto

Owners e admins podem configurar alertas de expiração nos canais in-app, email e webhook. Developers e viewers não recebem esses alertas nem podem alterar as configurações.

get Consultar configurações

bash
curl https://criptenv-api.77mdevseven.tech/api/v1/projects/{pid}/alert-settings \
  -H "Authorization: Bearer {token}"

patch Atualizar configurações

Omitir um campo preserva seu valor. Envie webhook_url: nullexplicitamente para remover o webhook. O URL completo nunca retorna ao cliente e é cifrado em repouso.

bash
curl -X PATCH https://criptenv-api.77mdevseven.tech/api/v1/projects/{pid}/alert-settings \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "default_notify_days_before": 7,
    "channels": { "in_app": true, "email": true, "webhook": false }
  }'

post Testar webhook

Usa somente o webhook salvo e envia um evento sintético compayload_version: 1 e test: true. O teste não altera a expiração nem last_notified_at.

bash
curl -X POST https://criptenv-api.77mdevseven.tech/api/v1/projects/{pid}/alert-settings/test-webhook \
  -H "Authorization: Bearer {token}"

Info

Entrega e segurança: o owner e membros owner/admin aceitos são destinatários; email exige email_verified=true. Cada entrega tem identidade única, fencing token e até três tentativas compartilhadas. Falhas ficam elegíveis para retry; email e webhook são at-least-once após crashes e webhooks usam uma chave de idempotência estável. O payload contém apenas identificadores, nomes, expiração, dias restantes e link de ação: nunca plaintext, ciphertext, IV, tag, senha ou credenciais.

Por secret: notify_days_before explícito no secret vence o default do projeto. O default (7 dias) só é aplicado ao criar uma expiração sem esse campo; alterar o default não reescreve expirações existentes.