{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/zvid-io/json-schema/zvid-io-creative-plan-request-schema.json",
  "title": "CreativePlanRequest",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/zvid-io-openapi.yaml#/components/schemas/CreativePlanRequest",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "brief"
  ],
  "properties": {
    "brief": {
      "type": "string",
      "minLength": 3,
      "maxLength": 4000,
      "description": "What the video should communicate, for whom, and the desired outcome."
    },
    "variationMode": {
      "type": "string",
      "enum": [
        "consistent",
        "fresh",
        "explore"
      ],
      "default": "fresh",
      "description": "Stable repeatable output, one new direction, or 2-5 materially different directions."
    },
    "variationSeed": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 128
        },
        {
          "type": "integer"
        }
      ],
      "description": "Optional reproducible creative seed."
    },
    "exploreCount": {
      "type": "integer",
      "minimum": 2,
      "maximum": 5,
      "default": 3
    },
    "aspectRatio": {
      "type": "string",
      "enum": [
        "16:9",
        "9:16",
        "1:1",
        "4:5",
        "custom"
      ],
      "default": "16:9"
    },
    "duration": {
      "type": "number",
      "minimum": 0.1,
      "maximum": 86400,
      "default": 15,
      "description": "Desired final duration. The response caps it to the caller's plan."
    },
    "style": {
      "type": "string",
      "maxLength": 100,
      "default": "auto",
      "description": "Built-in style-pack id or auto."
    },
    "motionIntensity": {
      "type": "string",
      "enum": [
        "restrained",
        "balanced",
        "energetic"
      ]
    },
    "preferredMedia": {
      "type": "string",
      "enum": [
        "image",
        "video",
        "mixed"
      ],
      "default": "mixed"
    },
    "recentAssetSlugs": {
      "type": "array",
      "maxItems": 20,
      "description": "Recently used creative-library slugs to exclude from fresh or explore work.",
      "items": {
        "type": "string",
        "maxLength": 255
      }
    },
    "brand": {
      "$ref": "#/$defs/CreativeBrandKit"
    }
  },
  "$defs": {
    "CreativeBrandKit": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 200
        },
        "primaryColor": {
          "type": "string",
          "pattern": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"
        },
        "secondaryColor": {
          "type": "string",
          "pattern": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"
        },
        "accentColor": {
          "type": "string",
          "pattern": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"
        },
        "headlineFont": {
          "type": "string",
          "maxLength": 100
        },
        "bodyFont": {
          "type": "string",
          "maxLength": 100
        },
        "logoUrl": {
          "type": "string",
          "format": "uri",
          "maxLength": 2048
        }
      }
    }
  }
}