Saltar al contenido principal

APIs

Uma API é o que você publica: um nome, um endereço, uma política de autenticação e um conjunto de rotas e backends. Tudo o mais no produto pertence a uma API.

Campos​

CampoRegra
name1 a 120 caracteres. Renomear não muda o identificador nem o endereço
slugderivado do nome na criação; único dentro da organização; formato ^[a-z0-9]([a-z0-9-]{0,38}[a-z0-9])?$
descriptionaté 1000 caracteres; "" limpa, campo ausente mantém
default_hostname<slug>-<6 caracteres base32>.<sufixo do produto>; fixado na criação; único no produto inteiro
lifecycleACTIVE, DISABLED ou ARCHIVED
publish_stateestado de publicação (ver Visão geral da API)
auth_modePUBLIC, API_KEY (padrão na criação) ou JWT_OIDC
draft_versioncontador que muda a cada alteração de rota, backend ou política

Ciclo de vida​

lifecycleSignificado
ACTIVEoperação normal
DISABLEDfora do ar: a desativação remove a API do runtime e confirma a ausência em todas as máquinas. Reativar reaplica a revisão publicada
ARCHIVEDvalor reservado no contrato (aparece também como filtro de listagem). Não há operação hoje que leve uma API a ARCHIVED — desativar leva a DISABLED

Desativar não apaga nada: a revisão continua lá, e reativar é a mesma revisão voltando ao ar.

Excluir​

Uma API ativa ou publicada não pode ser excluída: a resposta é 409 api_published. Desative antes.

A exclusão é lógica (deleted_at), e depois dela o nome e o identificador ficam livres na organização.

Alterações não publicadas​

O produto compara o digest da configuração atual com o da revisão ativa. Se forem diferentes, has_unpublished_changes é true.

Mexer numa rota, num backend ou numa política não altera o comportamento da API em produção: só a publicação altera. Três exceções conscientes, que aplicam direto:

  • consumidores, chaves e autorizações;
  • endereços ativos e certificados;
  • estado da organização (suspensa ou não).

Concorrência: duas pessoas editando​

Cada leitura devolve um ETag com o draft_version. Ao alterar, envie If-Match com o valor lido; se outra pessoa alterou no meio, a resposta é 412 precondition_failed e você recarrega. Sem If-Match, a alteração é aplicada (última escrita vence) — use o cabeçalho em automação.

Limites​

LimiteValor
Nome120 caracteres
Descrição1000 caracteres
Identificador (slug)40 caracteres
Tamanho do corpo administrativo1 MiB (acima: 413 payload_too_large)
Rotas por APInão há limite declarado no contrato
Operações simultâneas por API1

Criar uma API​

curl -sS -X POST "$BASE/v1/apis" \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: criar-api-pedidos-01' \
-d '{"name":"Pedidos","description":"API de pedidos do ERP"}'

Resposta 201 (resumida):

{
"id": "0192f3a4-5b6c-7d8e-9f01-23456789abcd",
"name": "Pedidos",
"slug": "pedidos",
"default_hostname": "pedidos-7hq2ab.gw.nnumbers.com.br",
"lifecycle": "ACTIVE",
"publish_state": "DRAFT",
"auth_mode": "API_KEY",
"draft_version": 1
}

O Location traz o endereço do recurso e o ETag o draft_version ("1").

Use Idempotency-Key nas operações de escrita: repetir a chamada com a mesma chave devolve a mesma resposta, sem criar outro recurso. Chave repetida com corpo diferente é 422 idempotency_key_reused.

Próximos passos​