Offboard one of your members
Deactivates the member in the project: every card (physical AND the auto-generated one) is revoked, device access is withdrawn, and the member is removed from your access groups. The link between your externalUserId and the member is KEPT, so a later PUT re-activates the same member rather than creating a duplicate. Idempotent.
Authorization
bearerAuth Access token from POST /auth/accessToken
In: header
Path Parameters
YOUR stable identifier for the user (opaque to Keyspace). Bound to exactly one Keyspace member per app on first PUT.
length <= 128Response Body
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/partner/members/string"Read one of your members — profile, status and credential summary GET
Never returns face bytes (presence only). Unknown or foreign external ids are 403 KS221; a GET never creates a member.
Create or update one of YOUR users as a Keyspace member PUT
Idempotent on externalUserId. Resolves WHICH Keyspace member you mean before writing, in this order (first hit wins): (1) the member already linked to this externalUserId; (2) `email` → an existing Keyspace user (case-insensitive); (3) `phone` → an existing user after normalization (Thai numbers, `+66` default); (4) `employeeId` → a member of the project carrying that employee id; (5) nothing matched → a new member is created. A matched user that is not yet a member of your project is added as one. A key that resolves to a DIFFERENT member than the one already linked to this externalUserId — or to a member this app already manages under another externalUserId — is rejected 409 (`data.conflictKey` names the key); Keyspace never silently re-links. `unit` is a BINDING, never an identity: it places the member in the condo unit (first resident = reservation owner, later ones = participants) but never picks the person. First call links the member to your app and adds it to the access groups fixed at app provisioning (partnerAccessGroupIds) — devices only ever receive credentials through those groups (credential ≠ permission). Later calls update the profile. A previously offboarded member is re-activated by this call (same memberId, groups restored). Requires an app_credentials token (a delegated act_as token is rejected 403) and a single-project app.