Skip to content

Instantly share code, notes, and snippets.

@ferrata
Created November 13, 2025 16:06
Show Gist options
  • Select an option

  • Save ferrata/4c4014018b9d4b633750d4a130569258 to your computer and use it in GitHub Desktop.

Select an option

Save ferrata/4c4014018b9d4b633750d4a130569258 to your computer and use it in GitHub Desktop.
OpenAPI spec for PR #2073
openapi: 3.1.0
info:
title: Makeswift API
description: Documentation for the Makeswift public REST API.
version: '1.0'
servers: []
paths:
/v1/workspaces:
post:
operationId: WorkspaceController_create_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateWorkspaceV1RequestBodyDto'
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/CreateWorkspaceV1ResponseBodyDto'
tags:
- Workspace
get:
operationId: WorkspaceController_list_v1
parameters:
- name: limit
in: query
required: false
schema:
type: number
default: 20
maximum: 100
minimum: 0
- name: after
in: query
required: false
schema:
type: string
format: uuid
- name: Authorization
in: header
description: User bearer token
schema:
type: string
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ListWorkspaceV1ResponseBodyDto'
tags:
- Workspace
'/v1/workspaces/{id}':
patch:
operationId: WorkspaceController_updateOne_v1
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateWorkspaceV1RequestBodyDto'
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateWorkspaceV1ResponseBodyDto'
tags:
- Workspace
delete:
operationId: WorkspaceController_delete_v1
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
responses:
'204':
description: ''
tags:
- Workspace
'/v1/workspaces/{workspaceId}/members/{userId}':
post:
operationId: WorkspaceMemberController_create_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: workspaceId
in: path
required: true
schema:
type: string
format: uuid
- name: userId
in: path
description: The ID of the user
required: true
schema:
type: string
format: uuid
example: d2ccb4e7-1364-496d-a131-bd996269ab2c
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateWorkspaceMemberV1RequestBodyDto'
responses:
'204':
description: ''
tags:
- Workspace Member
delete:
operationId: WorkspaceMemberController_delete_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: workspaceId
in: path
required: true
schema:
type: string
format: uuid
- name: userId
in: path
description: The ID of the user
required: true
schema:
type: string
format: uuid
example: d2ccb4e7-1364-496d-a131-bd996269ab2c
responses:
'204':
description: ''
tags:
- Workspace Member
patch:
operationId: WorkspaceMemberController_update_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: workspaceId
in: path
required: true
schema:
type: string
format: uuid
- name: userId
in: path
description: The ID of the user
required: true
schema:
type: string
format: uuid
example: d2ccb4e7-1364-496d-a131-bd996269ab2c
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateWorkspaceMemberV1RequestBodyDto'
responses:
'204':
description: ''
tags:
- Workspace Member
get:
operationId: WorkspaceMemberController_getUserRole_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: workspaceId
in: path
required: true
schema:
type: string
format: uuid
- name: userId
in: path
description: The ID of the user
required: true
schema:
type: string
format: uuid
example: d2ccb4e7-1364-496d-a131-bd996269ab2c
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/GetWorkspaceMemberV1ResponseBodyDto'
tags:
- Workspace Member
'/v1/workspaces/{workspaceId}/members':
get:
operationId: WorkspaceMemberController_getMembers_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: workspaceId
in: path
required: true
schema:
type: string
format: uuid
- name: limit
in: query
required: false
schema:
type: number
default: 20
maximum: 100
minimum: 0
- name: after
in: query
required: false
schema:
type: string
format: uuid
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ListWorkspaceMemberV1ResponseBodyDto'
tags:
- Workspace Member
/v1/auth/user-info:
get:
operationId: AuthController_getUserInfo_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/GetUserInfoV1ResponseBodyDto'
tags:
- Authentication
'/v1/workspaces/{workspaceId}/sites':
post:
operationId: SiteController_create_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: workspaceId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSiteV1RequestBodyDto'
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSiteV1ResponseBodyDto'
tags:
- Site
get:
operationId: SiteController_list_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: workspaceId
in: path
required: true
schema:
type: string
format: uuid
- name: limit
in: query
required: false
schema:
type: number
default: 20
maximum: 100
minimum: 0
- name: after
in: query
required: false
schema:
type: string
format: uuid
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ListSiteV1ResponseBodyDto'
tags:
- Site
'/v1/sites/{id}':
get:
operationId: SiteController_getOne_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ReadSiteV1ResponseBodyDto'
tags:
- Site
patch:
operationId: SiteController_updateOne_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSiteV1RequestBodyDto'
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSiteV1ResponseBodyDto'
tags:
- Site
delete:
operationId: SiteController_delete_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'204':
description: ''
tags:
- Site
'/v1/sites/{siteId}/duplicate':
post:
operationId: SiteController_duplicate_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: siteId
in: path
description: The ID of the site to duplicate
required: true
schema:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DuplicateSiteV1RequestBodyDto'
responses:
'201':
description: The newly created duplicated site with all content and configuration copied from the original
content:
application/json:
schema:
$ref: '#/components/schemas/DuplicateSiteV1ResponseBodyDto'
tags:
- Site
'/v1/sites/{siteId}/pages':
post:
operationId: PageController_create_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: siteId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePageV1RequestBodyDto'
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePageV1ResponseBodyDto'
tags:
- Page
'/v1/sites/{siteId}/pages/{pageId}':
patch:
operationId: PageController_update_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: siteId
in: path
required: true
schema:
type: string
format: uuid
- name: pageId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePageV1RequestBodyDto'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePageV1ResponseBodyDto'
tags:
- Page
get:
operationId: PageController_getOne_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: siteId
in: path
required: true
schema:
type: string
format: uuid
- name: pageId
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/GetPageV1ResponseBodyDto'
tags:
- Page
delete:
operationId: PageController_delete_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: siteId
in: path
required: true
schema:
type: string
format: uuid
- name: pageId
in: path
required: true
schema:
type: string
format: uuid
responses:
'204':
description: ''
tags:
- Page
'/v0/sites/{siteId}/pages':
get:
operationId: PageController_list_v0
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: siteId
in: path
required: true
schema:
type: string
format: uuid
- name: limit
in: query
description: 'Maximum number of pages to return. Defaults to 20, maximum is 100.'
required: false
schema:
type: number
default: 20
maximum: 100
minimum: 1
- name: after
in: query
description: 'Cursor for pagination. If provided, returns pages after this ID.'
required: false
schema:
type: string
format: uuid
- name: includeOffline
in: query
description: Include offline pages. Defaults to false.
required: false
schema:
type: boolean
default: false
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ListPagesV0ResponseBodyDto'
tags:
- Page
'/v1/sites/{siteId}/locales':
post:
operationId: SiteLocaleController_create_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: siteId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSiteLocaleV1RequestBodyDto'
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSiteLocaleV1ResponseBodyDto'
tags:
- Locale
get:
operationId: SiteLocaleController_getByLocale_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: code
in: query
description: Locale of the site locale.
required: true
schema:
type: string
example: es-ES
- name: siteId
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/GetByLocaleSiteLocaleV1ResponseBodyDto'
tags:
- Locale
'/v1/locales/{id}':
delete:
operationId: SiteLocaleController_delete_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'204':
description: ''
tags:
- Locale
patch:
operationId: SiteLocaleController_update_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSiteLocaleV1RequestBodyDto'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSiteLocaleV1ResponseBodyDto'
tags:
- Locale
get:
operationId: SiteLocaleController_get_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ReadSiteLocaleV1ResponseBodyDto'
tags:
- Locale
'/v1/sites/{siteId}/routes':
get:
operationId: SiteRouteController_list_v1
parameters:
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: siteId
in: path
required: true
schema:
type: string
format: uuid
- name: pathname
in: query
description: 'Filter routes by pathname. Supports partial match. If not provided, returns all routes.'
required: false
schema:
type: string
example: /about
- name: limit
in: query
description: 'Maximum number of routes to return. Defaults to 20, maximum is 100. To paginate, use together with `after` cursor.'
required: false
schema:
type: number
default: 20
maximum: 100
minimum: 0
- name: after
in: query
description: 'Cursor for pagination. If provided, returns routes after this ID.'
required: false
schema:
type: string
format: uuid
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ListSiteRouteV1ResponseBodyDto'
tags:
- Route
post:
operationId: SiteRouteController_create_v1
parameters:
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: siteId
in: path
required: true
schema:
type: string
format: uuid
- name: skipValidation
in: query
description: 'If true, skips validation of the route, such as pathname format. This is useful for testing or when the route is known to be valid.'
required: false
schema:
type: string
enum:
- 'true'
- 'false'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSiteRouteV1RequestBodyDto'
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSiteRouteV1ResponseBodyDto'
tags:
- Route
'/v1/routes/{routeId}':
get:
operationId: SiteRouteController_get_v1
parameters:
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: routeId
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ReadSiteRouteV1ResponseBodyDto'
tags:
- Route
patch:
operationId: SiteRouteController_update_v1
parameters:
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: routeId
in: path
required: true
schema:
type: string
format: uuid
- name: skipValidation
in: query
description: 'If true, skips validation of the route, such as pathname format. This is useful for testing or when the route is known to be valid.'
required: false
schema:
type: string
enum:
- 'true'
- 'false'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSiteRouteV1RequestBodyDto'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSiteRouteV1ResponseBodyDto'
tags:
- Route
delete:
operationId: SiteRouteController_delete_v1
parameters:
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: routeId
in: path
required: true
schema:
type: string
format: uuid
responses:
'204':
description: ''
tags:
- Route
'/v1/workspaces/{workspaceId}/webhooks':
post:
operationId: WebhookController_create_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: workspaceId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateWebhookV1RequestBodyDto'
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/CreateWebhookV1ResponseBodyDto'
tags:
- Webhook Management
get:
operationId: WebhookController_list_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: workspaceId
in: path
required: true
schema:
type: string
format: uuid
- name: limit
in: query
required: false
schema:
type: number
default: 20
maximum: 100
minimum: 0
- name: after
in: query
required: false
schema:
type: string
format: uuid
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ListWebhookV1ResponseBodyDto'
tags:
- Webhook Management
'/v1/webhooks/{id}':
get:
operationId: WebhookController_get_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/GetWebhookV1ResponseBodyDto'
tags:
- Webhook Management
delete:
operationId: WebhookController_delete_v1
parameters:
- name: Authorization
in: header
description: User bearer token
schema:
type: string
- name: x-api-key
in: header
description: Franchise key
schema:
type: string
format: uuid
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'204':
description: ''
tags:
- Webhook Management
components:
schemas:
CreateWorkspaceV1RequestBodyDto:
type: object
properties:
ownerId:
type: string
format: uuid
example: a2914010-c1d7-4a03-9c22-cb91313a4f25
name:
description: The name of the workspace
type: string
example: Acme Workspace
required:
- name
CreateWorkspaceV1ResponseBodyDto:
type: object
properties:
id:
type: string
format: uuid
name:
description: The name of the workspace
type: string
example: Acme Workspace
required:
- id
- name
ListWorkspaceV1ResponseBodyDto:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
name:
description: The name of the workspace
type: string
example: Acme Workspace
required:
- id
- name
hasMore:
type: boolean
required:
- data
- hasMore
UpdateWorkspaceV1RequestBodyDto:
type: object
properties:
name:
description: The name of the workspace
type: string
example: Acme Workspace
UpdateWorkspaceV1ResponseBodyDto:
type: object
properties:
id:
type: string
format: uuid
name:
description: The name of the workspace
type: string
example: Acme Workspace
required:
- id
- name
CreateWorkspaceMemberV1RequestBodyDto:
type: object
properties:
role:
type: string
enum:
- OWNER
- ADMIN
- PUBLISHER
- EDITOR
- GUEST
required:
- role
UpdateWorkspaceMemberV1RequestBodyDto:
type: object
properties:
role:
type: string
enum:
- OWNER
- ADMIN
- PUBLISHER
- EDITOR
- GUEST
required:
- role
GetWorkspaceMemberV1ResponseBodyDto:
type: object
properties:
role:
type: string
enum:
- OWNER
- ADMIN
- PUBLISHER
- EDITOR
- GUEST
required:
- role
ListWorkspaceMemberV1ResponseBodyDto:
type: object
properties:
data:
type: array
items:
type: object
properties:
userId:
description: The ID of the user
type: string
format: uuid
example: d2ccb4e7-1364-496d-a131-bd996269ab2c
role:
type: string
enum:
- OWNER
- ADMIN
- PUBLISHER
- EDITOR
- GUEST
required:
- userId
- role
hasMore:
type: boolean
required:
- data
- hasMore
GetUserInfoV1ResponseBodyDto:
type: object
properties:
id:
description: The ID of the user
type: string
format: uuid
example: d2ccb4e7-1364-496d-a131-bd996269ab2c
required:
- id
CreateSiteV1RequestBodyDto:
type: object
properties:
name:
description: The name of the site
type: string
example: Acme Co.
hostUrl:
description: The host URL of the site. The URL should consist of only the origin.
type: string
format: uri
example: 'https://example.com'
templateId:
description: The ID of the template to import.
type: string
format: uuid
templateSiteId:
description: The site ID of the template to import. Use templateId instead.
type: string
format: uuid
deprecated: true
locale:
description: Locale of the site locale.
type: string
example: es-ES
required:
- name
CreateSiteV1ResponseBodyDto:
type: object
properties:
id:
type: string
format: uuid
name:
description: The name of the site
type: string
example: Acme Co.
hostUrl:
description: The host URL of the site. The URL should consist of only the origin.
type: 'null'
format: uri
example: 'https://example.com'
apiKey:
type: string
format: uuid
required:
- id
- name
- hostUrl
- apiKey
ReadSiteV1ResponseBodyDto:
type: object
properties:
id:
type: string
format: uuid
name:
description: The name of the site
type: string
example: Acme Co.
hostUrl:
description: The host URL of the site. The URL should consist of only the origin.
type: 'null'
format: uri
example: 'https://example.com'
apiKey:
type: string
format: uuid
required:
- id
- name
- hostUrl
- apiKey
UpdateSiteV1RequestBodyDto:
type: object
properties:
name:
description: The name of the site
type: string
example: Acme Co.
hostUrl:
description: The host URL of the site. The URL should consist of only the origin.
type: string
format: uri
example: 'https://example.com'
UpdateSiteV1ResponseBodyDto:
type: object
properties:
id:
type: string
format: uuid
name:
description: The name of the site
type: string
example: Acme Co.
hostUrl:
description: The host URL of the site. The URL should consist of only the origin.
type: 'null'
format: uri
example: 'https://example.com'
apiKey:
type: string
format: uuid
required:
- id
- name
- hostUrl
- apiKey
ListSiteV1ResponseBodyDto:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
name:
description: The name of the site
type: string
example: Acme Co.
hostUrl:
description: The host URL of the site. The URL should consist of only the origin.
type: 'null'
format: uri
example: 'https://example.com'
apiKey:
type: string
format: uuid
required:
- id
- name
- hostUrl
- apiKey
hasMore:
type: boolean
required:
- data
- hasMore
DuplicateSiteV1RequestBodyDto:
type: object
properties:
name:
description: The name for the new duplicated site
type: string
example: My Duplicated Site
required:
- name
DuplicateSiteV1ResponseBodyDto:
description: The newly created duplicated site with all content and configuration copied from the original
type: object
properties:
id:
type: string
format: uuid
name:
description: The name of the site
type: string
example: Acme Co.
hostUrl:
description: The host URL of the site. The URL should consist of only the origin.
type: 'null'
format: uri
example: 'https://example.com'
apiKey:
type: string
format: uuid
required:
- id
- name
- hostUrl
- apiKey
CreatePageV1RequestBodyDto:
type: object
properties:
pathname:
description: The pathname of the page
type: 'null'
name:
description: The name of the page
type: 'null'
required:
- pathname
- name
CreatePageV1ResponseBodyDto:
type: object
properties:
id:
type: string
format: uuid
pathname:
description: The pathname of the page
type: string
example: about
name:
description: The name of the page
type: string
example: About
seoCanonicalUrl:
description: The canonical URL of the page
type: 'null'
seoIsIndexingBlocked:
description: Whether the page is blocked from indexing
type: 'null'
seoSitemapPriority:
description: The priority of the page in the sitemap
type: 'null'
seoSitemapFrequency:
description: The frequency with which the page is updated in the sitemap
type: 'null'
metaTitle:
description: The title of the page
type: 'null'
metaDescription:
description: The description of the page
type: 'null'
metaKeywords:
description: The keywords of the page
type: 'null'
isOnline:
description: Whether the page is online
type: boolean
required:
- id
- pathname
- name
- seoCanonicalUrl
- seoIsIndexingBlocked
- seoSitemapPriority
- seoSitemapFrequency
- metaTitle
- metaDescription
- metaKeywords
- isOnline
UpdatePageV1RequestBodyDto:
type: object
properties:
pathname:
description: The pathname of the page
type: string
name:
description: The name of the page
type: string
isOnline:
description: Whether the page is online or offline
type: boolean
UpdatePageV1ResponseBodyDto:
type: object
properties:
id:
type: string
format: uuid
pathname:
description: The pathname of the page
type: string
example: about
name:
description: The name of the page
type: string
example: About
seoCanonicalUrl:
description: The canonical URL of the page
type: 'null'
seoIsIndexingBlocked:
description: Whether the page is blocked from indexing
type: 'null'
seoSitemapPriority:
description: The priority of the page in the sitemap
type: 'null'
seoSitemapFrequency:
description: The frequency with which the page is updated in the sitemap
type: 'null'
metaTitle:
description: The title of the page
type: 'null'
metaDescription:
description: The description of the page
type: 'null'
metaKeywords:
description: The keywords of the page
type: 'null'
isOnline:
description: Whether the page is online
type: boolean
required:
- id
- pathname
- name
- seoCanonicalUrl
- seoIsIndexingBlocked
- seoSitemapPriority
- seoSitemapFrequency
- metaTitle
- metaDescription
- metaKeywords
- isOnline
GetPageV1ResponseBodyDto:
type: object
properties:
id:
type: string
format: uuid
pathname:
description: The pathname of the page
type: string
example: about
name:
description: The name of the page
type: string
example: About
seoCanonicalUrl:
description: The canonical URL of the page
type: 'null'
seoIsIndexingBlocked:
description: Whether the page is blocked from indexing
type: 'null'
seoSitemapPriority:
description: The priority of the page in the sitemap
type: 'null'
seoSitemapFrequency:
description: The frequency with which the page is updated in the sitemap
type: 'null'
metaTitle:
description: The title of the page
type: 'null'
metaDescription:
description: The description of the page
type: 'null'
metaKeywords:
description: The keywords of the page
type: 'null'
isOnline:
description: Whether the page is online
type: boolean
required:
- id
- pathname
- name
- seoCanonicalUrl
- seoIsIndexingBlocked
- seoSitemapPriority
- seoSitemapFrequency
- metaTitle
- metaDescription
- metaKeywords
- isOnline
ListPagesV0ResponseBodyDto:
type: object
properties:
pages:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
pathname:
type: string
isOnline:
type: boolean
required:
- id
- pathname
- isOnline
hasMore:
description: Whether there are more pages available for pagination.
type: boolean
required:
- pages
- hasMore
CreateSiteLocaleV1RequestBodyDto:
type: object
properties:
locale:
description: Locale of the site locale.
type: string
example: es-ES
domain:
description: Domain of the site locale if using domain-based localization. Domain URL must include the protocol.
type: string
example: 'https://es.example.com'
required:
- locale
CreateSiteLocaleV1ResponseBodyDto:
type: object
properties:
id:
type: string
format: uuid
locale:
description: Locale of the site locale.
type: string
example: es-ES
domain:
description: Domain of the site locale if using domain-based localization. Domain URL must include the protocol.
type: 'null'
example: 'https://es.example.com'
required:
- id
- locale
- domain
UpdateSiteLocaleV1RequestBodyDto:
type: object
properties:
locale:
description: Locale of the site locale.
type: string
example: es-ES
domain:
description: Domain of the site locale if using domain-based localization. Domain URL must include the protocol.
type: string
example: 'https://es.example.com'
UpdateSiteLocaleV1ResponseBodyDto:
type: object
properties:
id:
type: string
format: uuid
locale:
description: Locale of the site locale.
type: string
example: es-ES
domain:
description: Domain of the site locale if using domain-based localization. Domain URL must include the protocol.
type: 'null'
example: 'https://es.example.com'
required:
- id
- locale
- domain
ReadSiteLocaleV1ResponseBodyDto:
type: object
properties:
id:
type: string
format: uuid
locale:
description: Locale of the site locale.
type: string
example: es-ES
domain:
description: Domain of the site locale if using domain-based localization. Domain URL must include the protocol.
type: 'null'
example: 'https://es.example.com'
required:
- id
- locale
- domain
GetByLocaleSiteLocaleV1ResponseBodyDto:
type: object
properties:
id:
type: string
format: uuid
locale:
description: Locale of the site locale.
type: string
example: es-ES
domain:
description: Domain of the site locale if using domain-based localization. Domain URL must include the protocol.
type: 'null'
example: 'https://es.example.com'
required:
- id
- locale
- domain
ListSiteRouteV1ResponseBodyDto:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
pathname:
description: 'Pathname of the route, e.g., "/about".'
type: string
example: /about
required:
- id
- pathname
description: Site route.
example:
id: 37b18c41-9752-4adf-9aef-f42ab4f74b04
pathname: /about
hasMore:
type: boolean
required:
- data
- hasMore
CreateSiteRouteV1RequestBodyDto:
description: Request body for creating a new site route.
type: object
properties:
pathname:
description: 'Pathname of the route, e.g., "/about".'
type: string
example: /about
required:
- pathname
CreateSiteRouteV1ResponseBodyDto:
description: Site route.
type: object
properties:
id:
type: string
format: uuid
pathname:
description: 'Pathname of the route, e.g., "/about".'
type: string
example: /about
example:
id: 37b18c41-9752-4adf-9aef-f42ab4f74b04
pathname: /about
required:
- id
- pathname
ReadSiteRouteV1ResponseBodyDto:
description: Site route.
type: object
properties:
id:
type: string
format: uuid
pathname:
description: 'Pathname of the route, e.g., "/about".'
type: string
example: /about
example:
id: 37b18c41-9752-4adf-9aef-f42ab4f74b04
pathname: /about
required:
- id
- pathname
UpdateSiteRouteV1RequestBodyDto:
description: Request body for updating an existing site route.
type: object
properties:
pathname:
description: 'Pathname of the route, e.g., "/about".'
type: string
example: /about
UpdateSiteRouteV1ResponseBodyDto:
description: Site route.
type: object
properties:
id:
type: string
format: uuid
pathname:
description: 'Pathname of the route, e.g., "/about".'
type: string
example: /about
example:
id: 37b18c41-9752-4adf-9aef-f42ab4f74b04
pathname: /about
required:
- id
- pathname
CreateWebhookV1RequestBodyDto:
type: object
properties:
url:
type: string
format: uri
example: 'https://example.com/webhook'
eventType:
type: string
enum:
- page.created
- page.deleted
- page.updated
- page.restored
- site.published
required:
- url
- eventType
CreateWebhookV1ResponseBodyDto:
type: object
properties:
id:
type: string
format: uuid
workspaceId:
type: string
format: uuid
url:
type: string
format: uri
example: 'https://example.com/webhook'
eventType:
type: string
enum:
- page.created
- page.deleted
- page.updated
- page.restored
- site.published
required:
- id
- workspaceId
- url
- eventType
ListWebhookV1ResponseBodyDto:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
workspaceId:
type: string
format: uuid
url:
type: string
format: uri
example: 'https://example.com/webhook'
eventType:
type: string
enum:
- page.created
- page.deleted
- page.updated
- page.restored
- site.published
required:
- id
- workspaceId
- url
- eventType
hasMore:
type: boolean
required:
- data
- hasMore
GetWebhookV1ResponseBodyDto:
type: object
properties:
id:
type: string
format: uuid
workspaceId:
type: string
format: uuid
url:
type: string
format: uri
example: 'https://example.com/webhook'
eventType:
type: string
enum:
- page.created
- page.deleted
- page.updated
- page.restored
- site.published
required:
- id
- workspaceId
- url
- eventType
tags:
- name: Authentication
description: ''
- name: Workspace
description: ''
- name: Workspace Member
description: ''
- name: Site
description: ''
- name: Locale
description: ''
- name: Route
description: ''
- name: Page
description: ''
- name: Webhook Management
description: ''
webhooks:
page.created:
post:
description: A page was created
requestBody:
content:
application/json:
schema:
type: object
properties:
type:
type: string
enum:
- page.created
page:
type: object
properties:
id:
type: string
format: uuid
pathname:
description: The pathname of the page
type: string
example: about
name:
description: The name of the page
type: string
example: About
seoCanonicalUrl:
description: The canonical URL of the page
type: 'null'
seoIsIndexingBlocked:
description: Whether the page is blocked from indexing
type: 'null'
seoSitemapPriority:
description: The priority of the page in the sitemap
type: 'null'
seoSitemapFrequency:
description: The frequency with which the page is updated in the sitemap
type: 'null'
metaTitle:
description: The title of the page
type: 'null'
metaDescription:
description: The description of the page
type: 'null'
metaKeywords:
description: The keywords of the page
type: 'null'
isOnline:
description: Whether the page is online
type: boolean
required:
- id
- pathname
- name
- seoCanonicalUrl
- seoIsIndexingBlocked
- seoSitemapPriority
- seoSitemapFrequency
- metaTitle
- metaDescription
- metaKeywords
- isOnline
required:
- type
- page
responses:
'200':
description: Return a 200 status to indicate that the data was received successfully
page.updated:
post:
description: A page was updated
requestBody:
content:
application/json:
schema:
type: object
properties:
type:
type: string
enum:
- page.updated
page:
type: object
properties:
id:
type: string
format: uuid
pathname:
description: The pathname of the page
type: string
example: about
name:
description: The name of the page
type: string
example: About
seoCanonicalUrl:
description: The canonical URL of the page
type: 'null'
seoIsIndexingBlocked:
description: Whether the page is blocked from indexing
type: 'null'
seoSitemapPriority:
description: The priority of the page in the sitemap
type: 'null'
seoSitemapFrequency:
description: The frequency with which the page is updated in the sitemap
type: 'null'
metaTitle:
description: The title of the page
type: 'null'
metaDescription:
description: The description of the page
type: 'null'
metaKeywords:
description: The keywords of the page
type: 'null'
isOnline:
description: Whether the page is online
type: boolean
required:
- id
- pathname
- name
- seoCanonicalUrl
- seoIsIndexingBlocked
- seoSitemapPriority
- seoSitemapFrequency
- metaTitle
- metaDescription
- metaKeywords
- isOnline
required:
- type
- page
responses:
'200':
description: Return a 200 status to indicate that the data was received successfully
page.deleted:
post:
description: A page was deleted
requestBody:
content:
application/json:
schema:
type: object
properties:
type:
type: string
enum:
- page.deleted
page:
type: object
properties:
id:
type: string
format: uuid
pathname:
description: The pathname of the page
type: string
example: about
name:
description: The name of the page
type: string
example: About
seoCanonicalUrl:
description: The canonical URL of the page
type: 'null'
seoIsIndexingBlocked:
description: Whether the page is blocked from indexing
type: 'null'
seoSitemapPriority:
description: The priority of the page in the sitemap
type: 'null'
seoSitemapFrequency:
description: The frequency with which the page is updated in the sitemap
type: 'null'
metaTitle:
description: The title of the page
type: 'null'
metaDescription:
description: The description of the page
type: 'null'
metaKeywords:
description: The keywords of the page
type: 'null'
isOnline:
description: Whether the page is online
type: boolean
required:
- id
- pathname
- name
- seoCanonicalUrl
- seoIsIndexingBlocked
- seoSitemapPriority
- seoSitemapFrequency
- metaTitle
- metaDescription
- metaKeywords
- isOnline
required:
- type
- page
responses:
'200':
description: Return a 200 status to indicate that the data was received successfully
page.restored:
post:
description: A page was restored
requestBody:
content:
application/json:
schema:
type: object
properties:
type:
type: string
enum:
- page.restored
page:
type: object
properties:
id:
type: string
format: uuid
pathname:
description: The pathname of the page
type: string
example: about
name:
description: The name of the page
type: string
example: About
seoCanonicalUrl:
description: The canonical URL of the page
type: 'null'
seoIsIndexingBlocked:
description: Whether the page is blocked from indexing
type: 'null'
seoSitemapPriority:
description: The priority of the page in the sitemap
type: 'null'
seoSitemapFrequency:
description: The frequency with which the page is updated in the sitemap
type: 'null'
metaTitle:
description: The title of the page
type: 'null'
metaDescription:
description: The description of the page
type: 'null'
metaKeywords:
description: The keywords of the page
type: 'null'
isOnline:
description: Whether the page is online
type: boolean
required:
- id
- pathname
- name
- seoCanonicalUrl
- seoIsIndexingBlocked
- seoSitemapPriority
- seoSitemapFrequency
- metaTitle
- metaDescription
- metaKeywords
- isOnline
required:
- type
- page
responses:
'200':
description: Return a 200 status to indicate that the data was received successfully
site.published:
post:
description: A site was published
requestBody:
content:
application/json:
schema:
type: object
properties:
type:
type: string
enum:
- site.published
data:
type: object
properties:
siteId:
type: string
format: uuid
publish:
type: object
properties:
from:
type: 'null'
format: uuid
to:
type: string
format: uuid
required:
- from
- to
at:
type: number
required:
- siteId
- publish
- at
required:
- type
- data
responses:
'200':
description: Return a 200 status to indicate that the data was received successfully
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment