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:
| Field | What it is |
|---|---|
type | The property type |
propertyOperation | The operation |
Those numbers are stable: they mean the same thing in every country.
There are seven operations:
propertyOperation | Operation |
|---|---|
1 | Sale |
2 | Rent |
3 | Temporary rent |
4 | Exchange |
5 | Transfer |
6 | Share |
7 | Auction |
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:
| Field | What it is |
|---|---|
pa_key | The text key — apartment, house, pool |
pa_key_legacy | The stable value you send in the JSON |
pa_label | The translated label, to show to your user |
pa_type | The nature of the data: bool, list or string |
pa_group_subtype | The 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_type | What it is | What you send |
|---|---|---|
bool | It has it or it does not — pool, barbecue, covered garage | the attribute entry, marked as present |
list | One option among several — air conditioning type, orientation | the entry of the chosen option, with its value |
string | A value with its own text | the 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 identifier | We do, from your token — if you send it in the body, it is ignored |
| Everything else | You |
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
- The property JSON object — the field reference for the object
GET /property-attributes— the catalog by country- Portal connections — connecting your customer's portal account