{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/formstep-io/json-schema/formstep-io-method-call-schema.json",
  "title": "MethodCall",
  "description": "The request body: a method name and its parameters. `params` may be omitted; it defaults to `{}`. See `x-formstep-methods` for the list of methods.",
  "x-generated": "2026-11-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/formstep-io-openapi.json#/components/schemas/MethodCall",
  "oneOf": [
    {
      "$ref": "#/$defs/MethodsListCall"
    },
    {
      "$ref": "#/$defs/AnalyticsGetCall"
    },
    {
      "$ref": "#/$defs/DocumentsCreateCall"
    },
    {
      "$ref": "#/$defs/FieldsListCall"
    },
    {
      "$ref": "#/$defs/FoldersCreateCall"
    },
    {
      "$ref": "#/$defs/FoldersDeleteCall"
    },
    {
      "$ref": "#/$defs/FoldersListCall"
    },
    {
      "$ref": "#/$defs/FoldersUpdateCall"
    },
    {
      "$ref": "#/$defs/FormSettingsGetCall"
    },
    {
      "$ref": "#/$defs/FormSettingsUpdateCall"
    },
    {
      "$ref": "#/$defs/FormsCreateCall"
    },
    {
      "$ref": "#/$defs/FormsDeleteCall"
    },
    {
      "$ref": "#/$defs/FormsGetCall"
    },
    {
      "$ref": "#/$defs/FormsListCall"
    },
    {
      "$ref": "#/$defs/FormsPublishCall"
    },
    {
      "$ref": "#/$defs/FormsRestoreCall"
    },
    {
      "$ref": "#/$defs/FormsUnpublishCall"
    },
    {
      "$ref": "#/$defs/FormsUpdateCall"
    },
    {
      "$ref": "#/$defs/MeGetCall"
    },
    {
      "$ref": "#/$defs/RequestsCancelCall"
    },
    {
      "$ref": "#/$defs/RequestsCreateCall"
    },
    {
      "$ref": "#/$defs/RequestsDeleteCall"
    },
    {
      "$ref": "#/$defs/RequestsGetCall"
    },
    {
      "$ref": "#/$defs/RequestsListCall"
    },
    {
      "$ref": "#/$defs/RequestsRemindCall"
    },
    {
      "$ref": "#/$defs/RequestsReplayCallbackCall"
    },
    {
      "$ref": "#/$defs/RequestsSampleCall"
    },
    {
      "$ref": "#/$defs/ShareLinksCreateCall"
    },
    {
      "$ref": "#/$defs/ShareLinksListCall"
    },
    {
      "$ref": "#/$defs/ShareLinksUpdateCall"
    },
    {
      "$ref": "#/$defs/SubmissionsListCall"
    },
    {
      "$ref": "#/$defs/SubmissionsPdfCall"
    },
    {
      "$ref": "#/$defs/SubmissionsSampleCall"
    },
    {
      "$ref": "#/$defs/TranslationsAddLanguageCall"
    },
    {
      "$ref": "#/$defs/TranslationsDeleteEntryCall"
    },
    {
      "$ref": "#/$defs/TranslationsListEntriesCall"
    },
    {
      "$ref": "#/$defs/TranslationsListLanguagesCall"
    },
    {
      "$ref": "#/$defs/TranslationsRemoveLanguageCall"
    },
    {
      "$ref": "#/$defs/TranslationsSetEntryCall"
    },
    {
      "$ref": "#/$defs/WebhooksCreateCall"
    },
    {
      "$ref": "#/$defs/WebhooksDeleteCall"
    },
    {
      "$ref": "#/$defs/WebhooksListCall"
    },
    {
      "$ref": "#/$defs/WorkspacesCreateInviteCall"
    },
    {
      "$ref": "#/$defs/WorkspacesGetInviteCall"
    },
    {
      "$ref": "#/$defs/WorkspacesListCall"
    },
    {
      "$ref": "#/$defs/WorkspacesRevokeInviteCall"
    },
    {
      "$ref": "#/$defs/WorkspacesUpdateInviteCall"
    }
  ],
  "$defs": {
    "AnalyticsGetCall": {
      "title": "analytics.get",
      "type": "object",
      "description": "Get aggregated analytics metrics for a form.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "analytics.get"
        },
        "params": {
          "$ref": "#/$defs/AnalyticsGetParams"
        }
      }
    },
    "AnalyticsGetParams": {
      "type": "object",
      "description": "A Pro feature that follows the workspace owner's plan: if the owner is not on Pro, this returns `UPGRADE_REQUIRED`, including for history recorded while they were.",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        },
        "from": {
          "type": "integer",
          "description": "Start of date range as Unix timestamp in milliseconds. Must be less than or equal to `to` when both are set.",
          "minimum": 0
        },
        "to": {
          "type": "integer",
          "description": "End of date range as Unix timestamp in milliseconds. Omit both for all time.",
          "minimum": 0
        },
        "device": {
          "type": "string",
          "description": "Filter by device type.",
          "enum": [
            "all",
            "desktop",
            "mobile",
            "tablet"
          ],
          "default": "all"
        },
        "trafficSource": {
          "type": "string",
          "description": "Filter by traffic source (e.g. `\"Direct\"`, `\"Google\"`).",
          "maxLength": 255
        },
        "country": {
          "type": "string",
          "description": "Filter by 2-letter country code (e.g. `\"US\"`, `\"DE\"`).",
          "maxLength": 10
        },
        "includeEvents": {
          "type": "boolean",
          "description": "Also return the sanitized analytics events behind the metrics. No visitor ids.",
          "default": false
        }
      }
    },
    "Cover": {
      "description": "Form cover. `{\"type\": \"color\", \"color\": \"#ffffff\"}`, `{\"type\": \"image\", \"url\": \"https://...\", \"offsetY\": 50}`, or `{\"type\": \"none\"}` to remove.",
      "oneOf": [
        {
          "type": "object",
          "required": [
            "type",
            "color"
          ],
          "properties": {
            "type": {
              "const": "color"
            },
            "color": {
              "type": "string",
              "description": "Hex color, `#rgb` or `#rrggbb`.",
              "pattern": "^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$"
            }
          }
        },
        {
          "type": "object",
          "required": [
            "type",
            "url"
          ],
          "properties": {
            "type": {
              "const": "image"
            },
            "url": {
              "type": "string",
              "description": "An `http(s)` URL or a `data:image` URI.",
              "pattern": "^(https?://|data:image/)"
            },
            "offsetY": {
              "type": "number",
              "description": "Vertical alignment, 0–100.",
              "minimum": 0,
              "maximum": 100,
              "default": 50
            }
          }
        },
        {
          "type": "object",
          "required": [
            "type"
          ],
          "properties": {
            "type": {
              "const": "none"
            }
          }
        }
      ]
    },
    "DocumentsCreateCall": {
      "title": "documents.create",
      "type": "object",
      "description": "Reserve an upload for a file you will hand to one recipient through the form's Documents block.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "documents.create"
        },
        "params": {
          "$ref": "#/$defs/DocumentsCreateParams"
        }
      }
    },
    "DocumentsCreateParams": {
      "type": "object",
      "description": "`PUT` the raw bytes to `uploadUrl` within the hour, with `Content-Type` set to the declared type, then reference the id from `requests.create`.",
      "required": [
        "formId",
        "name",
        "contentType",
        "size"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "The form whose Documents block will show the file. Scopes the upload to that workspace."
        },
        "name": {
          "type": "string",
          "description": "Display name the recipient sees (1–200 characters). Overridable per request.",
          "minLength": 1,
          "maxLength": 200
        },
        "contentType": {
          "type": "string",
          "description": "`application/pdf` or an image type. Office documents are not accepted.",
          "enum": [
            "application/pdf",
            "image/png",
            "image/jpeg",
            "image/webp",
            "image/gif",
            "image/svg+xml",
            "image/avif",
            "image/bmp",
            "image/tiff"
          ]
        },
        "size": {
          "type": "integer",
          "description": "Exact byte length. Maximum 25 MB (26,214,400).",
          "minimum": 1,
          "maximum": 26214400
        },
        "sha256": {
          "type": "string",
          "description": "Hex digest of the bytes. Verified after upload when given."
        }
      }
    },
    "FieldsListCall": {
      "title": "fields.list",
      "type": "object",
      "description": "List every field of a form's current published version, with the key to address each one by.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "fields.list"
        },
        "params": {
          "$ref": "#/$defs/FieldsListParams"
        }
      }
    },
    "FieldsListParams": {
      "type": "object",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID. A form that has never been published answers `published: false` with no items."
        }
      }
    },
    "FoldersCreateCall": {
      "title": "folders.create",
      "type": "object",
      "description": "Create a folder in a workspace.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "folders.create"
        },
        "params": {
          "$ref": "#/$defs/FoldersCreateParams"
        }
      }
    },
    "FoldersCreateParams": {
      "type": "object",
      "description": "Idempotent: returns the existing folder if a folder with the same name already exists.",
      "required": [
        "workspaceId",
        "name"
      ],
      "properties": {
        "workspaceId": {
          "type": "string",
          "description": "Workspace ID."
        },
        "name": {
          "type": "string",
          "description": "Folder name (1–255 characters).",
          "minLength": 1,
          "maxLength": 255
        },
        "parentId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Parent folder ID for nesting. Omit for root level."
        }
      }
    },
    "FoldersDeleteCall": {
      "title": "folders.delete",
      "type": "object",
      "description": "Permanently delete a folder and all its contents (subfolders and forms).",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "folders.delete"
        },
        "params": {
          "$ref": "#/$defs/FoldersDeleteParams"
        }
      }
    },
    "FoldersDeleteParams": {
      "type": "object",
      "required": [
        "folderId"
      ],
      "properties": {
        "folderId": {
          "type": "string",
          "description": "Folder ID."
        }
      }
    },
    "FoldersListCall": {
      "title": "folders.list",
      "type": "object",
      "description": "List folders in a workspace.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "folders.list"
        },
        "params": {
          "$ref": "#/$defs/FoldersListParams"
        }
      }
    },
    "FoldersListParams": {
      "type": "object",
      "required": [
        "workspaceId"
      ],
      "properties": {
        "workspaceId": {
          "type": "string",
          "description": "Workspace ID."
        },
        "limit": {
          "type": "integer",
          "description": "Page size (1–100).",
          "minimum": 1,
          "maximum": 100,
          "default": 20
        },
        "cursor": {
          "type": "string",
          "description": "Pagination cursor from a previous response (`nextCursor`)."
        }
      }
    },
    "FoldersUpdateCall": {
      "title": "folders.update",
      "type": "object",
      "description": "Rename a folder or move it to a different parent.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "folders.update"
        },
        "params": {
          "$ref": "#/$defs/FoldersUpdateParams"
        }
      }
    },
    "FoldersUpdateParams": {
      "type": "object",
      "required": [
        "folderId"
      ],
      "properties": {
        "folderId": {
          "type": "string",
          "description": "Folder ID."
        },
        "name": {
          "type": "string",
          "description": "New folder name (1–255 characters).",
          "minLength": 1,
          "maxLength": 255
        },
        "parentId": {
          "type": [
            "string",
            "null"
          ],
          "description": "New parent folder. Pass `null` to move to root."
        }
      }
    },
    "FormSettingsGetCall": {
      "title": "formSettings.get",
      "type": "object",
      "description": "Read a form's behavior settings.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "formSettings.get"
        },
        "params": {
          "$ref": "#/$defs/FormSettingsGetParams"
        }
      }
    },
    "FormSettingsGetParams": {
      "type": "object",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        }
      }
    },
    "FormSettingsUpdateCall": {
      "title": "formSettings.update",
      "type": "object",
      "description": "Update a form's behavior settings.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "formSettings.update"
        },
        "params": {
          "$ref": "#/$defs/FormSettingsUpdateParams"
        }
      }
    },
    "FormSettingsUpdateParams": {
      "type": "object",
      "description": "A partial update: only the fields you send are written. Subjects and bodies are plain text and accept `{{variable}}` placeholders; newlines become paragraphs.",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        },
        "language": {
          "type": "string",
          "description": "BCP-47 form language. Default `\"en\"`."
        },
        "requireAuthentication": {
          "type": "boolean"
        },
        "showBranding": {
          "type": "boolean"
        },
        "captchaEnabled": {
          "type": "boolean"
        },
        "passwordEnabled": {
          "type": "boolean"
        },
        "password": {
          "type": [
            "string",
            "null"
          ],
          "description": "4 characters or more. A string implies `passwordEnabled: true`; `null` clears the gate.",
          "minLength": 4
        },
        "notifyOnSubmission": {
          "type": "boolean"
        },
        "notificationEmails": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string",
            "format": "email"
          },
          "maxItems": 10,
          "description": "Owner notification recipients."
        },
        "selfNotificationSubject": {
          "type": "string",
          "description": "Owner emails are not translatable; write them in the language you want."
        },
        "selfNotificationEmailBody": {
          "type": "string"
        },
        "pdfGenerationEnabled": {
          "type": "boolean"
        },
        "showViewSubmissionButton": {
          "type": "boolean"
        },
        "respondentNotificationEnabled": {
          "type": "boolean"
        },
        "respondentNotificationTo": {
          "type": [
            "string",
            "null"
          ],
          "description": "The field id of an email question, or `null`."
        },
        "respondentNotificationSubject": {
          "type": "string"
        },
        "respondentNotificationBody": {
          "type": "string"
        },
        "respondentNotificationPdfEnabled": {
          "type": "boolean"
        },
        "respondentReminderEnabled": {
          "type": "boolean",
          "description": "Pro."
        },
        "respondentReminderTo": {
          "type": [
            "string",
            "null"
          ],
          "description": "The field id of an email question, or `null`."
        },
        "respondentReminderSubject": {
          "type": "string"
        },
        "respondentReminderBody": {
          "type": "string"
        },
        "respondentReminderRequiredFieldIds": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          }
        },
        "reminderSteps": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          },
          "description": "Idle offsets like `[\"1d\",\"3d\",\"1w\"]`, at most 5, sorted and deduplicated on save; `[]` for none. Applies to abandoned public-link responses and to requests alike. Pro."
        },
        "respondentReminderIdleWindow": {
          "$ref": "#/$defs/IdleWindow",
          "description": "Single-step form of `reminderSteps`, ignored when `reminderSteps` is set.",
          "deprecated": true
        },
        "redirectUrl": {
          "type": [
            "string",
            "null"
          ],
          "description": "`http(s)` URL; `null` or `\"\"` clears."
        },
        "redirectQueryParams": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "object",
            "required": [
              "paramName",
              "fieldId"
            ],
            "properties": {
              "paramName": {
                "type": "string"
              },
              "fieldId": {
                "type": "string"
              }
            }
          }
        },
        "allowAnotherResponse": {
          "type": "boolean",
          "description": "Mutually exclusive with a redirect."
        },
        "maxSubmissionsPerRespondent": {
          "type": "integer",
          "description": "0 = unlimited, max 1000.",
          "minimum": 0,
          "maximum": 1000
        },
        "editAfterSubmit": {
          "type": "boolean"
        },
        "maxEdits": {
          "type": "integer",
          "description": "0 = unlimited, max 3.",
          "minimum": 0,
          "maximum": 3
        },
        "draftRetentionDays": {
          "type": [
            "integer",
            "null"
          ],
          "description": "0–36500; `null` reverts to the default.",
          "minimum": 0,
          "maximum": 36500
        },
        "submissionRetentionDays": {
          "type": [
            "integer",
            "null"
          ],
          "description": "0–36500; `null` reverts to the default. Business. Setting it clears any fixed deletion date configured in the builder.",
          "minimum": 0,
          "maximum": 36500
        },
        "emailDomainId": {
          "type": [
            "string",
            "null"
          ],
          "description": "A verified email-domain id from `formSettings.get`, for a custom From address. `null` resets to the default sender."
        }
      }
    },
    "FormsCreateCall": {
      "title": "forms.create",
      "type": "object",
      "description": "Create a new empty form.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "forms.create"
        },
        "params": {
          "$ref": "#/$defs/FormsCreateParams"
        }
      }
    },
    "FormsCreateParams": {
      "type": "object",
      "required": [
        "name",
        "workspaceId"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Form name (1–255 characters).",
          "minLength": 1,
          "maxLength": 255
        },
        "workspaceId": {
          "type": "string",
          "description": "Workspace ID."
        },
        "folderId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Place the form in a folder. Omit to create at workspace root."
        }
      }
    },
    "FormsDeleteCall": {
      "title": "forms.delete",
      "type": "object",
      "description": "Move a form to trash.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "forms.delete"
        },
        "params": {
          "$ref": "#/$defs/FormsDeleteParams"
        }
      }
    },
    "FormsDeleteParams": {
      "type": "object",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        }
      }
    },
    "FormsGetCall": {
      "title": "forms.get",
      "type": "object",
      "description": "Get full details for a single form, including questions, cover, logo, and a preview URL.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "forms.get"
        },
        "params": {
          "$ref": "#/$defs/FormsGetParams"
        }
      }
    },
    "FormsGetParams": {
      "type": "object",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        }
      }
    },
    "FormsListCall": {
      "title": "forms.list",
      "type": "object",
      "description": "List forms in a workspace.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "forms.list"
        },
        "params": {
          "$ref": "#/$defs/FormsListParams"
        }
      }
    },
    "FormsListParams": {
      "type": "object",
      "required": [
        "workspaceId"
      ],
      "properties": {
        "workspaceId": {
          "type": "string",
          "description": "Workspace ID."
        },
        "folderId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Filter by folder. Pass `null` for root-level forms only. Omit to list all."
        },
        "query": {
          "type": "string",
          "description": "Fuzzy name search. Results capped at `limit`; not cursor-paginated."
        },
        "limit": {
          "type": "integer",
          "description": "Page size (1–100).",
          "minimum": 1,
          "maximum": 100,
          "default": 20
        },
        "cursor": {
          "type": "string",
          "description": "Pagination cursor from a previous response (`nextCursor`)."
        }
      }
    },
    "FormsPublishCall": {
      "title": "forms.publish",
      "type": "object",
      "description": "Publish a form so it can accept responses, and freeze its field keys into a new snapshot.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "forms.publish"
        },
        "params": {
          "$ref": "#/$defs/FormsPublishParams"
        }
      }
    },
    "FormsPublishParams": {
      "type": "object",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        }
      }
    },
    "FormsRestoreCall": {
      "title": "forms.restore",
      "type": "object",
      "description": "Restore a form from trash.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "forms.restore"
        },
        "params": {
          "$ref": "#/$defs/FormsRestoreParams"
        }
      }
    },
    "FormsRestoreParams": {
      "type": "object",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        },
        "folderId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Where to restore it. Omit for its original folder, `null` for workspace root, or a folder ID."
        }
      }
    },
    "FormsUnpublishCall": {
      "title": "forms.unpublish",
      "type": "object",
      "description": "Take a form offline.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "forms.unpublish"
        },
        "params": {
          "$ref": "#/$defs/FormsUnpublishParams"
        }
      }
    },
    "FormsUnpublishParams": {
      "type": "object",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        }
      }
    },
    "FormsUpdateCall": {
      "title": "forms.update",
      "type": "object",
      "description": "Update form metadata: name, folder, emoji, cover, or logo.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "forms.update"
        },
        "params": {
          "$ref": "#/$defs/FormsUpdateParams"
        }
      }
    },
    "FormsUpdateParams": {
      "type": "object",
      "description": "Pass at least one of the five updatable fields. Form content is not changed here.",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        },
        "name": {
          "type": "string",
          "description": "New form name (1–255 characters).",
          "minLength": 1,
          "maxLength": 255
        },
        "folderId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Move form to a folder. Pass `null` to move to workspace root."
        },
        "emoji": {
          "type": [
            "string",
            "null"
          ],
          "description": "Form emoji (max 10 characters). Pass `null` to clear.",
          "maxLength": 10
        },
        "cover": {
          "$ref": "#/$defs/Cover"
        },
        "logo": {
          "$ref": "#/$defs/Logo"
        }
      }
    },
    "IdleWindow": {
      "type": "string",
      "enum": [
        "12h",
        "1d",
        "3d",
        "1w"
      ]
    },
    "Logo": {
      "description": "Form logo. `{\"type\": \"icon\", \"name\": \"HeartIcon\"}`, `{\"type\": \"image\", \"url\": \"https://...\"}`, or `{\"type\": \"none\"}` to remove.",
      "oneOf": [
        {
          "type": "object",
          "required": [
            "type",
            "name"
          ],
          "properties": {
            "type": {
              "const": "icon"
            },
            "name": {
              "type": "string",
              "description": "Icon name.",
              "enum": [
                "QuestionMarkIcon",
                "ListBulletsIcon",
                "ChartBarIcon",
                "ClockCountdownIcon",
                "HeartIcon",
                "LightbulbIcon",
                "CheckCircleIcon",
                "MagnifyingGlassIcon",
                "TrendUpIcon",
                "EnvelopeIcon",
                "PhoneIcon",
                "CalendarIcon",
                "LinkIcon",
                "UsersIcon"
              ]
            }
          }
        },
        {
          "type": "object",
          "required": [
            "type",
            "url"
          ],
          "properties": {
            "type": {
              "const": "image"
            },
            "url": {
              "type": "string",
              "description": "An `http(s)` URL or a `data:image` URI.",
              "pattern": "^(https?://|data:image/)"
            }
          }
        },
        {
          "type": "object",
          "required": [
            "type"
          ],
          "properties": {
            "type": {
              "const": "none"
            }
          }
        }
      ]
    },
    "MeGetCall": {
      "title": "me.get",
      "type": "object",
      "description": "Get information about the authenticated user.",
      "required": [
        "method"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "me.get"
        },
        "params": {
          "$ref": "#/$defs/MeGetParams"
        }
      }
    },
    "MeGetParams": {
      "type": "object",
      "properties": {},
      "description": "No parameters."
    },
    "MethodsListCall": {
      "title": "methods.list",
      "type": "object",
      "description": "List every method name this deployment serves, sorted.",
      "required": [
        "method"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "methods.list"
        },
        "params": {
          "$ref": "#/$defs/MethodsListParams"
        }
      }
    },
    "MethodsListParams": {
      "type": "object",
      "properties": {},
      "description": "No parameters."
    },
    "RequestOutcome": {
      "type": "string",
      "description": "The recipient's verdict from a decision question.",
      "enum": [
        "approve",
        "decline",
        "changes"
      ]
    },
    "RequestStatus": {
      "type": "string",
      "enum": [
        "pending",
        "completed",
        "expired",
        "canceled"
      ]
    },
    "RequestsCancelCall": {
      "title": "requests.cancel",
      "type": "object",
      "description": "Withdraw a pending request.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "requests.cancel"
        },
        "params": {
          "$ref": "#/$defs/RequestsCancelParams"
        }
      }
    },
    "RequestsCancelParams": {
      "type": "object",
      "required": [
        "requestId"
      ],
      "properties": {
        "requestId": {
          "type": "string",
          "description": "Request ID."
        },
        "reason": {
          "type": "string",
          "description": "Your note for why, kept on the request and sent in the callback."
        }
      }
    },
    "RequestsCreateCall": {
      "title": "requests.create",
      "type": "object",
      "description": "Create a request.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "requests.create"
        },
        "params": {
          "$ref": "#/$defs/RequestsCreateParams"
        }
      }
    },
    "RequestsCreateParams": {
      "type": "object",
      "description": "Spends one unit of the workspace's monthly allowance, whether or not the recipient answers.",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "The published form to assign."
        },
        "recipient": {
          "type": "object",
          "description": "An email is required when `delivery` is `\"email\"`; otherwise it only identifies the person in the Requests page and on their answers.",
          "properties": {
            "email": {
              "type": "string",
              "format": "email"
            },
            "name": {
              "type": "string"
            }
          }
        },
        "prefill": {
          "type": "object",
          "additionalProperties": true,
          "description": "Initial answers by field key. The recipient sees them and can change them."
        },
        "readonly": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Prefilled keys the recipient cannot change. Every key here must also appear in `prefill`, and a locked required field must be prefilled with a non-empty value."
        },
        "context": {
          "type": "object",
          "additionalProperties": true,
          "description": "Values for the form's hidden fields, by field key. Trusted, unchangeable, and echoed back in the callback. An unknown key is rejected with `UNKNOWN_FIELD_KEY`."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": true,
          "description": "Your own bookkeeping. Never reaches the form; comes back in callbacks and reads."
        },
        "language": {
          "type": "string",
          "description": "One of the form's published languages. Defaults to the form's own default."
        },
        "delivery": {
          "type": "string",
          "description": "`\"email\"` to have Formstep send the invitation (needs a recipient email, and Pro or Business or one of a Free account's 10 free invitations, which go only to the account's own address), or `\"none\"` to deliver the link yourself.",
          "enum": [
            "none",
            "email"
          ],
          "default": "none"
        },
        "reminders": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Override the form's reminder schedule for this request. An empty array switches reminders off."
        },
        "expiresAt": {
          "type": "number",
          "description": "Epoch milliseconds. Defaults to 30 days out; 365 days is the maximum."
        },
        "callbackUrl": {
          "type": "string",
          "description": "Where Formstep POSTs the callback when the request ends. HTTPS only, and the host must resolve to a public address.",
          "format": "uri"
        },
        "externalId": {
          "type": "string",
          "description": "Your own id for this request. Filterable in `requests.list`."
        },
        "idempotencyKey": {
          "type": "string",
          "description": "Repeating it with the same body returns the original request with `deduplicated: true`. A different body is rejected. Keys live 30 days."
        },
        "domainId": {
          "type": "string",
          "description": "Mint the link on one of your custom domains. REST API only."
        },
        "documents": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "documentId"
            ],
            "properties": {
              "documentId": {
                "type": "string",
                "description": "An upload from `documents.create`."
              },
              "field": {
                "type": "string",
                "description": "The Documents block's field key. Optional when the form has exactly one block; required with two or more."
              },
              "name": {
                "type": "string",
                "description": "Display name override."
              }
            }
          },
          "description": "Files handed to this one recipient, uploaded first with `documents.create`."
        },
        "test": {
          "type": "boolean",
          "description": "A dry run: nothing is emailed, the callback carries `\"test\": true`, and the submission counts nowhere.",
          "default": false
        }
      }
    },
    "RequestsDeleteCall": {
      "title": "requests.delete",
      "type": "object",
      "description": "Delete a request and everything it gathered, whatever its status.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "requests.delete"
        },
        "params": {
          "$ref": "#/$defs/RequestsDeleteParams"
        }
      }
    },
    "RequestsDeleteParams": {
      "type": "object",
      "required": [
        "requestId"
      ],
      "properties": {
        "requestId": {
          "type": "string",
          "description": "Request ID."
        }
      }
    },
    "RequestsGetCall": {
      "title": "requests.get",
      "type": "object",
      "description": "Get one request in full: status, outcome, what was prefilled, its timeline, and, once completed, `answers` and `display` keyed by field key.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "requests.get"
        },
        "params": {
          "$ref": "#/$defs/RequestsGetParams"
        }
      }
    },
    "RequestsGetParams": {
      "type": "object",
      "required": [
        "requestId"
      ],
      "properties": {
        "requestId": {
          "type": "string",
          "description": "Request ID."
        }
      }
    },
    "RequestsListCall": {
      "title": "requests.list",
      "type": "object",
      "description": "List requests in a workspace or on one form, newest first.",
      "required": [
        "method"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "requests.list"
        },
        "params": {
          "$ref": "#/$defs/RequestsListParams"
        }
      }
    },
    "RequestsListParams": {
      "type": "object",
      "description": "Give `workspaceId` or `formId`; neither is `400 VALIDATION_ERROR` with reason `SCOPE_REQUIRED`. Test requests are left out unless you ask for them.",
      "properties": {
        "workspaceId": {
          "type": "string",
          "description": "Scope to a workspace. Give this or `formId`."
        },
        "formId": {
          "type": "string",
          "description": "Scope to one form."
        },
        "status": {
          "$ref": "#/$defs/RequestStatus"
        },
        "outcome": {
          "$ref": "#/$defs/RequestOutcome",
          "description": "Implies completed requests only, and overrides `status`."
        },
        "externalId": {
          "type": "string",
          "description": "Your own id, to find the request a run created."
        },
        "includeTest": {
          "type": "boolean",
          "description": "Include requests created with `test: true`.",
          "default": false
        },
        "limit": {
          "type": "integer",
          "description": "Page size (1–100).",
          "minimum": 1,
          "maximum": 100,
          "default": 25
        },
        "cursor": {
          "type": "string",
          "description": "Pagination cursor from a previous response (`nextCursor`)."
        }
      }
    },
    "RequestsRemindCall": {
      "title": "requests.remind",
      "type": "object",
      "description": "Email the recipient now, without touching the reminder schedule.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "requests.remind"
        },
        "params": {
          "$ref": "#/$defs/RequestsRemindParams"
        }
      }
    },
    "RequestsRemindParams": {
      "type": "object",
      "description": "Needs a recipient email and a Pro or Business plan. At least 10 minutes between manual reminders, and at most 8 reminders per request in total.",
      "required": [
        "requestId"
      ],
      "properties": {
        "requestId": {
          "type": "string",
          "description": "Request ID. Must still be pending, and not a test request."
        }
      }
    },
    "RequestsReplayCallbackCall": {
      "title": "requests.replayCallback",
      "type": "object",
      "description": "Re-send the callback a request fired when it ended, with the same payload and the same event id, so a receiver that already handled it can deduplicate.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "requests.replayCallback"
        },
        "params": {
          "$ref": "#/$defs/RequestsReplayCallbackParams"
        }
      }
    },
    "RequestsReplayCallbackParams": {
      "type": "object",
      "required": [
        "requestId"
      ],
      "properties": {
        "requestId": {
          "type": "string",
          "description": "Request ID. Must be completed, expired, or canceled."
        }
      }
    },
    "RequestsSampleCall": {
      "title": "requests.sample",
      "type": "object",
      "description": "Build a sample request event for a form, without any real request.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "requests.sample"
        },
        "params": {
          "$ref": "#/$defs/RequestsSampleParams"
        }
      }
    },
    "RequestsSampleParams": {
      "type": "object",
      "required": [
        "formId",
        "eventType"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        },
        "eventType": {
          "type": "string",
          "description": "Which ending to sample, in the `webhooks.create` spelling. The envelope's `type` is the dotted form.",
          "enum": [
            "request_completed",
            "request_expired",
            "request_canceled"
          ]
        }
      }
    },
    "ShareLinksCreateCall": {
      "title": "shareLinks.create",
      "type": "object",
      "description": "Create a share link for a form.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "shareLinks.create"
        },
        "params": {
          "$ref": "#/$defs/ShareLinksCreateParams"
        }
      }
    },
    "ShareLinksCreateParams": {
      "type": "object",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID. The form must be published; call `forms.publish` first."
        },
        "expiresAt": {
          "type": "integer",
          "description": "Expiration as a future Unix timestamp in milliseconds. `0` is not accepted here."
        },
        "maxClaims": {
          "type": "integer",
          "description": "Maximum number of times this link can be used. Must be positive.",
          "minimum": 1
        }
      }
    },
    "ShareLinksListCall": {
      "title": "shareLinks.list",
      "type": "object",
      "description": "List share links for a form.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "shareLinks.list"
        },
        "params": {
          "$ref": "#/$defs/ShareLinksListParams"
        }
      }
    },
    "ShareLinksListParams": {
      "type": "object",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        },
        "includeRevoked": {
          "type": "boolean",
          "description": "Include revoked links in the result."
        },
        "limit": {
          "type": "integer",
          "description": "Page size (1–100).",
          "minimum": 1,
          "maximum": 100,
          "default": 20
        },
        "cursor": {
          "type": "string",
          "description": "Pagination cursor from a previous response (`nextCursor`)."
        }
      }
    },
    "ShareLinksUpdateCall": {
      "title": "shareLinks.update",
      "type": "object",
      "description": "Update a share link.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "shareLinks.update"
        },
        "params": {
          "$ref": "#/$defs/ShareLinksUpdateParams"
        }
      }
    },
    "ShareLinksUpdateParams": {
      "type": "object",
      "required": [
        "shareLinkId"
      ],
      "properties": {
        "shareLinkId": {
          "type": "string",
          "description": "Share link ID."
        },
        "expiresAt": {
          "type": "integer",
          "description": "New expiration timestamp in milliseconds. Pass `0` to remove expiration."
        },
        "maxClaims": {
          "type": "integer",
          "description": "New max claims. Pass `-1` to remove the limit."
        },
        "customDomainId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Attach a custom domain. Pass `null` to detach."
        },
        "customSlug": {
          "type": [
            "string",
            "null"
          ],
          "description": "Custom URL slug (3–64 characters, lowercase alphanumeric and hyphens). Required together with `customDomainId`; pass both `null` to detach. `login`, `auth-callback`, `preview`, `payment`, `api`, `admin` and `health` are reserved.",
          "minLength": 3,
          "maxLength": 64
        },
        "revoked": {
          "const": true,
          "description": "Set to `true` to permanently revoke the link. Cannot be combined with other fields and cannot be undone; the only delete path for a share link."
        }
      }
    },
    "SubmissionsListCall": {
      "title": "submissions.list",
      "type": "object",
      "description": "List a form's submissions, newest page first, with cursor pagination.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "submissions.list"
        },
        "params": {
          "$ref": "#/$defs/SubmissionsListParams"
        }
      }
    },
    "SubmissionsListParams": {
      "type": "object",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        },
        "includeDrafts": {
          "type": "boolean",
          "description": "Include responses that were started but never submitted.",
          "default": false
        },
        "translationLanguage": {
          "type": "string",
          "description": "Attach stored AI translations of the answers under `items[].translation.display`. `items[].answers` and `items[].display` always stay the original."
        },
        "limit": {
          "type": "integer",
          "description": "Page size (1–100).",
          "minimum": 1,
          "maximum": 100,
          "default": 20
        },
        "cursor": {
          "type": "string",
          "description": "Pagination cursor from a previous response (`nextCursor`)."
        }
      }
    },
    "SubmissionsPdfCall": {
      "title": "submissions.pdf",
      "type": "object",
      "description": "Get a link to one submission's PDF.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "submissions.pdf"
        },
        "params": {
          "$ref": "#/$defs/SubmissionsPdfParams"
        }
      }
    },
    "SubmissionsPdfParams": {
      "type": "object",
      "description": "Built for the Zapier connector: returns a result only when the form has an active Zapier integration configured to include the PDF, and the PDF was retained.",
      "required": [
        "formId",
        "submissionId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        },
        "submissionId": {
          "type": "string",
          "description": "Submission ID. Must belong to that form and be completed."
        }
      }
    },
    "SubmissionsSampleCall": {
      "title": "submissions.sample",
      "type": "object",
      "description": "Build a sample submission payload for a form, without any real data.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "submissions.sample"
        },
        "params": {
          "$ref": "#/$defs/SubmissionsSampleParams"
        }
      }
    },
    "SubmissionsSampleParams": {
      "type": "object",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        }
      }
    },
    "TranslationsAddLanguageCall": {
      "title": "translations.addLanguage",
      "type": "object",
      "description": "Register a language on a form.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "translations.addLanguage"
        },
        "params": {
          "$ref": "#/$defs/TranslationsAddLanguageParams"
        }
      }
    },
    "TranslationsAddLanguageParams": {
      "type": "object",
      "description": "Every other translation method fails with `404 NOT_FOUND` until the language is added.",
      "required": [
        "formId",
        "language"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        },
        "language": {
          "type": "string",
          "description": "BCP-47 language tag (e.g. `\"es\"`, `\"pt-BR\"`)."
        }
      }
    },
    "TranslationsDeleteEntryCall": {
      "title": "translations.deleteEntry",
      "type": "object",
      "description": "Delete a single translation entry, reverting that key to the form's default language.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "translations.deleteEntry"
        },
        "params": {
          "$ref": "#/$defs/TranslationsDeleteEntryParams"
        }
      }
    },
    "TranslationsDeleteEntryParams": {
      "type": "object",
      "description": "Idempotent. When the last entry for a language goes, the language drops off the form's published languages.",
      "required": [
        "formId",
        "language",
        "key"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        },
        "language": {
          "type": "string",
          "description": "BCP-47 language tag."
        },
        "key": {
          "type": "string",
          "description": "Translation key to delete."
        }
      }
    },
    "TranslationsListEntriesCall": {
      "title": "translations.listEntries",
      "type": "object",
      "description": "List every source key for one language on a form, with its current state.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "translations.listEntries"
        },
        "params": {
          "$ref": "#/$defs/TranslationsListEntriesParams"
        }
      }
    },
    "TranslationsListEntriesParams": {
      "type": "object",
      "required": [
        "formId",
        "language"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        },
        "language": {
          "type": "string",
          "description": "BCP-47 language tag. Must already be on the form."
        }
      }
    },
    "TranslationsListLanguagesCall": {
      "title": "translations.listLanguages",
      "type": "object",
      "description": "List all languages configured on a form.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "translations.listLanguages"
        },
        "params": {
          "$ref": "#/$defs/TranslationsListLanguagesParams"
        }
      }
    },
    "TranslationsListLanguagesParams": {
      "type": "object",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        }
      }
    },
    "TranslationsRemoveLanguageCall": {
      "title": "translations.removeLanguage",
      "type": "object",
      "description": "Remove a language and all its translations from a form.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "translations.removeLanguage"
        },
        "params": {
          "$ref": "#/$defs/TranslationsRemoveLanguageParams"
        }
      }
    },
    "TranslationsRemoveLanguageParams": {
      "type": "object",
      "required": [
        "formId",
        "language"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        },
        "language": {
          "type": "string",
          "description": "BCP-47 language tag."
        }
      }
    },
    "TranslationsSetEntryCall": {
      "title": "translations.setEntry",
      "type": "object",
      "description": "Set a single translation entry.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "translations.setEntry"
        },
        "params": {
          "$ref": "#/$defs/TranslationsSetEntryParams"
        }
      }
    },
    "TranslationsSetEntryParams": {
      "type": "object",
      "description": "The language must have been added with `translations.addLanguage` first. Writes are live: there is no draft-then-publish step.",
      "required": [
        "formId",
        "language",
        "key",
        "value"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        },
        "language": {
          "type": "string",
          "description": "BCP-47 language tag."
        },
        "key": {
          "type": "string",
          "description": "A key from `translations.listEntries`. Do not construct one by hand."
        },
        "value": {
          "type": "string",
          "description": "The translated fragment, JSON-stringified. Its mark structure must match the source fragment."
        }
      }
    },
    "WebhookEventType": {
      "type": "string",
      "enum": [
        "submission_created",
        "submission_updated",
        "submission_abandoned",
        "request_completed",
        "request_expired",
        "request_canceled"
      ]
    },
    "WebhookProvider": {
      "type": "string",
      "description": "A label for your own bookkeeping; every provider behaves the same.",
      "enum": [
        "zapier",
        "make",
        "n8n"
      ]
    },
    "WebhooksCreateCall": {
      "title": "webhooks.create",
      "type": "object",
      "description": "Subscribe a URL to form events: new or abandoned submissions, or requests on the form ending.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "webhooks.create"
        },
        "params": {
          "$ref": "#/$defs/WebhooksCreateParams"
        }
      }
    },
    "WebhooksCreateParams": {
      "type": "object",
      "required": [
        "formId",
        "targetUrl",
        "provider"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        },
        "targetUrl": {
          "type": "string",
          "description": "HTTPS URL to receive webhook payloads.",
          "format": "uri"
        },
        "provider": {
          "$ref": "#/$defs/WebhookProvider"
        },
        "eventType": {
          "$ref": "#/$defs/WebhookEventType",
          "default": "submission_created",
          "description": "The three `submission_*` types deliver the submission payload; the three `request_*` types deliver the matching request event whenever a request on the form ends that way."
        },
        "idleWindow": {
          "$ref": "#/$defs/IdleWindow",
          "description": "Required when `eventType` is `submission_abandoned`; rejected for every other type."
        },
        "signingSecret": {
          "type": "string",
          "description": "Optional HMAC signing secret. When supplied, deliveries include `X-Formstep-Signature`. Stored but never returned.",
          "minLength": 32,
          "maxLength": 255
        }
      }
    },
    "WebhooksDeleteCall": {
      "title": "webhooks.delete",
      "type": "object",
      "description": "Remove a webhook subscription.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "webhooks.delete"
        },
        "params": {
          "$ref": "#/$defs/WebhooksDeleteParams"
        }
      }
    },
    "WebhooksDeleteParams": {
      "type": "object",
      "required": [
        "subscriptionId"
      ],
      "properties": {
        "subscriptionId": {
          "type": "string",
          "description": "Subscription ID from `webhooks.list` or `webhooks.create`."
        }
      }
    },
    "WebhooksListCall": {
      "title": "webhooks.list",
      "type": "object",
      "description": "List webhook subscriptions for a form.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "webhooks.list"
        },
        "params": {
          "$ref": "#/$defs/WebhooksListParams"
        }
      }
    },
    "WebhooksListParams": {
      "type": "object",
      "required": [
        "formId"
      ],
      "properties": {
        "formId": {
          "type": "string",
          "description": "Form ID."
        }
      }
    },
    "WorkspacesCreateInviteCall": {
      "title": "workspaces.createInvite",
      "type": "object",
      "description": "Create an invite link for a workspace.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "workspaces.createInvite"
        },
        "params": {
          "$ref": "#/$defs/WorkspacesCreateInviteParams"
        }
      }
    },
    "WorkspacesCreateInviteParams": {
      "type": "object",
      "required": [
        "workspaceId"
      ],
      "properties": {
        "workspaceId": {
          "type": "string",
          "description": "Workspace ID."
        },
        "expiresAt": {
          "type": "number",
          "description": "Expiration as a future Unix timestamp in milliseconds.",
          "exclusiveMinimum": 0
        },
        "maxUses": {
          "type": "number",
          "description": "Maximum number of times the invite can be used.",
          "exclusiveMinimum": 0
        }
      }
    },
    "WorkspacesGetInviteCall": {
      "title": "workspaces.getInvite",
      "type": "object",
      "description": "Get one workspace invite.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "workspaces.getInvite"
        },
        "params": {
          "$ref": "#/$defs/WorkspacesGetInviteParams"
        }
      }
    },
    "WorkspacesGetInviteParams": {
      "type": "object",
      "required": [
        "inviteId"
      ],
      "properties": {
        "inviteId": {
          "type": "string",
          "description": "Invite ID."
        }
      }
    },
    "WorkspacesListCall": {
      "title": "workspaces.list",
      "type": "object",
      "description": "List the workspaces your token can reach.",
      "required": [
        "method"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "workspaces.list"
        },
        "params": {
          "$ref": "#/$defs/WorkspacesListParams"
        }
      }
    },
    "WorkspacesListParams": {
      "type": "object",
      "description": "No parameters. A token is bound to one workspace, so this returns exactly that one.",
      "properties": {}
    },
    "WorkspacesRevokeInviteCall": {
      "title": "workspaces.revokeInvite",
      "type": "object",
      "description": "Permanently revoke a workspace invite.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "workspaces.revokeInvite"
        },
        "params": {
          "$ref": "#/$defs/WorkspacesRevokeInviteParams"
        }
      }
    },
    "WorkspacesRevokeInviteParams": {
      "type": "object",
      "required": [
        "inviteId"
      ],
      "properties": {
        "inviteId": {
          "type": "string",
          "description": "Invite ID."
        }
      }
    },
    "WorkspacesUpdateInviteCall": {
      "title": "workspaces.updateInvite",
      "type": "object",
      "description": "Update an existing workspace invite.",
      "required": [
        "method",
        "params"
      ],
      "properties": {
        "method": {
          "type": "string",
          "const": "workspaces.updateInvite"
        },
        "params": {
          "$ref": "#/$defs/WorkspacesUpdateInviteParams"
        }
      }
    },
    "WorkspacesUpdateInviteParams": {
      "type": "object",
      "description": "Provide at least one of `expiresAt` or `maxUses`, or the call is rejected.",
      "required": [
        "inviteId"
      ],
      "properties": {
        "inviteId": {
          "type": "string",
          "description": "Invite ID."
        },
        "expiresAt": {
          "type": "number",
          "description": "New expiration timestamp in milliseconds.",
          "exclusiveMinimum": 0
        },
        "maxUses": {
          "type": "number",
          "description": "New max uses limit.",
          "exclusiveMinimum": 0
        }
      }
    }
  }
}