REST API
Organizations & Members
On this page
These endpoints use UUIDs ({org_id}), not slugs.
Get current user
GET /v1/auth/me
The authenticated principal and their memberships. The natural first call for a dashboard session.
Auth: any credential · Role: any authenticated principal
Response 200 — not schema-modelled
{
"user_id": "3f2b1c8e-9a4d-4f11-b7c2-1e5a8d3f6b90",
"email": "dev@acme.com",
"auth_method": "jwt",
"memberships": [
{
"org_id": "8c1d...", "org_slug": "acme", "role": "admin",
"workspaces": [{ "workspace_id": "3f2b...", "slug": "prod", "name": "Production" }]
}
]
}
Examples
me = evigauge.get("/v1/auth/me")
for m in me["memberships"]:
print(f"{m['org_slug']} ({m['role']}):",
", ".join(w["slug"] for w in m["workspaces"]))
const me = await evigauge.get("/v1/auth/me");
me.memberships.forEach((m: any) =>
console.log(`${m.org_slug} (${m.role}):`, m.workspaces.map((w: any) => w.slug).join(", ")));
Use this to map the slugs used by
/v1/observ/*to the UUIDs used by/v1/orgs/*and/v1/workspaces/*.
Get organization
GET /v1/orgs/{org_id}
Auth: any credential · Role: dev
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
org_id | string (UUID) | ✅ | Organization ID |
Examples
org = evigauge.get(f"/v1/orgs/{org_id}")
print(org)
console.log(await evigauge.get(`/v1/orgs/${orgId}`));
Update organization
PATCH /v1/orgs/{org_id}
Auth: any credential · Role: admin
Request body — OrgPatchBody
| Field | Type | Required | Description |
|---|---|---|---|
name | string | null | ➖ | Display name |
contact_email | string | null | ➖ | Billing / contact address |
team_count | string | null | ➖ | Team size band |
All fields optional — send only what changes.
Examples
evigauge.patch(f"/v1/orgs/{org_id}", json={"name": "Acme Corporation"})
await evigauge.patch(`/v1/orgs/${orgId}`, { name: "Acme Corporation" });
List members
GET /v1/orgs/{org_id}/members
Auth: any credential · Role: dev
Examples
members = evigauge.get(f"/v1/orgs/{org_id}/members")
print(members)
console.log(await evigauge.get(`/v1/orgs/${orgId}/members`));
Change a member's role
PATCH /v1/orgs/{org_id}/members/{user_id}
Auth: any credential · Role: admin
Request body — MemberPatchBody
| Field | Type | Required | Description |
|---|---|---|---|
new_role | string | ✅ | viewer | dev | admin | owner |
target_workspace_id | string | null | ➖ | Scope the role to one workspace instead of the whole org |
Examples
evigauge.patch(f"/v1/orgs/{org_id}/members/{user_id}", json={"new_role": "dev"})
await evigauge.patch(`/v1/orgs/${orgId}/members/${userId}`, { new_role: "dev" });
Promoting to
ownerdoes not demote the existing owner — use transfer ownership for that.
Remove a member
DELETE /v1/orgs/{org_id}/members/{user_id}
Auth: any credential · Role: admin
Examples
evigauge.delete(f"/v1/orgs/{org_id}/members/{user_id}")
await evigauge.del(`/v1/orgs/${orgId}/members/${userId}`);
Transfer ownership
POST /v1/orgs/{org_id}/transfer-ownership
Auth: any credential · Role: owner — the only owner-gated endpoint.
Request body — TransferOwnershipBody
| Field | Type | Required | Description |
|---|---|---|---|
to_user_id | string | ✅ | UUID of the member who becomes owner |
Examples
evigauge.post(f"/v1/orgs/{org_id}/transfer-ownership",
json={"to_user_id": new_owner_uuid})
await evigauge.post(`/v1/orgs/${orgId}/transfer-ownership`, { to_user_id: newOwnerUuid });
Irreversible by the caller. After this succeeds you are
admin, notowner, and only the new owner can transfer it back.