Pular para o conteúdo principal

Organizações

Gerenciamento de organizações (tenants) na Catalisa Platform.

Endpoints

MétodoEndpointDescriçãoPermissão
POST/api/v1/organizationsCriar organizaçãoIAM_ORGANIZATIONS_CREATE
GET/api/v1/organizationsListar organizaçõesIAM_ORGANIZATIONS_READ
GET/api/v1/organizations/:idObter organizaçãoIAM_ORGANIZATIONS_READ
PATCH/api/v1/organizations/:idAtualizar organizaçãoIAM_ORGANIZATIONS_UPDATE
DELETE/api/v1/organizations/:idExcluir organizaçãoIAM_ORGANIZATIONS_DELETE
POST/api/v1/organizations/:id/client-secretDefinir client secretIAM_ORGANIZATIONS_UPDATE

Tipos de Organização

TipoValorDescrição
ClienteclienteOrganização cliente final
ParceiroparceiroOrganização parceira
DonodonoOrganização proprietária da plataforma

Status de Organização

StatusValorDescrição
AtivoativoOrganização ativa e operacional
InativoinativoOrganização desativada
SuspensósuspensoOrganização temporariamente suspensa

Criar Organização

POST /api/v1/organizations

Cria uma nova organização no sistema.

Request

CampoTipoObrigatórioDescrição
namestringSimNome da organização
slugstringNãoSlug único (gerado automaticamente se não informado)
typestringSimTipo: cliente, parceiro ou dono
statusstringNãoStatus inicial (default: ativo)
metadataobjectNãoMetadados adicionais
curl -X POST 'https://iam.stg.catalisa.app/api/v1/organizations' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "Empresa ABC",
"slug": "empresa-abc",
"type": "cliente",
"metadata": {
"cnpj": "12.345.678/0001-90",
"segment": "fintech"
}
}'

Response (201 Created)

{
"data": {
"type": "organizations",
"id": "550e8400-e29b-41d4-a716-446655440000",
"attributes": {
"name": "Empresa ABC",
"slug": "empresa-abc",
"type": "cliente",
"status": "ativo",
"hasClientSecret": false,
"metadata": {
"cnpj": "12.345.678/0001-90",
"segment": "fintech"
},
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:30:00Z"
},
"links": {
"self": "/api/v1/organizations/550e8400-e29b-41d4-a716-446655440000"
}
}
}

Listar Organizações

GET /api/v1/organizations

Lista organizacoes com suporte a paginação e filtros.

Query Parameters

ParâmetroTipoDescrição
page[number]integerNúmero da página
page[size]integerItens por página
filter[type]stringFiltrar por tipo
filter[status]stringFiltrar por status
filter[name]stringFiltrar por nome (parcial)
curl 'https://iam.stg.catalisa.app/api/v1/organizations?filter[type]=cliente&filter[status]=ativo' \
-H 'Authorization: Bearer SEU_TOKEN'

Response (200 OK)

{
"data": [
{
"type": "organizations",
"id": "550e8400-e29b-41d4-a716-446655440000",
"attributes": {
"name": "Empresa ABC",
"slug": "empresa-abc",
"type": "cliente",
"status": "ativo",
"hasClientSecret": true
}
}
],
"meta": {
"totalItems": 25,
"totalPages": 2,
"currentPage": 1
}
}

Obter Organização

GET /api/v1/organizations/:organizationId

Obtém detalhes de uma organização específica.

curl 'https://iam.stg.catalisa.app/api/v1/organizations/550e8400-e29b-41d4-a716-446655440000' \
-H 'Authorization: Bearer SEU_TOKEN'

Response (200 OK)

{
"data": {
"type": "organizations",
"id": "550e8400-e29b-41d4-a716-446655440000",
"attributes": {
"name": "Empresa ABC",
"slug": "empresa-abc",
"type": "cliente",
"status": "ativo",
"hasClientSecret": true,
"metadata": {
"cnpj": "12.345.678/0001-90"
},
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:30:00Z"
},
"links": {
"self": "/api/v1/organizations/550e8400-e29b-41d4-a716-446655440000"
}
}
}

Atualizar Organização

PATCH /api/v1/organizations/:organizationId

Atualiza dados de uma organização.

Request

CampoTipoObrigatórioDescrição
namestringNãoNovo nome
typestringNãoNovo tipo
statusstringNãoNovo status
metadataobjectNãoNovos metadados
curl -X PATCH 'https://iam.stg.catalisa.app/api/v1/organizations/550e8400-e29b-41d4-a716-446655440000' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "Empresa ABC Ltda",
"status": "suspenso"
}'

Response (200 OK)

{
"data": {
"type": "organizations",
"id": "550e8400-e29b-41d4-a716-446655440000",
"attributes": {
"name": "Empresa ABC Ltda",
"slug": "empresa-abc",
"type": "cliente",
"status": "suspenso",
"updatedAt": "2024-01-15T11:00:00Z"
}
}
}

Excluir Organização

DELETE /api/v1/organizations/:organizationId

Remove uma organização do sistema.

Atenção

Esta operação é irreversível. Todos os dados associados a organização serão removidos.

curl -X DELETE 'https://iam.stg.catalisa.app/api/v1/organizations/550e8400-e29b-41d4-a716-446655440000' \
-H 'Authorization: Bearer SEU_TOKEN'

Response (204 No Content)

Sem corpo de resposta.


Definir Client Secret

POST /api/v1/organizations/:organizationId/client-secret

Define o client secret para autenticação via OAuth Client Credentials.

Importante
  • O client secret só pode ser definido uma vez
  • Apos definido, não pode ser recuperado
  • Guarde o secret em local seguro imediatamente

Request

CampoTipoObrigatórioDescrição
clientSecretstringSimSecret a ser definido (mínimo 32 caracteres)
curl -X POST 'https://iam.stg.catalisa.app/api/v1/organizations/550e8400-e29b-41d4-a716-446655440000/client-secret' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"clientSecret": "minha-chave-secreta-muito-segura-123456"
}'

Response (200 OK)

{
"success": true,
"message": "Client secret set successfully"
}

Erros Comuns

CódigoErroDescrição
400VALIDATIONCampos obrigatórios ausentes ou inválidos
404NOT_FOUNDOrganização não encontrada
409CONFLICTSlug já existe
409CONFLICTClient secret já definido