Projetos
Projetos são a unidade organizacional principal do CriptEnv. Cada projeto contém ambientes e segredos, e pode ter múltiplos membros com diferentes papéis.
https://api.criptenv.dev/v1/projectsPOST Criar Projeto
Cria um novo projeto. O usuário autenticado torna-se automaticamente o proprietário (admin) do projeto.
POST /v1/projectsParâmetros do Body
| Parâmetro | Tipo | Descrição |
|---|---|---|
nameobrigatório | string | Nome do projeto (3-64 caracteres, slug-friendly) |
description | string | Descrição opcional do projeto (máx: 256 caracteres) |
encryption | string | Algoritmo de criptografia. Opções: aes-256-gcmPadrão: aes-256-gcm |
curl -X POST "https://api.criptenv.dev/v1/projects" \
-H "Authorization: Bearer cek_a1b2c3d4e5f6" \
-H "Content-Type: application/json" \
-d '{
"name": "meu-app",
"description": "Backend do aplicativo principal"
}'{
"data": {
"id": "proj_k8j2m4n6",
"name": "meu-app",
"description": "Backend do aplicativo principal",
"encryption": "aes-256-gcm",
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-15T10:30:00Z",
"owner_id": "usr_a1b2c3d4"
}
}GET Listar Projetos
Retorna todos os projetos dos quais o usuário autenticado é membro. Suporta paginação e filtros.
GET /v1/projectsQuery Parameters
| Parâmetro | Tipo | Descrição |
|---|---|---|
page | integer | Número da páginaPadrão: 1 |
per_page | integer | Itens por página (máx: 100)Padrão: 20 |
search | string | Busca por nome do projeto |
curl -X GET "https://api.criptenv.dev/v1/projects?page=1&per_page=10" \
-H "Authorization: Bearer cek_a1b2c3d4e5f6"{
"data": [
{
"id": "proj_k8j2m4n6",
"name": "meu-app",
"description": "Backend do aplicativo principal",
"created_at": "2025-01-15T10:30:00Z",
"member_count": 3,
"environment_count": 2
},
{
"id": "proj_m2n4p6q8",
"name": "frontend-app",
"description": "Aplicação React",
"created_at": "2025-01-10T08:00:00Z",
"member_count": 5,
"environment_count": 3
}
],
"pagination": {
"page": 1,
"per_page": 10,
"total": 2,
"total_pages": 1
}
}GET Obter Projeto por ID
Retorna os detalhes completos de um projeto específico, incluindo metadados de ambientes e contagem de segredos.
GET /v1/projects/{project_id}Path Parameters
| Parâmetro | Tipo | Descrição |
|---|---|---|
project_idobrigatório | string | ID do projeto (ex: proj_k8j2m4n6) |
curl -X GET "https://api.criptenv.dev/v1/projects/proj_k8j2m4n6" \
-H "Authorization: Bearer cek_a1b2c3d4e5f6"{
"data": {
"id": "proj_k8j2m4n6",
"name": "meu-app",
"description": "Backend do aplicativo principal",
"encryption": "aes-256-gcm",
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-15T10:30:00Z",
"owner_id": "usr_a1b2c3d4",
"member_count": 3,
"environments": [
{ "id": "env_a1b2c3", "name": "production", "secret_count": 12 },
{ "id": "env_d4e5f6", "name": "staging", "secret_count": 10 }
]
}
}{
"error": {
"code": "not_found",
"message": "Projeto não encontrado."
}
}PATCH Atualizar Projeto
Atualiza os metadados de um projeto. Requer papel de admin no projeto.
PATCH /v1/projects/{project_id}Parâmetros do Body
| Parâmetro | Tipo | Descrição |
|---|---|---|
name | string | Novo nome do projeto |
description | string | Nova descrição do projeto |
curl -X PATCH "https://api.criptenv.dev/v1/projects/proj_k8j2m4n6" \
-H "Authorization: Bearer cek_a1b2c3d4e5f6" \
-H "Content-Type: application/json" \
-d '{
"name": "meu-app-v2",
"description": "Backend refatorado v2"
}'{
"data": {
"id": "proj_k8j2m4n6",
"name": "meu-app-v2",
"description": "Backend refatorado v2",
"encryption": "aes-256-gcm",
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-20T14:22:00Z",
"owner_id": "usr_a1b2c3d4"
}
}DELETE Deletar Projeto
Remove permanentemente o projeto, todos os seus ambientes, segredos e associações de membros. Esta ação é irreversível.
DELETE /v1/projects/{project_id}Info
curl -X DELETE "https://api.criptenv.dev/v1/projects/proj_k8j2m4n6" \
-H "Authorization: Bearer cek_a1b2c3d4e5f6"Resposta vazia — o projeto foi removido com sucesso.
POST Re-encrypt Vault
Re-criptografa todos os segredos do projeto com uma nova chave mestra. Esta operação é necessária quando um membro é removido do projeto para garantir que ele não possa mais acessar os segredos (forward secrecy).
POST /v1/projects/{project_id}/vault/rekey| Parâmetro | Tipo | Descrição |
|---|---|---|
new_key_idobrigatório | string | ID da nova chave de criptografia gerada no cliente |
reencrypted_secretsobrigatório | object[] | Array de segredos re-criptografados com a nova chave |
curl -X POST "https://api.criptenv.dev/v1/projects/proj_k8j2m4n6/vault/rekey" \
-H "Authorization: Bearer cek_a1b2c3d4e5f6" \
-H "Content-Type: application/json" \
-d '{
"new_key_id": "key_new123abc",
"reencrypted_secrets": [
{
"env_id": "env_a1b2c3",
"secrets": [
{
"name": "DATABASE_URL",
"ciphertext": "base64_novo_ciphertext",
"nonce": "base64_nonce",
"tag": "base64_tag"
}
]
}
]
}'{
"data": {
"project_id": "proj_k8j2m4n6",
"reencrypted_count": 25,
"environments_processed": 3,
"new_key_id": "key_new123abc",
"completed_at": "2025-01-20T14:30:00Z"
}
}