DEVELOPER DOCS

REST API

Organizations & Members

On this page

These endpoints use UUIDs ({org_id}), not slugs.


Get current user

HTTP
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

JSON
{
  "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"]))

Use this to map the slugs used by /v1/observ/* to the UUIDs used by /v1/orgs/* and /v1/workspaces/*.


Get organization

HTTP
GET /v1/orgs/{org_id}

Auth: any credential · Role: dev

Path parameters

NameTypeRequiredDescription
org_idstring (UUID)✅Organization ID

Examples

org = evigauge.get(f"/v1/orgs/{org_id}")
print(org)

Update organization

HTTP
PATCH /v1/orgs/{org_id}

Auth: any credential · Role: admin

Request body — OrgPatchBody

FieldTypeRequiredDescription
namestring | null➖Display name
contact_emailstring | null➖Billing / contact address
team_countstring | null➖Team size band

All fields optional — send only what changes.

Examples

evigauge.patch(f"/v1/orgs/{org_id}", json={"name": "Acme Corporation"})

List members

HTTP
GET /v1/orgs/{org_id}/members

Auth: any credential · Role: dev

Examples

members = evigauge.get(f"/v1/orgs/{org_id}/members")
print(members)

Change a member's role

HTTP
PATCH /v1/orgs/{org_id}/members/{user_id}

Auth: any credential · Role: admin

Request body — MemberPatchBody

FieldTypeRequiredDescription
new_rolestring✅viewer | dev | admin | owner
target_workspace_idstring | 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"})

Promoting to owner does not demote the existing owner — use transfer ownership for that.


Remove a member

HTTP
DELETE /v1/orgs/{org_id}/members/{user_id}

Auth: any credential · Role: admin

Examples

evigauge.delete(f"/v1/orgs/{org_id}/members/{user_id}")

Transfer ownership

HTTP
POST /v1/orgs/{org_id}/transfer-ownership

Auth: any credential · Role: owner — the only owner-gated endpoint.

Request body — TransferOwnershipBody

FieldTypeRequiredDescription
to_user_idstring✅UUID of the member who becomes owner

Examples

evigauge.post(f"/v1/orgs/{org_id}/transfer-ownership",
              json={"to_user_id": new_owner_uuid})

Irreversible by the caller. After this succeeds you are admin, not owner, and only the new owner can transfer it back.