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

NameInRequiredType
workspaceIdpathyesstring

Request body

No request body.

Responses

StatusMeaning
200Success
401UnauthorizedError
402QuotaExceededError
403ForbiddenError
404NotFoundError
409ConflictError
422ValidationError
429RateLimitedError

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

NameInRequiredType
workspaceIdpathyesstring

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

StatusMeaning
200Success
401UnauthorizedError
402QuotaExceededError
403ForbiddenError
404NotFoundError
409ConflictError
422ValidationError
429RateLimitedError

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

NameInRequiredType
workspaceIdpathyesstring

Request body

No request body.

Responses

StatusMeaning
200Success
401UnauthorizedError
402QuotaExceededError
403ForbiddenError
404NotFoundError
409ConflictError
422ValidationError
429RateLimitedError

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}/members

Parameters

NameInRequiredType
workspaceIdpathyesstring
limitquerynovalue
offsetquerynovalue

Request body

No request body.

Responses

StatusMeaning
200Success
401UnauthorizedError
402QuotaExceededError
403ForbiddenError
404NotFoundError
409ConflictError
422ValidationError
429RateLimitedError

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}/members

Parameters

NameInRequiredType
workspaceIdpathyesstring

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

StatusMeaning
200Success
401UnauthorizedError
402QuotaExceededError
403ForbiddenError
404NotFoundError
409ConflictError
422ValidationError
429RateLimitedError

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

NameInRequiredType
workspaceIdpathyesstring
idpathyesstring

Request body

Required.

application/json

{
  "type": "object",
  "properties": {
    "role": {
      "type": "string",
      "enum": [
        "owner",
        "admin",
        "editor",
        "viewer"
      ]
    }
  },
  "required": [
    "role"
  ],
  "additionalProperties": false
}

Responses

StatusMeaning
200Success
401UnauthorizedError
402QuotaExceededError
403ForbiddenError
404NotFoundError
409ConflictError
422ValidationError
429RateLimitedError

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

NameInRequiredType
workspaceIdpathyesstring
idpathyesstring

Request body

No request body.

Responses

StatusMeaning
200Success
401UnauthorizedError
402QuotaExceededError
403ForbiddenError
404NotFoundError
409ConflictError
422ValidationError
429RateLimitedError

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-keys

Parameters

NameInRequiredType
workspaceIdpathyesstring
limitquerynovalue
offsetquerynovalue

Request body

No request body.

Responses

StatusMeaning
200Success
401UnauthorizedError
402QuotaExceededError
403ForbiddenError
404NotFoundError
409ConflictError
422ValidationError
429RateLimitedError

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-keys

Parameters

NameInRequiredType
workspaceIdpathyesstring

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

StatusMeaning
200Success
401UnauthorizedError
402QuotaExceededError
403ForbiddenError
404NotFoundError
409ConflictError
422ValidationError
429RateLimitedError

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

NameInRequiredType
workspaceIdpathyesstring
idpathyesstring

Request body

No request body.

Responses

StatusMeaning
200Success
401UnauthorizedError
402QuotaExceededError
403ForbiddenError
404NotFoundError
409ConflictError
422ValidationError
429RateLimitedError

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"
}

On this page

admin.workspaceParametersRequest bodyResponsesResponse bodies200 — application/json401 — application/json402 — application/json403 — application/json404 — application/json409 — application/json422 — application/json429 — application/jsonadmin.update WorkspaceParametersRequest bodyapplication/jsonResponsesResponse bodies200 — application/json401 — application/json402 — application/json403 — application/json404 — application/json409 — application/json422 — application/json429 — application/jsonadmin.delete WorkspaceParametersRequest bodyResponsesResponse bodies200 — application/json401 — application/json402 — application/json403 — application/json404 — application/json409 — application/json422 — application/json429 — application/jsonadmin.membersParametersRequest bodyResponsesResponse bodies200 — application/json401 — application/json402 — application/json403 — application/json404 — application/json409 — application/json422 — application/json429 — application/jsonadmin.invite MemberParametersRequest bodyapplication/jsonResponsesResponse bodies200 — application/json401 — application/json402 — application/json403 — application/json404 — application/json409 — application/json422 — application/json429 — application/jsonadmin.update MemberParametersRequest bodyapplication/jsonResponsesResponse bodies200 — application/json401 — application/json402 — application/json403 — application/json404 — application/json409 — application/json422 — application/json429 — application/jsonadmin.remove MemberParametersRequest bodyResponsesResponse bodies200 — application/json401 — application/json402 — application/json403 — application/json404 — application/json409 — application/json422 — application/json429 — application/jsonadmin.api KeysParametersRequest bodyResponsesResponse bodies200 — application/json401 — application/json402 — application/json403 — application/json404 — application/json409 — application/json422 — application/json429 — application/jsonadmin.create Api KeyParametersRequest bodyapplication/jsonResponsesResponse bodies200 — application/json401 — application/json402 — application/json403 — application/json404 — application/json409 — application/json422 — application/json429 — application/jsonadmin.revoke Api KeyParametersRequest bodyResponsesResponse bodies200 — application/json401 — application/json402 — application/json403 — application/json404 — application/json409 — application/json422 — application/json429 — application/json