Qué modo soporta cada portal

GET /property-v1/leads/capabilities

Las consultas no llegan igual en todos los portales: en algunos las pedís vos y en otros te llegan solas. Y eso lo decide cada portal, no nosotros.

Este método te lo dice como dato, para que no tengas que tenerlo escrito en tu código.

Es el único método de leads que NO pide {portal}:leads. Pide property-api-catalog — el mismo de las zonas y los atributos. Es así porque habla de todos los portales a la vez: pedirte el de uno sería arbitrario, y pedirte los cuatro haría que no pudieras leerlo. Si ya consumís el catálogo de zonas, no tenés que pedirnos nada nuevo.

curl "https://property-api.mapaprop.com/property-v1/leads/capabilities" \
  -H "Authorization: Bearer $TOKEN"

No lleva parámetros. No mira ninguna cuenta de tus clientes y no gasta cupo de nadie.

Los tres modos

Se llaman por quién dispara, que es la única diferencia que te cambia el trabajo:

ModoQuién disparaQué tenés que hacer vos
pullvos, cuando quieraspedir las consultas con por cuenta o por propiedad
pushFromPortalel portal avisa, y nosotros te lo reenviamostener un endpoint propio y verificar nuestra firma
pushFromMapapropnosotros consultamos y te lo empujamoslo mismo: tu endpoint y la firma

Los dos push todavía no están disponibles en ningún portal. Cuando lo estén, este método va a decirlo — y es exactamente para eso que existe.

La respuesta

{
  "portals": {
    "zonapropapi": {
      "pull": { "available": true, "byAccount": true, "byProperty": true, "quotaShared": true },
      "pushFromPortal": { "available": false },
      "pushFromMapaprop": { "available": false }
    },
    "argenpropapi": {
      "pull": { "available": false },
      "pushFromPortal": { "available": false },
      "pushFromMapaprop": { "available": false }
    },
    "cabapropapi": {
      "pull": { "available": false },
      "pushFromPortal": { "available": false },
      "pushFromMapaprop": { "available": false }
    },
    "mercadolibreapi": {
      "pull": { "available": false },
      "pushFromPortal": { "available": false },
      "pushFromMapaprop": { "available": false }
    }
  }
}

Qué significa cada campo

availablesi ese modo se puede usar hoy en ese portal
byAccountsi podés traer las de toda la cuenta en una llamada — el camino normal
byPropertysi podés traer las de un aviso puntual
quotaSharedsi las consultas gastan el mismo cupo mensual que publicar y que consultar el estado del aviso

byAccount, byProperty y quotaShared aparecen sólo cuando pull.available es true: en un portal sin pull no describen nada, y mandarlos en false se leería como que el servicio existe y está apagado.

quotaShared: true significa que una consulta te puede dejar sin cupo para publicar. Es el caso de Zonaprop: el tope del mes es uno solo y lo comparten publicar, consultar el estado y traer consultas. Cómo funciona el cupo de Zonaprop.

Cómo usarlo

Leelo una vez al arrancar tu integración y guardate el resultado; volvé a leerlo de vez en cuando. No hace falta consultarlo antes de cada pedido de leads.

Lo que te ahorra:

  • No escribir en tu código qué portal se consulta y cuál avisa. El día que un portal gane un modo nuevo, tu integración se entera sola.
  • No descubrirlo probando. Si pedís consultas de un portal que todavía no las ofrece, la respuesta es un 501 honesto que te dice cuál de los dos servicios falta — pero te enteraste después de haber armado la llamada.

Un portal que no aparece en la lista no es un portal sin soporte: es un portal que no existe en esta API. Los que no soportan nada todavía sí aparecen, con todo en false.

Los errores

CuándoQué hacer
401el token falta, venció o no es válidorevisá el Authorization
403te falta el scope property-api-catalogpedinos que te lo otorguemos. No es {portal}:leads: ese no habilita este método