Publicar y despublicar un desarrollo
Un desarrollo inmobiliario se publica por su propio recurso, no por el de las propiedades:
PUT /property-v1/developments/{paId}/publication/{portal}
DELETE /property-v1/developments/{paId}/publication/{portal}
Mismo scope que publicar una propiedad ({portal}:publish), mismo paId — el del desarrollo.
| Portal | Valor de {portal} | Estado |
|---|---|---|
| Zonaprop | zonapropapi | disponible |
| Argenprop, MercadoLibre, Cabaprop | — | próximamente |
Si pedís un desarrollo en un portal que todavía no lo soporta, te contestamos 501 nombrándolo — no
un error genérico. Un portal puede estar disponible para avisos sueltos y todavía no para desarrollos.
Esto no cambia cómo se crea un desarrollo: se sigue dando de alta con
POST /property-v1/propertiesy su grupodevelopmentadentro. Lo que tiene recurso propio es la publicación.
1. Una llamada, el desarrollo entero
Cuando publicás un desarrollo, sus unidades van en la misma llamada. No hay que publicarlas una por una, y conviene no hacerlo: el portal recibe el aviso padre con sus unidades adentro.
curl -X PUT "https://property-api.mapaprop.com/property-v1/developments/01M3Z4MF6S817S9V8QADXFFXN3/publication/zonapropapi" \
-H "Authorization: Bearer $TOKEN" \
-H "x-client-ref: $CLIENT_REF" \
-H "Content-Type: application/json" \
-d '{ "plan": "DESARROLLOS_DESTACADO" }'
Por qué importa: el portal tiene un tope de llamadas
Zonaprop permite 1.500 llamadas por mes y por inmobiliaria, y ese tope se comparte entre publicar, consultar estado y traer consultas. Para un desarrollo de 48 unidades la diferencia es ésta:
| Unidad por unidad | Por el desarrollo | |
|---|---|---|
| Publicar | 49 llamadas | 1 |
| Dar de baja | 49 | 1 |
Por eso el recurso existe: recorrer las unidades te gasta el presupuesto del mes en un desarrollo.
2. Qué te contestamos: unidad por unidad
El portal nos responde una entrada por aviso —el padre y cada unidad— y te la pasamos resumida. Esto es lo que más conviene mirar:
{
"status": "published",
"portal": "zonaprop",
"development": {
"total": 48,
"published": 45,
"withError": 3,
"codesWithError": ["TORRE-4B", "TORRE-5A", "TORRE-PH"]
},
"quota": { "remaining": 1432, "limit": 1500 }
}
Una publicación parcial no se te reporta como éxito. Si el portal acepta el padre y rechaza tres
unidades, withError es 3 y te decimos cuáles por su código. Antes esto salía como publicado, y la
única forma de enterarte era mirar el aviso.
Los
codesWithErrorson tus códigos (elcodeque mandaste o elpaId), no ids del portal.
Los avisos que el portal acepta "con observaciones"
El portal puede aceptar una unidad y además decir algo — por ejemplo que un dato venía vacío y le puso 0. Eso no es un error: la unidad se publicó. Te lo pasamos igual, porque suele ser la pista de que falta un dato tuyo.
3. Con más de 15 unidades, el portal procesa en diferido
Si el desarrollo tiene 16 unidades o más, Zonaprop no lo procesa en el momento: acusa recibo y sigue trabajando. En ese caso te contestamos:
{ "status": "received", "processing": "async" }
received no es published. Significa que el portal lo tomó, no que ya esté arriba. No lo guardes
como publicado hasta confirmarlo.
4. Dar de baja
curl -X DELETE "https://property-api.mapaprop.com/property-v1/developments/01M3Z4MF6S817S9V8QADXFFXN3/publication/zonapropapi" \
-H "Authorization: Bearer $TOKEN" \
-H "x-client-ref: $CLIENT_REF"
Baja el desarrollo y sus unidades, en una llamada. Igual que con una propiedad:
- No borra nada: el desarrollo sigue en tu inventario y podés volver a publicarlo.
- Es idempotente: si ya no estaba publicado, igual te contestamos
200. Podés reintentar sin miedo. - Y también te decimos cuántos avisos bajaron, con el mismo bloque
development— con una diferencia de nombre, porque mide otra cosa:
{ "status": "unpublished",
"development": { "total": 48, "unpublished": 48, "withError": 0, "codesWithError": [] } }
5. Si usás el recurso equivocado, te lo decimos
Un desarrollo por el recurso de propiedades —o una propiedad por el de desarrollos— es un 400, y el mensaje te dice la URL exacta:
{
"error": "recurso_incorrecto",
"detail": "Ese objeto es un DESARROLLO inmobiliario (tiene el grupo `development`). Usá `/property-v1/developments/{paId}/publication/{portal}`.",
"expected": "developments",
"received": "properties"
}
No te gastamos una llamada del portal para decirte esto: el chequeo pasa antes.
Por qué existen los dos recursos: el portal también los tiene separados, con formatos distintos. Si mandáramos un desarrollo por el camino de un aviso suelto, se publicaría sin sus unidades.
6. Antes de publicar en Zonaprop
Un desarrollo necesita además saber si es horizontal o vertical. Si tus campos ya lo dicen, lo deducimos; si no, te lo pedimos.
El objeto del desarrollo — está explicado en su §4, con los dos casos.
7. Códigos de respuesta
| Código | Qué pasó |
|---|---|
200 | Publicado o dado de baja. Mirá development.withError antes de darlo por cerrado |
400 recurso_incorrecto | Usaste el recurso que no corresponde. El mensaje dice el correcto |
400 portal_no_soportado | Ese portal todavía no publica desarrollos por acá |
409 portal_not_connected | Esa inmobiliaria no tiene la cuenta del portal conectada |
422 | Falta un dato para publicar. Te decimos cuál, y si lo podés arreglar vos |
501 | El portal está soportado para avisos pero todavía no para desarrollos |
8. Relacionado
El objeto del desarrollo — cómo se declara y las reglas de las unidades
Verificar antes de crear — probar sin publicar nada
developmentStats — los números calculados de sus unidades
Publicar una propiedad — el recurso de los avisos sueltos