DEVELOPING

Listar os imóveis de um cliente

GET /property-v1/properties

Devolve todos os imóveis que você carregou para o clientRef que pedir, com o estado de publicação de cada portal. É a leitura que você usa para reconciliar a sua base com a nossa: o que ficou carregado, o que foi publicado e onde.

curl https://property-api.mapaprop.com/property-v1/properties \
  -H "Authorization: Bearer $TOKEN" \
  -H "x-client-ref: cliente-42"

Resposta 200:

{
  "clientRef": "cliente-42",
  "total": 42,
  "items": [
    {
      "paId": "01M4BS9DR88PCN2WNR5WSH82D4",
      "status": "active",
      "createdAt": "2026-10-07T13:21:04.118Z",
      "updatedAt": "2026-10-07T20:41:55.902Z",
      "canonical": { "code": "DEV-V3-909181", "type": 1, "title": "Depto en Palermo", "...": "..." },
      "verdictAtCreation": { "...": "..." },
      "portals": {
        "zonaprop": { "remoteStatus": "published", "itemId": "...", "url": "https://..." }
      }
    }
  ]
}
CampoO que é
clientRefDe quem é esta lista. Vem na resposta para que você não tenha que lembrar com qual header perguntou
totalQuantos vieram NESTA resposta, não quantos o cliente tem. Veja a nota abaixo
items[].paIdO id com o qual você o pede, edita e publica
items[].statusactive, ou deleted se você deu baixa nele (só aparece com includeDeleted=true)
items[].deletedAtQuando você deu baixa. Só nos que estão baixados — um ativo não traz o campo
items[].canonicalO objeto exatamente como você enviou
items[].portalsO estado por portal: {} se você nunca o publicou
items[].verdictAtCreationO veredito do dia em que você o carregou. ⚠️ É daquele dia: se depois corrigimos um mapeamento, isto não sabe. O de hoje vem no GET por paId

Os dois parâmetros

ParâmetroDefaultO que faz
limitsem limiteCorta nos primeiros N
includeDeletedfalseInclui os que você deu baixa
# os 2 primeiros
curl "https://property-api.mapaprop.com/property-v1/properties?limit=2" …

# também os baixados
curl "https://property-api.mapaprop.com/property-v1/properties?includeDeleted=true" …

Não há paginação com cursor. Sem limit devolvemos todo o inventário desse cliente em uma resposta, e total é quantos vieram — não quantos há. Ou seja, total sem limit é de fato o inventário completo, mas com limit é o teto que você pediu e você não sabe quantos ficaram de fora.

Se você gerencia carteiras grandes, peça sem limit e processe a resposta inteira. Se precisar paginar de verdade, escreva para dev@mapaprop.com: o cursor não existe porque ninguém precisou dele ainda.

É uma leitura do nosso sistema: não custa nenhuma chamada da cota do seu cliente no portal. O que o portal diz de cada anúncio vem da consulta de estado, que custa 1 por imóvel.

O que devolve além do GET por paId

Nada: a lista devolve menos. É uma projeção pensada para percorrer, não para inspecionar.

ListaGET /properties/{paId}
O objeto e o estado por portal✅✅
O veredito de HOJE, recalculado❌ — o da criação✅
O estado das imagens (images)❌✅
O detalhe da última publicação (lastPublish)❌✅

Para reconciliar, a lista basta. Para entender um imóvel, peça o imóvel.

Códigos de resposta

CódigoO que aconteceu
200A lista. Se o cliente não tem nenhum, total: 0 e items: []
400Falta o header x-client-ref
401Token ausente ou inválido
403O seu token não tem o scope property-api-read

Um cliente sem imóveis devolve 200 com items: [], e não um 404. O 404 significaria que o cliente não existe, e isso é respondido pelo GET do cliente.

Relacionado