PROD

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 = true field.
  • You must know the branchId. The customerId is 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
AuthenticationRequired (JWT)
HTTP MethodPOST
ResponseJSON
Version1

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}):

FieldType
titlestring
addressstring
propertyOperationnumber
typenumber
zone0number
zone1number
zone2number
zipCodestring
descriptionstring
pricenumber
ambiencesnumber
landAreanumber
buildingAreanumber
roomsnumber
yearsOldnumber
branchIdnumber
currencystring

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

AttributeDescription
zipCodeProperty postal code.
landAreaLand area in square meters.
buildingAreaBuilt area in square meters.
ubicationLocation identifier.
typeProperty type.
apartmentsPerFloorNumber of apartments per floor.
ambiencesNumber of rooms in the property.
priceProperty price.
customerEmailCustomer email address.
customerAddressCustomer address.
branchIdBranch identifier.
descriptionFormattedFormatted property description.
publishedIndicates whether the property is published.
bathroomsNumber of bathrooms in the property.
customerNameCustomer name.
dependenciesNumber of service dependencies.
propertyOperationProperty operation type (sale, rental, etc.).
bedroomsNumber of bedrooms.
yearsOldProperty age in years.
conditionsProperty conditions.
expensesCurrencyCurrency for common expenses.
descriptionBrief property description.
alternativePricesList of alternative prices (empty).
titleProperty title.
totalFloorsTotal number of floors in the building.
customerCountryCustomer country (as identifier).
toilettesNumber of toilets.
customerPhoneCustomer phone number.
rentedIndicates whether the property is rented.
floorsNumber of floors.
expensesPriceCommon expenses price.
propertyTypeProperty type (as identifier).
customerIdCustomer identifier.
currencyProperty price currency.
addressProperty address.
zone3, zone2, zone1, zone0Geographic zone identifiers.
taxCurrencyTax currency.
taxPriceTax price.
locationObject containing lon (longitude) and lat (latitude) of the property.
imagesList of objects with url and description for property images.
videoDescriptionProperty video description.
videoUrlURL of the video associated with the property.
attributesList of attributes with details such as group, type, label, locale, etc. for property features.

location attribute internals

AttributeDescription
lonGeographic longitude.
latGeographic latitude.

images attribute internals

AttributeDescription
urlImage URL.
descriptionImage description.

attributes attribute internals

AttributeDescription
groupGroup the attribute belongs to (e.g., "propertyAttribute").
typeAttribute type (e.g., bool, list, string).
labelAttribute label (e.g., "Accesible").
localeLanguage locale associated with the attribute (e.g., es_AR).
statusAttribute status (e.g., true or false, if applicable).
valueValue associated with the attribute (if applicable).
group_subtypeSub-group within the main group.
idUnique attribute identifier.
countryCountry associated with the attribute (e.g., "ar").
key_legacyLegacy 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}.

FieldTypeDescription
messagestringConfirmation that processing has started (Property creation started).
executionArnstringExecution identifier to query progress status.

Sample response

{
  "message": "Property creation started",
  "executionArn": "arn:aws:states:us-east-1:000000000000:execution:PropertyWorkflow:Property-1717500000000"
}

Errors

StatusBodyCause
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.