DEVELOPING

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.

PortalValor de {portal}Estado
Zonapropzonapropapidisponible
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/properties y su grupo development adentro. 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 unidadPor el desarrollo
Publicar49 llamadas1
Dar de baja491

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 codesWithError son tus códigos (el code que mandaste o el paId), 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ódigoQué pasó
200Publicado o dado de baja. Mirá development.withError antes de darlo por cerrado
400 recurso_incorrectoUsaste el recurso que no corresponde. El mensaje dice el correcto
400 portal_no_soportadoEse portal todavía no publica desarrollos por acá
409 portal_not_connectedEsa inmobiliaria no tiene la cuenta del portal conectada
422Falta un dato para publicar. Te decimos cuál, y si lo podés arreglar vos
501El 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