PROD

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. O customerId é 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
AuthenticationObrigatória (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}

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

CampoTipo
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

AtributoDescrição
zipCodeCEP do imóvel.
landAreaÁrea do terreno em metros quadrados.
buildingAreaÁrea construída em metros quadrados.
ubicationIdentificador de localização.
typeTipo de imóvel.
apartmentsPerFloorNúmero de apartamentos por andar.
ambiencesNúmero de cômodos no imóvel.
pricePreço do imóvel.
customerEmailE-mail do cliente.
customerAddressEndereço do cliente.
branchIdIdentificador da filial.
descriptionFormattedDescrição formatada do imóvel.
publishedIndica se o imóvel está publicado.
bathroomsNúmero de banheiros no imóvel.
customerNameNome do cliente.
dependenciesNúmero de dependências de serviço.
propertyOperationTipo de operação do imóvel (venda, aluguel, etc.).
bedroomsNúmero de quartos.
yearsOldIdade do imóvel em anos.
conditionsCondições do imóvel.
expensesCurrencyMoeda das despesas de condomínio.
descriptionDescrição breve do imóvel.
alternativePricesLista de preços alternativos (vazia).
titleTítulo do imóvel.
totalFloorsNúmero total de andares no edifício.
customerCountryPaís do cliente (como identificador).
toilettesNúmero de lavabos.
customerPhoneTelefone do cliente.
rentedIndica se o imóvel está alugado.
floorsNúmero de andares.
expensesPriceValor das despesas de condomínio.
propertyTypeTipo de imóvel (como identificador).
customerIdIdentificador do cliente.
currencyMoeda do preço do imóvel.
addressEndereço do imóvel.
zone3, zone2, zone1, zone0Identificadores de zona geográfica.
taxCurrencyMoeda dos impostos.
taxPriceValor dos impostos.
locationObjeto que inclui lon (longitude) e lat (latitude) do imóvel.
imagesLista de objetos com url e description para imagens do imóvel.
videoDescriptionDescrição do vídeo do imóvel.
videoUrlURL do vídeo associado ao imóvel.
attributesLista de atributos com detalhes como group, type, label, locale, etc. para características do imóvel.

Internos do atributo location

AtributoDescrição
lonLongitude geográfica.
latLatitude geográfica.

Internos do atributo images

AtributoDescrição
urlURL da imagem.
descriptionDescrição da imagem.

Internos do atributo attributes

AtributoDescrição
groupGrupo ao qual pertence o atributo (ex.: "propertyAttribute").
typeTipo do atributo (ex.: bool, list, string).
labelRótulo do atributo (ex.: "Accesible").
localeLocalização linguística associada ao atributo (ex.: es_AR).
statusStatus do atributo (ex.: true ou false, se aplicável).
valueValor associado ao atributo (se aplicável).
group_subtypeSubgrupo dentro do grupo principal.
idIdentificador único do atributo.
countryPaís associado ao atributo (ex.: "ar").
key_legacyChave 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}.

FieldTypeDescription
messagestringConfirmação de que o processamento foi iniciado (Property creation started).
executionArnstringIdentificador 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

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