Endpoints
Tenants
CRUD de tenants — instâncias de um App para um Customer.
Instância de um App para um Customer. Base path: /api/tenants ·
autenticação de usuário.
| Método | Rota | Scope | Resource | Sucesso |
|---|---|---|---|---|
POST | /api/tenants | create | resource:tenants | 201 |
GET | /api/tenants | read | resource:tenants | 200 |
GET | /api/tenants/:id | read | resource:tenants_id | 200 |
PUT | /api/tenants/:id | update | resource:tenants_id | 200 |
DELETE | /api/tenants/:id | delete | resource:tenants_id | 204 |
Criar tenant
POST /api/tenants — vincula um tenant a um customer e a um app.
Corpo
| Campo | Tipo | Obrigatório | Regras |
|---|---|---|---|
customerId | uuid | sim | Customer existente (404 se não existir) |
appId | uuid | sim | App existente (404 se não existir) |
name | string | sim | mín. 1 caractere |
active | boolean | não | padrão true |
metadata | object | não | mapa livre; pode ser null |
keycloakClientId | string | não | client Keycloak; pode ser null |
allowedScopes | string[] | não | escopos app-to-app; ou null |
curl -X POST http://localhost:3000/api/tenants \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"customerId": "c1b2c3d4-e5f6-4789-a123-456789abcdef",
"appId": "a1b2c3d4-e5f6-4789-a123-456789abcdef",
"name": "Tenant Exemplo",
"active": true,
"allowedScopes": ["cooperatives:read"]
}'201 Created
{
"id": "t1b2c3d4-e5f6-4789-a123-456789abcdef",
"customerId": "c1b2c3d4-e5f6-4789-a123-456789abcdef",
"appId": "a1b2c3d4-e5f6-4789-a123-456789abcdef",
"name": "Tenant Exemplo",
"active": true,
"metadata": null,
"allowedScopes": ["cooperatives:read"]
}O keycloakClientId conecta o tenant ao fluxo de
autenticação app-to-app:
o azp do token de serviço é resolvido para o tenant por esse campo.
404 Not Found — o customerId ou o appId informado não existe. O use case
valida ambas as referências antes de criar o tenant.
Listar tenants
GET /api/tenants — lista paginada (page, limit).
Obter tenant por id
GET /api/tenants/:id — 404 se não existir.
Editar tenant
PUT /api/tenants/:id — atualização parcial.
| Campo | Tipo | Regras |
|---|---|---|
name | string | mín. 1 caractere |
active | boolean | |
metadata | object | ou null |
keycloakClientId | string | ou null |
allowedScopes | string[] | ou null |
Retorna 200; 404 se não existir.
Remover tenant
DELETE /api/tenants/:id — retorna 204 No Content.