Appearance
Tenant API
8 operations. Paths are relative to the API host (http://localhost:5080 in local development). Every operation accepts an OIDC bearer token (Authorization: Bearer …) or a workspace API key (X-Api-Key: keel_live_…); errors are RFC 9457 Problem Details with a code (error codes). Permissions: matrix.
| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/tenant/deletion | Whether the organization is scheduled for deletion, and when (any member: the app shows a banner). |
| POST | /api/v1/tenant/deletion | Owner: delete the organization in 7 days (type its slug to confirm). It is read-only until then and the Owners are emailed; cancel before the date to keep it. |
| DELETE | /api/v1/tenant/deletion | Owner: cancel the scheduled deletion within its grace period; the organization is writable again. |
| GET | /api/v1/tenant/product-analytics | Whether this tenant shares product usage analytics (hashed ids, no customer data). |
| PUT | /api/v1/tenant/product-analytics | Opt the tenant out of product analytics, or back in (Owner). Applies within a minute on every instance. |
| GET | /api/v1/tenant/support-access | Support access (Owner): the active consent for Anchor support and every support session, newest first. |
| POST | /api/v1/tenant/support-access | Grant Anchor support time-boxed, read-only access (1–168 hours, with a reason). Replaces an active grant. |
| DELETE | /api/v1/tenant/support-access | Withdraw support access: open support sessions end at once. |
GetTenantDeletion
http
GET /api/v1/tenant/deletionWhether the organization is scheduled for deletion, and when (any member: the app shows a banner).
| Status | Description | Body |
|---|---|---|
| 200 | OK | TenantDeletionStateDto |
Response 200: TenantDeletionStateDto
| Field | Type | Notes |
|---|---|---|
scheduled | TenantDeletionDto? |
RequestTenantDeletion
http
POST /api/v1/tenant/deletionOwner: delete the organization in 7 days (type its slug to confirm). It is read-only until then and the Owners are emailed; cancel before the date to keep it.
Request body (application/json): RequestTenantDeletionRequest
| Field | Type | Notes |
|---|---|---|
confirmSlug | string |
| Status | Description | Body |
|---|---|---|
| 200 | OK | TenantDeletionDto |
Response 200: TenantDeletionDto
| Field | Type | Notes |
|---|---|---|
export | boolean | |
id | uuid | |
purgeJobId | uuid? | |
requestedAt | date-time | |
requestedByName | string | |
requestedByType | string | |
scheduledFor | date-time |
CancelTenantDeletion
http
DELETE /api/v1/tenant/deletionOwner: cancel the scheduled deletion within its grace period; the organization is writable again.
| Status | Description | Body |
|---|---|---|
| 200 | OK | TenantDeletionDto |
Response 200: TenantDeletionDto
| Field | Type | Notes |
|---|---|---|
export | boolean | |
id | uuid | |
purgeJobId | uuid? | |
requestedAt | date-time | |
requestedByName | string | |
requestedByType | string | |
scheduledFor | date-time |
GetProductAnalyticsSetting
http
GET /api/v1/tenant/product-analyticsWhether this tenant shares product usage analytics (hashed ids, no customer data).
| Status | Description | Body |
|---|---|---|
| 200 | OK | ProductAnalyticsSettingDto |
Response 200: ProductAnalyticsSettingDto
| Field | Type | Notes |
|---|---|---|
changedAt | date-time? | |
optedOut | boolean |
SetProductAnalyticsSetting
http
PUT /api/v1/tenant/product-analyticsOpt the tenant out of product analytics, or back in (Owner). Applies within a minute on every instance.
Request body (application/json): ProductAnalyticsRequest
| Field | Type | Notes |
|---|---|---|
optedOut | boolean |
| Status | Description | Body |
|---|---|---|
| 200 | OK | ProductAnalyticsSettingDto |
Response 200: ProductAnalyticsSettingDto
| Field | Type | Notes |
|---|---|---|
changedAt | date-time? | |
optedOut | boolean |
GetSupportAccess
http
GET /api/v1/tenant/support-accessSupport access (Owner): the active consent for Anchor support and every support session, newest first.
| Status | Description | Body |
|---|---|---|
| 200 | OK | SupportAccessDto |
Response 200: SupportAccessDto
| Field | Type | Notes |
|---|---|---|
active | SupportGrantDto? | |
sessions | SupportSessionDto[] |
GrantSupportAccess
http
POST /api/v1/tenant/support-accessGrant Anchor support time-boxed, read-only access (1–168 hours, with a reason). Replaces an active grant.
Request body (application/json): GrantSupportAccessRequest
| Field | Type | Notes |
|---|---|---|
durationHours | int32 | |
reason | string |
| Status | Description | Body |
|---|---|---|
| 200 | OK | SupportGrantDto |
Response 200: SupportGrantDto
| Field | Type | Notes |
|---|---|---|
expiresAt | date-time | |
grantedAt | date-time | |
grantedBy | uuid | |
id | uuid | |
reason | string |
RevokeSupportAccess
http
DELETE /api/v1/tenant/support-accessWithdraw support access: open support sessions end at once.
| Status | Description | Body |
|---|---|---|
| 204 | No Content | — |