{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/linkbreakers-com/json-schema/linkbreakers-com-create-thank-you-link-request-schema.json",
  "title": "CreateThankYouLinkRequest",
  "description": "Request to create a new thank you page link.",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/linkbreakers-com-openapi.json#/components/schemas/CreateThankYouLinkRequest",
  "properties": {
    "customDomainId": {
      "description": "Optional custom domain ID (UUID). Leave empty to use the default domain.\nOnly provide if the user explicitly asks for a specific custom domain.",
      "type": "string"
    },
    "description": {
      "description": "Optional description displayed on the thank you page.",
      "title": "The description for the thank you page",
      "type": "string"
    },
    "directoryId": {
      "description": "Directory to organize this link into. If empty, link is created at root level.",
      "type": "string"
    },
    "expiredDestination": {
      "description": "Where visitors are sent once the link has expired.\nEmpty serves the built-in expired page instead.",
      "type": "string"
    },
    "expiresAt": {
      "description": "When the link stops resolving. Empty means it never expires.\nMust be in the future. Once it passes the link is removed from the\nworkspace and only the expired destination is served.",
      "format": "date-time",
      "type": "string"
    },
    "id": {
      "description": "Optional pre-generated link ID (UUID).\nSame contract as on CreateLinkRequest: the caller may pick the id so a page\ncan navigate to the link before it exists, and it is skipped from the AI\ntool schema so the model is never invited to invent one.",
      "type": "string"
    },
    "metadata": {
      "additionalProperties": {
        "type": "string"
      },
      "description": "A map of string key-value pairs. All values must be strings. Nested objects or arrays are not supported. Maximum of 50 keys.",
      "type": "object"
    },
    "name": {
      "title": "The name of the link",
      "type": "string"
    },
    "purpose": {
      "description": "What the user is trying to achieve with this link, in one or two sentences.\nThe link's assistant conversations read it as context, so it is restated\nwhenever the workflow changes shape.",
      "type": "string"
    },
    "qrcodeDesignId": {
      "description": "The QR Code design ID (UUID).\nIf you include this value, the specified design will be associated to this link only.\nA design can belong to one record at a time (Link or QR Code Template).\nTrying to use a design that's already assigned will cause an error.",
      "type": "string"
    },
    "qrcodeEnabled": {
      "description": "Whether the link has a QR code. Defaults to true. When false, the link is created without any QR code: no QR code design is created, no image is generated, qrcode_design_id stays empty and qrcode_signed_url is never set. The shortlink and workflow are unaffected. qrcode_template_id is still stored and used if the QR code is turned on later. Cannot be combined with qrcode_design_id or wait_for_qrcode=true.",
      "type": "boolean"
    },
    "qrcodeTemplateId": {
      "description": "The ID of the QR Code template (UUID)\nIf not given, the default QR Code template will be used to generate the QR Code design.",
      "type": "string"
    },
    "shortlink": {
      "description": "The shortlink for the link\nIf not given, the shortlink will be generated by the system.",
      "type": "string"
    },
    "tags": {
      "description": "List of tags to associate with the link. If a tag doesn't exist, it will be created.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "title": {
      "description": "Title displayed on the thank you page. This field is required.",
      "title": "The title for the thank you page (required)",
      "type": "string"
    },
    "waitForQrcode": {
      "description": "Wait for QR code generation to complete. Note: This makes the request slower compared to asynchronous generation.",
      "type": "boolean"
    }
  },
  "required": [
    "title"
  ],
  "type": "object"
}