Skip to content

Contratos — Endpoints

Base URL: /api/contracts

Permissões: Admin, Broker, Financial


GET /api/contracts

Lista contratos da empresa.

Query params:

ParâmetroTipoDescrição
pageintegerPágina (padrão: 1)
pageSizeintegerItens por página
searchstringBusca por imóvel ou cliente
statusstringActive, Renewed, Terminated, Cancelled
typestringLease, Sale, Management
expiringDaysintegerContratos que vencem nos próximos N dias

Resposta 200:

json
{
  "data": [
    {
      "id": "d1e2f3a4-...",
      "type": "Lease",
      "status": "Active",
      "value": 2800.00,
      "startDate": "2026-06-01",
      "endDate": "2027-06-01",
      "dueDay": 5,
      "indexer": "IGPM",
      "property": {
        "id": "3fa85f64-...",
        "code": "AP-001"
      },
      "client": {
        "id": "a1b2c3d4-...",
        "name": "João da Silva"
      },
      "broker": {
        "id": "b1c2d3e4-...",
        "name": "Paulo Corretor"
      },
      "createdAt": "2026-05-20T10:00:00Z"
    }
  ],
  "page": 1,
  "pageSize": 20,
  "total": 23,
  "totalPages": 2,
  "hasNext": true,
  "hasPrevious": false
}

GET /api/contracts/:id

Retorna detalhes completos de um contrato.

Resposta 200:

json
{
  "id": "d1e2f3a4-...",
  "type": "Lease",
  "status": "Active",
  "value": 2800.00,
  "startDate": "2026-06-01",
  "endDate": "2027-06-01",
  "dueDay": 5,
  "indexer": "IGPM",
  "indexerPercentage": null,
  "documentUrl": "https://storage.googleapis.com/.../contrato.pdf",
  "property": { ... },
  "client": { ... },
  "broker": { ... },
  "proposalId": "c1d2e3f4-...",
  "payments": [
    {
      "id": "e1f2a3b4-...",
      "period": "2026-06",
      "value": 2800.00,
      "status": "Paid",
      "dueDate": "2026-06-05"
    }
  ],
  "createdAt": "2026-05-20T10:00:00Z"
}

POST /api/contracts

Cria um novo contrato manualmente (sem passar por proposta).

Body:

json
{
  "type": "Lease",
  "propertyId": "3fa85f64-...",
  "clientId": "a1b2c3d4-...",
  "brokerId": "b1c2d3e4-...",
  "proposalId": null,
  "value": 2800.00,
  "startDate": "2026-06-01",
  "endDate": "2027-06-01",
  "dueDay": 5,
  "indexer": "IGPM",
  "indexerPercentage": null,
  "documentUrl": "https://storage.googleapis.com/.../contrato.pdf"
}
CampoTipoObrigatório
typestringSim
propertyIdguidSim
clientIdguidSim
valuedecimalSim
startDatedateSim
endDatedateSim
dueDayintegerSim (1–28)
indexerstringSim: IGPM, IPCA, Fixed
indexerPercentagedecimalSim se indexer = Fixed

Resposta 201: Contrato criado com status Active.


PUT /api/contracts/:id

Atualiza dados de um contrato.


PATCH /api/contracts/:id/status

Altera o status do contrato.

Body:

json
{
  "status": "Terminated",
  "reason": "Encerramento por término do prazo."
}

Transições válidas:

DePara
ActiveTerminated, Cancelled
ActiveRenewed

Efeitos do encerramento:

  • Status do imóvel → Available
  • Registro no histórico de status do imóvel

POST /api/contracts/:id/renew

Renova um contrato ativo.

Body:

json
{
  "newEndDate": "2028-06-01",
  "newValue": 3100.00,
  "indexer": "IGPM"
}

Resposta 200: Contrato com novo período ativo.


DELETE /api/contracts/:id

Remove contrato (soft delete).

Permissões: Admin

Erros:

  • 400 — Contrato possui pagamentos vinculados

Documentação do FastGivr SystemImob