POST /property/post
Currently this feature is only compatible with https://www.mapaprop.com/
General Rules
Through a structured JSON, a property can be imported into Mapaprop.
- You must have a Mapaprop account.
- You must have at least 1 image.
- Images must be available at a URL.
- Certain fields are required.
- Upon certain failures, the import is rolled back.
- Regarding images:
- If there is more than one image, they are processed in ordered list.
- If at least one image can be fetched, the import is processed.
- If all images fail, the import is cancelled.
- The first image in the list will always be the
mainImage.
- You can set whether the property is published via the
published = truefield. - You must know the
branchId. ThecustomerIdis derived automatically from the authentication token (any value sent in the body is ignored for security reasons).
This service will import property JSON to Mapaprop.
Processing is asynchronous. The endpoint responds immediately with an executionArn that identifies the execution. Property creation, image download/processing and indexing happen in the background. Progress status can be queried with GET /property/get/status/machine/{executionArn}.
| Resource information | |
|---|---|
| Authentication | Required (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}
The request body is the property JSON (see "Complete JSON model"). The customerId is derived from the authentication token: if included in the body, it is ignored and replaced with the one from the token.
Required fields
The JSON must include at least these fields (otherwise the import is cancelled with Missing required field: {field} or Invalid type for {field}: expected {type}):
| Field | Type |
|---|---|
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
| Attribute | Description |
|---|---|
zipCode | Property postal code. |
landArea | Land area in square meters. |
buildingArea | Built area in square meters. |
ubication | Location identifier. |
type | Property type. |
apartmentsPerFloor | Number of apartments per floor. |
ambiences | Number of rooms in the property. |
price | Property price. |
customerEmail | Customer email address. |
customerAddress | Customer address. |
branchId | Branch identifier. |
descriptionFormatted | Formatted property description. |
published | Indicates whether the property is published. |
bathrooms | Number of bathrooms in the property. |
customerName | Customer name. |
dependencies | Number of service dependencies. |
propertyOperation | Property operation type (sale, rental, etc.). |
bedrooms | Number of bedrooms. |
yearsOld | Property age in years. |
conditions | Property conditions. |
expensesCurrency | Currency for common expenses. |
description | Brief property description. |
alternativePrices | List of alternative prices (empty). |
title | Property title. |
totalFloors | Total number of floors in the building. |
customerCountry | Customer country (as identifier). |
toilettes | Number of toilets. |
customerPhone | Customer phone number. |
rented | Indicates whether the property is rented. |
floors | Number of floors. |
expensesPrice | Common expenses price. |
propertyType | Property type (as identifier). |
customerId | Customer identifier. |
currency | Property price currency. |
address | Property address. |
zone3, zone2, zone1, zone0 | Geographic zone identifiers. |
taxCurrency | Tax currency. |
taxPrice | Tax price. |
location | Object containing lon (longitude) and lat (latitude) of the property. |
images | List of objects with url and description for property images. |
videoDescription | Property video description. |
videoUrl | URL of the video associated with the property. |
attributes | List of attributes with details such as group, type, label, locale, etc. for property features. |
location attribute internals
| Attribute | Description |
|---|---|
lon | Geographic longitude. |
lat | Geographic latitude. |
images attribute internals
| Attribute | Description |
|---|---|
url | Image URL. |
description | Image description. |
attributes attribute internals
| Attribute | Description |
|---|---|
group | Group the attribute belongs to (e.g., "propertyAttribute"). |
type | Attribute type (e.g., bool, list, string). |
label | Attribute label (e.g., "Accesible"). |
locale | Language locale associated with the attribute (e.g., es_AR). |
status | Attribute status (e.g., true or false, if applicable). |
value | Value associated with the attribute (if applicable). |
group_subtype | Sub-group within the main group. |
id | Unique attribute identifier. |
country | Country associated with the attribute (e.g., "ar"). |
key_legacy | Legacy attribute key. |
Response
The import is asynchronous. The endpoint starts background processing and responds immediately with the execution identifier (executionArn), which is then used to query the status via GET /property/get/status/machine/{executionArn}.
| Field | Type | Description |
|---|---|---|
message | string | Confirmation that processing has started (Property creation started). |
executionArn | string | Execution identifier to query progress status. |
Sample response
{
"message": "Property creation started",
"executionArn": "arn:aws:states:us-east-1:000000000000:execution:PropertyWorkflow:Property-1717500000000"
}
Errors
| Status | Body | Cause |
|---|---|---|
| 401 | { "error": "Unauthorized: missing auth context" } | The token did not resolve a valid customerId. |
| 401 | { "error": "Unauthorized: missing Bearer token" } | The Authorization: Bearer {access_token} header is missing. |
| 500 | { "error": "..." } | Error starting the processing. |
Validation errors for required fields (Missing required field: {field}, Invalid type for {field}: expected {type}) occur during asynchronous processing and are reported when querying the execution status.