Reten Docs
Chaves de API

Atualizar Permissões da Chave de API

Substituir o conjunto de permissões de uma chave de API sem alterar o seu segredo.

PUT /api/api-keys/:id/permissions

Substitui o conjunto completo de permissões de uma chave de API pertencente ao usuário autenticado. A resposta tem o mesmo formato de um item de Listar Chaves de API — plaintextKey nunca é incluído. O segredo não muda: a mesma x-api-key autentica com o novo conjunto na próxima requisição. O novo conjunto deve ser um subconjunto das suas permissões vigentes, e api-key:manage não pode ser atribuída.

Auth: Necessária — permissão api-key:manage

Parâmetros de Rota

ParâmetroTipoDescrição
idstringUUID da chave de API a ser atualizada

Corpo da Requisição

CampoTipoObrigatórioDescrição
permissionsstring[]SimNova lista de nomes de permissões (mínimo de 1, sem repetições). Substitui o conjunto atual por completo

Exemplo

curl -X PUT https://api.reten.ai/api/api-keys/f47ac10b-58cc-4372-a567-0e02b2c3d479/permissions \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>" \
  -H "Content-Type: application/json" \
  -d '{
    "permissions": ["activity:view", "activity-result:submit"]
  }'
const keyId = "f47ac10b-58cc-4372-a567-0e02b2c3d479";
const response = await fetch(`https://api.reten.ai/api/api-keys/${keyId}/permissions`, {
  method: "PUT",
  headers: {
    "Authorization": "Bearer <token>",
    "x-tenant-id": "<tenant-id>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ permissions: ["activity:view", "activity-result:submit"] }),
});
const data = await response.json();
import requests

key_id = "f47ac10b-58cc-4372-a567-0e02b2c3d479"
response = requests.put(
    f"https://api.reten.ai/api/api-keys/{key_id}/permissions",
    headers={
        "Authorization": "Bearer <token>",
        "x-tenant-id": "<tenant-id>",
    },
    json={"permissions": ["activity:view", "activity-result:submit"]},
)
data = response.json()

Resposta 200 OK

{
  "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "name": "CI/CD Pipeline Key",
  "keyPrefix": "rtn_sk_a1b2c3d4",
  "userId": "550e8400-e29b-41d4-a716-446655440000",
  "tenantId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "projectId": "3f6c2b1a-8d4e-4f7a-9b2c-5e1d0a7f6c34",
  "isActive": true,
  "permissions": ["activity:view", "activity-result:submit"],
  "expiresAt": "2026-12-31T23:59:59.000Z",
  "lastUsedAt": "2026-02-26T16:45:00.000Z",
  "createdAt": "2026-02-26T14:30:00.000Z",
  "revokedAt": null
}

Respostas de Erro

StatusDescrição
400Erro de validação — array de permissões vazio, permissões repetidas, um nome de permissão fora do catálogo, ou um id que não é UUID
400A chave de API já foi revogada
400Nenhum contexto de tenant ativo
401Token de autenticação ausente ou inválido
403A chave de API não pertence ao usuário autenticado ou ao tenant — You do not own this API key
403O conjunto solicitado inclui uma permissão que você não possui atualmente — Cannot assign permissions you do not have: …
403O conjunto solicitado inclui api-key:manage — Cannot assign api-key:manage to an API key
404Chave de API não encontrada