Profile Server API
Endpoints

Document Types

CRUD de tipos de documento exigidos para organizações.

Tipos de documento (ex.: alvará, CNPJ, licença ambiental). Base path: /api/document-types · autenticação de usuário.

MétodoRotaScopeResourceSucesso
POST/api/document-typescreateresource:document-types201
GET/api/document-typesreadresource:document-types200
GET/api/document-types/:idreadresource:document-types_id200
PUT/api/document-types/:idupdateresource:document-types_id200
DELETE/api/document-types/:iddeleteresource:document-types_id204

Criar tipo de documento

POST /api/document-types

Corpo

CampoTipoObrigatórioRegras
namestringsimmín. 1, único
isRequiredbooleannãodefault false
descriptionstringnãonullable
requiresApprovalbooleannãodefault false
hasExpirationbooleannãodefault false
defaultValidityDaysnumbernãointeiro positivo ou null; deve ser null se hasExpiration=false
hasAuthenticityCodebooleannãodefault false
isActivebooleannãodefault true
curl -X POST http://localhost:3000/api/document-types \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Alvará de Funcionamento",
    "isRequired": true,
    "description": "Alvará municipal de funcionamento",
    "requiresApproval": true,
    "hasExpiration": true,
    "defaultValidityDays": 365,
    "hasAuthenticityCode": false,
    "isActive": true
  }'

201 Created

{
  "id": "a1b2c3d4-e5f6-4789-a123-456789abcdef",
  "name": "Alvará de Funcionamento",
  "isRequired": true,
  "description": "Alvará municipal de funcionamento",
  "requiresApproval": true,
  "hasExpiration": true,
  "defaultValidityDays": 365,
  "hasAuthenticityCode": false,
  "isActive": true,
  "createdAt": "2026-07-14T12:00:00.000Z",
  "updatedAt": "2026-07-14T12:00:00.000Z"
}

Erros

StatusQuando
409Já existe um tipo com o mesmo name
400hasExpiration=false com defaultValidityDays preenchido

Listar tipos de documento

GET /api/document-types

Query

CampoTipoObrigatórioRegras
pagenumbernãodefault 1, mín. 1
limitnumbernãodefault 20, máx. 100
namestringnãofiltro parcial (case-insensitive)
isActivebooleannãotrue / false
isRequiredbooleannãotrue / false
curl "http://localhost:3000/api/document-types?page=1&limit=20&isActive=true" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

200 OK

{
  "data": [
    {
      "id": "a1b2c3d4-e5f6-4789-a123-456789abcdef",
      "name": "Alvará de Funcionamento",
      "isRequired": true,
      "description": "Alvará municipal de funcionamento",
      "requiresApproval": true,
      "hasExpiration": true,
      "defaultValidityDays": 365,
      "hasAuthenticityCode": false,
      "isActive": true,
      "createdAt": "2026-07-14T12:00:00.000Z",
      "updatedAt": "2026-07-14T12:00:00.000Z"
    }
  ],
  "total": 1,
  "totalPages": 1,
  "currentPage": 1
}

Obter tipo de documento por id

GET /api/document-types/:id404 se não existir.

curl http://localhost:3000/api/document-types/a1b2c3d4-e5f6-4789-a123-456789abcdef \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Editar tipo de documento

PUT /api/document-types/:id — mesmos campos do create, todos opcionais.

Ao definir hasExpiration=false, defaultValidityDays é forçado para null. Se hasExpiration permanecer false e defaultValidityDays for enviado com valor, retorna 400. Nome duplicado retorna 409. Não encontrado retorna 404.

curl -X PUT http://localhost:3000/api/document-types/a1b2c3d4-e5f6-4789-a123-456789abcdef \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Alvará Atualizado", "isActive": false }'

Remover tipo de documento

DELETE /api/document-types/:id — retorna 204 No Content. 404 se não existir.

curl -X DELETE http://localhost:3000/api/document-types/a1b2c3d4-e5f6-4789-a123-456789abcdef \
  -H "Authorization: Bearer $ACCESS_TOKEN"