DEVELOPING

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} valueStatus
Zonapropzonapropapiavailable
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/properties and its development group 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 unitThrough the development
Publish49 calls1
Take down491

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 codesWithError are your codes (the code you sent, or the paId), 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 development block — 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

CodeWhat happened
200Published or taken down. Check development.withError before considering it closed
400 recurso_incorrectoYou used the resource that does not apply. The message names the right one
400 portal_no_soportadoThat portal does not publish developments through here yet
409 portal_not_connectedThat agency does not have the portal account connected
422A value is missing to publish. We tell you which one, and whether you can fix it yourself
501The portal is supported for listings but not yet for developments

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