DEVELOPING

Publicar en un portal

Cuando la propiedad ya está cargada y la cuenta del portal conectada, esto la publica.

PUT /property-v1/properties/{paId}/publication/{portal}

No mandás la propiedad de nuevo: ya la tenemos, y la publicamos tal como quedó guardada. Nosotros la traducimos al formato del portal.

PortalValor de {portal}Estado
Zonapropzonapropapidisponible
Argenprop, Cabaprop, MercadoLibre—próximamente

Requiere el scope {portal}:publish — por ejemplo zonapropapi:publish. Es distinto del :connect: podés estar habilitado para conectar cuentas de un portal y no para publicar en él.

Antes de publicar

Tres cosas, en este orden:

  1. La ficha de tu cliente — Clientes
  2. Su cuenta del portal conectada — Conectar con un enlace
  3. La propiedad cargada, con su paId — Alta de propiedades

La llamada

CampoTipoRequeridoDescripción
planstringsegún el portalEl plan de publicación. Pisa el que hayas puesto en publication dentro del objeto
curl -X PUT https://property-api.mapaprop.com/property-v1/properties/01M3PTZ8YBMM5DSNW03WP8VD9E/publication/zonapropapi \
  -H "Authorization: Bearer <TU_TOKEN>" \
  -H "x-client-ref: cliente-42" \
  -H "Content-Type: application/json" \
  -d '{ "plan": "SUPERDESTACADO" }'

Respuesta 200:

{
  "status": "published",
  "portal": "zonapropapi",
  "paId": "01M3PTZ8YBMM5DSNW03WP8VD9E",
  "plan": "SUPERDESTACADO",
  "quota": { "remaining": 1493, "limit": 1500 }
}

El plan también podés dejarlo fijo en el objeto, en publication. Si mandás los dos, gana el de esta llamada: así podés cambiar de plan sin reescribir la propiedad.

Volver a llamar ACTUALIZA, no duplica

Publicar dos veces la misma propiedad no crea dos avisos. La segunda llamada actualiza el que ya existe. Podés reintentar sin miedo: si una llamada falló y no sabés si llegó, volvé a llamar.

Es la propiedad más importante de este endpoint, y la razón por la que no hay un "crear" y un "actualizar" separados: una sola operación, y el resultado depende de si el aviso ya existe.

Cuando no se puede publicar: 422

No es un error de tu llamada — es que falta un dato. Por eso vienen dos listas separadas:

{
  "error": "not_publishable",
  "detail": "La propiedad no se puede publicar en este portal todavía.",
  "blockers": [
    { "field": "title", "kind": "missing", "message": "Falta el título" }
  ],
  "accountBlockers": [
    { "field": "options.zoneNaventId", "kind": "missing",
      "message": "La zona de la propiedad no tiene mapeo guardado en Zonaprop" }
  ]
}
ListaQué significaQuién lo resuelve
blockersfalta un dato de la propiedadvos: corregí el objeto y volvé a intentar
accountBlockersfalta algo de la cuenta en el portal (zona sin mapear, plan, sucursal)se resuelve una vez y sirve para todas las propiedades de ese cliente

Están separadas porque el arreglo es distinto. Si venís de accountBlockers, revisar el JSON de la propiedad no te va a llevar a ningún lado: está bien.

Podés anticipar casi todos los blockers con POST /properties/verify, que no crea ni publica nada.

Códigos de respuesta

CódigoQué pasóQué hacer
200Publicado—
400El portal no está disponible todavía, o el body no es JSON válidoRevisá el valor de {portal}
403Tu token no tiene el scope {portal}:publishEscribinos para habilitarlo
404Esa propiedad no existe para este clienteRevisá el paId y el x-client-ref
409La cuenta no está conectada al portalPedí un enlace de conexión
409El cliente está dado de baja (customer_not_active)Reactivalo con POST /property-v1/customers — ver Clientes
422Falta un datoVer arriba
502El portal rechazó la publicación, o no respondióVer abajo

El 502, que tiene dos sabores

{ "error": "portal_rejected",
  "detail": "No pudimos alcanzar al portal. El aviso PUEDE haberse publicado: volvé a intentar, la operación es idempotente y no duplica.",
  "portalResponse": null }
  • El portal rechazó → portalResponse trae su respuesta tal cual. Ahí está el motivo.
  • No respondió → el detail te lo dice, y puede haberse publicado igual. Reintentar es seguro: no duplica.

No te decimos "no se publicó" cuando no lo sabemos.

Despublicar

Próximamente. DELETE /property-v1/properties/{paId}/publication/{portal} va a dar de baja el aviso en el portal. Escribinos a dev@mapaprop.com si tu integración lo necesita.

Mientras tanto, tu cliente puede bajar el aviso desde el panel del portal.

Específico de cada portal

  • Zonaprop: el plan es obligatorio y cada publicación consume del cupo mensual de tu cliente — Cupo mensual y límites

Relacionado