DEVELOPING

The property model

When you publish a property through PropertyAPI, you send it once using the Mapaprop model. We translate it into each portal's format.

For that to work across the 15 countries where we operate, there is one thing you need to understand well: the vocabulary is single. The type house is the same value in Argentina, in Mexico and in Brazil. What changes from one country to another is what it is called on screen — "Departamento", "Piso", "Apartamento" — and which options are available, not the value you send.

If you integrate several countries, you learn one vocabulary, not fifteen.

Type and operation

They travel as numbers in the property JSON:

FieldWhat it is
typeThe property type
propertyOperationThe operation

Those numbers are stable: they mean the same thing in every country.

There are seven operations:

propertyOperationOperation
1Sale
2Rent
3Temporary rent
4Exchange
5Transfer
6Share
7Auction

There are twenty-three types and we do not list them here, because not all of them are enabled in every country. You get them from the catalog.

The catalog: where the values come from

GET /property-attributes returns, for a given country, everything that country accepts. Each entry includes:

FieldWhat it is
pa_keyThe text key — apartment, house, pool
pa_key_legacyThe stable value you send in the JSON
pa_labelThe translated label, to show to your user
pa_typeThe nature of the data: bool, list or string
pa_group_subtypeThe family, for grouping on screen — ammenities, spaces, services

With that you can translate in both directions: from your system into ours, and from our response into something readable for your user.

Request the catalog for the property's country, not for a single one. A type may be enabled in Argentina and not in Peru.

And keep this in mind: we do not validate the values against the catalog. The submission check verifies that the required fields are present and of the right data type — nothing else. A value that country does not use is not rejected: it is stored, and the property ends up published with wrong data. The catalog is not a suggestion: it is the only way to know what to send.

Attributes

Beyond the fixed fields, the property carries an attributes array with everything else: amenities, finishes, orientations. That is where the richness of the listing lives, and it is the same place for all three kinds of data:

pa_typeWhat it isWhat you send
boolIt has it or it does not — pool, barbecue, covered garagethe attribute entry, marked as present
listOne option among several — air conditioning type, orientationthe entry of the chosen option, with its value
stringA value with its own textthe entry, with the key of the value

Copy the exact field names of each entry from the example in The property JSON object — they are not the same for the three kinds, and they do not match the catalog's. That example is the contract.

What you send and what we fill in

The catalog carries more fields than you need to send. The rule is simple: send only what you know and we do not.

Who sets it
The customer identifierWe do, from your token — if you send it in the body, it is ignored
Everything elseYou

The attributes array is stored exactly as you send it, labels and language included: we do not rewrite it against the catalog. That means that if you make up a label, that is the one that will be displayed.

So: build each entry from the country's catalog instead of writing it by hand. Request GET /property-attributes for the property's country and copy the entry as it comes.

An example of the single vocabulary

The same property, published in two countries, sends the same value:

// Argentina
{ "type": 1, "propertyOperation": 1, "currency": "USD" }

// Spain — same type, same number
{ "type": 1, "propertyOperation": 1, "currency": "EUR" }

What changes is what your user sees: in Argentina the catalog returns pa_label: "Departamento"; in Spain, pa_label: "Piso".

And if the country is not in the catalog

If GET /property-attributes does not return the country you are looking for, that country is not yet enabled for publishing. Do not convert the values by hand and do not assume another country's values: write to us and we will enable it.

See also