Pular para o conteúdo principal

Guia de integração — Configurações CRM

Introdução​

Este guia descreve a integração com a API unificada crm-config, que expõe operações CRUD sobre três tabelas de configuração CRM:

Valor (configType)Nome
0Categorias
1Estados
2Prioridades

Cada entrada é um registo simples com id (inteiro, atribuído na criação) e name (descrição textual). O mesmo contrato JSON aplica-se aos três tipos; apenas o segmento {configType} na rota determina qual tabela é acedida.

O endpoint suporta listagens paginadas e operações CRUD completas para integradores externos.


Valores aceites em {configType}​

O parâmetro de rota configType identifica a tabela de configuração. São aceites, entre outros:

FormatoExemplosNotas
Numérico (recomendado)0, 1, 2Formato preferido para integração.
Slug descritivocategory-table, state, priorityAlternativa legível na URL.

Recomendação: usar 0, 1 ou 2 nas chamadas HTTP.


Endpoints disponíveis​

Prefixo público: /gateway/crm-config/{configType}.

MétodoURLDescrição resumida
GET/gateway/crm-config/{configType}Lista entradas com paginação opcional (page, pageSize).
GET/gateway/crm-config/{configType}/{id}Obtém uma entrada por identificador.
POST/gateway/crm-config/{configType}Cria uma entrada; resposta 201 Created com o registo criado.
PUT/gateway/crm-config/{configType}Actualiza uma entrada existente; resposta 204 No Content.
DELETE/gateway/crm-config/{configType}/{id}Elimina por id; resposta 204 No Content.

Listar entradas​

URL: /gateway/crm-config/{configType} — Método: GET

Parâmetros de consulta (opcionais):

ParâmetroTipoDescrição
pageintNúmero da página (base 1). Se omitido, usa-se página 1.
pageSizeintRegistos por página. Se omitido, usa-se 20; o máximo é 100.

Resposta (200 OK): corpo paginado — ver Estrutura da listagem paginada.

Ver mais →

Obter por identificador​

URL: /gateway/crm-config/{configType}/{id} — Método: GET

Parâmetro de rota: id (int) — identificador da entrada.

Resposta (200 OK): objecto com id e name.

Ver mais →

Criar entrada​

URL: /gateway/crm-config/{configType} — Método: POST

Corpo: JSON com a propriedade name.

Resposta (201 Created): corpo com o registo criado (id preenchido pelo servidor).

Ver mais →

Actualizar entrada​

URL: /gateway/crm-config/{configType} — Método: PUT

Corpo: JSON com id e name.

Resposta (204 No Content) em sucesso.

Ver mais →

Eliminar entrada​

URL: /gateway/crm-config/{configType}/{id} — Método: DELETE

Resposta (204 No Content) em sucesso.

Ver mais →


Estrutura da listagem paginada​

A resposta de GET /gateway/crm-config/{configType} inclui metadados de paginação e a coleção de registos:

CampoTipoDescrição
totalCountintTotal de registos na tabela (todas as páginas).
pageSizeintTamanho efectivo da página devolvida.
currentPageintPágina actual (base 1).
totalPagesintTotal de páginas.
dataarrayEntradas da página pedida.

Cada elemento de data:

CampoTipoDescrição
idintIdentificador da entrada.
namestringDescrição.

Exemplo de resposta (GET)​

{
"totalCount": 1,
"pageSize": 50,
"currentPage": 1,
"totalPages": 1,
"data": [
{
"id": 1,
"name": "movo"
}
]
}

Para percorrer todas as entradas, incremente page até currentPage atingir totalPages, ou pare quando data estiver vazio.


Estrutura do corpo do pedido​

Criação (POST)​

CampoTipoObrigatórioDescrição
namestringSimDescrição da entrada.

Actualização (PUT)​

CampoTipoObrigatórioDescrição
idintSimIdentificador existente.
namestringSimNova descrição.

Limites de name por tipo​

configTypeComprimento máximo de name
0 (Categorias)4000 caracteres
1 (Estados)40 caracteres
2 (Prioridades)40 caracteres

Exceder o limite devolve o erro CrmConfig.NameMaxLengthExceeded.


Exemplos de pedidos​

Listar categorias (primeira página, 50 registos)​

GET /gateway/crm-config/0?page=1&pageSize=50

Equivalente com slug:

GET /gateway/crm-config/category-table?page=1&pageSize=50

Criar estado​

POST /gateway/crm-config/1
Content-Type: application/json

{
"name": "Em curso"
}

Actualizar prioridade​

PUT /gateway/crm-config/2
Content-Type: application/json

{
"id": 3,
"name": "Alta"
}

Eliminar categoria​

DELETE /gateway/crm-config/0/12

Erros frequentes​

CódigoTipo HTTP típicoSignificado e acção sugerida
CrmConfig.InvalidConfigType400{configType} inválido ou não reconhecido. Use 0, 1, 2 ou slugs documentados.
CrmConfig.NameMaxLengthExceeded400name excede o máximo do tipo (4000 / 40 / 40).
CrmConfig.NotFound404id inexistente em GET, PUT ou DELETE.
CrmConfigCreate.Fail409 / falhaFalha ao persistir na criação.
CrmConfigUpdate.Fail409 / falhaFalha ao persistir na actualização.
CrmConfigDelete.Fail409 / falhaFalha ao eliminar (ex.: dependências ou erro de armazenamento).

As respostas de erro seguem o padrão HTTP da API (Problem Details).


Notas de integração​

  • Use Content-Type: application/json e propriedades em camelCase no corpo.
  • Para listagens longas, envie page e pageSize explícitos — o servidor não expõe filtro de texto na listagem.
  • Teste os três tipos (0, 1, 2) em staging: os limites de name diferem entre categorias e estados/prioridades.
  • O identificador id é gerado na criação; não envie id no POST.

Conclusão​

A configuração CRM expõe um CRUD unificado sobre /gateway/crm-config/{configType} para categorias, estados e prioridades, com listagem paginada (totalCount, pageSize, currentPage, totalPages, data). Recomenda-se usar 0, 1 e 2 como configType nas integrações.


Última actualização: 2 de Junho de 2026