DELETE /{o}/{p}/nukeWipe this project's data
Project-scoped self-service wipe, callable with a project API token at admin/owner. Destroys every row in every table the project's data reaches, leaving the project itself, its members, its repo links, its tokens, and its audit trail. Counts are keyed by SQL table name. Idempotent.
Auth: Bearer token required · Permission:
apply:write
Path parameters
| Name | Type | Description |
|---|---|---|
o | string | |
p | string |
Responses
| Status | Description | Schema |
|---|---|---|
200 | OK | ProjectNukeResult |
401 | Unauthorized | Error |
403 | Forbidden | Error |
GET /orgs/{orgId}/projectsList projects in an org
Org membership required.
Auth: Bearer token required
Path parameters
| Name | Type | Description |
|---|---|---|
orgId | string |
Responses
| Status | Description | Schema |
|---|---|---|
200 | OK | ProjectList |
401 | Unauthorized | Error |
403 | Forbidden | Error |
POST /orgs/{orgId}/projectsCreate a project
Org owner/admin only. Auto-creates the caller's owner membership and the default graph views.
Auth: Bearer token required
Path parameters
| Name | Type | Description |
|---|---|---|
orgId | string |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
name | string | Project name (required) |
slug | string | URL slug (lowercase, hyphens only) (required) |
Responses
| Status | Description | Schema |
|---|---|---|
201 | Created | Project |
401 | Unauthorized | Error |
403 | Forbidden | Error |
409 | Conflict | Error |
GET /orgs/{orgId}/projects/{projectId}Get a project
Org membership required.
Auth: Bearer token required
Path parameters
| Name | Type | Description |
|---|---|---|
orgId | string | |
projectId | string |
Responses
| Status | Description | Schema |
|---|---|---|
200 | OK | Project |
401 | Unauthorized | Error |
403 | Forbidden | Error |
404 | Not Found | Error |
PUT /orgs/{orgId}/projects/{projectId}Update a project
Org owner/admin only.
Auth: Bearer token required
Path parameters
| Name | Type | Description |
|---|---|---|
orgId | string | |
projectId | string |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
name | string | New project name |
metadata | object | Per-project UI settings |
Responses
| Status | Description | Schema |
|---|---|---|
200 | OK | Project |
401 | Unauthorized | Error |
403 | Forbidden | Error |
404 | Not Found | Error |
DELETE /orgs/{orgId}/projects/{projectId}Delete a project
Org owner only. Org admin no longer has project:delete.
Auth: Bearer token required
Path parameters
| Name | Type | Description |
|---|---|---|
orgId | string | |
projectId | string |
Responses
| Status | Description | Schema |
|---|---|---|
200 | OK | object |
401 | Unauthorized | Error |
403 | Forbidden | Error |
404 | Not Found | Error |
GET /orgs/{orgId}/projects/{projectId}/membersList project members
Org membership required.
Auth: Bearer token required
Path parameters
| Name | Type | Description |
|---|---|---|
orgId | string | |
projectId | string |
Responses
| Status | Description | Schema |
|---|---|---|
200 | OK | ProjectMemberList |
401 | Unauthorized | Error |
403 | Forbidden | Error |
404 | Not Found | Error |
POST /orgs/{orgId}/projects/{projectId}/membersAdd a project member
Org membership required. Org owner/admin, unrestricted. A project member with members:manage (project admin/owner) may also add members, capped at their own project role — they cannot grant a role senior to their own. The target must already be a member of the org that owns the project. This route is an upsert, so it is also how a role is changed; re-roling the project's last owner below owner is refused with 409.
Auth: Bearer token required
Path parameters
| Name | Type | Description |
|---|---|---|
orgId | string | |
projectId | string |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
userId | string | User ID (required) |
role | owner | admin | write | read | Role (owner|admin|write|read) |
Responses
| Status | Description | Schema |
|---|---|---|
201 | Created | object |
400 | Bad Request | Error |
401 | Unauthorized | Error |
403 | Forbidden | Error |
404 | Not Found | Error |
409 | Conflict | Error |
DELETE /orgs/{orgId}/projects/{projectId}/members/{userId}Remove a project member
Org membership required. Org owner/admin, unrestricted. A project member with members:manage (project admin/owner) may also remove members, capped at their own project role — they cannot remove a member senior to their own. Removing the project's last owner is refused with 409, whoever asks.
Auth: Bearer token required
Path parameters
| Name | Type | Description |
|---|---|---|
userId | string | User ID |
orgId | string | |
projectId | string |
Responses
| Status | Description | Schema |
|---|---|---|
200 | OK | object |
401 | Unauthorized | Error |
403 | Forbidden | Error |
404 | Not Found | Error |
409 | Conflict | Error |
PUT /orgs/{orgId}/projects/{projectId}/members/{userId}/cell-scopesSet a member's cell scopes
Org owner/admin only. null resets to all-cells; an array restricts the member to those cell values.
Auth: Bearer token required
Path parameters
| Name | Type | Description |
|---|---|---|
userId | string | User ID |
orgId | string | |
projectId | string |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
cellScopes | string[] | null | null = all cells; array = restrict to listed cell-label values (required) |
Responses
| Status | Description | Schema |
|---|---|---|
200 | OK | object |
401 | Unauthorized | Error |
403 | Forbidden | Error |
404 | Not Found | Error |
Error| Field | Type | Description |
|---|---|---|
error | string | (required) |
code | string |
Project| Field | Type | Description |
|---|---|---|
id | string | (required) |
orgId | string | (required) |
name | string | (required) |
slug | string | (required) |
isDemo | boolean | (required) |
metadata | object | (required) |
lastDriftRunAt | string | string | null | (required) |
createdAt | string | string | (required) |
updatedAt | string | string | (required) |
ProjectListType: Project[]
ProjectMemberListType: object[]
ProjectNukeResult| Field | Type | Description |
|---|---|---|
projectId | string | (required) |
rowCountsDeleted | object | (required) |