export type FusionApiHttpMethod = "GET" | "POST";

export type FusionApiInputFieldKind = "string" | "number" | "integer" | "boolean" | "array" | "object" | "unknown";

export interface FusionApiInputField {
  name: string;
  kind: FusionApiInputFieldKind;
  required: boolean;
  description: string;
  enumValues?: string[];
  defaultValue?: string | number | boolean;
  minimum?: number;
  maximum?: number;
  format?: string;
}

export interface FusionApiOperation {
  actionName: string;
  method: FusionApiHttpMethod;
  path: string;
  tag: string;
  description: string;
  successStatuses: number[];
  pathParams: string[];
  inputFields: FusionApiInputField[];
}

export const fusionApiOperations: FusionApiOperation[] = [
  {
    actionName: "cphone_nano_banana_result",
    method: "GET",
    path: "/v1/cphone-nano-banana/result/{sessionID}",
    tag: "cphone-nano-banana",
    description: "Get cphone-nano-banana task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "cphone_nano_banana_state",
    method: "GET",
    path: "/v1/cphone-nano-banana/state/{sessionID}",
    tag: "cphone-nano-banana",
    description: "Get cphone-nano-banana task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "cphone_nano_banana_submit",
    method: "POST",
    path: "/v1/cphone-nano-banana/submit",
    tag: "cphone-nano-banana",
    description: "Edit images with Nano Banana",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "prompt",
        kind: "string",
        required: true,
        description: "Text prompt for image generation or editing",
      },
      {
        name: "model",
        kind: "string",
        required: false,
        description: "Model name to use, defaults to gemini-2.5-flash-image-preview",
        enumValues: [
          "nano-banana-2",
          "nano-banana-2-2k",
          "nano-banana-2-4k",
          "gemini-3-pro-image-preview",
          "gemini-2.5-flash-image",
          "nano-banana-hd",
          "nano-banana",
          "gemini-2.5-flash-image-preview",
          "nano-banana-pro",
          "nano-banana-pro-4k",
        ],
        defaultValue: "gemini-2.5-flash-image-preview",
      },
      {
        name: "aspectRatio",
        kind: "string",
        required: false,
        description: "Generated image aspect ratio",
        enumValues: ["21:9", "1:1", "4:3", "3:2", "2:3", "5:4", "4:5", "3:4", "16:9", "9:16"],
      },
      {
        name: "imageURLs",
        kind: "array",
        required: false,
        description: "List of reference image URLs for image-to-image generation or editing",
      },
      {
        name: "imageSize",
        kind: "string",
        required: false,
        description: "Generated image resolution, only supported by nano-banana-2",
        enumValues: ["1K", "2K", "4K"],
      },
    ],
  },
  {
    actionName: "deepseek_ocr_recognize",
    method: "POST",
    path: "/v1/deepseek-ocr/action/recognize",
    tag: "deepseek-ocr",
    description: "Recognize text from a single image.",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "imageURL",
        kind: "string",
        required: true,
        description: "Publicly accessible URL of the image to recognize.",
        format: "uri",
      },
      {
        name: "prompt",
        kind: "string",
        required: false,
        description: "Custom OCR prompt.",
      },
      {
        name: "oomolApiKey",
        kind: "string",
        required: false,
        description: "Optional OOMOL API key that overrides the default key for this request.",
      },
    ],
  },
  {
    actionName: "doubao_stt_result",
    method: "GET",
    path: "/v1/doubao-stt/result/{sessionID}",
    tag: "doubao-stt",
    description: "Get doubao-stt task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "doubao_stt_state",
    method: "GET",
    path: "/v1/doubao-stt/state/{sessionID}",
    tag: "doubao-stt",
    description: "Get doubao-stt task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "doubao_stt_submit",
    method: "POST",
    path: "/v1/doubao-stt/submit",
    tag: "doubao-stt",
    description: "Convert speech to text with Doubao",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "audioURL",
        kind: "string",
        required: true,
        description: "Publicly accessible URL of the audio file to recognize",
      },
      {
        name: "format",
        kind: "string",
        required: true,
        description: "Audio container format, supporting raw, wav, mp3, and ogg",
      },
    ],
  },
  {
    actionName: "doubao_text_to_image_seedream_generate",
    method: "POST",
    path: "/v1/doubao-text-to-image-seedream/action/generate",
    tag: "doubao-text-to-image-seedream",
    description: "Generate images from text with Doubao Seedream",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "prompt",
        kind: "string",
        required: true,
        description: "Text prompt for image generation",
      },
      {
        name: "image",
        kind: "string",
        required: false,
        description: "Reference image URL or Base64 encoding for image-to-image generation",
      },
      {
        name: "size",
        kind: "unknown",
        required: false,
        description: "Image size, supporting descriptive sizes (1K/2K/4K) or explicit width and height in pixels",
        defaultValue: "2048x2048",
      },
      {
        name: "multiple",
        kind: "string",
        required: false,
        description: "Whether to enable multi-image generation mode; auto lets the model decide",
        enumValues: ["disabled", "auto"],
        defaultValue: "disabled",
      },
      {
        name: "maxCount",
        kind: "number",
        required: false,
        description: "Maximum number of images to generate in one request, only effective in multi-image mode",
        defaultValue: 1,
        minimum: 1,
        maximum: 15,
      },
      {
        name: "watermark",
        kind: "boolean",
        required: false,
        description: "Whether to add a watermark",
        defaultValue: true,
      },
      {
        name: "optionsnew",
        kind: "string",
        required: false,
        description: "Generation mode: standard prioritizes quality, fast prioritizes speed",
        enumValues: ["standard", "fast"],
        defaultValue: "standard",
      },
    ],
  },
  {
    actionName: "doubao_tts_result",
    method: "GET",
    path: "/v1/doubao-tts/result/{sessionID}",
    tag: "doubao-tts",
    description: "Get doubao-tts task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "doubao_tts_state",
    method: "GET",
    path: "/v1/doubao-tts/state/{sessionID}",
    tag: "doubao-tts",
    description: "Get doubao-tts task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "doubao_tts_submit",
    method: "POST",
    path: "/v1/doubao-tts/submit",
    tag: "doubao-tts",
    description: "Convert text to speech with Doubao",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "text",
        kind: "string",
        required: true,
        description: "Text content to synthesize into speech, up to 100,000 characters",
      },
      {
        name: "voice",
        kind: "string",
        required: true,
        description: "Speaker ID specifying the voice used for synthesized audio",
      },
    ],
  },
  {
    actionName: "fal_aura_sr_result",
    method: "GET",
    path: "/v1/fal-aura-sr/result/{sessionID}",
    tag: "fal-aura-sr",
    description: "Get fal-aura-sr task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "fal_aura_sr_state",
    method: "GET",
    path: "/v1/fal-aura-sr/state/{sessionID}",
    tag: "fal-aura-sr",
    description: "Get fal-aura-sr task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "fal_aura_sr_submit",
    method: "POST",
    path: "/v1/fal-aura-sr/submit",
    tag: "fal-aura-sr",
    description: "Image super-resolution upscaling",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "imageURL",
        kind: "string",
        required: true,
        description: "URL of the image to upscale with super resolution",
      },
    ],
  },
  {
    actionName: "fal_nano_banana_2_result",
    method: "GET",
    path: "/v1/fal-nano-banana-2/result/{sessionID}",
    tag: "fal-nano-banana-2",
    description: "Get fal-nano-banana-2 task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "fal_nano_banana_2_state",
    method: "GET",
    path: "/v1/fal-nano-banana-2/state/{sessionID}",
    tag: "fal-nano-banana-2",
    description: "Get fal-nano-banana-2 task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "fal_nano_banana_2_submit",
    method: "POST",
    path: "/v1/fal-nano-banana-2/submit",
    tag: "fal-nano-banana-2",
    description: "Generate or edit images with Nano Banana 2",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "prompt",
        kind: "string",
        required: true,
        description: "Text prompt for image generation or editing",
      },
      {
        name: "imageURLs",
        kind: "array",
        required: false,
        description: "List of reference image URLs for image-to-image generation or editing",
      },
      {
        name: "numImages",
        kind: "integer",
        required: false,
        description: "Number of images to generate",
        defaultValue: 1,
        minimum: 1,
        maximum: 4,
      },
      {
        name: "aspectRatio",
        kind: "string",
        required: false,
        description: "Generated image aspect ratio",
        enumValues: ["auto", "21:9", "16:9", "3:2", "4:3", "5:4", "1:1", "4:5", "3:4", "2:3", "9:16"],
        defaultValue: "auto",
      },
      {
        name: "outputFormat",
        kind: "string",
        required: false,
        description: "Output image file format",
        enumValues: ["jpeg", "png", "webp"],
        defaultValue: "png",
      },
      {
        name: "safetyTolerance",
        kind: "string",
        required: false,
        description: "Content safety tolerance level, where 1 is the strictest and 6 is the loosest",
        enumValues: ["1", "2", "3", "4", "5", "6"],
        defaultValue: "4",
      },
      {
        name: "seed",
        kind: "integer",
        required: false,
        description: "Random seed used to reproduce results with the same input",
      },
      {
        name: "resolution",
        kind: "string",
        required: false,
        description: "Generated image resolution",
        enumValues: ["0.5K", "1K", "2K", "4K"],
        defaultValue: "1K",
      },
      {
        name: "limitGenerations",
        kind: "boolean",
        required: false,
        description: "Whether to restrict each prompt round to a single valid result",
        defaultValue: true,
      },
      {
        name: "enableWebSearch",
        kind: "boolean",
        required: false,
        description: "Whether to enable web-search-enhanced generation",
      },
    ],
  },
  {
    actionName: "fal_nano_banana_pro_result",
    method: "GET",
    path: "/v1/fal-nano-banana-pro/result/{sessionID}",
    tag: "fal-nano-banana-pro",
    description: "Get fal-nano-banana-pro task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "fal_nano_banana_pro_state",
    method: "GET",
    path: "/v1/fal-nano-banana-pro/state/{sessionID}",
    tag: "fal-nano-banana-pro",
    description: "Get fal-nano-banana-pro task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "fal_nano_banana_pro_submit",
    method: "POST",
    path: "/v1/fal-nano-banana-pro/submit",
    tag: "fal-nano-banana-pro",
    description: "Edit images with Nano Banana Pro",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "prompt",
        kind: "string",
        required: true,
        description: "Text prompt for image generation or editing",
      },
      {
        name: "imageUrls",
        kind: "array",
        required: false,
        description: "List of reference image URLs for image-to-image generation or editing",
      },
      {
        name: "aspectRatio",
        kind: "string",
        required: false,
        description: "Generated image aspect ratio",
        enumValues: ["21:9", "16:9", "3:2", "4:3", "5:4", "1:1", "4:5", "3:4", "2:3", "9:16"],
        defaultValue: "1:1",
      },
      {
        name: "outputFormat",
        kind: "string",
        required: false,
        description: "Output image file format",
        enumValues: ["png", "jpeg", "webp", "jpg"],
        defaultValue: "png",
      },
      {
        name: "resolution",
        kind: "string",
        required: false,
        description: "Generated image resolution",
        enumValues: ["1K", "2K", "4K"],
        defaultValue: "1K",
      },
      {
        name: "numImages",
        kind: "number",
        required: false,
        description: "Number of images to generate",
        defaultValue: 1,
        minimum: 1,
        maximum: 8,
      },
    ],
  },
  {
    actionName: "fal_nano_banana_result",
    method: "GET",
    path: "/v1/fal-nano-banana/result/{sessionID}",
    tag: "fal-nano-banana",
    description: "Get fal-nano-banana task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "fal_nano_banana_state",
    method: "GET",
    path: "/v1/fal-nano-banana/state/{sessionID}",
    tag: "fal-nano-banana",
    description: "Get fal-nano-banana task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "fal_nano_banana_submit",
    method: "POST",
    path: "/v1/fal-nano-banana/submit",
    tag: "fal-nano-banana",
    description: "Edit images with Nano Banana",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "prompt",
        kind: "string",
        required: true,
        description: "Text prompt for image generation or editing",
      },
      {
        name: "imageURLs",
        kind: "array",
        required: false,
        description: "List of reference image URLs for image-to-image generation or editing",
      },
      {
        name: "numImages",
        kind: "integer",
        required: false,
        description: "Number of images to generate",
        minimum: 1,
      },
      {
        name: "outputFormat",
        kind: "string",
        required: false,
        description: "Output image file format",
        enumValues: ["jpeg", "png", "webp"],
      },
      {
        name: "aspectRatio",
        kind: "string",
        required: false,
        description: "Generated image aspect ratio",
        enumValues: ["21:9", "1:1", "4:3", "3:2", "2:3", "5:4", "4:5", "3:4", "16:9", "9:16"],
      },
    ],
  },
  {
    actionName: "fal_remove_background_result",
    method: "GET",
    path: "/v1/fal-remove-background/result/{sessionID}",
    tag: "fal-remove-background",
    description: "Image with background removed",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "fal_remove_background_state",
    method: "GET",
    path: "/v1/fal-remove-background/state/{sessionID}",
    tag: "fal-remove-background",
    description: "Get fal-remove-background task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "fal_remove_background_submit",
    method: "POST",
    path: "/v1/fal-remove-background/submit",
    tag: "fal-remove-background",
    description: "Remove image backgrounds with the Fal.ai BRIA model",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "imageURL",
        kind: "string",
        required: true,
        description: "URL of the image whose background should be removed",
      },
    ],
  },
  {
    actionName: "file_upload_abort_multipart_upload",
    method: "POST",
    path: "/v1/file-upload/action/abort-multipart-upload",
    tag: "file-upload",
    description: "Abort multipart upload",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "uploadID",
        kind: "string",
        required: true,
        description: "Multipart upload ID to abort",
      },
      {
        name: "key",
        kind: "string",
        required: true,
        description: "Storage path of the S3 object",
      },
    ],
  },
  {
    actionName: "file_upload_complete_multipart_upload",
    method: "POST",
    path: "/v1/file-upload/action/complete-multipart-upload",
    tag: "file-upload",
    description: "Complete multipart upload",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "uploadID",
        kind: "string",
        required: true,
        description: "Multipart upload ID",
      },
      {
        name: "key",
        kind: "string",
        required: true,
        description: "Storage path of the S3 object",
      },
      {
        name: "parts",
        kind: "array",
        required: true,
        description: "List of uploaded part information",
      },
    ],
  },
  {
    actionName: "file_upload_create_multipart_upload",
    method: "POST",
    path: "/v1/file-upload/action/create-multipart-upload",
    tag: "file-upload",
    description: "Initialize multipart upload",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "fileSuffix",
        kind: "string",
        required: false,
        description: "File suffix, mutually exclusive with filename",
      },
      {
        name: "filename",
        kind: "string",
        required: false,
        description: "Full filename, mutually exclusive with fileSuffix and preferred when provided",
      },
      {
        name: "fileSize",
        kind: "number",
        required: true,
        description: "File size in bytes, up to 500 MB",
        minimum: 1,
        maximum: 524288000,
      },
    ],
  },
  {
    actionName: "file_upload_generate_presigned_url",
    method: "POST",
    path: "/v1/file-upload/action/generate-presigned-url",
    tag: "file-upload",
    description: "Generate a presigned URL for file upload",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "fileSuffix",
        kind: "string",
        required: false,
        description: "File suffix, mutually exclusive with filename",
      },
      {
        name: "filename",
        kind: "string",
        required: false,
        description: "Full filename, mutually exclusive with fileSuffix and preferred when provided",
      },
    ],
  },
  {
    actionName: "file_upload_generate_presigned_urls",
    method: "POST",
    path: "/v1/file-upload/action/generate-presigned-urls",
    tag: "file-upload",
    description: "Generate a presigned URL for multipart upload parts",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "uploadID",
        kind: "string",
        required: true,
        description: "Multipart upload ID",
      },
      {
        name: "key",
        kind: "string",
        required: true,
        description: "Storage path of the S3 object",
      },
      {
        name: "partNumbers",
        kind: "array",
        required: true,
        description: "List of part numbers for which to generate presigned URLs",
      },
    ],
  },
  {
    actionName: "jina_reader_read",
    method: "POST",
    path: "/v1/jina-reader/action/read",
    tag: "jina-reader",
    description: "Read and extract URL content",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "URL",
        kind: "string",
        required: true,
        description: "Webpage URL whose content should be fetched",
      },
      {
        name: "format",
        kind: "string",
        required: false,
        description: "Output content format",
        enumValues: ["markdown", "html", "text", "screenshot", "pageshot"],
      },
      {
        name: "engine",
        kind: "string",
        required: false,
        description: "Rendering engine type: direct for static fetching and browser for dynamic rendering",
        enumValues: ["direct", "browser", "cf-browser-rendering"],
      },
      {
        name: "jsonResponse",
        kind: "boolean",
        required: false,
        description: "Whether to return the result in JSON format",
      },
      {
        name: "timeout",
        kind: "number",
        required: false,
        description: "Page load wait timeout in seconds",
      },
      {
        name: "tokenLimit",
        kind: "number",
        required: false,
        description: "Maximum number of tokens to return",
      },
      {
        name: "useReaderLMV2",
        kind: "boolean",
        required: false,
        description: "Whether to use the ReaderLM-v2 model for HTML-to-Markdown conversion",
      },
      {
        name: "selectorOnly",
        kind: "string",
        required: false,
        description: "Only extract content matching this CSS selector",
      },
      {
        name: "selectorWait",
        kind: "string",
        required: false,
        description: "Wait for the element matching this CSS selector before extraction",
      },
      {
        name: "selectorNone",
        kind: "string",
        required: false,
        description: "Remove elements matching this CSS selector before extraction",
      },
      {
        name: "removeAllImages",
        kind: "boolean",
        required: false,
        description: "Whether to remove all images from the output",
      },
      {
        name: "withLinkSummary",
        kind: "string",
        required: false,
        description:
          "Generate a link summary section at the end; true includes only button links, all includes every link",
        enumValues: ["true", "all"],
      },
      {
        name: "withImageSummary",
        kind: "string",
        required: false,
        description: "Generate an image summary section at the end",
        enumValues: ["true", "all"],
      },
    ],
  },
  {
    actionName: "jina_reader_search",
    method: "POST",
    path: "/v1/jina-reader/action/search",
    tag: "jina-reader",
    description: "Search web content",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "content",
        kind: "string",
        required: true,
        description: "Search query keywords",
      },
      {
        name: "engine",
        kind: "string",
        required: false,
        description: "Search engine type",
        enumValues: ["direct"],
      },
      {
        name: "jsonResponse",
        kind: "boolean",
        required: false,
        description: "Whether to return search results in JSON format",
      },
      {
        name: "withFavicons",
        kind: "boolean",
        required: false,
        description: "Whether to include website icons in the result",
      },
      {
        name: "googleLocal",
        kind: "string",
        required: false,
        description: "Restrict the geographic location of search results using an ISO country code",
        enumValues: [
          "US",
          "CA",
          "MX",
          "GB",
          "DE",
          "FR",
          "GP",
          "CN",
          "IN",
          "BR",
          "AU",
          "RU",
          "IT",
          "ES",
          "KR",
          "NL",
          "CH",
          "SE",
          "IE",
          "SG",
          "IL",
          "SA",
          "AE",
          "ZA",
        ],
      },
      {
        name: "hostLanguage",
        kind: "string",
        required: false,
        description: "Preferred language for search results",
        enumValues: ["en", "es", "fr", "de", "ja", "zh-cn", "hi", "pt", "it", "ko", "nl", "ar", "sv", "iw", "af", "ru"],
      },
      {
        name: "pageIndex",
        kind: "number",
        required: false,
        description: "Page number for search results",
        minimum: 1,
      },
      {
        name: "noCache",
        kind: "boolean",
        required: false,
        description: "Whether to bypass cache and fetch the latest result",
      },
    ],
  },
  {
    actionName: "oomol_tts_ng_generate",
    method: "POST",
    path: "/v1/oomol-tts-ng/action/generate",
    tag: "oomol-tts-ng",
    description: "Generate speech audio",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "model",
        kind: "string",
        required: false,
        description: "Model name.",
        enumValues: ["qwen3-tts-instruct-flash", "qwen3-tts-flash", "qwen3-tts-vc-2026-01-22"],
        defaultValue: "qwen3-tts-flash",
      },
      {
        name: "text",
        kind: "string",
        required: true,
        description: "Text content to synthesize into speech.",
      },
      {
        name: "voice",
        kind: "string",
        required: false,
        description: "Preset voice name or cloned voice ID.",
        defaultValue: "Cherry",
      },
      {
        name: "languageType",
        kind: "string",
        required: false,
        description: "Language type of the text.",
        enumValues: [
          "Auto",
          "Chinese",
          "English",
          "German",
          "Italian",
          "Portuguese",
          "Spanish",
          "Japanese",
          "Korean",
          "French",
          "Russian",
        ],
      },
      {
        name: "instructions",
        kind: "string",
        required: false,
        description: "Speech performance control instruction, only available for instruct models.",
      },
      {
        name: "optimizeInstructions",
        kind: "boolean",
        required: false,
        description: "Whether to optimize speech performance instructions, only available for instruct models.",
      },
    ],
  },
  {
    actionName: "oomol_tts_result",
    method: "GET",
    path: "/v1/oomol-tts/result/{sessionID}",
    tag: "oomol-tts",
    description: "Get oomol-tts task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "oomol_tts_state",
    method: "GET",
    path: "/v1/oomol-tts/state/{sessionID}",
    tag: "oomol-tts",
    description: "Get oomol-tts task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "oomol_tts_submit",
    method: "POST",
    path: "/v1/oomol-tts/submit",
    tag: "oomol-tts",
    description: "Convert text to audio",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "text",
        kind: "string",
        required: true,
        description: "Text content to synthesize into speech, up to 100,000 characters",
      },
      {
        name: "voice",
        kind: "string",
        required: true,
        description: "Speaker ID specifying the voice used for synthesized audio",
      },
    ],
  },
  {
    actionName: "openai_image_async_result",
    method: "GET",
    path: "/v1/openai-image-async/result/{sessionID}",
    tag: "openai-image-async",
    description: "Get asynchronous OpenAI image generation result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "openai_image_async_submit",
    method: "POST",
    path: "/v1/openai-image-async/submit",
    tag: "openai-image-async",
    description: "Submit asynchronous OpenAI image generation requests, including gpt-image-2 image creation.",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "prompt",
        kind: "string",
        required: true,
        description: "Text prompt for image generation",
      },
      {
        name: "model",
        kind: "string",
        required: false,
        description: "OpenAI image model name",
      },
      {
        name: "background",
        kind: "string",
        required: false,
        description: "Background mode",
        enumValues: ["transparent", "opaque", "auto"],
      },
      {
        name: "moderation",
        kind: "string",
        required: false,
        description: "Content moderation strictness",
        enumValues: ["auto", "low"],
      },
      {
        name: "n",
        kind: "integer",
        required: false,
        description: "Number of images to generate",
        minimum: 1,
        maximum: 10,
      },
      {
        name: "output_compression",
        kind: "integer",
        required: false,
        description: "JPEG or WebP output compression level",
        minimum: 0,
        maximum: 100,
      },
      {
        name: "output_format",
        kind: "string",
        required: false,
        description: "Output image format",
        enumValues: ["png", "jpeg", "webp"],
      },
      {
        name: "partial_images",
        kind: "integer",
        required: false,
        description: "Number of partial images for streaming responses",
        minimum: 0,
        maximum: 3,
      },
      {
        name: "quality",
        kind: "string",
        required: false,
        description: "Image quality",
        enumValues: ["auto", "high", "medium", "low", "hd", "standard"],
      },
      {
        name: "size",
        kind: "string",
        required: false,
        description:
          "Output image size. For GPT Image 2, use auto or WIDTHxHEIGHT. Official constraints: largest dimension <= 3840, width and height multiples of 16, longest side at most 3x the shortest side, and total pixels between 655360 and 8294400 inclusive.",
      },
      {
        name: "user",
        kind: "string",
        required: false,
        description: "End-user identifier",
      },
    ],
  },
  {
    actionName: "openai_image_edit_async_result",
    method: "GET",
    path: "/v1/openai-image-edit-async/result/{sessionID}",
    tag: "openai-image-edit-async",
    description: "Get asynchronous OpenAI image edit result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "openai_image_edit_async_submit",
    method: "POST",
    path: "/v1/openai-image-edit-async/submit",
    tag: "openai-image-edit-async",
    description: "Submit asynchronous OpenAI image edit requests, including gpt-image-2 image editing.",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "prompt",
        kind: "string",
        required: true,
        description: "Text prompt for image editing",
      },
      {
        name: "model",
        kind: "string",
        required: false,
        description: "OpenAI image model name",
      },
      {
        name: "background",
        kind: "string",
        required: false,
        description: "Background mode",
        enumValues: ["transparent", "opaque", "auto"],
      },
      {
        name: "n",
        kind: "integer",
        required: false,
        description: "Number of images to generate",
        minimum: 1,
        maximum: 10,
      },
      {
        name: "output_compression",
        kind: "integer",
        required: false,
        description: "JPEG or WebP output compression level",
        minimum: 0,
        maximum: 100,
      },
      {
        name: "output_format",
        kind: "string",
        required: false,
        description: "Output image format",
        enumValues: ["png", "jpeg", "webp"],
      },
      {
        name: "partial_images",
        kind: "integer",
        required: false,
        description: "Number of partial images for streaming responses",
        minimum: 0,
        maximum: 3,
      },
      {
        name: "quality",
        kind: "string",
        required: false,
        description: "Image quality",
        enumValues: ["auto", "high", "medium", "low", "hd", "standard"],
      },
      {
        name: "size",
        kind: "string",
        required: false,
        description:
          "Output image size. For GPT Image 2, use auto or WIDTHxHEIGHT. Official constraints: largest dimension <= 3840, width and height multiples of 16, longest side at most 3x the shortest side, and total pixels between 655360 and 8294400 inclusive.",
      },
      {
        name: "user",
        kind: "string",
        required: false,
        description: "End-user identifier",
      },
      {
        name: "images",
        kind: "array",
        required: true,
        description: "Reference images to edit or compose from",
      },
      {
        name: "mask",
        kind: "object",
        required: false,
        description: "Mask image reference for partial edits",
      },
    ],
  },
  {
    actionName: "pdf_transform_epub_result",
    method: "GET",
    path: "/v1/pdf-transform-epub/result/{sessionID}",
    tag: "pdf-transform-epub",
    description: "Get pdf-transform-epub task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "pdf_transform_epub_state",
    method: "GET",
    path: "/v1/pdf-transform-epub/state/{sessionID}",
    tag: "pdf-transform-epub",
    description: "Get pdf-transform-epub task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "pdf_transform_epub_submit",
    method: "POST",
    path: "/v1/pdf-transform-epub/submit",
    tag: "pdf-transform-epub",
    description: "Convert a PDF to EPUB format",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "pdfURL",
        kind: "string",
        required: true,
        description: "Publicly accessible URL of the PDF file to convert",
        format: "uri",
      },
      {
        name: "model",
        kind: "string",
        required: false,
        description: "OCR model name",
        enumValues: ["gundam"],
        defaultValue: "gundam",
      },
      {
        name: "includesFootnotes",
        kind: "boolean",
        required: false,
        description: "Whether to include footnote content",
        defaultValue: true,
      },
      {
        name: "ignorePdfErrors",
        kind: "boolean",
        required: false,
        description: "Whether to ignore PDF parsing errors so the whole file can still be output",
        defaultValue: true,
      },
      {
        name: "ignoreOcrErrors",
        kind: "boolean",
        required: false,
        description: "Whether to ignore OCR recognition errors",
        defaultValue: true,
      },
      {
        name: "ocrWorkers",
        kind: "integer",
        required: false,
        description: "Number of parallel OCR worker threads",
        defaultValue: 1,
        minimum: 1,
        maximum: 4,
      },
      {
        name: "inlineLatex",
        kind: "boolean",
        required: false,
        description: "Whether to inline LaTeX formulas into the content",
        defaultValue: true,
      },
      {
        name: "oomolApiKey",
        kind: "string",
        required: false,
        description: "OOMOL API key, optionally overriding the default key",
      },
      {
        name: "filename",
        kind: "string",
        required: false,
        description: "Output filename, optional",
      },
    ],
  },
  {
    actionName: "pdf_transform_markdown_result",
    method: "GET",
    path: "/v1/pdf-transform-markdown/result/{sessionID}",
    tag: "pdf-transform-markdown",
    description: "Get pdf-transform-markdown task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "pdf_transform_markdown_state",
    method: "GET",
    path: "/v1/pdf-transform-markdown/state/{sessionID}",
    tag: "pdf-transform-markdown",
    description: "Get pdf-transform-markdown task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "pdf_transform_markdown_submit",
    method: "POST",
    path: "/v1/pdf-transform-markdown/submit",
    tag: "pdf-transform-markdown",
    description: "Convert a PDF to Markdown format",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "pdfURL",
        kind: "string",
        required: true,
        description: "Publicly accessible URL of the PDF file to convert",
        format: "uri",
      },
      {
        name: "model",
        kind: "string",
        required: false,
        description: "OCR model name",
        enumValues: ["gundam"],
        defaultValue: "gundam",
      },
      {
        name: "includesFootnotes",
        kind: "boolean",
        required: false,
        description: "Whether to include footnote content",
        defaultValue: true,
      },
      {
        name: "ignorePdfErrors",
        kind: "boolean",
        required: false,
        description: "Whether to ignore PDF parsing errors so the whole file can still be output",
        defaultValue: true,
      },
      {
        name: "ignoreOcrErrors",
        kind: "boolean",
        required: false,
        description: "Whether to ignore OCR recognition errors",
        defaultValue: true,
      },
      {
        name: "ocrWorkers",
        kind: "integer",
        required: false,
        description: "Number of parallel OCR worker threads",
        defaultValue: 1,
        minimum: 1,
        maximum: 4,
      },
      {
        name: "oomolApiKey",
        kind: "string",
        required: false,
        description: "OOMOL API key, optionally overriding the default key",
      },
      {
        name: "inlineLatex",
        kind: "boolean",
        required: false,
        description: "Whether to inline LaTeX formulas into Markdown",
        defaultValue: true,
      },
      {
        name: "filename",
        kind: "string",
        required: false,
        description: "Output filename, optional",
      },
    ],
  },
  {
    actionName: "qwen_asr_filetrans_result",
    method: "GET",
    path: "/v1/qwen-asr-filetrans/result/{sessionID}",
    tag: "qwen-asr-filetrans",
    description: "Get Qwen ASR file transcription task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "qwen_asr_filetrans_state",
    method: "GET",
    path: "/v1/qwen-asr-filetrans/state/{sessionID}",
    tag: "qwen-asr-filetrans",
    description: "Get Qwen ASR file transcription task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "qwen_asr_filetrans_submit",
    method: "POST",
    path: "/v1/qwen-asr-filetrans/submit",
    tag: "qwen-asr-filetrans",
    description: "Submit a long-audio speech recognition task with Qwen ASR file transcription",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "fileURL",
        kind: "string",
        required: true,
        description: "Publicly accessible URL of the audio file to transcribe.",
        format: "uri",
      },
      {
        name: "language",
        kind: "string",
        required: false,
        description: "Audio language. Leave unspecified when the language is unknown or the audio is multilingual.",
        enumValues: [
          "zh",
          "yue",
          "en",
          "ja",
          "de",
          "ko",
          "ru",
          "fr",
          "pt",
          "ar",
          "it",
          "es",
          "hi",
          "id",
          "th",
          "tr",
          "uk",
          "vi",
          "cs",
          "da",
          "fil",
          "fi",
          "is",
          "ms",
          "no",
          "pl",
          "sv",
        ],
      },
      {
        name: "enableITN",
        kind: "boolean",
        required: false,
        description: "Whether to enable inverse text normalization for Chinese and English audio.",
        defaultValue: false,
      },
      {
        name: "enableWords",
        kind: "boolean",
        required: false,
        description: "Whether to return word-level timestamps.",
        defaultValue: false,
      },
      {
        name: "channelID",
        kind: "array",
        required: false,
        description: "Audio channel indexes to transcribe, starting from 0.",
      },
    ],
  },
  {
    actionName: "qwen_doc_turbo_analyze",
    method: "POST",
    path: "/v1/qwen-doc-turbo/action/analyze",
    tag: "qwen-doc-turbo",
    description: "Analyze documents with Tongyi Qianwen",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "docURLs",
        kind: "array",
        required: false,
        description: "Array of document URLs to process, supporting PDF, Word, Excel, and other formats",
      },
      {
        name: "instruction",
        kind: "string",
        required: false,
        description: "Document analysis instruction describing the extraction requirements",
      },
      {
        name: "text",
        kind: "string",
        required: false,
        description: "Plain text content, mutually exclusive with docURLs mode",
      },
      {
        name: "systemPrompt",
        kind: "string",
        required: false,
        description: "System prompt that sets the model role and behavior",
        defaultValue: "You are a helpful assistant.",
      },
      {
        name: "fileParsingStrategy",
        kind: "string",
        required: false,
        description:
          "File parsing strategy: auto selects automatically, fast parses quickly, and quality prioritizes parsing quality",
        enumValues: ["auto", "fast", "quality"],
        defaultValue: "auto",
      },
    ],
  },
  {
    actionName: "qwen_image_edit_plus_edit",
    method: "POST",
    path: "/v1/qwen-image-edit-plus/action/edit",
    tag: "qwen-image-edit-plus",
    description: "Edit images with Tongyi Wanxiang",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "model",
        kind: "string",
        required: false,
        description: "Model name",
        enumValues: ["qwen-image-edit-max", "qwen-image-edit-plus", "qwen-image-edit"],
        defaultValue: "qwen-image-edit-plus",
      },
      {
        name: "imageURLs",
        kind: "array",
        required: true,
        description: "Array of input image URLs, supporting 1 to 3 images",
      },
      {
        name: "prompt",
        kind: "string",
        required: true,
        description: "Editing instruction describing changes to the image",
      },
      {
        name: "generateImageCount",
        kind: "integer",
        required: false,
        description: "Number of images to generate",
        defaultValue: 1,
        minimum: 1,
        maximum: 6,
      },
      {
        name: "negativePrompt",
        kind: "string",
        required: false,
        description: "Negative prompt describing content to avoid",
      },
      {
        name: "size",
        kind: "string",
        required: false,
        description: "The size input value.",
      },
      {
        name: "promptExtend",
        kind: "boolean",
        required: false,
        description: "Whether to enable intelligent prompt rewriting",
        defaultValue: true,
      },
      {
        name: "watermark",
        kind: "boolean",
        required: false,
        description: "Whether to add a watermark",
        defaultValue: false,
      },
      {
        name: "seed",
        kind: "integer",
        required: false,
        description: "Random seed; fixed seeds can reproduce results",
        minimum: 0,
        maximum: 2147483647,
      },
    ],
  },
  {
    actionName: "qwen_image_generate",
    method: "POST",
    path: "/v1/qwen-image/action/generate",
    tag: "qwen-image",
    description: "Generate images with Tongyi Qianwen",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "model",
        kind: "string",
        required: false,
        description: "Model name",
        enumValues: ["qwen-image-2.0", "qwen-image-2.0-pro"],
        defaultValue: "qwen-image-2.0",
      },
      {
        name: "prompt",
        kind: "string",
        required: true,
        description: "Text prompt for image generation",
      },
      {
        name: "negativePrompt",
        kind: "string",
        required: false,
        description: "Negative prompt describing content to avoid",
      },
      {
        name: "size",
        kind: "string",
        required: false,
        description: "The size input value.",
      },
      {
        name: "n",
        kind: "integer",
        required: false,
        description: "Number of images to generate, supporting 1 to 6 images",
        defaultValue: 1,
        minimum: 1,
        maximum: 6,
      },
      {
        name: "promptExtend",
        kind: "boolean",
        required: false,
        description: "Whether to enable intelligent prompt rewriting",
        defaultValue: true,
      },
      {
        name: "watermark",
        kind: "boolean",
        required: false,
        description: "Whether to add a watermark",
        defaultValue: false,
      },
      {
        name: "seed",
        kind: "integer",
        required: false,
        description: "Random seed; fixed seeds can reproduce results",
        minimum: 0,
        maximum: 2147483647,
      },
    ],
  },
  {
    actionName: "qwen_mt_image_result",
    method: "GET",
    path: "/v1/qwen-mt-image/result/{sessionID}",
    tag: "qwen-mt-image",
    description: "Get qwen-mt-image task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "qwen_mt_image_state",
    method: "GET",
    path: "/v1/qwen-mt-image/state/{sessionID}",
    tag: "qwen-mt-image",
    description: "Get qwen-mt-image task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "qwen_mt_image_submit",
    method: "POST",
    path: "/v1/qwen-mt-image/submit",
    tag: "qwen-mt-image",
    description: "Image machine translation",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "imageURL",
        kind: "string",
        required: true,
        description: "Publicly accessible URL of the image to translate",
      },
      {
        name: "sourceLang",
        kind: "string",
        required: false,
        description: "Source language; auto enables automatic detection",
        enumValues: ["auto", "zh", "en", "ko", "ja", "ru", "es", "fr", "pt", "it", "de", "vi"],
        defaultValue: "auto",
      },
      {
        name: "targetLang",
        kind: "string",
        required: true,
        description: "Target language",
        enumValues: ["zh", "en", "ko", "ja", "ru", "es", "fr", "pt", "it", "vi", "ms", "th", "id", "ar"],
      },
      {
        name: "domainHint",
        kind: "string",
        required: false,
        description: "Domain prompt describing the translation style; English is recommended",
      },
      {
        name: "sensitivities",
        kind: "array",
        required: false,
        description: "Sensitive word filter list; exact matches are skipped during translation",
      },
      {
        name: "terminologies",
        kind: "array",
        required: false,
        description: "Terminology override list specifying translations for specific words",
      },
      {
        name: "skipImgSegment",
        kind: "boolean",
        required: false,
        description: "Whether to skip image subject segmentation and translate all text when skipped",
      },
    ],
  },
  {
    actionName: "cosyvoice_tts_generate",
    method: "POST",
    path: "/v1/cosyvoice-tts/action/generate",
    tag: "cosyvoice-tts",
    description: "Generate speech audio with CosyVoice TTS.",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "model",
        kind: "unknown",
        required: false,
        description: "Speech synthesis model. Different models support different voices.",
        defaultValue: "cosyvoice-v3-flash",
      },
      {
        name: "text",
        kind: "string",
        required: true,
        description: "Text content to synthesize into speech. SSML and LaTeX are supported.",
      },
      {
        name: "voice",
        kind: "string",
        required: true,
        description: "Voice name, cloned voice ID, or voice design name compatible with the selected model.",
      },
      {
        name: "format",
        kind: "string",
        required: false,
        description: "Audio encoding format.",
        enumValues: ["mp3", "pcm", "wav", "opus"],
      },
      {
        name: "sampleRate",
        kind: "integer",
        required: false,
        description: "Audio sample rate in Hz.",
      },
      {
        name: "volume",
        kind: "integer",
        required: false,
        description: "Audio volume. Use 50 for standard volume.",
        minimum: 0,
        maximum: 100,
      },
      {
        name: "rate",
        kind: "number",
        required: false,
        description: "Speech rate. Use 1.0 for standard speed.",
        minimum: 0.5,
        maximum: 2,
      },
      {
        name: "bitRate",
        kind: "integer",
        required: false,
        description: "Audio bit rate in kbps. Only opus format supports this field.",
        minimum: 6,
        maximum: 510,
      },
      {
        name: "pitch",
        kind: "number",
        required: false,
        description: "Speech pitch. Use 1.0 for natural pitch.",
        minimum: 0.5,
        maximum: 2,
      },
      {
        name: "enableSSML",
        kind: "boolean",
        required: false,
        description: "Whether to enable SSML parsing.",
      },
      {
        name: "wordTimestampEnabled",
        kind: "boolean",
        required: false,
        description: "Whether to include word-level timestamps.",
      },
      {
        name: "seed",
        kind: "integer",
        required: false,
        description: "Random seed used for generation.",
        minimum: 0,
        maximum: 65535,
      },
      {
        name: "languageHints",
        kind: "array",
        required: false,
        description: "Target language hints. The current API recommends passing at most one value.",
      },
      {
        name: "instruction",
        kind: "string",
        required: false,
        description: "Instruction that controls dialect, emotion, role, or other synthesis style.",
      },
      {
        name: "enableAIGCTag",
        kind: "boolean",
        required: false,
        description: "Whether to add an invisible AIGC tag to the generated audio.",
      },
      {
        name: "AIGCPropagator",
        kind: "string",
        required: false,
        description: "ContentPropagator value for the invisible AIGC tag.",
      },
      {
        name: "AIGCPropagateID",
        kind: "string",
        required: false,
        description: "PropagateID value for the invisible AIGC tag.",
      },
      {
        name: "hotFix",
        kind: "object",
        required: false,
        description: "Text hotfix configuration for pronunciation and replacement.",
      },
      {
        name: "enableMarkdownFilter",
        kind: "boolean",
        required: false,
        description: "Whether to enable Markdown filtering.",
      },
    ],
  },
  {
    actionName: "qwen_tts_generate",
    method: "POST",
    path: "/v1/qwen-tts/action/generate",
    tag: "qwen-tts",
    description: "Generate speech audio",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "model",
        kind: "string",
        required: false,
        description: "Model name.",
        enumValues: ["qwen3-tts-instruct-flash", "qwen3-tts-flash", "qwen3-tts-vc-2026-01-22"],
        defaultValue: "qwen3-tts-flash",
      },
      {
        name: "text",
        kind: "string",
        required: true,
        description: "Text content to synthesize into speech.",
      },
      {
        name: "voice",
        kind: "string",
        required: false,
        description: "Preset voice name or cloned voice ID.",
        defaultValue: "Cherry",
      },
      {
        name: "languageType",
        kind: "string",
        required: false,
        description: "Language type of the text.",
        enumValues: [
          "Auto",
          "Chinese",
          "English",
          "German",
          "Italian",
          "Portuguese",
          "Spanish",
          "Japanese",
          "Korean",
          "French",
          "Russian",
        ],
      },
      {
        name: "instructions",
        kind: "string",
        required: false,
        description: "Speech performance control instruction, only available for instruct models.",
      },
      {
        name: "optimizeInstructions",
        kind: "boolean",
        required: false,
        description: "Whether to optimize speech performance instructions, only available for instruct models.",
      },
    ],
  },
  {
    actionName: "qwen_voice_design_create",
    method: "POST",
    path: "/v1/qwen-voice-design/action/create",
    tag: "qwen-voice-design",
    description: "Create a Qwen voice design voice and return preview audio.",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "targetModel",
        kind: "unknown",
        required: false,
        description: "Speech synthesis model that drives the designed voice.",
        defaultValue: "qwen3-tts-vd-2026-01-26",
      },
      {
        name: "voicePrompt",
        kind: "string",
        required: true,
        description: "Voice description. Only Chinese and English are supported.",
      },
      {
        name: "previewText",
        kind: "string",
        required: true,
        description: "Text used for preview audio.",
      },
      {
        name: "preferredName",
        kind: "string",
        required: true,
        description: "Short voice name. Only letters, numbers, and underscores are allowed.",
      },
      {
        name: "language",
        kind: "unknown",
        required: false,
        description: "Language tendency used for voice design.",
        defaultValue: "zh",
      },
      {
        name: "sampleRate",
        kind: "unknown",
        required: false,
        description: "Preview audio sample rate.",
        defaultValue: 24000,
      },
      {
        name: "responseFormat",
        kind: "unknown",
        required: false,
        description: "Preview audio format.",
        defaultValue: "wav",
      },
    ],
  },
  {
    actionName: "qwen_voice_design_generate",
    method: "POST",
    path: "/v1/qwen-voice-design/action/generate",
    tag: "qwen-voice-design",
    description: "Generate speech audio using a Qwen voice design voice.",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "text",
        kind: "string",
        required: true,
        description: "Text content to synthesize into speech.",
      },
      {
        name: "voice",
        kind: "string",
        required: true,
        description: "Voice name created by Qwen voice design.",
      },
      {
        name: "model",
        kind: "unknown",
        required: false,
        description: "Speech synthesis model for the voice design voice.",
        defaultValue: "qwen3-tts-vd-2026-01-26",
      },
    ],
  },
  {
    actionName: "qwen_voice_design_list",
    method: "POST",
    path: "/v1/qwen-voice-design/action/list",
    tag: "qwen-voice-design",
    description: "List Qwen voice design voices.",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "pageIndex",
        kind: "integer",
        required: false,
        description: "Page index.",
        defaultValue: 0,
        minimum: 0,
        maximum: 200,
      },
      {
        name: "pageSize",
        kind: "integer",
        required: false,
        description: "Number of voices per page.",
        defaultValue: 10,
      },
    ],
  },
  {
    actionName: "qwen_voice_design_query",
    method: "POST",
    path: "/v1/qwen-voice-design/action/query",
    tag: "qwen-voice-design",
    description: "Get details for a Qwen voice design voice.",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "voice",
        kind: "string",
        required: true,
        description: "Voice name.",
      },
    ],
  },
  {
    actionName: "qwen_voice_design_delete",
    method: "POST",
    path: "/v1/qwen-voice-design/action/delete",
    tag: "qwen-voice-design",
    description: "Delete a Qwen voice design voice.",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "voice",
        kind: "string",
        required: true,
        description: "Voice name.",
      },
    ],
  },
  {
    actionName: "qwen_voice_cloning_create",
    method: "POST",
    path: "/v1/qwen-voice-cloning/action/create",
    tag: "qwen-voice-cloning",
    description: "Create a Qwen voice cloning voice and return a preview audio URL.",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "targetModel",
        kind: "string",
        required: false,
        description: "Speech synthesis model that drives the cloned voice.",
        enumValues: ["qwen3-tts-vc-realtime-2026-01-15", "qwen3-tts-vc-realtime-2025-11-27", "qwen3-tts-vc-2026-01-22"],
        defaultValue: "qwen3-tts-vc-2026-01-22",
      },
      {
        name: "preferredName",
        kind: "string",
        required: true,
        description: "Short voice name used to identify the cloned voice.",
      },
      {
        name: "audioData",
        kind: "string",
        required: true,
        description: "Source audio data for cloning. Use a data URL or a public HTTPS URL.",
      },
      {
        name: "text",
        kind: "string",
        required: false,
        description: "Transcript matching the source audio content.",
      },
      {
        name: "previewText",
        kind: "string",
        required: true,
        description: "Text used to generate the preview audio.",
      },
      {
        name: "language",
        kind: "string",
        required: false,
        description: "Language of the source audio.",
        enumValues: ["zh", "en", "de", "it", "pt", "es", "ja", "ko", "fr", "ru"],
      },
    ],
  },
  {
    actionName: "seedance_video_result",
    method: "GET",
    path: "/v1/seedance-video/result/{sessionID}",
    tag: "seedance-video",
    description: "Query a Seedance video generation task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "seedance_video_state",
    method: "GET",
    path: "/v1/seedance-video/state/{sessionID}",
    tag: "seedance-video",
    description: "Get a Seedance video generation task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "seedance_video_submit",
    method: "POST",
    path: "/v1/seedance-video/submit",
    tag: "seedance-video",
    description: "Generate videos with Doubao Seedance",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "model",
        kind: "string",
        required: false,
        description: "Video generation model",
        enumValues: ["doubao-seedance-2-0-260128", "doubao-seedance-2-0-fast-260128"],
        defaultValue: "doubao-seedance-2-0-260128",
      },
      {
        name: "prompt",
        kind: "string",
        required: false,
        description: "Video generation prompt",
      },
      {
        name: "images",
        kind: "array",
        required: false,
        description: "Reference, first-frame, or last-frame images",
      },
      {
        name: "videos",
        kind: "array",
        required: false,
        description: "Reference videos. Only reference_video is supported.",
      },
      {
        name: "audios",
        kind: "array",
        required: false,
        description: "Reference audio files. Only reference_audio is supported.",
      },
      {
        name: "returnLastFrame",
        kind: "boolean",
        required: false,
        description: "Whether to return the generated video's last-frame image",
        defaultValue: false,
      },
      {
        name: "executionExpiresAfter",
        kind: "integer",
        required: false,
        description: "Task expiration threshold in seconds",
        minimum: 3600,
        maximum: 259200,
      },
      {
        name: "generateAudio",
        kind: "boolean",
        required: false,
        description: "Whether the generated video should include synchronized audio",
        defaultValue: true,
      },
      {
        name: "tools",
        kind: "array",
        required: false,
        description: "Tools the model may call",
      },
      {
        name: "safetyIdentifier",
        kind: "string",
        required: false,
        description: "Unique end-user identifier",
      },
      {
        name: "resolution",
        kind: "string",
        required: false,
        description: "Video resolution",
        enumValues: ["480p", "720p", "1080p"],
        defaultValue: "720p",
      },
      {
        name: "ratio",
        kind: "string",
        required: false,
        description: "Generated video aspect ratio",
        enumValues: ["16:9", "4:3", "1:1", "3:4", "9:16", "21:9", "adaptive"],
        defaultValue: "adaptive",
      },
      {
        name: "duration",
        kind: "unknown",
        required: false,
        description: "Video duration in seconds. Use -1 to let the model choose automatically.",
        defaultValue: 5,
      },
      {
        name: "seed",
        kind: "integer",
        required: false,
        description: "Random seed",
        minimum: -1,
        maximum: 4294967295,
      },
      {
        name: "watermark",
        kind: "boolean",
        required: false,
        description: "Whether to add a watermark",
        defaultValue: false,
      },
    ],
  },
  {
    actionName: "text_to_epub_illustrate_generate",
    method: "POST",
    path: "/v1/text-to-epub-illustrate/action/generate",
    tag: "text-to-epub-illustrate",
    description: "Generate illustrations for EPUB content",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "prompt",
        kind: "string",
        required: true,
        description: "Text prompt for image generation",
      },
      {
        name: "image",
        kind: "string",
        required: false,
        description: "Reference image URL or Base64 encoding for image-to-image generation",
      },
      {
        name: "size",
        kind: "unknown",
        required: false,
        description: "Image size, supporting descriptive sizes (1K/2K/4K) or explicit width and height in pixels",
        defaultValue: "2048x2048",
      },
      {
        name: "multiple",
        kind: "string",
        required: false,
        description: "Whether to enable multi-image generation mode; auto lets the model decide",
        enumValues: ["disabled", "auto"],
        defaultValue: "disabled",
      },
      {
        name: "maxCount",
        kind: "number",
        required: false,
        description: "Maximum number of images to generate in one request, only effective in multi-image mode",
        defaultValue: 1,
        minimum: 1,
        maximum: 15,
      },
      {
        name: "watermark",
        kind: "boolean",
        required: false,
        description: "Whether to add a watermark",
        defaultValue: true,
      },
      {
        name: "optionsnew",
        kind: "string",
        required: false,
        description: "Generation mode: standard prioritizes quality, fast prioritizes speed",
        enumValues: ["standard", "fast"],
        defaultValue: "standard",
      },
    ],
  },
  {
    actionName: "tinify_png_shrink_compress",
    method: "POST",
    path: "/v1/tinify-png-shrink/action/compress",
    tag: "tinify-png-shrink",
    description: "Compress PNG images with the Tinify API",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "imageURL",
        kind: "string",
        required: true,
        description: "URL of the original image to compress, supporting PNG, JPEG, and WebP formats",
      },
    ],
  },
  {
    actionName: "wanx_i2v_video_result",
    method: "GET",
    path: "/v1/wanx-i2v-video/result/{sessionID}",
    tag: "wanx-i2v-video",
    description: "Query first-frame-to-video task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "wanx_i2v_video_state",
    method: "GET",
    path: "/v1/wanx-i2v-video/state/{sessionID}",
    tag: "wanx-i2v-video",
    description: "Get wanx-i2v-video task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "wanx_i2v_video_submit",
    method: "POST",
    path: "/v1/wanx-i2v-video/submit",
    tag: "wanx-i2v-video",
    description: "Generate videos from the first frame with Tongyi Wanxiang",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "model",
        kind: "string",
        required: false,
        description: "Model name",
        enumValues: ["wan2.6-i2v-flash", "wan2.6-i2v"],
        defaultValue: "wan2.6-i2v-flash",
      },
      {
        name: "prompt",
        kind: "string",
        required: false,
        description: "Video generation prompt",
      },
      {
        name: "imageURL",
        kind: "string",
        required: true,
        description: "First-frame image URL or Base64-encoded data",
      },
      {
        name: "negativePrompt",
        kind: "string",
        required: false,
        description: "Negative prompt describing content to avoid",
      },
      {
        name: "audio",
        kind: "boolean",
        required: false,
        description: "Whether to generate video with audio; only flash models support disabling audio",
        defaultValue: true,
      },
      {
        name: "audioURL",
        kind: "string",
        required: false,
        description: "Custom audio file URL, used only when audio is needed",
        format: "uri",
      },
      {
        name: "duration",
        kind: "integer",
        required: false,
        description: "Output video duration in seconds",
        defaultValue: 5,
        minimum: 2,
        maximum: 15,
      },
      {
        name: "resolution",
        kind: "string",
        required: false,
        description: "Output video resolution",
        enumValues: ["720P", "1080P"],
        defaultValue: "1080P",
      },
      {
        name: "promptExtend",
        kind: "boolean",
        required: false,
        description: "Whether to enable intelligent prompt rewriting",
        defaultValue: true,
      },
      {
        name: "shotType",
        kind: "string",
        required: false,
        description: "Shot type, effective when intelligent prompt rewriting is enabled",
        enumValues: ["single", "multi"],
      },
      {
        name: "watermark",
        kind: "boolean",
        required: false,
        description: "Whether to add an AI-generated watermark",
        defaultValue: false,
      },
      {
        name: "seed",
        kind: "integer",
        required: false,
        description: "Random seed; fixed seeds can reproduce results",
        minimum: 0,
        maximum: 2147483647,
      },
    ],
  },
  {
    actionName: "wanx_image_result",
    method: "GET",
    path: "/v1/wanx-image/result/{sessionID}",
    tag: "wanx-image",
    description: "Get wanx-image task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "wanx_image_state",
    method: "GET",
    path: "/v1/wanx-image/state/{sessionID}",
    tag: "wanx-image",
    description: "Get wanx-image task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "wanx_image_submit",
    method: "POST",
    path: "/v1/wanx-image/submit",
    tag: "wanx-image",
    description: "Generate and edit images with Tongyi Wanxiang AI",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "model",
        kind: "string",
        required: false,
        description: "Model name",
        enumValues: ["wan2.6-image"],
        defaultValue: "wan2.6-image",
      },
      {
        name: "mode",
        kind: "string",
        required: false,
        description: "Image generation mode: image-edit for image editing, interleave for mixed text-image layout",
        enumValues: ["image-edit", "interleave"],
        defaultValue: "image-edit",
      },
      {
        name: "prompt",
        kind: "string",
        required: true,
        description: "Positive prompt describing the desired generated image content",
      },
      {
        name: "imageURLs",
        kind: "array",
        required: false,
        description: "Array of input image URLs; edit mode requires 1-4 images, interleave mode allows 0-1 images",
      },
      {
        name: "negativePrompt",
        kind: "string",
        required: false,
        description: "Negative prompt describing content to avoid",
      },
      {
        name: "size",
        kind: "string",
        required: false,
        description: "The size input value.",
      },
      {
        name: "n",
        kind: "integer",
        required: false,
        description: "Number of images to generate: 1-4 in edit mode, fixed at 1 in interleave mode",
        defaultValue: 4,
        minimum: 1,
        maximum: 4,
      },
      {
        name: "maxImages",
        kind: "integer",
        required: false,
        description: "Maximum number of generated images in mixed-layout mode, only effective in interleave mode",
        minimum: 1,
        maximum: 5,
      },
      {
        name: "promptExtend",
        kind: "boolean",
        required: false,
        description: "Whether to enable intelligent prompt rewriting, only effective in edit mode",
        defaultValue: true,
      },
      {
        name: "watermark",
        kind: "boolean",
        required: false,
        description: "Whether to add an AI-generated watermark",
        defaultValue: false,
      },
      {
        name: "seed",
        kind: "integer",
        required: false,
        description: "Random seed; fixed seeds can reproduce results",
        minimum: 0,
        maximum: 2147483647,
      },
    ],
  },
  {
    actionName: "wanx_kf2v_video_result",
    method: "GET",
    path: "/v1/wanx-kf2v-video/result/{sessionID}",
    tag: "wanx-kf2v-video",
    description: "Get wanx-kf2v-video task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "wanx_kf2v_video_state",
    method: "GET",
    path: "/v1/wanx-kf2v-video/state/{sessionID}",
    tag: "wanx-kf2v-video",
    description: "Get wanx-kf2v-video task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "wanx_kf2v_video_submit",
    method: "POST",
    path: "/v1/wanx-kf2v-video/submit",
    tag: "wanx-kf2v-video",
    description: "Generate videos from keyframes with Tongyi Wanxiang",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "model",
        kind: "string",
        required: false,
        description: "Model name",
        enumValues: ["wan2.2-kf2v-flash", "wanx2.1-kf2v-plus"],
        defaultValue: "wan2.2-kf2v-flash",
      },
      {
        name: "prompt",
        kind: "string",
        required: false,
        description: "Text prompt describing the video transition process",
      },
      {
        name: "firstFrameURL",
        kind: "string",
        required: true,
        description: "First-frame image URL, which determines the video aspect ratio",
        format: "uri",
      },
      {
        name: "lastFrameURL",
        kind: "string",
        required: false,
        description: "Last-frame image URL, used with the first frame to generate a transition video",
        format: "uri",
      },
      {
        name: "negativePrompt",
        kind: "string",
        required: false,
        description: "Negative prompt describing content to avoid",
      },
      {
        name: "template",
        kind: "string",
        required: false,
        description: "Video effect template name; prompt and last frame are not required when using a template",
      },
      {
        name: "resolution",
        kind: "string",
        required: false,
        description: "Generated video resolution tier",
        enumValues: ["480P", "720P", "1080P"],
        defaultValue: "720P",
      },
      {
        name: "promptExtend",
        kind: "boolean",
        required: false,
        description: "Whether to enable intelligent prompt rewriting",
        defaultValue: true,
      },
      {
        name: "watermark",
        kind: "boolean",
        required: false,
        description: "Whether to add a watermark",
        defaultValue: false,
      },
      {
        name: "seed",
        kind: "integer",
        required: false,
        description: "Random seed; fixed seeds can reproduce results",
        minimum: 0,
        maximum: 2147483647,
      },
    ],
  },
  {
    actionName: "wanx_r2v_video_result",
    method: "GET",
    path: "/v1/wanx-r2v-video/result/{sessionID}",
    tag: "wanx-r2v-video",
    description: "Query reference-to-video task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "wanx_r2v_video_state",
    method: "GET",
    path: "/v1/wanx-r2v-video/state/{sessionID}",
    tag: "wanx-r2v-video",
    description: "Get wanx-r2v-video task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "wanx_r2v_video_submit",
    method: "POST",
    path: "/v1/wanx-r2v-video/submit",
    tag: "wanx-r2v-video",
    description: "Generate videos from reference assets with Tongyi Wanxiang",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "model",
        kind: "string",
        required: false,
        description: "Model name",
        enumValues: ["wan2.6-r2v-flash", "wan2.6-r2v"],
        defaultValue: "wan2.6-r2v-flash",
      },
      {
        name: "prompt",
        kind: "string",
        required: true,
        description: "Video generation prompt; use identifiers such as character1 to reference characters",
      },
      {
        name: "referenceURLs",
        kind: "array",
        required: true,
        description: "Array of reference image or video URLs, ordered from character1 to characterN",
      },
      {
        name: "negativePrompt",
        kind: "string",
        required: false,
        description: "Negative prompt describing content to avoid",
      },
      {
        name: "size",
        kind: "string",
        required: false,
        description: "Output video resolution; explicit width and height are required",
        enumValues: [
          "1280*720",
          "720*1280",
          "960*960",
          "1088*832",
          "832*1088",
          "1920*1080",
          "1080*1920",
          "1440*1440",
          "1632*1248",
          "1248*1632",
        ],
        defaultValue: "1920*1080",
      },
      {
        name: "duration",
        kind: "integer",
        required: false,
        description: "Output video duration in seconds",
        defaultValue: 5,
        minimum: 2,
        maximum: 10,
      },
      {
        name: "shotType",
        kind: "string",
        required: false,
        description: "Shot type: single for a single shot, multi for multiple shots",
        enumValues: ["single", "multi"],
      },
      {
        name: "audio",
        kind: "boolean",
        required: false,
        description: "Whether to generate video with audio; only flash models support disabling audio",
        defaultValue: true,
      },
      {
        name: "watermark",
        kind: "boolean",
        required: false,
        description: "Whether to add an AI-generated watermark",
        defaultValue: false,
      },
      {
        name: "seed",
        kind: "integer",
        required: false,
        description: "Random seed; fixed seeds can reproduce results",
        minimum: 0,
        maximum: 2147483647,
      },
    ],
  },
  {
    actionName: "wanx_t2v_video_result",
    method: "GET",
    path: "/v1/wanx-t2v-video/result/{sessionID}",
    tag: "wanx-t2v-video",
    description: "Query text-to-video task result",
    successStatuses: [200, 202, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "wanx_t2v_video_state",
    method: "GET",
    path: "/v1/wanx-t2v-video/state/{sessionID}",
    tag: "wanx-t2v-video",
    description: "Get wanx-t2v-video task state",
    successStatuses: [200, 404],
    pathParams: ["sessionID"],
    inputFields: [
      {
        name: "sessionID",
        kind: "string",
        required: true,
        description: "Session ID",
      },
    ],
  },
  {
    actionName: "wanx_t2v_video_submit",
    method: "POST",
    path: "/v1/wanx-t2v-video/submit",
    tag: "wanx-t2v-video",
    description: "Generate text-to-video videos with Tongyi Wanxiang",
    successStatuses: [200],
    pathParams: [],
    inputFields: [
      {
        name: "prompt",
        kind: "string",
        required: true,
        description: "Video generation prompt",
      },
      {
        name: "negativePrompt",
        kind: "string",
        required: false,
        description: "Negative prompt describing content to avoid",
      },
      {
        name: "audioURL",
        kind: "string",
        required: false,
        description: "The audioURL input value.",
      },
      {
        name: "size",
        kind: "string",
        required: false,
        description: "Output video resolution; explicit width and height are required",
        enumValues: [
          "1280*720",
          "720*1280",
          "960*960",
          "1088*832",
          "832*1088",
          "1920*1080",
          "1080*1920",
          "1440*1440",
          "1632*1248",
          "1248*1632",
        ],
        defaultValue: "1920*1080",
      },
      {
        name: "duration",
        kind: "integer",
        required: false,
        description: "Output video duration in seconds",
        defaultValue: 5,
        minimum: 2,
        maximum: 15,
      },
      {
        name: "promptExtend",
        kind: "boolean",
        required: false,
        description: "Whether to enable intelligent prompt rewriting",
        defaultValue: true,
      },
      {
        name: "shotType",
        kind: "string",
        required: false,
        description: "Shot type: single for a single shot, multi for multiple shots",
        enumValues: ["single", "multi"],
      },
      {
        name: "watermark",
        kind: "boolean",
        required: false,
        description: "Whether to add an AI-generated watermark",
        defaultValue: false,
      },
      {
        name: "seed",
        kind: "integer",
        required: false,
        description: "Random seed; fixed seeds can reproduce results",
        minimum: 0,
        maximum: 2147483647,
      },
    ],
  },
] satisfies FusionApiOperation[];
