BETA

La clave publication

El objeto propiedad describe el inmueble. publication describe cómo lo publicás: qué cuenta usás en cada portal y qué elegiste para ese aviso.

Son dos cosas distintas y por eso están separadas. Los metros cuadrados de un departamento son los mismos publiques donde publiques; el plan que contrataste en Zonaprop, no.

Está en beta. Esta clave es por donde se habilitan las capacidades de publicación, así que va a crecer: portales nuevos, campos nuevos, canales nuevos. Lo que ya está documentado acá no cambia de significado sin aviso.

Dónde va

Adentro del objeto propiedad, como una clave más:

{
  "code": "DEV-V3-909181",
  "title": "…",
  "attributes": [ … ],
  "publication": { "api": { … } }
}

Viaja igual en el alta y en la verificación — es el mismo objeto en los dos casos.

La forma

{
  "publication": {
    "api": {
      "argenprop": {
        "advertiserId": 99999,
        "visible": true,
        "token": "<tu-token-de-argenprop>"
      },
      "zonaprop": {
        "plan": {
          "plan": "SUPERDESTACADO"
        },
        "token": "<tu-token-de-zonaprop>"
      },
      "cabaprop": {
        "branchOfficeId": 42,
        "token": "<tu-token-de-cabaprop>"
      },
      "mercadolibre": {
        "listingTypeId": "gold_special",
        "condition": "used",
        "token": "<tu-token-de-mercadolibre>"
      }
    }
  }
}

Los dos niveles

publication
└── api            ← publicación por la API del portal
    └── <portal>

El nivel api no es decorativo: un portal puede publicarse por más de un canal. Zonaprop, por ejemplo, admite publicación por API y por feed XML, y cada canal tiene su propio contrato. Separarlo desde el principio permite sumar el otro canal sin cambiarle la forma a lo que ya funciona.

Hoy sólo api está habilitado. Cualquier otra clave a ese nivel se rechaza: no es "todavía no soportado", es desconocido.

Qué acepta cada portal

PortalCampoTipoQué es
argenpropadvertiserIdnumberTu id de anunciante en Argenprop
visiblebooleanSi el aviso se publica visible
zonapropplanobjectEl plan de publicación, por ejemplo {"plan": "SUPERDESTACADO"}
branchobjectLos datos de contacto de la sucursal: {custId, email, name, phone1}. Ya no hace falta — ver abajo
cabapropbranchOfficeIdnumberLa sucursal (matriculado) en Cabaprop
mercadolibrelistingTypeIdstringEl tipo de publicación
conditionstringLa condición del inmueble
sellerContactobjectLos datos de contacto del vendedor. Ya no hace falta — ver abajo

Todos aceptan además un token (string), que es el de tu cuenta en ese portal.

branch y sellerContact ya no hace falta que los mandes. Son los datos de contacto de tu cliente escritos en el vocabulario de cada portal, y ahora los completamos solos a partir de la ficha de tu cliente, que declarás una vez y no viaja en cada propiedad.

Si los mandás igual, ganan los tuyos: el autocompletado tiene la precedencia más baja de todas.

Su forma, si los querés mandar:

{
  "zonaprop": { "branch": { "custId": 1, "name": "…", "phone1": "…", "email": "…" } },
  "mercadolibre": { "sellerContact": { "phone": "…", "email": "…" } }
}

advertiserId y branchOfficeId sí siguen haciendo falta: no son datos de tu cliente sino ids dentro del portal —tu anunciante en Argenprop, tu matriculado en Cabaprop— y sólo los sabe tu cuenta ahí.

No hace falta que mandes todos los portales. Mandá los que vayas a usar; lo que no está, simplemente no se configura.

Sobre el token

El token se valida de forma y nunca de validez. Que lo aceptemos no significa que sea correcto ni que tu cuenta exista: sólo que es un string no vacío. Este endpoint verifica propiedades, no cuentas.

Y del otro lado: el valor de tu token no aparece en ninguna respuesta. Si hay un problema con él, te decimos cuál es la clave (publication.api.zonaprop.token) y nunca qué contiene. Tampoco se guarda con el objeto ni se reenvía a ningún lado que no lo necesite.

Qué pasa si mandás algo que no corresponde

La forma se valida, y lo que no cumple aparece de dos maneras a la vez en la respuesta del verify:

  1. En object.contract, con la ruta completa, la regla y un ejemplo de cómo se arregla.
  2. Como blocker del portal afectado, que pasa a missing_data.
CasoQué reportaEjemplo que te da
Tipo equivocadose espera number"publication": { "api": { "argenprop": { "advertiserId": 99999 } } }
Portal que no existeportal desconocido. Válidos: …uno de los válidos
Campo que ese portal no aceptano es un dato de cuenta/publicación reconocido…la lista de los que sí acepta
Nivel distinto de apisólo admite api"publication": { "api": { … } }
token vacíose espera un string no vacío"token": "<tu-token-de-argenprop>"
{ "field": "publication.api.argenprop.advertiserId",
  "rule": "type",
  "value": "noventa",
  "detail": "se espera number",
  "fix": "\"publication\": { \"api\": { \"argenprop\": { \"advertiserId\": 99999 } } }" }

Un publication roto bloquea la publicación en ese portal, aunque el objeto de la propiedad esté impecable. Y bloquea sólo al portal que nombra: si el problema es de publication.api.argenprop, Zonaprop y Cabaprop siguen su curso. Los problemas de nivel superior —publication entero, o un nivel distinto de api— afectan a todos.

Es a propósito: un advertiserId mal tipado no es una propiedad incompleta, es una instrucción de publicación rota — y publicar con ella es el daño.

No se limpia en silencio ni se adivina qué quisiste decir. Si no cumple, te lo decimos y te decimos cómo arreglarlo.

Declarar un portal es pedir que te lo reporten

La respuesta del verify trae sólo los portales que declaraste acá. Si configuraste Argenprop y nada más, Zonaprop no aparece — ni con problemas, ni en el summary.

Si no mandás publication, los ves todos: es el caso de quien está evaluando la integración.

publication no es un campo de la propiedad

No se guarda con el inmueble y no viaja a los portales como un dato del aviso. Se consume para configurar la publicación y se descarta.

Por eso tampoco lo vas a ver en la propiedad que te devolvemos: no forma parte de ella.

Ver también


¿Necesitás ayuda? Contactá al Soporte técnico de Mapaprop