Delulu documentation
Workspace administration
10 endpoints in the Workspace administration API group.
Generated from the typed server contract. Download the complete OpenAPI 3.1 specification.
admin.workspace
GET
/v1/workspaces/{workspaceId}Parameters
| Name | In | Required | Type |
|---|---|---|---|
workspaceId | path | yes | string |
Request body
No request body.
Responses
| Status | Meaning |
|---|---|
200 | Success |
401 | UnauthorizedError |
402 | QuotaExceededError |
403 | ForbiddenError |
404 | NotFoundError |
409 | ConflictError |
422 | ValidationError |
429 | RateLimitedError |
Response bodies
200 — application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"isPersonal": {
"type": "boolean"
},
"billingOwnerUserId": {
"type": "string"
}
},
"required": [
"id",
"name",
"slug",
"isPersonal",
"billingOwnerUserId"
],
"additionalProperties": false
}401 — application/json
{
"$ref": "#/components/schemas/UnauthorizedError"
}402 — application/json
{
"$ref": "#/components/schemas/QuotaExceededError"
}403 — application/json
{
"$ref": "#/components/schemas/ForbiddenError"
}404 — application/json
{
"$ref": "#/components/schemas/NotFoundError"
}409 — application/json
{
"$ref": "#/components/schemas/ConflictError"
}422 — application/json
{
"$ref": "#/components/schemas/ValidationError"
}429 — application/json
{
"$ref": "#/components/schemas/RateLimitedError"
}admin.update Workspace
PATCH
/v1/workspaces/{workspaceId}Parameters
| Name | In | Required | Type |
|---|---|---|---|
workspaceId | path | yes | string |
Request body
Required.
application/json
{
"type": "object",
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"slug": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
}Responses
| Status | Meaning |
|---|---|
200 | Success |
401 | UnauthorizedError |
402 | QuotaExceededError |
403 | ForbiddenError |
404 | NotFoundError |
409 | ConflictError |
422 | ValidationError |
429 | RateLimitedError |
Response bodies
200 — application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"isPersonal": {
"type": "boolean"
},
"billingOwnerUserId": {
"type": "string"
}
},
"required": [
"id",
"name",
"slug",
"isPersonal",
"billingOwnerUserId"
],
"additionalProperties": false
}401 — application/json
{
"$ref": "#/components/schemas/UnauthorizedError"
}402 — application/json
{
"$ref": "#/components/schemas/QuotaExceededError"
}403 — application/json
{
"$ref": "#/components/schemas/ForbiddenError"
}404 — application/json
{
"$ref": "#/components/schemas/NotFoundError"
}409 — application/json
{
"$ref": "#/components/schemas/ConflictError"
}422 — application/json
{
"$ref": "#/components/schemas/ValidationError"
}429 — application/json
{
"$ref": "#/components/schemas/RateLimitedError"
}admin.delete Workspace
DELETE
/v1/workspaces/{workspaceId}Parameters
| Name | In | Required | Type |
|---|---|---|---|
workspaceId | path | yes | string |
Request body
No request body.
Responses
| Status | Meaning |
|---|---|
200 | Success |
401 | UnauthorizedError |
402 | QuotaExceededError |
403 | ForbiddenError |
404 | NotFoundError |
409 | ConflictError |
422 | ValidationError |
429 | RateLimitedError |
Response bodies
200 — application/json
{
"type": "object",
"properties": {
"deleted": {
"type": "boolean"
}
},
"required": [
"deleted"
],
"additionalProperties": false
}401 — application/json
{
"$ref": "#/components/schemas/UnauthorizedError"
}402 — application/json
{
"$ref": "#/components/schemas/QuotaExceededError"
}403 — application/json
{
"$ref": "#/components/schemas/ForbiddenError"
}404 — application/json
{
"$ref": "#/components/schemas/NotFoundError"
}409 — application/json
{
"$ref": "#/components/schemas/ConflictError"
}422 — application/json
{
"$ref": "#/components/schemas/ValidationError"
}429 — application/json
{
"$ref": "#/components/schemas/RateLimitedError"
}admin.members
GET
/v1/workspaces/{workspaceId}/membersParameters
| Name | In | Required | Type |
|---|---|---|---|
workspaceId | path | yes | string |
limit | query | no | value |
offset | query | no | value |
Request body
No request body.
Responses
| Status | Meaning |
|---|---|
200 | Success |
401 | UnauthorizedError |
402 | QuotaExceededError |
403 | ForbiddenError |
404 | NotFoundError |
409 | ConflictError |
422 | ValidationError |
429 | RateLimitedError |
Response bodies
200 — application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"userId": {
"type": "string"
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"role": {
"type": "string",
"enum": [
"owner",
"admin",
"editor",
"viewer"
]
}
},
"required": [
"id",
"userId",
"email",
"name",
"role"
],
"additionalProperties": false
}
},
"total": {
"anyOf": [
{
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"enum": [
"NaN"
]
},
{
"type": "string",
"enum": [
"Infinity"
]
},
{
"type": "string",
"enum": [
"-Infinity"
]
}
]
},
{
"type": "string",
"enum": [
"Infinity",
"-Infinity",
"NaN"
]
}
]
},
"limit": {
"anyOf": [
{
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"enum": [
"NaN"
]
},
{
"type": "string",
"enum": [
"Infinity"
]
},
{
"type": "string",
"enum": [
"-Infinity"
]
}
]
},
{
"type": "string",
"enum": [
"Infinity",
"-Infinity",
"NaN"
]
}
]
},
"offset": {
"anyOf": [
{
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"enum": [
"NaN"
]
},
{
"type": "string",
"enum": [
"Infinity"
]
},
{
"type": "string",
"enum": [
"-Infinity"
]
}
]
},
{
"type": "string",
"enum": [
"Infinity",
"-Infinity",
"NaN"
]
}
]
}
},
"required": [
"data",
"total",
"limit",
"offset"
],
"additionalProperties": false
}401 — application/json
{
"$ref": "#/components/schemas/UnauthorizedError"
}402 — application/json
{
"$ref": "#/components/schemas/QuotaExceededError"
}403 — application/json
{
"$ref": "#/components/schemas/ForbiddenError"
}404 — application/json
{
"$ref": "#/components/schemas/NotFoundError"
}409 — application/json
{
"$ref": "#/components/schemas/ConflictError"
}422 — application/json
{
"$ref": "#/components/schemas/ValidationError"
}429 — application/json
{
"$ref": "#/components/schemas/RateLimitedError"
}admin.invite Member
POST
/v1/workspaces/{workspaceId}/membersParameters
| Name | In | Required | Type |
|---|---|---|---|
workspaceId | path | yes | string |
Request body
Required.
application/json
{
"type": "object",
"properties": {
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"owner",
"admin",
"editor",
"viewer"
]
}
},
"required": [
"email",
"role"
],
"additionalProperties": false
}Responses
| Status | Meaning |
|---|---|
200 | Success |
401 | UnauthorizedError |
402 | QuotaExceededError |
403 | ForbiddenError |
404 | NotFoundError |
409 | ConflictError |
422 | ValidationError |
429 | RateLimitedError |
Response bodies
200 — application/json
{
"type": "object",
"properties": {
"invitationId": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"owner",
"admin",
"editor",
"viewer"
]
}
},
"required": [
"invitationId",
"email",
"role"
],
"additionalProperties": false
}401 — application/json
{
"$ref": "#/components/schemas/UnauthorizedError"
}402 — application/json
{
"$ref": "#/components/schemas/QuotaExceededError"
}403 — application/json
{
"$ref": "#/components/schemas/ForbiddenError"
}404 — application/json
{
"$ref": "#/components/schemas/NotFoundError"
}409 — application/json
{
"$ref": "#/components/schemas/ConflictError"
}422 — application/json
{
"$ref": "#/components/schemas/ValidationError"
}429 — application/json
{
"$ref": "#/components/schemas/RateLimitedError"
}admin.update Member
PATCH
/v1/workspaces/{workspaceId}/members/{id}Parameters
| Name | In | Required | Type |
|---|---|---|---|
workspaceId | path | yes | string |
id | path | yes | string |
Request body
Required.
application/json
{
"type": "object",
"properties": {
"role": {
"type": "string",
"enum": [
"owner",
"admin",
"editor",
"viewer"
]
}
},
"required": [
"role"
],
"additionalProperties": false
}Responses
| Status | Meaning |
|---|---|
200 | Success |
401 | UnauthorizedError |
402 | QuotaExceededError |
403 | ForbiddenError |
404 | NotFoundError |
409 | ConflictError |
422 | ValidationError |
429 | RateLimitedError |
Response bodies
200 — application/json
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"userId": {
"type": "string"
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"role": {
"type": "string",
"enum": [
"owner",
"admin",
"editor",
"viewer"
]
}
},
"required": [
"id",
"userId",
"email",
"name",
"role"
],
"additionalProperties": false
}401 — application/json
{
"$ref": "#/components/schemas/UnauthorizedError"
}402 — application/json
{
"$ref": "#/components/schemas/QuotaExceededError"
}403 — application/json
{
"$ref": "#/components/schemas/ForbiddenError"
}404 — application/json
{
"$ref": "#/components/schemas/NotFoundError"
}409 — application/json
{
"$ref": "#/components/schemas/ConflictError"
}422 — application/json
{
"$ref": "#/components/schemas/ValidationError"
}429 — application/json
{
"$ref": "#/components/schemas/RateLimitedError"
}admin.remove Member
DELETE
/v1/workspaces/{workspaceId}/members/{id}Parameters
| Name | In | Required | Type |
|---|---|---|---|
workspaceId | path | yes | string |
id | path | yes | string |
Request body
No request body.
Responses
| Status | Meaning |
|---|---|
200 | Success |
401 | UnauthorizedError |
402 | QuotaExceededError |
403 | ForbiddenError |
404 | NotFoundError |
409 | ConflictError |
422 | ValidationError |
429 | RateLimitedError |
Response bodies
200 — application/json
{
"type": "object",
"properties": {
"deleted": {
"type": "boolean"
}
},
"required": [
"deleted"
],
"additionalProperties": false
}401 — application/json
{
"$ref": "#/components/schemas/UnauthorizedError"
}402 — application/json
{
"$ref": "#/components/schemas/QuotaExceededError"
}403 — application/json
{
"$ref": "#/components/schemas/ForbiddenError"
}404 — application/json
{
"$ref": "#/components/schemas/NotFoundError"
}409 — application/json
{
"$ref": "#/components/schemas/ConflictError"
}422 — application/json
{
"$ref": "#/components/schemas/ValidationError"
}429 — application/json
{
"$ref": "#/components/schemas/RateLimitedError"
}admin.api Keys
GET
/v1/workspaces/{workspaceId}/api-keysParameters
| Name | In | Required | Type |
|---|---|---|---|
workspaceId | path | yes | string |
limit | query | no | value |
offset | query | no | value |
Request body
No request body.
Responses
| Status | Meaning |
|---|---|
200 | Success |
401 | UnauthorizedError |
402 | QuotaExceededError |
403 | ForbiddenError |
404 | NotFoundError |
409 | ConflictError |
422 | ValidationError |
429 | RateLimitedError |
Response bodies
200 — application/json
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"keyPrefix": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"owner",
"admin",
"editor",
"viewer"
]
},
"scopes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"posts:read",
"posts:write",
"accounts:read",
"accounts:write",
"stats:read",
"billing:write",
"media:write",
"reviews:read",
"reviews:write",
"members:read",
"members:write",
"apikeys:write"
]
}
},
"lastUsedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"expiresAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"revokedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"keyPrefix",
"role",
"scopes",
"lastUsedAt",
"expiresAt",
"revokedAt"
],
"additionalProperties": false
}
},
"total": {
"anyOf": [
{
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"enum": [
"NaN"
]
},
{
"type": "string",
"enum": [
"Infinity"
]
},
{
"type": "string",
"enum": [
"-Infinity"
]
}
]
},
{
"type": "string",
"enum": [
"Infinity",
"-Infinity",
"NaN"
]
}
]
},
"limit": {
"anyOf": [
{
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"enum": [
"NaN"
]
},
{
"type": "string",
"enum": [
"Infinity"
]
},
{
"type": "string",
"enum": [
"-Infinity"
]
}
]
},
{
"type": "string",
"enum": [
"Infinity",
"-Infinity",
"NaN"
]
}
]
},
"offset": {
"anyOf": [
{
"anyOf": [
{
"type": "number"
},
{
"type": "string",
"enum": [
"NaN"
]
},
{
"type": "string",
"enum": [
"Infinity"
]
},
{
"type": "string",
"enum": [
"-Infinity"
]
}
]
},
{
"type": "string",
"enum": [
"Infinity",
"-Infinity",
"NaN"
]
}
]
}
},
"required": [
"data",
"total",
"limit",
"offset"
],
"additionalProperties": false
}401 — application/json
{
"$ref": "#/components/schemas/UnauthorizedError"
}402 — application/json
{
"$ref": "#/components/schemas/QuotaExceededError"
}403 — application/json
{
"$ref": "#/components/schemas/ForbiddenError"
}404 — application/json
{
"$ref": "#/components/schemas/NotFoundError"
}409 — application/json
{
"$ref": "#/components/schemas/ConflictError"
}422 — application/json
{
"$ref": "#/components/schemas/ValidationError"
}429 — application/json
{
"$ref": "#/components/schemas/RateLimitedError"
}admin.create Api Key
POST
/v1/workspaces/{workspaceId}/api-keysParameters
| Name | In | Required | Type |
|---|---|---|---|
workspaceId | path | yes | string |
Request body
Required.
application/json
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"owner",
"admin",
"editor",
"viewer"
]
},
"scopes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"posts:read",
"posts:write",
"accounts:read",
"accounts:write",
"stats:read",
"billing:write",
"media:write",
"reviews:read",
"reviews:write",
"members:read",
"members:write",
"apikeys:write"
]
}
},
"expiresAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"role",
"scopes"
],
"additionalProperties": false
}Responses
| Status | Meaning |
|---|---|
200 | Success |
401 | UnauthorizedError |
402 | QuotaExceededError |
403 | ForbiddenError |
404 | NotFoundError |
409 | ConflictError |
422 | ValidationError |
429 | RateLimitedError |
Response bodies
200 — application/json
{
"type": "object",
"properties": {
"key": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"keyPrefix": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"owner",
"admin",
"editor",
"viewer"
]
},
"scopes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"posts:read",
"posts:write",
"accounts:read",
"accounts:write",
"stats:read",
"billing:write",
"media:write",
"reviews:read",
"reviews:write",
"members:read",
"members:write",
"apikeys:write"
]
}
},
"lastUsedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"expiresAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"revokedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"keyPrefix",
"role",
"scopes",
"lastUsedAt",
"expiresAt",
"revokedAt"
],
"additionalProperties": false
},
"token": {
"type": "string"
}
},
"required": [
"key",
"token"
],
"additionalProperties": false
}401 — application/json
{
"$ref": "#/components/schemas/UnauthorizedError"
}402 — application/json
{
"$ref": "#/components/schemas/QuotaExceededError"
}403 — application/json
{
"$ref": "#/components/schemas/ForbiddenError"
}404 — application/json
{
"$ref": "#/components/schemas/NotFoundError"
}409 — application/json
{
"$ref": "#/components/schemas/ConflictError"
}422 — application/json
{
"$ref": "#/components/schemas/ValidationError"
}429 — application/json
{
"$ref": "#/components/schemas/RateLimitedError"
}admin.revoke Api Key
DELETE
/v1/workspaces/{workspaceId}/api-keys/{id}Parameters
| Name | In | Required | Type |
|---|---|---|---|
workspaceId | path | yes | string |
id | path | yes | string |
Request body
No request body.
Responses
| Status | Meaning |
|---|---|
200 | Success |
401 | UnauthorizedError |
402 | QuotaExceededError |
403 | ForbiddenError |
404 | NotFoundError |
409 | ConflictError |
422 | ValidationError |
429 | RateLimitedError |
Response bodies
200 — application/json
{
"type": "object",
"properties": {
"revoked": {
"type": "boolean"
}
},
"required": [
"revoked"
],
"additionalProperties": false
}401 — application/json
{
"$ref": "#/components/schemas/UnauthorizedError"
}402 — application/json
{
"$ref": "#/components/schemas/QuotaExceededError"
}403 — application/json
{
"$ref": "#/components/schemas/ForbiddenError"
}404 — application/json
{
"$ref": "#/components/schemas/NotFoundError"
}409 — application/json
{
"$ref": "#/components/schemas/ConflictError"
}422 — application/json
{
"$ref": "#/components/schemas/ValidationError"
}429 — application/json
{
"$ref": "#/components/schemas/RateLimitedError"
}