A Space is a team-sharing group for Lumen: monitors, alert rules, notification channels, status pages, alerts and maintenance windows can be shared into one, and its members see them. Create a Space here to get the spaceId you pass when creating those resources. Space routes change who can see your data, so they need their own monitoring:spaces scope; monitoring:manage does not cover them, and monitoring:* does. A key without it gets 403 INSUFFICIENT_SCOPE.
A member is the owner, an admin or a member. Space ids and user ids are returned by the calls below.
Create a Space you own. Send { "name": "Platform team" }. Returns 201 with { "id": "space_1" }.
curl -X POST https://projecthollow.com/lumen/ingest/v1/spaces \
-H "Authorization: Bearer hlw_sk_…" \
-H "Content-Type: application/json" \
-d '{ "name": "Platform team" }'List every Space you own or belong to. Each entry has its id, name, ownerId, the member ids and emails, and each member's role.
One Space, as { "space": { … } }. A Space you do not belong to is 404 NOT_FOUND, the same as one that does not exist.
Delete a Space. Only its owner can. Nothing shared into it is deleted: every monitor, rule, channel, status page, alert and window that was in the Space is kept and goes back to being private to the person who owns it. Returns { "deleted": true, "stripped": <count> }, where stripped is how many resources were unshared.
Add a member by email: { "email": "sam@example.com" }. The owner or an admin can invite, and the address must belong to an active Hollow account; any other address gets 404 NOT_FOUND, without saying why. Someone already in the Space gets 409 CONFLICT. Your plan caps the number of members (RESOURCE_LIMIT_EXCEEDED). Returns { "uid": "…", "email": "sam@example.com", "ownerId": "…" }.
Change a member's role: { "role": "admin" } or { "role": "member" }. The owner's role is fixed, and only the owner can manage admins. Returns { "uid": "…", "role": "admin", "ownerId": "…" }.
Remove a member. The owner or an admin can; an admin cannot remove another admin, and the owner cannot be removed. Returns { "removed": true, "ownerId": "…" }.
Leave a Space you are a member of. The owner cannot leave: transfer ownership or delete the Space instead. Returns { "left": true, "ownerId": "…" }.
Hand ownership to another member: { "uid": "…" }. Only the current owner can, and the new owner must already be a member. You become an admin. Returns { "ownerId": "…" } with the new owner's id.