PROD

POST /cabaprop/publish

Publica una propiedad en Cabaprop a partir del Property Object.

Es idempotente: si ya existe un aviso vivo para el mismo propertyId/custId, este endpoint lo actualiza en vez de devolver un error de duplicado.

Información del recurso
AutenticaciónRequerida (token de Mapaprop + token de Cabaprop)
Método HTTPPOST
RespuestaJSON
Versión1

Resource URL

https://property-api.mapaprop.com/cabaprop/publish

Headers

HeaderRequeridoDescripción
AuthorizationBearer <token> — token de Mapaprop
X-Cabaprop-TokenToken de Cabaprop obtenido en POST /cabaprop/connect
Content-Typeapplication/json

Parameters (body request)

KeyTipoRequeridoDescripción
propertyIdnumber/stringId de la propiedad en tu aplicación. Se usa para vincular tu propiedad con el aviso de Cabaprop.
custIdnumber/stringId del cliente/cuenta en tu aplicación. Debe corresponder al mismo custId autenticado (ver errores).
propertyobjectEl Property Object, con mínimo 3 imágenes.
realStateIdstring/numberId de la inmobiliaria en Cabaprop, obtenido en GET /cabaprop/get-branches (.id).
branchOfficeIdstring/numberId de la sucursal en Cabaprop, obtenido en GET /cabaprop/get-branches (.branchOffices[].id).

Sample code

POST /cabaprop/publish
Host: property-api.mapaprop.com
Content-Type: application/json
Authorization: Bearer {access_token}
X-Cabaprop-Token: {cabaprop_token}
{
  "propertyId": 188017,
  "custId": 1,
  "realStateId": "81592",
  "branchOfficeId": "83347",
  "property": {
    "title": "Hermosa casa 4 ambientes con parrilla",
    "description": "Casa de 4 ambientes con jardín y parrilla.",
    "operation_type": "1",
    "property_type": "3",
    "sub_property_type": "12",
    "location": {
      "barrios": [1234],
      "cp": "1425",
      "lat": "-34.5885",
      "lng": "-58.4306",
      "street": "Av. Santa Fe",
      "number": "3253"
    },
    "surface": { "totalSurface": 180, "coveredSurface": 140 },
    "price": { "currency": 1, "total": 250000 },
    "characteristics": { "ambience": 4, "bedrooms": 3, "bathrooms": 2 },
    "images": [
      { "url": "https://tu-servidor.com/fotos/1.jpg", "title": "imagen1", "originalname": "casa1", "filename": null },
      { "url": "https://tu-servidor.com/fotos/2.jpg", "title": "imagen2", "originalname": "casa2", "filename": null },
      { "url": "https://tu-servidor.com/fotos/3.jpg", "title": "imagen3", "originalname": "casa3", "filename": null }
    ]
  }
}

Response

En caso de éxito devuelve un 200:

{
  "success": true,
  "cabapropId": "68cae034f1a2b3c4d5e6f7a8",
  "mode": "created"
}
CampoTipoDescripción
successbooleantrue si el aviso se publicó (o actualizó) correctamente.
cabapropIdstringId del aviso en Cabaprop. Guardalo para futuras llamadas a PUT /cabaprop/property y DELETE /cabaprop/property/unpublish.
modestringcreated si es un aviso nuevo, updated si ya existía un aviso vivo y se actualizó (idempotencia).

Errores

StatusCuerpoCausa
400{"error":"Invalid JSON body"}El body no es un JSON válido.
403{"error":"custId does not match the authenticated customer"}El custId del body no coincide con la cuenta autenticada.
400{"error":"propertyId, custId and property are required"}Falta alguno de los campos requeridos.
400{"error":"La propiedad debe tener al menos 3 imagenes para publicarse en Cabaprop"}El property.images tiene menos de 3 elementos.
400{"error":"Cabaprop account is not connected (missing token)"}Falta el token de Cabaprop.
400{"error":"Missing realStateId/branchOfficeId — reconnect the Cabaprop account (GET /cabaprop/get-branches) and retry"}Faltan realStateId/branchOfficeId.
400{"error":"La zona/tipo/operacion no tiene mapping en Cabaprop","missing":["..."]}operation_type, property_type o location.barrios vinieron vacíos.
502{"error":"Could not verify existing Cabaprop publication state — retry"}Error interno al verificar si ya existía un aviso. Reintentar.
401{"error":"Cabaprop authentication failed — reconnect the account"}El token de Cabaprop es inválido o expiró.
200{"success":false,"errorCode":"...","detail":"..."}Cabaprop rechazó la publicación por datos inválidos (ver notas del Property Object). detail trae el mensaje textual del portal.
500{"error":"Error publishing Cabaprop property","detail":"..."}Error inesperado.