DEVELOPER DOCS

REST API

Workspaces

On this page

Workspaces can be created through two paths, which differ in identifier type and request shape.

EndpointOrg identified byBody fieldsRole
POST /v1/orgs/{org_id}/workspacesUUID in pathname, optional slugadmin
POST /v1/observ/orgs/{org}/workspacesslug in pathslug and name, both requiredadmin

Create a workspace

HTTP
POST /v1/orgs/{org_id}/workspaces

Auth: any credential · Role: admin

Request body

FieldTypeRequiredDescription
namestring✅Display name
slugstring | null➖URL slug. Derived from name when omitted.

Examples

ws = evigauge.post(f"/v1/orgs/{org_id}/workspaces",
                   json={"name": "Staging", "slug": "staging"})
print(ws)

Errors

StatusCause
409Slug already taken within the organization

Create a workspace (observ path)

HTTP
POST /v1/observ/orgs/{org}/workspaces

Auth: any credential · Role: admin

Request body — WorkspaceCreate

FieldTypeRequiredDescription
slugstring✅URL slug — required here, unlike the UUID-path variant
namestring✅Display name

Examples

evigauge.post("/v1/observ/orgs/{org}/workspaces",
              json={"slug": "staging", "name": "Staging"})

List workspaces

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

Auth: any credential · Role: dev

Examples

# Resolve a slug to the UUID that /v1/workspaces/* needs.
wss = evigauge.get(f"/v1/orgs/{org_id}/workspaces")
by_slug = {w["slug"]: w["id"] for w in wss}
print(by_slug["prod"])

Get a workspace

HTTP
GET /v1/workspaces/{ws_id}

Auth: any credential · Role: dev

Examples

print(evigauge.get(f"/v1/workspaces/{ws_id}"))

Update a workspace

HTTP
PATCH /v1/workspaces/{ws_id}

Auth: any credential · Role: admin

Request body — WorkspacePatchBody

FieldTypeRequiredDescription
namestring | null➖New display name
slugstring | null➖New URL slug

Examples

evigauge.patch(f"/v1/workspaces/{ws_id}", json={"name": "Production (EU)"})

Changing slug breaks every hard-coded /v1/observ/orgs/{org}/workspaces/{ws}/… URL in your integrations and dashboards. Rename deliberately.


Delete a workspace

HTTP
DELETE /v1/workspaces/{ws_id}

Soft-deletes the workspace.

Auth: any credential · Role: admin

Examples

evigauge.delete(f"/v1/workspaces/{ws_id}")

The workspace disappears from listings and its API keys stop working immediately. Deletion is soft, but there is no self-serve undelete endpoint.