DEVELOPING

Conectar con la credencial que ya tenés

Cada cliente tuyo necesita tener conectada su propia cuenta del portal. Este es el camino para los portales donde vos ya tenés la credencial: hiciste el login con las credenciales que tu cliente te dio, o completaste su OAuth, y lo que queda es guardarla.

POST /connections

Estos endpoints están en desarrollo. Escribinos a dev@mapaprop.com si tu integración los necesita.

Antes de empezar

El token de la cuenta del portal lo obtenés vos. Estos endpoints no hacen el login contra el portal: guardan la credencial que tu cliente ya te autorizó a usar. Cada portal tiene su propio mecanismo de conexión.

Necesitás un scope por cada portal. Los scopes se otorgan al registrar tu aplicación; escribinos indicando con qué portales vas a trabajar.

Valores de portal

PortalValorScope necesarioCómo obtenés la credencial
ArgenpropArgenpropApiargenpropapi:connectlogin con las credenciales de tu cliente
CabapropCabapropApicabapropapi:connectOAuth del portal
MercadoLibreMercadolibreApimercadolibreapi:connectOAuth del portal

No distingue mayúsculas de minúsculas: ArgenpropApi, argenpropapi y ARGENPROPAPI son el mismo portal y la misma conexión. Las respuestas siempre devuelven el valor en minúsculas (argenpropapi), así que no te sorprenda que salga distinto de como lo mandaste.

El sufijo Api importa: algunos portales tienen también un feed XML, y estos endpoints son sólo para la integración por API.

Zonaprop no se conecta por acá. Estos endpoints guardan una credencial que vos ya tenés, y Zonaprop no emite ninguna: la inmobiliaria autoriza en el portal y la autorización queda del lado de ellos.

Para conectar Zonaprop, pedí un enlace y mandáselo a tu cliente: Conectar con un enlace. Si lo intentás acá, recibís 409.

Identificar a tu cliente: clientRef

clientRef es el identificador que vos elegís para cada uno de tus clientes finales. Es opaco para nosotros: puede ser tu id interno, un UUID o lo que uses. Lo mandás en el header x-client-ref (o en la query, o en el body del POST).

Tus conexiones viven en un espacio propio: ninguna otra aplicación puede leerlas ni tocarlas, y vos tampoco alcanzás las de otra. Eso lo determina tu token, no lo que mandes en el request.

Una cuenta de portal = un dueño

Una misma cuenta de portal no puede estar conectada por dos aplicaciones a la vez. Si intentás registrar una cuenta que ya está conectada por otra, recibís 409. Esto es lo que permite dirigir sin ambigüedad las consultas que llegan del portal.

POST /connections

Registra la conexión. Si volvés a llamarlo para el mismo cliente y portal, actualiza la conexión existente (es la forma de rotar el token).

CampoTipoRequeridoDescripción
portalstringsíVer Valores de portal
portalAccountIdstring o númerosíId de la cuenta en el portal. Distingue mayúsculas
accountTokenstringsíCredencial de la cuenta. Máximo 4096 bytes
clientRefstringsí*Tu id de cliente. *Se puede mandar por header
tokenExpiresAtnúmero o nullnoVencimiento en epoch, si el portal lo informa
scopesGrantedarray de stringnoPermisos que te dio el cliente. Hasta 32
appMetaobjetonoDatos tuyos. Máximo 8192 bytes serializado
curl -X POST https://property-api.mapaprop.com/connections \
  -H "Authorization: Bearer <TU_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "portal": "ArgenpropApi",
    "portalAccountId": "310578",
    "accountToken": "<credencial de la cuenta>",
    "clientRef": "cliente-42"
  }'

Respuesta 201:

{
  "connection": {
    "portal": "argenpropapi",
    "portalAccountId": "310578",
    "status": "active",
    "scopesGranted": [],
    "createdAt": "2026-09-04T13:40:00.000Z",
    "lastActivityAt": "2026-09-04T13:40:00.000Z",
    "tokenExpiresAt": null,
    "appMeta": {}
  }
}

El accountToken nunca vuelve a salir. Se guarda cifrado y ningún endpoint lo devuelve, ni siquiera cifrado. Guardalo vos si lo necesitás para otra cosa.

Después de conectar

Para consultar el estado o desconectar, ver Consultar y desconectar — sirve igual para las cuentas conectadas por este camino y para las conectadas con un enlace.

Errores

CódigoerrorQué pasó
400portal is required / portal must be a non-empty stringFalta el portal o no es texto
400Invalid JSON bodyEl cuerpo no es JSON válido
400clientRef is required (header x-client-ref, query or body)Falta identificar al cliente
400(varios, con field)Un campo no cumple el formato o supera un máximo
401UnauthorizedFalta el token o no es válido
403Missing required scope: argenpropapi:connectTu aplicación no tiene el scope de ese portal
404Connection not foundEse cliente no tiene conexión con ese portal
409portal account already connectedEsa cuenta de portal ya está conectada por otra aplicación
503Connection storage is temporarily unavailable (encryption backend)Problema temporal nuestro. Reintentá

Un 403 te dice exactamente qué scope falta, y ese texto incluye el portal tal como lo mandaste. Si ves Missing required scope: argenprop:connect en lugar de argenpropapi:connect, el problema es el valor de portal, no tus permisos.