{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/slideforge-dev/json-schema/slideforge-dev-body-translate-upload-v1-translate-post-schema.json",
  "title": "Body_translate_upload_v1_translate_post",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/slideforge-dev-openapi.json#/components/schemas/Body_translate_upload_v1_translate_post",
  "properties": {
    "file": {
      "anyOf": [
        {
          "type": "string",
          "format": "binary"
        },
        {
          "type": "null"
        }
      ],
      "title": "File",
      "description": "The .pptx file to translate (omit when source_job_id is provided)"
    },
    "source_job_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Job Id",
      "description": "ID of an existing slideforge job whose pptx_url should be translated (alternative to uploading a file). Useful for translating decks just produced by /v1/generate, /v1/deck, or /v1/deck/from-pdf without downloading and re-uploading the .pptx."
    },
    "target_language": {
      "type": "string",
      "title": "Target Language",
      "description": "ISO 639-1 target language code"
    },
    "source_language": {
      "type": "string",
      "title": "Source Language",
      "description": "ISO 639-1 source language or 'auto' to detect",
      "default": "auto"
    },
    "mode": {
      "type": "string",
      "title": "Mode",
      "description": "Translation model tier, 'draft' or 'pro'. No price effect.",
      "default": "draft"
    },
    "include_notes": {
      "type": "boolean",
      "title": "Include Notes",
      "description": "Translate speaker notes",
      "default": false
    },
    "include_tables": {
      "type": "boolean",
      "title": "Include Tables",
      "description": "Translate table cells",
      "default": true
    },
    "concise_mode": {
      "type": "boolean",
      "title": "Concise Mode",
      "description": "Hint LLM to prefer shorter translations",
      "default": false
    },
    "delete_after_download": {
      "type": "boolean",
      "title": "Delete After Download",
      "description": "Auto-delete source + output on first download",
      "default": false
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Name",
      "description": "Human-readable job name"
    },
    "dry_run": {
      "type": "boolean",
      "title": "Dry Run",
      "description": "Return cost + duration estimate without creating a job.",
      "default": false
    }
  },
  "type": "object",
  "required": [
    "target_language"
  ]
}