Listar las propiedades de un cliente
GET /property-v1/properties
Devuelve todas las propiedades que cargaste para el clientRef que pidas, con el estado de
publicación de cada portal. Es la lectura que usás para reconciliar tu base con la nuestra: qué
quedó cargado, qué se publicó y dónde.
curl https://property-api.mapaprop.com/property-v1/properties \
-H "Authorization: Bearer $TOKEN" \
-H "x-client-ref: cliente-42"
Respuesta 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://..." }
}
}
]
}
| Campo | Qué es |
|---|---|
clientRef | De quién es este listado. Viene en la respuesta para que no tengas que acordarte con qué header preguntaste |
total | Cuántas vinieron en ESTA respuesta, no cuántas tiene el cliente. Ver la nota de abajo |
items[].paId | El id con el que la pedís, la editás y la publicás |
items[].status | active, o deleted si la diste de baja (sólo aparece con includeDeleted=true) |
items[].deletedAt | Cuándo la diste de baja. Sólo viene en las borradas — una activa no trae el campo |
items[].canonical | El objeto tal como lo mandaste |
items[].portals | El estado por portal: {} si nunca la publicaste |
items[].verdictAtCreation | El veredicto del día que la cargaste. ⚠️ Es de ese día: si después arreglamos un mapeo, esto no lo sabe. El de hoy lo da el GET por paId |
Los dos parámetros
| Parámetro | Default | Qué hace |
|---|---|---|
limit | sin tope | Corta en las primeras N |
includeDeleted | false | Incluye las que diste de baja |
# las primeras 2
curl "https://property-api.mapaprop.com/property-v1/properties?limit=2" …
# también las dadas de baja
curl "https://property-api.mapaprop.com/property-v1/properties?includeDeleted=true" …
No hay paginación con cursor. Sin limit te devolvemos todo el inventario de ese cliente en una
respuesta, y total es cuántas vinieron — no cuántas hay. O sea que total sin limit sí es el
inventario completo, pero con limit es el tope que pediste y no sabés cuántas quedaron afuera.
Si manejás carteras grandes, pedí sin limit y procesá la respuesta entera. Si te hace falta paginar
de verdad, escribinos a dev@mapaprop.com: el cursor no existe porque nadie lo necesitó todavía.
Es una lectura de nuestro sistema: no cuesta ninguna llamada del cupo de tu cliente en el portal. Lo que el portal dice de cada aviso lo trae la consulta de estado, que sí cuesta 1 por propiedad.
Qué devuelve de más que el GET por paId
Nada: el listado trae menos. Es una proyección pensada para recorrer, no para inspeccionar.
| Listado | GET /properties/{paId} | |
|---|---|---|
| El objeto y el estado por portal | ✅ | ✅ |
| El veredicto de HOY, recalculado | ❌ — el de la creación | ✅ |
El estado de las imágenes (images) | ❌ | ✅ |
El detalle de la última publicación (lastPublish) | ❌ | ✅ |
Para reconciliar, el listado alcanza. Para entender una propiedad, pedí la propiedad.
Códigos de respuesta
| Código | Qué pasó |
|---|---|
200 | El listado. Si el cliente no tiene ninguna, total: 0 e items: [] |
400 | Falta el header x-client-ref |
401 | Token ausente o inválido |
403 | Tu token no tiene el scope property-api-read |
Un cliente sin propiedades devuelve 200 con items: [], no un 404. El 404 significaría que el
cliente no existe, y eso lo contesta el GET del cliente.
Relacionado
- Consultar una propiedad — con el veredicto de hoy y las imágenes
- Alta de propiedades · Modificar · Dar de baja
- Publicar — y de ahí sale el
portalsde este listado