Membros
O sistema de membros controla quem tem acesso a cada projeto e com qual nível de permissão. Cada membro é associado a um projeto com um papel específico que determina suas capacidades.
Papéis (Roles)
| Papel | Permissões |
|---|---|
admin | Acesso total: gerenciar projeto, ambientes, membros, push/pull de segredos, re-key do vault |
developer | Push/pull de segredos, criar e editar ambientes. Sem acesso a gerenciamento de membros |
viewer | Apenas leitura: listar projetos, ambientes e nomes de segredos (sem valores) |
text
https://api.criptenv.dev/v1/projects/{project_id}/membersPOST Convidar Membro
Envia um convite para um usuário participar do projeto. Se o usuário ainda não possui conta no CriptEnv, ele receberá um email de convite. Requer papel de admin.
text
POST /v1/projects/{project_id}/members| Parâmetro | Tipo | Descrição |
|---|---|---|
project_idobrigatório | string | ID do projeto (path parameter) |
emailobrigatório | string | Email do usuário a ser convidado |
roleobrigatório | string | Papel do membro: admin, developer ou viewer |
Exemplo — Convidar membro
curl -X POST "https://api.criptenv.dev/v1/projects/proj_k8j2m4n6/members" \
-H "Authorization: Bearer cek_a1b2c3d4e5f6" \
-H "Content-Type: application/json" \
-d '{
"email": "maria@exemplo.com",
"role": "developer"
}'201Created
json
{
"data": {
"id": "mbr_r3s5t7u9",
"project_id": "proj_k8j2m4n6",
"user": {
"id": "usr_d4e5f6g7",
"email": "maria@exemplo.com",
"name": "Maria Santos"
},
"role": "developer",
"status": "pending",
"invited_at": "2025-01-20T14:30:00Z",
"invited_by": "usr_a1b2c3d4"
}
}409Conflict
json
{
"error": {
"code": "already_member",
"message": "Este usuário já é membro do projeto."
}
}Info
Quando o papel é
admin ou developer, o membro precisa da senha mestra do projeto (compartilhada criptograficamente) para acessar os segredos. O papel viewer não necessita da senha, pois só vê metadados.GET Listar Membros
Retorna todos os membros de um projeto, incluindo seus papéis e status.
text
GET /v1/projects/{project_id}/members| Parâmetro | Tipo | Descrição |
|---|---|---|
project_idobrigatório | string | ID do projeto (path parameter) |
page | integer | Número da páginaPadrão: 1 |
per_page | integer | Itens por páginaPadrão: 20 |
role | string | Filtrar por papel: admin, developer ou viewer |
status | string | Filtrar por status: active, pending ou revoked |
Exemplo — Listar membros
curl -X GET "https://api.criptenv.dev/v1/projects/proj_k8j2m4n6/members" \
-H "Authorization: Bearer cek_a1b2c3d4e5f6"200OK
json
{
"data": [
{
"id": "mbr_a1b2c3d4",
"user": {
"id": "usr_a1b2c3d4",
"email": "joao@exemplo.com",
"name": "João Silva"
},
"role": "admin",
"status": "active",
"joined_at": "2025-01-10T08:00:00Z"
},
{
"id": "mbr_r3s5t7u9",
"user": {
"id": "usr_d4e5f6g7",
"email": "maria@exemplo.com",
"name": "Maria Santos"
},
"role": "developer",
"status": "pending",
"invited_at": "2025-01-20T14:30:00Z"
}
],
"pagination": {
"page": 1,
"per_page": 20,
"total": 2,
"total_pages": 1
}
}PATCH Atualizar Papel do Membro
Altera o papel de um membro existente. Requer papel de admin. O último admin do projeto não pode ter seu papel rebaixado.
text
PATCH /v1/projects/{project_id}/members/{member_id}| Parâmetro | Tipo | Descrição |
|---|---|---|
project_idobrigatório | string | ID do projeto (path parameter) |
member_idobrigatório | string | ID do membro (path parameter) |
roleobrigatório | string | Novo papel: admin, developer ou viewer |
Exemplo — Promover membro para admin
curl -X PATCH "https://api.criptenv.dev/v1/projects/proj_k8j2m4n6/members/mbr_r3s5t7u9" \
-H "Authorization: Bearer cek_a1b2c3d4e5f6" \
-H "Content-Type: application/json" \
-d '{
"role": "admin"
}'200OK
json
{
"data": {
"id": "mbr_r3s5t7u9",
"project_id": "proj_k8j2m4n6",
"user": {
"id": "usr_d4e5f6g7",
"email": "maria@exemplo.com",
"name": "Maria Santos"
},
"role": "admin",
"status": "active",
"updated_at": "2025-01-20T15:00:00Z"
}
}Info
Ao promover um membro para
admin, ele terá acesso a gerenciar outros membros e re-criptografar o vault. Certifique-se de que essa pessoa é de confiança.DELETE Remover Membro
Remove um membro do projeto. Requer papel de admin. Após remover um membro, considere executar um re-key no vault para garantir forward secrecy.
text
DELETE /v1/projects/{project_id}/members/{member_id}| Parâmetro | Tipo | Descrição |
|---|---|---|
project_idobrigatório | string | ID do projeto (path parameter) |
member_idobrigatório | string | ID do membro a ser removido (path parameter) |
Exemplo — Remover membro
curl -X DELETE "https://api.criptenv.dev/v1/projects/proj_k8j2m4n6/members/mbr_r3s5t7u9" \
-H "Authorization: Bearer cek_a1b2c3d4e5f6"204No Content
Resposta vazia — o membro foi removido do projeto.
Info
Após remover um membro que tinha acesso aos segredos (admin ou developer), execute
POST /v1/projects/{id}/vault/re-key para re-criptografar todos os segredos com uma nova chave. Isso garante que o membro removido não possa mais acessar os dados, mesmo que tenha copiado a chave anteriormente.Fluxo Completo de Onboarding
1. Convidar → 2. Aceitar → 3. Compartilhar chave
# 1. Admin convida o novo membro
curl -X POST "https://api.criptenv.dev/v1/projects/proj_k8j2m4n6/members" \
-H "Authorization: Bearer cek_admin_key" \
-H "Content-Type: application/json" \
-d '{"email": "dev@exemplo.com", "role": "developer"}'
# 2. Novo membro aceita o convite (via dashboard ou API)
# O status muda de "pending" para "active"
# 3. Admin compartilha a chave mestra do projeto (criptografada com a chave pública do novo membro)
# Isso permite que o novo membro descriptografe os segredos