Skip to content

Propostas — Endpoints

Base URL: /api/proposals

Permissões: Admin, Broker (próprias)


GET /api/proposals

Lista propostas da empresa (funil de vendas).

Query params:

ParâmetroTipoDescrição
pageintegerPágina (padrão: 1)
pageSizeintegerItens por página (padrão: 20)
searchstringBusca por imóvel ou cliente
statusstringUnderReview, Negotiating, Approved, Rejected
typestringLease, Sale
brokerIdguidFiltrar por corretor

Resposta 200:

json
{
  "data": [
    {
      "id": "c1d2e3f4-...",
      "type": "Lease",
      "status": "UnderReview",
      "proposedValue": 2800.00,
      "validUntil": "2026-06-01T00:00:00Z",
      "property": {
        "id": "3fa85f64-...",
        "code": "AP-001",
        "address": "Rua das Flores, 123 - Centro"
      },
      "client": {
        "id": "a1b2c3d4-...",
        "name": "João da Silva"
      },
      "broker": {
        "id": "b1c2d3e4-...",
        "name": "Paulo Corretor"
      },
      "createdAt": "2026-05-15T09:00:00Z"
    }
  ],
  "page": 1,
  "pageSize": 20,
  "total": 15,
  "totalPages": 1,
  "hasNext": false,
  "hasPrevious": false
}

GET /api/proposals/:id

Retorna detalhes completos de uma proposta.

Resposta 200:

json
{
  "id": "c1d2e3f4-...",
  "type": "Lease",
  "status": "Negotiating",
  "proposedValue": 2800.00,
  "paymentConditions": "Pagamento via PIX até o dia 5 de cada mês.",
  "validUntil": "2026-06-01T00:00:00Z",
  "notes": "Cliente solicita pintura do apartamento antes da mudança.",
  "property": {
    "id": "3fa85f64-...",
    "code": "AP-001",
    "rentPrice": 2500.00
  },
  "client": {
    "id": "a1b2c3d4-...",
    "name": "João da Silva",
    "email": "joao@email.com"
  },
  "broker": {
    "id": "b1c2d3e4-...",
    "name": "Paulo Corretor"
  },
  "createdAt": "2026-05-15T09:00:00Z",
  "updatedAt": "2026-05-17T14:00:00Z"
}

POST /api/proposals

Cria uma nova proposta.

Body:

json
{
  "type": "Lease",
  "propertyId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "clientId": "a1b2c3d4-...",
  "brokerId": "b1c2d3e4-...",
  "proposedValue": 2800.00,
  "paymentConditions": "PIX até dia 5",
  "validUntil": "2026-06-01T00:00:00Z",
  "notes": "Necessita vistoria prévia."
}
CampoTipoObrigatório
typestringSim: Lease ou Sale
propertyIdguidSim
clientIdguidSim
brokerIdguidSim
proposedValuedecimalSim
validUntildatetimeSim

Resposta 201: Proposta criada com status UnderReview.


PUT /api/proposals/:id

Atualiza dados de uma proposta.


PATCH /api/proposals/:id/status

Avança ou rejeita uma proposta no funil.

Body:

json
{
  "status": "Approved",
  "reason": "Proposta aceita pelo proprietário."
}

Transições válidas:

UnderReview → Negotiating
UnderReview → Rejected
Negotiating → Approved
Negotiating → Rejected

Resposta 200: Proposta com status atualizado.

Erros:

  • 422 — Transição inválida
  • 422 — Proposta expirada (ValidUntil ultrapassado)

POST /api/proposals/:id/convert

Converte uma proposta aprovada em contrato.

Permissões: Admin, Broker

Body:

json
{
  "startDate": "2026-06-01T00:00:00Z",
  "endDate": "2027-06-01T00:00:00Z",
  "dueDay": 5,
  "indexer": "IGPM",
  "value": 2800.00,
  "documentUrl": "https://storage.googleapis.com/.../contrato.pdf"
}

Resposta 201: Contrato criado.

Efeitos colaterais:

  1. Status da proposta → sem alteração (permanece Approved)
  2. Status do imóvel → Rented (se tipo Lease) ou Sold (se tipo Sale)
  3. Histórico de status do imóvel registrado

Erros:

  • 422 — Proposta não aprovada
  • 422 — Proposta expirada

DELETE /api/proposals/:id

Remove a proposta (soft delete).

Permissões: Admin

Resposta 204: Sem conteúdo.

Documentação do FastGivr SystemImob