DEVELOPING

Check and disconnect

These endpoints are common to both ways of connecting: it does not matter whether the account was connected with a link or with the credential.

MethodPathWhat it does
GET/connectionsLists a client's connections
GET/connections/{portal}Returns one connection
DELETE/connections/{portal}Unlinks the connection

Check status, not whether the connection exists. The list also returns revoked ones: we keep the record so the client can reconnect. If your code does if (connections.length > 0) it will treat a disconnected client as connected.

status: "active" → connected. "revoked" or 404 → not.

GET /connections

Lists the client's connections. It only returns the portals you have scope for: if you work with Argenprop and your client also has a connection to another portal, that one does not appear.

curl https://property-api.mapaprop.com/connections \
  -H "Authorization: Bearer <TU_TOKEN>" \
  -H "x-client-ref: cliente-42"

200 response: { "connections": [ ... ] }, with the same fields as the POST.

GET /connections/{portal}

Returns one connection. 404 if that client does not have it.

DELETE /connections/{portal}

Disconnects the connection: we delete the stored credential and the account stops receiving inquiries from the portal through us.

We do not touch the listings published on the portal. The listings belong to your client and stay online exactly as they were. Disconnecting cuts off our access, nothing more. If your client wants to take their listings down, they have to do it on the portal.

It is idempotent: disconnecting something already disconnected responds 200 all the same.

{ "status": "revoked", "alreadyRevoked": false, "externalListingsUntouched": true }

Errors

CodeerrorWhat happened
400portal is required / portal must be a non-empty stringThe portal is missing or is not text
400Invalid JSON bodyThe body is not valid JSON
400clientRef is required (header x-client-ref, query or body)The client is not identified
400(several, with field)A field does not meet the format or exceeds a maximum
401UnauthorizedThe token is missing or is not valid
403Missing required scope: argenpropapi:connectYour application does not have the scope for that portal
404Connection not foundThat client has no connection with that portal
409portal account already connectedThat portal account is already connected by another application
503Connection storage is temporarily unavailable (encryption backend)A temporary problem on our side. Retry

A 403 tells you exactly which scope is missing, and that text includes the portal just as you sent it. If you see Missing required scope: argenprop:connect instead of argenpropapi:connect, the problem is the portal value, not your permissions.