Publish and unpublish a development
A real estate development is published through its own resource, not through the one for properties:
PUT /property-v1/developments/{paId}/publication/{portal}
DELETE /property-v1/developments/{paId}/publication/{portal}
Same scope as publishing a property ({portal}:publish), same paId — the development's.
| Portal | {portal} value | Status |
|---|---|---|
| Zonaprop | zonapropapi | available |
| Argenprop, MercadoLibre, Cabaprop | — | coming soon |
If you ask for a development on a portal that does not support it yet, we answer 501 naming it —
not a generic error. A portal can be available for standalone listings and not yet for developments.
This does not change how a development is created: you still create it with
POST /property-v1/propertiesand itsdevelopmentgroup inside. What has its own resource is publication.
1. One call, the whole development
When you publish a development, its units travel in the same call. There is no need to publish them one by one, and it is better not to: the portal receives the parent listing with its units inside.
curl -X PUT "https://property-api.mapaprop.com/property-v1/developments/01M3Z4MF6S817S9V8QADXFFXN3/publication/zonapropapi" \
-H "Authorization: Bearer $TOKEN" \
-H "x-client-ref: $CLIENT_REF" \
-H "Content-Type: application/json" \
-d '{ "plan": "DESARROLLOS_DESTACADO" }'
Why it matters: the portal has a call limit
Zonaprop allows 1,500 calls per month per real estate agency, and that limit is shared between publishing, checking status and fetching enquiries. For a development with 48 units the difference is this:
| Unit by unit | Through the development | |
|---|---|---|
| Publish | 49 calls | 1 |
| Take down | 49 | 1 |
That is why the resource exists: walking through the units spends your monthly budget on a single development.
2. What we answer: unit by unit
The portal answers us with one entry per listing —the parent and each unit— and we pass it on to you summarised. This is what is most worth looking at:
{
"status": "published",
"portal": "zonaprop",
"development": {
"total": 48,
"published": 45,
"withError": 3,
"codesWithError": ["TORRE-4B", "TORRE-5A", "TORRE-PH"]
},
"quota": { "remaining": 1432, "limit": 1500 }
}
A partial publication is not reported to you as a success. If the portal accepts the parent and
rejects three units, withError is 3 and we tell you which ones by their code. This used to come
back as published, and the only way to find out was to look at the listing.
The
codesWithErrorare your codes (thecodeyou sent, or thepaId), not portal ids.
Listings the portal accepts "with remarks"
The portal can accept a unit and still say something — for example that a value came in empty and it set it to 0. That is not an error: the unit was published. We pass it on to you anyway, because it is usually the clue that one of your values is missing.
3. With more than 15 units, the portal processes in deferred mode
If the development has 16 units or more, Zonaprop does not process it on the spot: it acknowledges receipt and keeps working. In that case we answer:
{ "status": "received", "processing": "async" }
received is not published. It means the portal took it, not that it is already live. Do not
store it as published until you confirm it.
4. Taking it down
curl -X DELETE "https://property-api.mapaprop.com/property-v1/developments/01M3Z4MF6S817S9V8QADXFFXN3/publication/zonapropapi" \
-H "Authorization: Bearer $TOKEN" \
-H "x-client-ref: $CLIENT_REF"
It takes down the development and its units, in one call. Same as with a property:
- It deletes nothing: the development stays in your inventory and you can publish it again.
- It is idempotent: if it was no longer published, we still answer
200. You can retry without worry. - And we also tell you how many listings came down, with the same
developmentblock — with one difference in naming, because it measures something else:
{ "status": "unpublished",
"development": { "total": 48, "unpublished": 48, "withError": 0, "codesWithError": [] } }
5. If you use the wrong resource, we tell you
A development through the properties resource —or a property through the developments one— is a 400, and the message tells you the exact URL:
{
"error": "recurso_incorrecto",
"detail": "Ese objeto es un DESARROLLO inmobiliario (tiene el grupo `development`). Usá `/property-v1/developments/{paId}/publication/{portal}`.",
"expected": "developments",
"received": "properties"
}
We do not spend one of the portal's calls to tell you this: the check happens before.
Why the two resources exist: the portal has them separated as well, with different formats. If we sent a development through the path of a standalone listing, it would be published without its units.
6. Before publishing on Zonaprop
A development also needs to know whether it is horizontal or vertical. If your fields already say so, we work it out; if not, we ask you for it.
The development object — it is explained in its §4, with both cases.
7. Response codes
| Code | What happened |
|---|---|
200 | Published or taken down. Check development.withError before considering it closed |
400 recurso_incorrecto | You used the resource that does not apply. The message names the right one |
400 portal_no_soportado | That portal does not publish developments through here yet |
409 portal_not_connected | That agency does not have the portal account connected |
422 | A value is missing to publish. We tell you which one, and whether you can fix it yourself |
501 | The portal is supported for listings but not yet for developments |
8. Related
The development object — how it is declared and the unit rules
Verify before creating — try it out without publishing anything
developmentStats — the calculated numbers of its units
Publish a property — the resource for standalone listings