POST /cabaprop/publish
Publica um imóvel no Cabaprop a partir do Property Object.
É idempotente: se já existir um anúncio ativo para o mesmo propertyId/custId, este endpoint o atualiza em vez de devolver um erro de duplicado.
| Informações do recurso | |
|---|
| Autenticação | Obrigatória (token do Mapaprop + token do Cabaprop) |
| Método HTTP | POST |
| Resposta | JSON |
| Versão | 1 |
https://property-api.mapaprop.com/cabaprop/publish
| Header | Obrigatório | Descrição |
|---|
Authorization | sim | Bearer <token> — token do Mapaprop |
X-Cabaprop-Token | sim | Token do Cabaprop obtido em POST /cabaprop/connect |
Content-Type | sim | application/json |
| Key | Tipo | Obrigatório | Descrição |
|---|
propertyId | number/string | sim | Id do imóvel na sua aplicação. É usado para vincular o seu imóvel ao anúncio do Cabaprop. |
custId | number/string | sim | Id do cliente/conta na sua aplicação. Deve corresponder ao mesmo custId autenticado (veja os erros). |
property | object | sim | O Property Object, com mínimo de 3 imagens. |
realStateId | string/number | sim | Id da imobiliária no Cabaprop, obtido em GET /cabaprop/get-branches (.id). |
branchOfficeId | string/number | sim | Id da filial no Cabaprop, obtido em GET /cabaprop/get-branches (.branchOffices[].id). |
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 }
]
}
}
Em caso de sucesso devolve um 200:
{
"success": true,
"cabapropId": "68cae034f1a2b3c4d5e6f7a8",
"mode": "created"
}
| Campo | Tipo | Descrição |
|---|
success | boolean | true se o anúncio foi publicado (ou atualizado) corretamente. |
cabapropId | string | Id do anúncio no Cabaprop. Guarde-o para futuras chamadas a PUT /cabaprop/property e DELETE /cabaprop/property/unpublish. |
mode | string | created se for um anúncio novo, updated se já existia um anúncio ativo e ele foi atualizado (idempotência). |
| Status | Corpo | Causa |
|---|
| 400 | {"error":"Invalid JSON body"} | O body não é um JSON válido. |
| 403 | {"error":"custId does not match the authenticated customer"} | O custId do body não coincide com a conta autenticada. |
| 400 | {"error":"propertyId, custId and property are required"} | Falta algum dos campos obrigatórios. |
| 400 | {"error":"La propiedad debe tener al menos 3 imagenes para publicarse en Cabaprop"} | O property.images tem menos de 3 elementos. |
| 400 | {"error":"Cabaprop account is not connected (missing token)"} | Falta o token do Cabaprop. |
| 400 | {"error":"Missing realStateId/branchOfficeId — reconnect the Cabaprop account (GET /cabaprop/get-branches) and retry"} | Faltam realStateId/branchOfficeId. |
| 400 | {"error":"La zona/tipo/operacion no tiene mapping en Cabaprop","missing":["..."]} | operation_type, property_type ou location.barrios vieram vazios. |
| 502 | {"error":"Could not verify existing Cabaprop publication state — retry"} | Erro interno ao verificar se já existia um anúncio. Tente novamente. |
| 401 | {"error":"Cabaprop authentication failed — reconnect the account"} | O token do Cabaprop é inválido ou expirou. |
| 200 | {"success":false,"errorCode":"...","detail":"..."} | O Cabaprop rejeitou a publicação por dados inválidos (veja as notas do Property Object). detail traz a mensagem textual do portal. |
| 500 | {"error":"Error publishing Cabaprop property","detail":"..."} | Erro inesperado. |