{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/formstep-io/json-schema/formstep-io-response-schema.json",
  "title": "Response",
  "description": "Every response is a JSON object with an `ok` field: the success envelope when `ok` is `true`, the error envelope when it is `false`.",
  "x-generated": "2026-11-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/formstep-io-openapi.json#/components/schemas/Response",
  "oneOf": [
    {
      "$ref": "#/$defs/SuccessEnvelope"
    },
    {
      "$ref": "#/$defs/ErrorEnvelope"
    }
  ],
  "$defs": {
    "AnalyticsGetResult": {
      "title": "analytics.get result",
      "type": "object",
      "required": [
        "formId",
        "period",
        "totalEvents",
        "metrics",
        "breakdown"
      ],
      "properties": {
        "formId": {
          "type": "string"
        },
        "period": {
          "type": "object",
          "description": "Both `null` for all time.",
          "required": [
            "from",
            "to"
          ],
          "properties": {
            "from": {
              "type": [
                "integer",
                "null"
              ]
            },
            "to": {
              "type": [
                "integer",
                "null"
              ]
            }
          }
        },
        "totalEvents": {
          "type": "integer",
          "description": "Raw event row count before deduplication into unique visitors."
        },
        "metrics": {
          "type": "object",
          "required": [
            "views",
            "uniqueVisitors",
            "engaged",
            "submissions",
            "engagementRate",
            "completionRate",
            "bounceRate"
          ],
          "properties": {
            "views": {
              "type": "integer"
            },
            "uniqueVisitors": {
              "type": "integer"
            },
            "engaged": {
              "type": "integer"
            },
            "submissions": {
              "type": "integer"
            },
            "engagementRate": {
              "type": "number",
              "description": "0–100."
            },
            "completionRate": {
              "type": "number",
              "description": "0–100."
            },
            "bounceRate": {
              "type": "number",
              "description": "0–100."
            }
          }
        },
        "breakdown": {
          "type": "object",
          "description": "Unique visitors per value. A visitor counts once per value, like `metrics.uniqueVisitors`, however many events they sent.",
          "required": [
            "byBrowser",
            "byCountry",
            "byDevice",
            "bySource"
          ],
          "properties": {
            "byBrowser": {
              "type": "object",
              "additionalProperties": {
                "type": "integer"
              }
            },
            "byCountry": {
              "type": "object",
              "additionalProperties": {
                "type": "integer"
              }
            },
            "byDevice": {
              "type": "object",
              "additionalProperties": {
                "type": "integer"
              }
            },
            "bySource": {
              "type": "object",
              "additionalProperties": {
                "type": "integer"
              }
            }
          }
        },
        "events": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true
          },
          "description": "Present when `includeEvents` is `true`."
        }
      }
    },
    "AnswersByKey": {
      "type": "object",
      "additionalProperties": true,
      "description": "Answers keyed by field key. A choice answer is its option key, a matrix `{ \"row_key\": \"column_key\" }`, a repeating group an array of instances."
    },
    "CustomDomain": {
      "type": "object",
      "required": [
        "id",
        "hostname"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Custom domain ID, for `shareLinks.update`."
        },
        "hostname": {
          "type": "string"
        }
      }
    },
    "DisplayByKey": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "The same keys as `answers`, as readable text."
    },
    "DocumentsCreateResult": {
      "title": "documents.create result",
      "type": "object",
      "required": [
        "id",
        "name",
        "contentType",
        "size",
        "uploadUrl",
        "expiresAt"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Document ID to reference as `documents[].documentId` in `requests.create`."
        },
        "name": {
          "type": "string"
        },
        "contentType": {
          "type": "string"
        },
        "size": {
          "type": "integer"
        },
        "uploadUrl": {
          "type": "string",
          "description": "Presigned `PUT` URL.",
          "format": "uri"
        },
        "expiresAt": {
          "type": "integer",
          "description": "Unix timestamp in milliseconds."
        }
      }
    },
    "ErrorCode": {
      "type": "string",
      "description": "Closed set: a new failure mode never adds a code, it adds a `details.reason`. Branch on `code` for the HTTP-level outcome and on `details.reason` for the fix.",
      "enum": [
        "VALIDATION_ERROR",
        "UNAUTHORIZED",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "RATE_LIMITED",
        "UPGRADE_REQUIRED",
        "METHOD_NOT_FOUND",
        "INTERNAL_ERROR"
      ]
    },
    "ErrorDetails": {
      "type": "object",
      "description": "Present whenever the server can name the cause.",
      "required": [
        "reason"
      ],
      "properties": {
        "reason": {
          "type": "string",
          "description": "The specific cause, e.g. `UNKNOWN_FIELD_KEY`."
        },
        "field": {
          "type": "string",
          "description": "The offending parameter, dotted for nesting."
        },
        "validKeys": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "validValues": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The option values a choice question accepts."
        },
        "expectedType": {
          "type": "string"
        },
        "feature": {
          "type": "string",
          "description": "On `UPGRADE_REQUIRED`."
        },
        "retryAfterMs": {
          "type": "integer",
          "description": "On a throttled call."
        }
      }
    },
    "ErrorEnvelope": {
      "type": "object",
      "required": [
        "ok",
        "error"
      ],
      "properties": {
        "ok": {
          "const": false
        },
        "error": {
          "type": "object",
          "required": [
            "code",
            "message"
          ],
          "properties": {
            "code": {
              "$ref": "#/$defs/ErrorCode"
            },
            "message": {
              "type": "string",
              "description": "Human-readable message."
            },
            "details": {
              "$ref": "#/$defs/ErrorDetails"
            }
          }
        }
      }
    },
    "EventEnvelope": {
      "type": "object",
      "description": "The envelope a webhook subscription or request callback receives.",
      "required": [
        "id",
        "type",
        "createdAt",
        "apiVersion",
        "test",
        "data"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Event ID. Samples use a fixed placeholder."
        },
        "type": {
          "type": "string",
          "description": "Dotted event type, e.g. `submission.completed` or `request.completed`."
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "apiVersion": {
          "type": "string",
          "description": "Payload version, e.g. `2026-09-24`."
        },
        "test": {
          "type": "boolean",
          "description": "`true` on samples and test requests."
        },
        "data": {
          "type": "object",
          "additionalProperties": true,
          "description": "The event body. Submission fields are documented in the webhooks reference (https://docs.formstep.io/developers/webhooks-reference#payload), the request block on the callbacks page (https://docs.formstep.io/requests/callbacks#payload)."
        }
      }
    },
    "FieldListField": {
      "type": "object",
      "required": [
        "key",
        "type",
        "title",
        "required",
        "prefillable"
      ],
      "properties": {
        "key": {
          "type": "string",
          "description": "Field key to address the field by in `prefill`, `context`, and `answers`."
        },
        "type": {
          "type": "string",
          "description": "The value shape `prefill` must supply, or `hidden` for a context field."
        },
        "title": {
          "type": "string"
        },
        "required": {
          "type": "boolean"
        },
        "prefillable": {
          "type": "boolean",
          "description": "`false` for a field nobody can supply a value for (file, signature, payment, appointment, documents), hidden fields, and calculated fields."
        },
        "conditional": {
          "const": true,
          "description": "Present when a logic rule decides whether the recipient sees this field."
        },
        "context": {
          "const": true,
          "description": "Present on a hidden field: its value belongs in `context`, never in `prefill`."
        },
        "calculated": {
          "const": true,
          "description": "Present on a calculated field: read it back in `answers`; nothing can send it."
        },
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SlotKey"
          },
          "description": "Choice questions: send the option `key`, not its label."
        },
        "rows": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SlotKey"
          },
          "description": "Matrix only."
        },
        "columns": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SlotKey"
          },
          "description": "Matrix only. A matrix takes `{ \"row_key\": \"column_key\" }`."
        },
        "documents": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name"
            ],
            "properties": {
              "name": {
                "type": "string"
              }
            }
          },
          "description": "Documents block only: the authored files every respondent already sees."
        }
      }
    },
    "FieldListGroup": {
      "type": "object",
      "description": "A repeating group, addressed as a whole with `[{ \"member_key\": value }]` instances.",
      "required": [
        "key",
        "type",
        "repeating",
        "members"
      ],
      "properties": {
        "key": {
          "type": "string"
        },
        "type": {
          "const": "group"
        },
        "repeating": {
          "const": true
        },
        "members": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/FieldListField"
          }
        }
      }
    },
    "FieldsListResult": {
      "title": "fields.list result",
      "type": "object",
      "required": [
        "published",
        "items",
        "hasMore"
      ],
      "properties": {
        "published": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/FieldListField"
              },
              {
                "$ref": "#/$defs/FieldListGroup"
              }
            ]
          }
        },
        "hasMore": {
          "const": false
        }
      }
    },
    "Folder": {
      "type": "object",
      "required": [
        "id",
        "name",
        "workspaceId",
        "parentId",
        "createdAt"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Folder ID."
        },
        "name": {
          "type": "string"
        },
        "workspaceId": {
          "type": "string"
        },
        "parentId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Parent folder ID, or `null` at workspace root."
        },
        "createdAt": {
          "type": "integer",
          "description": "Unix timestamp in milliseconds."
        }
      }
    },
    "FoldersCreateResult": {
      "title": "folders.create result",
      "allOf": [
        {
          "$ref": "#/$defs/Folder"
        },
        {
          "type": "object",
          "required": [
            "alreadyExisted"
          ],
          "properties": {
            "alreadyExisted": {
              "type": "boolean"
            }
          }
        }
      ]
    },
    "FoldersDeleteResult": {
      "title": "folders.delete result",
      "type": "object",
      "required": [
        "folderId",
        "deletedFolderIds",
        "deletedFormIds",
        "message"
      ],
      "properties": {
        "folderId": {
          "type": "string"
        },
        "deletedFolderIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "deletedFormIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "message": {
          "type": "string"
        }
      }
    },
    "FoldersListResult": {
      "title": "folders.list result",
      "type": "object",
      "required": [
        "items",
        "nextCursor",
        "hasMore",
        "canPaginate"
      ],
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Folder"
          }
        },
        "nextCursor": {
          "type": [
            "string",
            "null"
          ],
          "description": "Pass back as `cursor` to read the next page. `null` on the last page."
        },
        "hasMore": {
          "type": "boolean",
          "description": "Whether more items exist after this page."
        },
        "canPaginate": {
          "type": "boolean",
          "description": "`false` when `hasMore` is true but no cursor can resume (fuzzy search)."
        }
      }
    },
    "FoldersUpdateResult": {
      "title": "folders.update result",
      "type": "object",
      "additionalProperties": true,
      "description": "The published reference does not document this result shape; treat it as an open object."
    },
    "FormSettingsGetResult": {
      "title": "formSettings.get result",
      "type": "object",
      "required": [
        "settings",
        "isDefault",
        "availableEmailDomains",
        "defaultFromAddress",
        "payment"
      ],
      "properties": {
        "formId": {
          "type": "string"
        },
        "settings": {
          "type": "object",
          "additionalProperties": true,
          "description": "The effective settings, with defaults filled in."
        },
        "isDefault": {
          "type": "boolean",
          "description": "`true` when the form has no saved settings yet and you are seeing the defaults."
        },
        "availableEmailDomains": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "hostname"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "Pass as `emailDomainId`."
              },
              "hostname": {
                "type": "string"
              },
              "fromAddress": {
                "type": "string"
              }
            }
          },
          "description": "Verified email domains you can pass as `emailDomainId`."
        },
        "defaultFromAddress": {
          "type": "string"
        },
        "payment": {
          "type": "object",
          "additionalProperties": true,
          "description": "Whether Stripe is connected. Connecting it is a dashboard step."
        }
      }
    },
    "FormSettingsUpdateResult": {
      "title": "formSettings.update result",
      "type": "object",
      "additionalProperties": true,
      "description": "The published reference does not document this result shape; treat it as an open object."
    },
    "FormSummary": {
      "type": "object",
      "required": [
        "id",
        "name",
        "folderId",
        "workspaceId",
        "isPublished",
        "publishedAt",
        "unpublishedAt",
        "createdAt",
        "lastEditedAt",
        "emoji"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Form ID."
        },
        "name": {
          "type": "string"
        },
        "folderId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Folder ID, or `null` at workspace root."
        },
        "workspaceId": {
          "type": "string"
        },
        "isPublished": {
          "type": "boolean"
        },
        "publishedAt": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Unix timestamp in milliseconds."
        },
        "unpublishedAt": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Unix timestamp in milliseconds."
        },
        "createdAt": {
          "type": "integer",
          "description": "Unix timestamp in milliseconds."
        },
        "lastEditedAt": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Unix timestamp in milliseconds."
        },
        "emoji": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "FormsCreateResult": {
      "title": "forms.create result",
      "type": "object",
      "required": [
        "id",
        "name",
        "workspaceId",
        "folderId",
        "isPublished",
        "createdAt",
        "previewUrl"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Form ID."
        },
        "name": {
          "type": "string"
        },
        "workspaceId": {
          "type": "string"
        },
        "folderId": {
          "type": [
            "string",
            "null"
          ]
        },
        "isPublished": {
          "type": "boolean"
        },
        "createdAt": {
          "type": "integer",
          "description": "Unix timestamp in milliseconds."
        },
        "previewUrl": {
          "type": "string",
          "format": "uri"
        }
      }
    },
    "FormsDeleteResult": {
      "title": "forms.delete result",
      "type": "object",
      "additionalProperties": true,
      "description": "The published reference does not document this result shape; treat it as an open object. A form already in trash returns `alreadyTrashed: true` and keeps its original trash date.",
      "properties": {
        "alreadyTrashed": {
          "type": "boolean"
        }
      }
    },
    "FormsGetResult": {
      "title": "forms.get result",
      "allOf": [
        {
          "$ref": "#/$defs/FormSummary"
        },
        {
          "type": "object",
          "required": [
            "questions",
            "hasContent",
            "cover",
            "logo",
            "isDeleted",
            "trashedAt",
            "previewUrl"
          ],
          "properties": {
            "questions": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string"
                  },
                  "inputType": {
                    "type": "string"
                  },
                  "title": {
                    "type": "string"
                  },
                  "metadata": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "additionalProperties": true
                  }
                },
                "additionalProperties": true
              }
            },
            "hasContent": {
              "type": "boolean"
            },
            "cover": {
              "type": [
                "object",
                "null"
              ],
              "additionalProperties": true
            },
            "logo": {
              "type": [
                "object",
                "null"
              ],
              "additionalProperties": true
            },
            "isDeleted": {
              "type": "boolean"
            },
            "trashedAt": {
              "type": [
                "integer",
                "null"
              ],
              "description": "Unix timestamp in milliseconds."
            },
            "previewUrl": {
              "type": "string",
              "description": "A preview link that shows live edits.",
              "format": "uri"
            }
          }
        }
      ]
    },
    "FormsListResult": {
      "title": "forms.list result",
      "type": "object",
      "required": [
        "items",
        "nextCursor",
        "hasMore",
        "canPaginate"
      ],
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/FormSummary"
          }
        },
        "nextCursor": {
          "type": [
            "string",
            "null"
          ],
          "description": "Pass back as `cursor` to read the next page. `null` on the last page."
        },
        "hasMore": {
          "type": "boolean",
          "description": "Whether more items exist after this page."
        },
        "canPaginate": {
          "type": "boolean",
          "description": "`false` when `hasMore` is true but no cursor can resume (fuzzy search)."
        }
      }
    },
    "FormsPublishResult": {
      "title": "forms.publish result",
      "type": "object",
      "additionalProperties": true,
      "description": "The published reference does not document this result shape; treat it as an open object. An already-published form returns `alreadyPublished: true`.",
      "properties": {
        "alreadyPublished": {
          "type": "boolean"
        }
      }
    },
    "FormsRestoreResult": {
      "title": "forms.restore result",
      "type": "object",
      "additionalProperties": true,
      "description": "The published reference does not document this result shape; treat it as an open object. A form that is not in trash returns `alreadyRestored: true`.",
      "properties": {
        "alreadyRestored": {
          "type": "boolean"
        }
      }
    },
    "FormsUnpublishResult": {
      "title": "forms.unpublish result",
      "type": "object",
      "additionalProperties": true,
      "description": "The published reference does not document this result shape; treat it as an open object. A form that is not published returns `alreadyUnpublished: true`.",
      "properties": {
        "alreadyUnpublished": {
          "type": "boolean"
        }
      }
    },
    "FormsUpdateResult": {
      "title": "forms.update result",
      "type": "object",
      "required": [
        "id",
        "name",
        "folderId",
        "emoji"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Form ID."
        },
        "name": {
          "type": "string"
        },
        "folderId": {
          "type": [
            "string",
            "null"
          ]
        },
        "emoji": {
          "type": [
            "string",
            "null"
          ]
        },
        "cover": {
          "type": [
            "object",
            "null"
          ],
          "additionalProperties": true,
          "description": "Returned only when you sent `cover`."
        },
        "logo": {
          "type": [
            "object",
            "null"
          ],
          "additionalProperties": true,
          "description": "Returned only when you sent `logo`."
        },
        "noChange": {
          "const": true,
          "description": "Added when the payload matched the current state on every scalar field."
        }
      }
    },
    "IdleWindow": {
      "type": "string",
      "enum": [
        "12h",
        "1d",
        "3d",
        "1w"
      ]
    },
    "MeGetResult": {
      "title": "me.get result",
      "type": "object",
      "required": [
        "id",
        "email",
        "name"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "email": {
          "type": [
            "string",
            "null"
          ]
        },
        "name": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "MethodsListResult": {
      "title": "methods.list result",
      "type": "object",
      "required": [
        "methods"
      ],
      "properties": {
        "methods": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "RequestDeliveryStatus": {
      "type": "string",
      "description": "`not_requested` until an invitation is queued, then `queued` → `sent` or `failed`, and `bounced` once the mail provider reports a hard bounce or a complaint.",
      "enum": [
        "not_requested",
        "queued",
        "sent",
        "failed",
        "bounced"
      ]
    },
    "RequestOutcome": {
      "type": "string",
      "description": "The recipient's verdict from a decision question.",
      "enum": [
        "approve",
        "decline",
        "changes"
      ]
    },
    "RequestStatus": {
      "type": "string",
      "enum": [
        "pending",
        "completed",
        "expired",
        "canceled"
      ]
    },
    "RequestSummary": {
      "type": "object",
      "description": "A request without its link, answers, and timeline: a `requests.list` item.",
      "required": [
        "id",
        "workspaceId",
        "formId",
        "formSnapshotId",
        "submissionId",
        "status",
        "outcome",
        "createdVia",
        "isTest",
        "recipient",
        "language",
        "externalId",
        "metadata",
        "context",
        "prefill",
        "readonlyKeys",
        "documents",
        "delivery",
        "deliveryStatus",
        "hasCallback",
        "callbackFailedAt",
        "expiresAt",
        "createdAt",
        "updatedAt",
        "openedAt",
        "startedAt",
        "lastActivityAt",
        "completedAt",
        "expiredAt",
        "canceledAt",
        "canceledBy",
        "cancelReason",
        "reminderStep",
        "remindersSent",
        "reminderDueAt"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Request ID."
        },
        "workspaceId": {
          "type": "string"
        },
        "formId": {
          "type": "string"
        },
        "formSnapshotId": {
          "type": "string",
          "description": "The published form version the request is pinned to."
        },
        "submissionId": {
          "type": [
            "string",
            "null"
          ]
        },
        "status": {
          "$ref": "#/$defs/RequestStatus"
        },
        "outcome": {
          "oneOf": [
            {
              "$ref": "#/$defs/RequestOutcome"
            },
            {
              "type": "null"
            }
          ],
          "description": "`null` on anything but a completed request whose recipient picked one of the three."
        },
        "createdVia": {
          "type": "string",
          "enum": [
            "api",
            "mcp",
            "dashboard"
          ]
        },
        "isTest": {
          "type": "boolean",
          "description": "Created with `test: true`."
        },
        "recipient": {
          "type": "object",
          "required": [
            "email",
            "name"
          ],
          "properties": {
            "email": {
              "type": [
                "string",
                "null"
              ]
            },
            "name": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        "language": {
          "type": "string"
        },
        "externalId": {
          "type": [
            "string",
            "null"
          ]
        },
        "metadata": {
          "type": [
            "object",
            "null"
          ],
          "additionalProperties": true
        },
        "context": {
          "type": "object",
          "additionalProperties": true
        },
        "prefill": {
          "type": "object",
          "additionalProperties": true
        },
        "readonlyKeys": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "documents": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "field",
              "name",
              "size",
              "contentType"
            ],
            "properties": {
              "field": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "size": {
                "type": "integer"
              },
              "contentType": {
                "type": "string"
              }
            }
          },
          "description": "Per-request documents."
        },
        "delivery": {
          "type": "string",
          "enum": [
            "none",
            "email"
          ]
        },
        "deliveryStatus": {
          "$ref": "#/$defs/RequestDeliveryStatus"
        },
        "hasCallback": {
          "type": "boolean",
          "description": "Whether a callback URL is set. The URL itself is never returned."
        },
        "callbackFailedAt": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Set while this request's callback has run out of attempts; cleared once one gets through or you replay it."
        },
        "expiresAt": {
          "type": "integer",
          "description": "Unix timestamp in milliseconds."
        },
        "createdAt": {
          "type": "integer",
          "description": "Unix timestamp in milliseconds."
        },
        "updatedAt": {
          "type": "integer",
          "description": "Unix timestamp in milliseconds."
        },
        "openedAt": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Unix timestamp in milliseconds."
        },
        "startedAt": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Unix timestamp in milliseconds."
        },
        "lastActivityAt": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Unix timestamp in milliseconds."
        },
        "completedAt": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Unix timestamp in milliseconds."
        },
        "expiredAt": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Unix timestamp in milliseconds."
        },
        "canceledAt": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Unix timestamp in milliseconds."
        },
        "canceledBy": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "api",
            "user",
            "system",
            null
          ]
        },
        "cancelReason": {
          "type": [
            "string",
            "null"
          ]
        },
        "reminderStep": {
          "type": "integer"
        },
        "remindersSent": {
          "type": "integer"
        },
        "reminderDueAt": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Unix timestamp in milliseconds."
        }
      }
    },
    "RequestTimelineEntry": {
      "type": "object",
      "required": [
        "id",
        "type",
        "at"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "enum": [
            "created",
            "invitation",
            "reminder",
            "opened",
            "started",
            "completed",
            "expired",
            "canceled",
            "callback"
          ]
        },
        "at": {
          "type": "integer",
          "description": "Unix timestamp in milliseconds."
        },
        "deliveryStatus": {
          "type": "string",
          "description": "Delivery entries only.",
          "enum": [
            "queued",
            "sent",
            "failed"
          ]
        },
        "attemptCount": {
          "type": "integer",
          "description": "Delivery entries only."
        },
        "eventType": {
          "type": "string",
          "description": "Callback entries only.",
          "enum": [
            "request.completed",
            "request.expired",
            "request.canceled"
          ]
        },
        "detail": {
          "type": "string",
          "description": "Free text shown beside the entry, e.g. the cancel reason."
        },
        "canceledBy": {
          "type": "string",
          "enum": [
            "api",
            "user",
            "system"
          ]
        }
      }
    },
    "RequestsCancelResult": {
      "title": "requests.cancel result",
      "$ref": "#/$defs/RequestSummary",
      "description": "The canceled request."
    },
    "RequestsCreateResult": {
      "title": "requests.create result",
      "type": "object",
      "required": [
        "id",
        "status",
        "url",
        "deliveryStatus",
        "expiresAt",
        "createdAt",
        "deduplicated"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Request ID."
        },
        "status": {
          "$ref": "#/$defs/RequestStatus"
        },
        "url": {
          "type": [
            "string",
            "null"
          ],
          "description": "The request link, carrying the one-time token. Store it if you deliver the link yourself."
        },
        "deliveryStatus": {
          "$ref": "#/$defs/RequestDeliveryStatus"
        },
        "expiresAt": {
          "type": "integer",
          "description": "Unix timestamp in milliseconds."
        },
        "createdAt": {
          "type": "integer",
          "description": "Unix timestamp in milliseconds."
        },
        "externalId": {
          "type": "string"
        },
        "deduplicated": {
          "type": "boolean",
          "description": "`true` when an existing request was returned for a repeated `idempotencyKey`."
        }
      }
    },
    "RequestsDeleteResult": {
      "title": "requests.delete result",
      "type": "object",
      "required": [
        "id",
        "deleted",
        "formDeleted"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "deleted": {
          "const": true
        },
        "formDeleted": {
          "type": "boolean",
          "description": "True when the request built its form and was the last request using it, so the form was deleted too."
        }
      }
    },
    "RequestsGetResult": {
      "title": "requests.get result",
      "allOf": [
        {
          "$ref": "#/$defs/RequestSummary"
        },
        {
          "type": "object",
          "required": [
            "url",
            "answers",
            "display",
            "timeline"
          ],
          "properties": {
            "url": {
              "type": [
                "string",
                "null"
              ],
              "description": "The request link. `null` for a request created before the deployment had a request-token key."
            },
            "answers": {
              "oneOf": [
                {
                  "$ref": "#/$defs/AnswersByKey"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Answers keyed by field key once completed; the same map the callback carries."
            },
            "display": {
              "oneOf": [
                {
                  "$ref": "#/$defs/DisplayByKey"
                },
                {
                  "type": "null"
                }
              ]
            },
            "timeline": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/RequestTimelineEntry"
              },
              "description": "Derived, oldest first. Delivery rows are kept 30 days."
            }
          }
        }
      ]
    },
    "RequestsListResult": {
      "title": "requests.list result",
      "type": "object",
      "required": [
        "items",
        "nextCursor",
        "hasMore"
      ],
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/RequestSummary"
          }
        },
        "nextCursor": {
          "type": [
            "string",
            "null"
          ]
        },
        "hasMore": {
          "type": "boolean"
        }
      }
    },
    "RequestsRemindResult": {
      "title": "requests.remind result",
      "$ref": "#/$defs/RequestSummary",
      "description": "The request, with `remindersSent` incremented."
    },
    "RequestsReplayCallbackResult": {
      "title": "requests.replayCallback result",
      "type": "object",
      "required": [
        "dispatchId",
        "eventId"
      ],
      "properties": {
        "dispatchId": {
          "type": "string"
        },
        "eventId": {
          "type": "string"
        }
      }
    },
    "RequestsSampleResult": {
      "title": "requests.sample result",
      "$ref": "#/$defs/EventEnvelope"
    },
    "ShareLink": {
      "type": "object",
      "required": [
        "id",
        "code",
        "url",
        "customDomainUrl",
        "formId",
        "createdAt",
        "expiresAt",
        "maxClaims",
        "claimedCount",
        "isRevoked",
        "revokedAt",
        "customDomainId",
        "customSlug"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Share link ID."
        },
        "code": {
          "type": "string",
          "description": "Short code in the public URL."
        },
        "url": {
          "type": "string",
          "description": "Public URL respondents open.",
          "format": "uri"
        },
        "customDomainUrl": {
          "type": [
            "string",
            "null"
          ],
          "description": "URL on the attached custom domain, or `null`."
        },
        "formId": {
          "type": "string"
        },
        "createdAt": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Unix timestamp in milliseconds."
        },
        "expiresAt": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Expiry as a Unix timestamp in milliseconds. `null` for none."
        },
        "maxClaims": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Maximum number of uses, or `null` for unlimited."
        },
        "claimedCount": {
          "type": "integer",
          "description": "Times the link has been used."
        },
        "isRevoked": {
          "type": "boolean"
        },
        "revokedAt": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Unix timestamp in milliseconds."
        },
        "customDomainId": {
          "type": [
            "string",
            "null"
          ]
        },
        "customSlug": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "ShareLinksCreateResult": {
      "title": "shareLinks.create result",
      "allOf": [
        {
          "$ref": "#/$defs/ShareLink"
        },
        {
          "type": "object",
          "required": [
            "availableCustomDomains"
          ],
          "properties": {
            "availableCustomDomains": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/CustomDomain"
              }
            }
          }
        }
      ]
    },
    "ShareLinksListResult": {
      "title": "shareLinks.list result",
      "type": "object",
      "required": [
        "items",
        "availableCustomDomains",
        "nextCursor",
        "hasMore",
        "canPaginate"
      ],
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ShareLink"
          }
        },
        "availableCustomDomains": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/CustomDomain"
          }
        },
        "nextCursor": {
          "type": [
            "string",
            "null"
          ],
          "description": "Pass back as `cursor` to read the next page. `null` on the last page."
        },
        "hasMore": {
          "type": "boolean",
          "description": "Whether more items exist after this page."
        },
        "canPaginate": {
          "type": "boolean",
          "description": "`false` when `hasMore` is true but no cursor can resume (fuzzy search)."
        }
      }
    },
    "ShareLinksUpdateResult": {
      "title": "shareLinks.update result",
      "type": "object",
      "additionalProperties": true,
      "description": "The published reference does not document this result shape; treat it as an open object."
    },
    "SlotKey": {
      "type": "object",
      "required": [
        "key",
        "label"
      ],
      "properties": {
        "key": {
          "type": "string",
          "description": "What a caller sends."
        },
        "label": {
          "type": "string",
          "description": "What a person sees."
        }
      }
    },
    "Submission": {
      "type": "object",
      "required": [
        "id",
        "submittedAt",
        "isCompleted",
        "createdAt",
        "answers",
        "display"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Submission ID."
        },
        "submittedAt": {
          "type": [
            "string",
            "null"
          ],
          "description": "UTC time as `YYYY-MM-DD HH:MM:SS`, or `null` for a response that was started but never submitted."
        },
        "isCompleted": {
          "type": "boolean"
        },
        "createdAt": {
          "type": "string",
          "description": "UTC time as `YYYY-MM-DD HH:MM:SS`."
        },
        "answers": {
          "$ref": "#/$defs/AnswersByKey"
        },
        "display": {
          "$ref": "#/$defs/DisplayByKey"
        },
        "translation": {
          "type": "object",
          "description": "Present only when `translationLanguage` was passed and a stored AI translation exists.",
          "required": [
            "targetLanguage",
            "translatedAt",
            "display"
          ],
          "properties": {
            "targetLanguage": {
              "type": "string"
            },
            "sourceLanguage": {
              "type": "string"
            },
            "translatedAt": {
              "type": "integer",
              "description": "Unix timestamp in milliseconds."
            },
            "display": {
              "$ref": "#/$defs/DisplayByKey"
            }
          }
        }
      }
    },
    "SubmissionsListResult": {
      "title": "submissions.list result",
      "type": "object",
      "required": [
        "formId",
        "formName",
        "items",
        "nextCursor",
        "hasMore",
        "canPaginate"
      ],
      "properties": {
        "formId": {
          "type": "string"
        },
        "formName": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Submission"
          }
        },
        "nextCursor": {
          "type": [
            "string",
            "null"
          ],
          "description": "Pass back as `cursor` to read the next page. `null` on the last page."
        },
        "hasMore": {
          "type": "boolean",
          "description": "Whether more items exist after this page."
        },
        "canPaginate": {
          "type": "boolean",
          "description": "`false` when `hasMore` is true but no cursor can resume (fuzzy search)."
        }
      }
    },
    "SubmissionsPdfResult": {
      "title": "submissions.pdf result",
      "type": "object",
      "required": [
        "url",
        "filename",
        "contentType",
        "byteLength"
      ],
      "properties": {
        "url": {
          "type": "string",
          "format": "uri"
        },
        "filename": {
          "type": "string"
        },
        "contentType": {
          "type": "string"
        },
        "byteLength": {
          "type": "integer"
        }
      }
    },
    "SubmissionsSampleResult": {
      "title": "submissions.sample result",
      "$ref": "#/$defs/EventEnvelope"
    },
    "SuccessEnvelope": {
      "type": "object",
      "required": [
        "ok",
        "data"
      ],
      "properties": {
        "ok": {
          "const": true
        },
        "data": {
          "description": "The method result. Its shape depends on `method`: see the matching `<Method>Result` schema.",
          "anyOf": [
            {
              "$ref": "#/$defs/MethodsListResult"
            },
            {
              "$ref": "#/$defs/AnalyticsGetResult"
            },
            {
              "$ref": "#/$defs/DocumentsCreateResult"
            },
            {
              "$ref": "#/$defs/FieldsListResult"
            },
            {
              "$ref": "#/$defs/FoldersCreateResult"
            },
            {
              "$ref": "#/$defs/FoldersDeleteResult"
            },
            {
              "$ref": "#/$defs/FoldersListResult"
            },
            {
              "$ref": "#/$defs/FoldersUpdateResult"
            },
            {
              "$ref": "#/$defs/FormSettingsGetResult"
            },
            {
              "$ref": "#/$defs/FormSettingsUpdateResult"
            },
            {
              "$ref": "#/$defs/FormsCreateResult"
            },
            {
              "$ref": "#/$defs/FormsDeleteResult"
            },
            {
              "$ref": "#/$defs/FormsGetResult"
            },
            {
              "$ref": "#/$defs/FormsListResult"
            },
            {
              "$ref": "#/$defs/FormsPublishResult"
            },
            {
              "$ref": "#/$defs/FormsRestoreResult"
            },
            {
              "$ref": "#/$defs/FormsUnpublishResult"
            },
            {
              "$ref": "#/$defs/FormsUpdateResult"
            },
            {
              "$ref": "#/$defs/MeGetResult"
            },
            {
              "$ref": "#/$defs/RequestsCancelResult"
            },
            {
              "$ref": "#/$defs/RequestsCreateResult"
            },
            {
              "$ref": "#/$defs/RequestsDeleteResult"
            },
            {
              "$ref": "#/$defs/RequestsGetResult"
            },
            {
              "$ref": "#/$defs/RequestsListResult"
            },
            {
              "$ref": "#/$defs/RequestsRemindResult"
            },
            {
              "$ref": "#/$defs/RequestsReplayCallbackResult"
            },
            {
              "$ref": "#/$defs/RequestsSampleResult"
            },
            {
              "$ref": "#/$defs/ShareLinksCreateResult"
            },
            {
              "$ref": "#/$defs/ShareLinksListResult"
            },
            {
              "$ref": "#/$defs/ShareLinksUpdateResult"
            },
            {
              "$ref": "#/$defs/SubmissionsListResult"
            },
            {
              "$ref": "#/$defs/SubmissionsPdfResult"
            },
            {
              "$ref": "#/$defs/SubmissionsSampleResult"
            },
            {
              "$ref": "#/$defs/TranslationsAddLanguageResult"
            },
            {
              "$ref": "#/$defs/TranslationsDeleteEntryResult"
            },
            {
              "$ref": "#/$defs/TranslationsListEntriesResult"
            },
            {
              "$ref": "#/$defs/TranslationsListLanguagesResult"
            },
            {
              "$ref": "#/$defs/TranslationsRemoveLanguageResult"
            },
            {
              "$ref": "#/$defs/TranslationsSetEntryResult"
            },
            {
              "$ref": "#/$defs/WebhooksCreateResult"
            },
            {
              "$ref": "#/$defs/WebhooksDeleteResult"
            },
            {
              "$ref": "#/$defs/WebhooksListResult"
            },
            {
              "$ref": "#/$defs/WorkspacesCreateInviteResult"
            },
            {
              "$ref": "#/$defs/WorkspacesGetInviteResult"
            },
            {
              "$ref": "#/$defs/WorkspacesListResult"
            },
            {
              "$ref": "#/$defs/WorkspacesRevokeInviteResult"
            },
            {
              "$ref": "#/$defs/WorkspacesUpdateInviteResult"
            }
          ]
        }
      }
    },
    "TranslationCompletion": {
      "type": "object",
      "required": [
        "total",
        "current",
        "outdated",
        "missing",
        "suggested"
      ],
      "properties": {
        "total": {
          "type": "integer"
        },
        "current": {
          "type": "integer"
        },
        "outdated": {
          "type": "integer"
        },
        "missing": {
          "type": "integer"
        },
        "suggested": {
          "type": "integer"
        }
      }
    },
    "TranslationsAddLanguageResult": {
      "title": "translations.addLanguage result",
      "type": "object",
      "required": [
        "formId",
        "language",
        "rowId"
      ],
      "properties": {
        "formId": {
          "type": "string"
        },
        "language": {
          "type": "string"
        },
        "rowId": {
          "type": "string"
        }
      }
    },
    "TranslationsDeleteEntryResult": {
      "title": "translations.deleteEntry result",
      "type": "object",
      "additionalProperties": true,
      "description": "The published reference does not document this result shape; treat it as an open object."
    },
    "TranslationsListEntriesResult": {
      "title": "translations.listEntries result",
      "type": "object",
      "required": [
        "formId",
        "language",
        "completion",
        "items",
        "hasMore"
      ],
      "properties": {
        "formId": {
          "type": "string"
        },
        "language": {
          "type": "string"
        },
        "completion": {
          "$ref": "#/$defs/TranslationCompletion"
        },
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "key",
              "status",
              "value",
              "sourceFragment",
              "updatedAt",
              "block"
            ],
            "properties": {
              "key": {
                "type": "string",
                "description": "Pass to `translations.setEntry`. Do not construct one by hand."
              },
              "status": {
                "type": "string",
                "description": "`missing` (nothing stored), `outdated` (the source changed since), `current`, or `suggested` (an AI suggestion staged but not accepted).",
                "enum": [
                  "missing",
                  "outdated",
                  "current",
                  "suggested"
                ]
              },
              "value": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The stored translation, JSON-stringified."
              },
              "sourceFragment": {
                "type": "string",
                "description": "The source fragment, JSON-stringified."
              },
              "updatedAt": {
                "type": [
                  "integer",
                  "null"
                ],
                "description": "Unix timestamp in milliseconds."
              },
              "block": {
                "type": "object",
                "required": [
                  "id",
                  "type"
                ],
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "hasMore": {
          "type": "boolean"
        }
      }
    },
    "TranslationsListLanguagesResult": {
      "title": "translations.listLanguages result",
      "type": "object",
      "required": [
        "formId",
        "items",
        "nextCursor",
        "hasMore",
        "canPaginate"
      ],
      "properties": {
        "formId": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "language",
              "completion",
              "lastUpdatedAt"
            ],
            "properties": {
              "language": {
                "type": "string"
              },
              "completion": {
                "$ref": "#/$defs/TranslationCompletion"
              },
              "lastUpdatedAt": {
                "type": [
                  "integer",
                  "null"
                ],
                "description": "Unix timestamp in milliseconds."
              }
            }
          }
        },
        "nextCursor": {
          "type": [
            "string",
            "null"
          ],
          "description": "Pass back as `cursor` to read the next page. `null` on the last page."
        },
        "hasMore": {
          "type": "boolean",
          "description": "Whether more items exist after this page."
        },
        "canPaginate": {
          "type": "boolean",
          "description": "`false` when `hasMore` is true but no cursor can resume (fuzzy search)."
        }
      }
    },
    "TranslationsRemoveLanguageResult": {
      "title": "translations.removeLanguage result",
      "type": "object",
      "additionalProperties": true,
      "description": "The published reference does not document this result shape; treat it as an open object."
    },
    "TranslationsSetEntryResult": {
      "title": "translations.setEntry result",
      "type": "object",
      "required": [
        "formId",
        "language",
        "key"
      ],
      "properties": {
        "formId": {
          "type": "string"
        },
        "language": {
          "type": "string"
        },
        "key": {
          "type": "string"
        }
      }
    },
    "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"
      ]
    },
    "WebhookSubscription": {
      "type": "object",
      "required": [
        "subscriptionId",
        "formId",
        "provider",
        "targetUrl",
        "eventType",
        "status",
        "createdAt"
      ],
      "properties": {
        "subscriptionId": {
          "type": "string"
        },
        "formId": {
          "type": "string"
        },
        "provider": {
          "$ref": "#/$defs/WebhookProvider"
        },
        "targetUrl": {
          "type": "string",
          "format": "uri"
        },
        "eventType": {
          "$ref": "#/$defs/WebhookEventType"
        },
        "idleWindow": {
          "$ref": "#/$defs/IdleWindow",
          "description": "Abandoned-submission subscriptions only."
        },
        "status": {
          "type": "string",
          "description": "Subscription status, e.g. `active`."
        },
        "createdAt": {
          "type": "integer",
          "description": "Unix timestamp in milliseconds."
        }
      }
    },
    "WebhooksCreateResult": {
      "title": "webhooks.create result",
      "type": "object",
      "required": [
        "subscriptionId",
        "formId",
        "provider",
        "targetUrl",
        "eventType"
      ],
      "properties": {
        "subscriptionId": {
          "type": "string"
        },
        "formId": {
          "type": "string"
        },
        "provider": {
          "$ref": "#/$defs/WebhookProvider"
        },
        "targetUrl": {
          "type": "string",
          "format": "uri"
        },
        "eventType": {
          "$ref": "#/$defs/WebhookEventType"
        },
        "idleWindow": {
          "$ref": "#/$defs/IdleWindow",
          "description": "Abandoned-submission subscriptions only."
        }
      }
    },
    "WebhooksDeleteResult": {
      "title": "webhooks.delete result",
      "type": "object",
      "required": [
        "subscriptionId",
        "deleted"
      ],
      "properties": {
        "subscriptionId": {
          "type": "string"
        },
        "deleted": {
          "const": true
        }
      }
    },
    "WebhooksListResult": {
      "title": "webhooks.list result",
      "type": "object",
      "required": [
        "items",
        "hasMore"
      ],
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/WebhookSubscription"
          }
        },
        "hasMore": {
          "type": "boolean"
        }
      }
    },
    "Workspace": {
      "type": "object",
      "required": [
        "id",
        "name",
        "createdAt",
        "role"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "createdAt": {
          "type": "integer",
          "description": "Unix timestamp in milliseconds."
        },
        "role": {
          "type": "string",
          "description": "Your role in the workspace, e.g. `owner`."
        }
      }
    },
    "WorkspaceInvite": {
      "type": "object",
      "required": [
        "id",
        "workspaceId",
        "code",
        "expiresAt",
        "maxUses",
        "uses",
        "createdAt"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Invite ID."
        },
        "workspaceId": {
          "type": "string"
        },
        "code": {
          "type": "string",
          "description": "Invite code."
        },
        "expiresAt": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Expiry as a Unix timestamp in milliseconds. `null` for none."
        },
        "maxUses": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Maximum number of uses, or `null` for unlimited."
        },
        "uses": {
          "type": "integer",
          "description": "Times the invite has been used."
        },
        "createdAt": {
          "type": "integer",
          "description": "Unix timestamp in milliseconds."
        }
      }
    },
    "WorkspacesCreateInviteResult": {
      "title": "workspaces.createInvite result",
      "$ref": "#/$defs/WorkspaceInvite"
    },
    "WorkspacesGetInviteResult": {
      "title": "workspaces.getInvite result",
      "$ref": "#/$defs/WorkspaceInvite"
    },
    "WorkspacesListResult": {
      "title": "workspaces.list result",
      "type": "object",
      "required": [
        "items",
        "nextCursor",
        "hasMore",
        "canPaginate"
      ],
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Workspace"
          }
        },
        "nextCursor": {
          "type": [
            "string",
            "null"
          ],
          "description": "Pass back as `cursor` to read the next page. `null` on the last page."
        },
        "hasMore": {
          "type": "boolean",
          "description": "Whether more items exist after this page."
        },
        "canPaginate": {
          "type": "boolean",
          "description": "`false` when `hasMore` is true but no cursor can resume (fuzzy search)."
        }
      }
    },
    "WorkspacesRevokeInviteResult": {
      "title": "workspaces.revokeInvite result",
      "type": "object",
      "required": [
        "inviteId",
        "revoked"
      ],
      "properties": {
        "inviteId": {
          "type": "string"
        },
        "revoked": {
          "const": true
        }
      }
    },
    "WorkspacesUpdateInviteResult": {
      "title": "workspaces.updateInvite result",
      "$ref": "#/$defs/WorkspaceInvite"
    }
  }
}