POST /property/post
Atualmente esta funcionalidade é compatível apenas com https://www.mapaprop.com/
General Rules
Por meio de um JSON estruturado, é possível importar um imóvel para o Mapaprop.
- É necessário ter uma conta Mapaprop.
- É necessário ter ao menos 1 imagem.
- As imagens devem estar disponíveis em uma URL.
- Existem campos obrigatórios.
- Em caso de determinadas falhas, a importação é revertida.
- Sobre as imagens:
- Se houver mais de uma imagem, elas são processadas em lista ordenada.
- Se ao menos uma imagem for obtida com sucesso, a importação é processada.
- Se todas as imagens falharem, a importação é cancelada.
- A primeira imagem da lista será sempre a
mainImage.
- É possível definir se o imóvel será publicado por meio do campo
published = true. - Você deve conhecer o
branchId. OcustomerIdé derivado automaticamente do token de autenticação (qualquer valor enviado no body é ignorado por segurança).
This service will import property JSON to Mapaprop.
O processamento é assíncrono. O endpoint responde imediatamente com um executionArn que identifica a execução. A criação do imóvel, o download/processamento das imagens e a indexação ocorrem em segundo plano. O status de andamento pode ser consultado com GET /property/get/status/machine/{executionArn}.
| Resource information | |
|---|---|
| Authentication | Obrigatória (JWT) |
| HTTP Method | POST |
| Response | JSON |
| Version | 1 |
Resource URL
https://property-api.mapaprop.com/property/post
Sample code
POST /property/post
Host: property-api.mapaprop.com
Content-Type: application/json
Authorization: Bearer {access_token}
O corpo da requisição é o JSON do imóvel (ver "Complete JSON model"). O customerId é derivado do token de autenticação: se incluído no body, é ignorado e substituído pelo do token.
Campos obrigatórios
O JSON deve incluir ao menos estes campos (caso contrário a importação é cancelada com Missing required field: {campo} ou Invalid type for {campo}: expected {tipo}):
| Campo | Tipo |
|---|---|
title | string |
address | string |
propertyOperation | number |
type | number |
zone0 | number |
zone1 | number |
zone2 | number |
zipCode | string |
description | string |
price | number |
ambiences | number |
landArea | number |
buildingArea | number |
rooms | number |
yearsOld | number |
branchId | number |
currency | string |
Complete JSON model
{
"zipCode": "1416",
"landArea": 600,
"buildingArea": 2500,
"ubication": 1,
"type": 23,
"apartmentsPerFloor": 4,
"ambiences": 1,
"price": 62000,
"customerEmail": "info@mapaprop.com",
"customerAddress": "Calle 6666",
"branchId": 1,
"descriptionFormatted": "descripcion de la propiedad\ndescripcion de la propiedad\ndescripcion de la propiedad\ndescripcion de la propiedad\ndescripcion de la propiedad",
"published": true,
"bathrooms": 1,
"customerName": "Mapaprop INC",
"dependencies": 2,
"propertyOperation": 1,
"bedrooms": 1,
"yearsOld": 2,
"conditions": "condiciones optimas para vivir",
"expensesCurrency": "ARS",
"description": "descripcion de la propiedad descripcion de la propiedad descripcion de la propiedad descripcion de la propiedad descripcion de la propiedad",
"alternativePrices": [],
"title": "Semipisos en Nuevo edificio de Categoria",
"totalFloors": 8,
"customerCountry": 1,
"toilettes": 2,
"customerPhone": "1111-1111-",
"rented": false,
"floors": 1,
"expensesPrice": 29000,
"propertyType": 220,
"customerId": 1,
"currency": "USD",
"address": "Camarones 2721",
"zone3": 1344,
"zone2": 134,
"zone1": 1,
"zone0": 1,
"taxCurrency": "USD",
"taxPrice": 400,
"location": {
"lon": "-58.47843509999999",
"lat": "-34.6111005"
},
"images" : [
{"url": "https://images.mapaprop.app/photos/2563/258096/2897613.jpg", "description":"Primera Imagen"},
{"url": "https://images.mapaprop.app/photos/2563/258096/2897600.jpg", "description":"Segunda Imagen"},
{"url": "https://images.mapaprop.app/photos/2563/258096/2897610.jpg", "description":"Tercer Imagen"},
{"url": "https://images.mapaprop.app/photos/2563/258096/2897609.jpg", "description":"Cuarta Imagen"}
],
"videoDescription": "Video de ejemplo",
"videoUrl": "https://www.youtube.com/shorts/LwtS1Hzempo",
"attributes": [
{
"group_sub": "label",
"country": "ar",
"key_legacy": "accessible",
"group_subtype": "ammenities",
"id": "accessible",
"label": "Accesible",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "airConditonerType",
"country": "ar",
"key_legacy": "1",
"id": "airConditonerTypeCentral",
"label": "Aire acondicionado Central",
"locale": "es_AR",
"type": "list",
"value": "1",
"group": "propertyAttribute"
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "alarm",
"group_subtype": "ammenities",
"id": "alarm",
"label": "Alarma",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "balcony",
"country": "ar",
"key_legacy": "1",
"id": "balconyFrench",
"label": "Balcón Francés",
"locale": "es_AR",
"type": "list",
"group": "propertyAttribute"
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "barbecueArea",
"group_subtype": "spaces",
"id": "barbecue-area",
"label": "Quincho",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "cableIncluded",
"group_subtype": "services",
"id": "cable-included",
"label": "TV Cable incluido",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "countryClub",
"group_subtype": "extras",
"id": "country-club",
"label": "Country club",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "dailyDining",
"group_subtype": "spaces",
"id": "daily-dinning",
"label": "Comedor diario",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "propertyType",
"country": "ar",
"key_legacy": "23",
"id": "developmentRealEstate",
"label": "Desarrollo inmobiliario",
"locale": "es_AR",
"type": "string",
"group": "type"
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "electricGenerator",
"group_subtype": "ammenities",
"id": "electric-generator",
"label": "Generador eléctrico",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "electricity",
"group_subtype": "services",
"id": "electricity",
"label": "Electricidad",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "frontGarden",
"group_subtype": "spaces",
"id": "front-garden",
"label": "Jardín al frente",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "furnished",
"group_subtype": "ammenities",
"id": "furnished",
"label": "Amoblado",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "garageType",
"country": "ar",
"number": 2,
"key_legacy": "1",
"id": "garageSpace",
"label": "Espacio Guarda Coche",
"locale": "es_AR",
"type": "list",
"value": "1",
"group": "propertyAttribute"
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "gatedCommunity",
"group_subtype": "extras",
"id": "gated-community",
"label": "Barrio cerrado",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "grill",
"group_subtype": "ammenities",
"id": "grill",
"label": "Parrilla",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "heatingType",
"country": "ar",
"key_legacy": "1",
"id": "heatingCentral",
"label": "Calefacción Central",
"locale": "es_AR",
"type": "list",
"value": "1",
"group": "propertyAttribute"
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "internet",
"group_subtype": "services",
"id": "internet",
"label": "Internet",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "jacuzzi",
"group_subtype": "ammenities",
"id": "jacuzzi",
"label": "Hidromasaje",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "janitor",
"group_subtype": "services",
"id": "janitor",
"label": "Portero",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "hasLaundry",
"group_subtype": "spaces",
"id": "laundry",
"label": "Lavadero",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "laundryMachine",
"group_subtype": "ammenities",
"id": "laundry-machine",
"label": "Lavarropas",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "mortgageReady",
"group_subtype": "extras",
"id": "mortgage-ready",
"label": "Apto crédito",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "orientation",
"country": "ar",
"key_legacy": "1",
"id": "orientationEast",
"label": "Orientación Este",
"locale": "es_AR",
"type": "list",
"value": "1",
"group": "propertyAttribute"
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "park",
"group_subtype": "spaces",
"id": "park",
"label": "Parque",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "partySaloon",
"group_subtype": "spaces",
"id": "party-saloon",
"label": "Salón de fiestas / SUM",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "hasPatio",
"group_subtype": "spaces",
"id": "patio",
"label": "Patio",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "pavement",
"group_subtype": "services",
"id": "pavement",
"label": "Pavimento",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "petsReady",
"group_subtype": "extras",
"id": "petsReady",
"label": "Apto mascotas",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "pipedWater",
"group_subtype": "services",
"id": "pipedWater",
"label": "Agua Corriente",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "playroom",
"group_subtype": "spaces",
"id": "playroom",
"label": "Playroom",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "hasPrivatElevator",
"group_subtype": "ammenities",
"id": "private-elevator",
"label": "Elevador privado",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "professionalAvailable",
"group_subtype": "extras",
"id": "professional-available",
"label": "Apto profesional",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "propertyOperation",
"country": "ar",
"key_legacy": "1",
"id": "sale",
"label": "Venta",
"locale": "es_AR",
"type": "string",
"group": "operation"
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "hasSecurity",
"group_subtype": "services",
"id": "security",
"label": "Seguridad",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "securityBox",
"group_subtype": "ammenities",
"id": "security-box",
"label": "Caja de seguridad",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "sewers",
"group_subtype": "services",
"id": "sewers",
"label": "Cloacas",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "hasStorage",
"group_subtype": "spaces",
"id": "storage",
"label": "Baulera",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "suite",
"group_subtype": "spaces",
"id": "suite",
"label": "Dormitorio en suite",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "hasSwimmingPool",
"group_subtype": "ammenities",
"id": "swimming-pool",
"label": "Piscina",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "telephoneLine",
"group_subtype": "services",
"id": "telephone-line",
"label": "Línea telefónica",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "terrace",
"group_subtype": "spaces",
"id": "terrace",
"label": "Terraza",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
},
{
"group_sub": "ubication",
"country": "ar",
"key_legacy": "1",
"id": "ubicationFront",
"label": "Ubicación Frente",
"locale": "es_AR",
"type": "list",
"value": "1",
"group": "propertyAttribute"
},
{
"group_sub": "waterHeaterType",
"country": "ar",
"key_legacy": "2",
"id": "waterHeaterThermostatic",
"label": "Agua caliente Termotanque",
"locale": "es_AR",
"type": "list",
"value": "2",
"group": "propertyAttribute"
},
{
"group_sub": "label",
"country": "ar",
"key_legacy": "wifi",
"group_subtype": "services",
"id": "wifi",
"label": "WIFI",
"locale": "es_AR",
"type": "bool",
"group": "propertyAttribute",
"status": true
}
],
}
Complete property model
| Atributo | Descrição |
|---|---|
zipCode | CEP do imóvel. |
landArea | Área do terreno em metros quadrados. |
buildingArea | Área construída em metros quadrados. |
ubication | Identificador de localização. |
type | Tipo de imóvel. |
apartmentsPerFloor | Número de apartamentos por andar. |
ambiences | Número de cômodos no imóvel. |
price | Preço do imóvel. |
customerEmail | E-mail do cliente. |
customerAddress | Endereço do cliente. |
branchId | Identificador da filial. |
descriptionFormatted | Descrição formatada do imóvel. |
published | Indica se o imóvel está publicado. |
bathrooms | Número de banheiros no imóvel. |
customerName | Nome do cliente. |
dependencies | Número de dependências de serviço. |
propertyOperation | Tipo de operação do imóvel (venda, aluguel, etc.). |
bedrooms | Número de quartos. |
yearsOld | Idade do imóvel em anos. |
conditions | Condições do imóvel. |
expensesCurrency | Moeda das despesas de condomínio. |
description | Descrição breve do imóvel. |
alternativePrices | Lista de preços alternativos (vazia). |
title | Título do imóvel. |
totalFloors | Número total de andares no edifício. |
customerCountry | País do cliente (como identificador). |
toilettes | Número de lavabos. |
customerPhone | Telefone do cliente. |
rented | Indica se o imóvel está alugado. |
floors | Número de andares. |
expensesPrice | Valor das despesas de condomínio. |
propertyType | Tipo de imóvel (como identificador). |
customerId | Identificador do cliente. |
currency | Moeda do preço do imóvel. |
address | Endereço do imóvel. |
zone3, zone2, zone1, zone0 | Identificadores de zona geográfica. |
taxCurrency | Moeda dos impostos. |
taxPrice | Valor dos impostos. |
location | Objeto que inclui lon (longitude) e lat (latitude) do imóvel. |
images | Lista de objetos com url e description para imagens do imóvel. |
videoDescription | Descrição do vídeo do imóvel. |
videoUrl | URL do vídeo associado ao imóvel. |
attributes | Lista de atributos com detalhes como group, type, label, locale, etc. para características do imóvel. |
Internos do atributo location
| Atributo | Descrição |
|---|---|
lon | Longitude geográfica. |
lat | Latitude geográfica. |
Internos do atributo images
| Atributo | Descrição |
|---|---|
url | URL da imagem. |
description | Descrição da imagem. |
Internos do atributo attributes
| Atributo | Descrição |
|---|---|
group | Grupo ao qual pertence o atributo (ex.: "propertyAttribute"). |
type | Tipo do atributo (ex.: bool, list, string). |
label | Rótulo do atributo (ex.: "Accesible"). |
locale | Localização linguística associada ao atributo (ex.: es_AR). |
status | Status do atributo (ex.: true ou false, se aplicável). |
value | Valor associado ao atributo (se aplicável). |
group_subtype | Subgrupo dentro do grupo principal. |
id | Identificador único do atributo. |
country | País associado ao atributo (ex.: "ar"). |
key_legacy | Chave legada do atributo. |
Response
A importação é assíncrona. O endpoint inicia o processamento em segundo plano e responde imediatamente com o identificador da execução (executionArn), que é então utilizado para consultar o status em GET /property/get/status/machine/{executionArn}.
| Field | Type | Description |
|---|---|---|
message | string | Confirmação de que o processamento foi iniciado (Property creation started). |
executionArn | string | Identificador da execução para consultar o status do andamento. |
Sample response
{
"message": "Property creation started",
"executionArn": "arn:aws:states:us-east-1:000000000000:execution:PropertyWorkflow:Property-1717500000000"
}
Erros
| Status | Corpo | Causa |
|---|---|---|
| 401 | { "error": "Unauthorized: missing auth context" } | O token não resolveu um customerId válido. |
| 401 | { "error": "Unauthorized: missing Bearer token" } | O header Authorization: Bearer {access_token} está ausente. |
| 500 | { "error": "..." } | Erro ao iniciar o processamento. |
Os erros de validação de campos obrigatórios (Missing required field: {campo}, Invalid type for {campo}: expected {tipo}) ocorrem durante o processamento assíncrono e são reportados ao consultar o status da execução.