{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "/schemas/3.1.0-rc.4/creative/list-creative-formats-request.json",
  "title": "List Creative Formats Request (Creative Agent)",
  "description": "Request parameters for discovering creative formats provided by this creative agent",
  "type": "object",
  "allOf": [
    {
      "$ref": "/schemas/3.1.0-rc.4/core/version-envelope.json"
    },
    {
      "if": {
        "properties": {
          "include_pricing": {
            "const": true
          }
        },
        "required": [
          "include_pricing"
        ]
      },
      "then": {
        "required": [
          "account"
        ]
      }
    }
  ],
  "properties": {
    "format_ids": {
      "type": "array",
      "description": "Return only these specific format IDs",
      "items": {
        "$ref": "/schemas/3.1.0-rc.4/core/format-id.json"
      },
      "minItems": 1
    },
    "type": {
      "type": "string",
      "description": "Filter by format type (technical categories with distinct requirements)",
      "enum": [
        "audio",
        "video",
        "display",
        "dooh"
      ]
    },
    "asset_types": {
      "type": "array",
      "description": "Filter to formats that include these asset types. For third-party tags, search for 'html' or 'javascript'. E.g., ['image', 'text'] returns formats with images and text, ['javascript'] returns formats accepting JavaScript tags.",
      "items": {
        "type": "string",
        "enum": [
          "image",
          "video",
          "audio",
          "text",
          "html",
          "javascript",
          "url"
        ]
      },
      "minItems": 1
    },
    "max_width": {
      "type": "integer",
      "description": "Maximum width in pixels (inclusive). Returns formats with width <= this value. Omit for responsive/fluid formats."
    },
    "max_height": {
      "type": "integer",
      "description": "Maximum height in pixels (inclusive). Returns formats with height <= this value. Omit for responsive/fluid formats."
    },
    "min_width": {
      "type": "integer",
      "description": "Minimum width in pixels (inclusive). Returns formats with width >= this value."
    },
    "min_height": {
      "type": "integer",
      "description": "Minimum height in pixels (inclusive). Returns formats with height >= this value."
    },
    "is_responsive": {
      "type": "boolean",
      "description": "Filter for responsive formats that adapt to container size. When true, returns formats without fixed dimensions."
    },
    "name_search": {
      "type": "string",
      "description": "Search for formats by name (case-insensitive partial match)"
    },
    "wcag_level": {
      "$ref": "/schemas/3.1.0-rc.4/enums/wcag-level.json",
      "description": "Filter to formats that meet at least this WCAG conformance level (A < AA < AAA)"
    },
    "disclosure_positions": {
      "type": "array",
      "description": "Filter to formats that support all of these disclosure positions. When a format has disclosure_capabilities, match against those positions. Otherwise fall back to supported_disclosure_positions. Use to find formats compatible with a brief's compliance requirements.",
      "items": {
        "$ref": "/schemas/3.1.0-rc.4/enums/disclosure-position.json"
      },
      "minItems": 1,
      "uniqueItems": true
    },
    "disclosure_persistence": {
      "type": "array",
      "description": "Filter to formats where each requested persistence mode is supported by at least one position in disclosure_capabilities. Different positions may satisfy different modes. Use to find formats compatible with jurisdiction-specific persistence requirements (e.g., continuous for EU AI Act).",
      "items": {
        "$ref": "/schemas/3.1.0-rc.4/enums/disclosure-persistence.json"
      },
      "minItems": 1,
      "uniqueItems": true
    },
    "output_format_ids": {
      "type": "array",
      "description": "Filter to formats whose output_format_ids includes any of these format IDs. Returns formats that can produce these outputs — inspect each result's input_format_ids to see what inputs they accept.",
      "items": {
        "$ref": "/schemas/3.1.0-rc.4/core/format-id.json"
      },
      "minItems": 1
    },
    "input_format_ids": {
      "type": "array",
      "description": "Filter to formats whose input_format_ids includes any of these format IDs. Returns formats that accept these creatives as input — inspect each result's output_format_ids to see what they can produce.",
      "items": {
        "$ref": "/schemas/3.1.0-rc.4/core/format-id.json"
      },
      "minItems": 1
    },
    "include_pricing": {
      "type": "boolean",
      "default": false,
      "description": "Include pricing_options on each format. Used by transformation and generation agents that charge per format or per unit of work. Requires account. When false or omitted, pricing is not computed."
    },
    "account": {
      "$ref": "/schemas/3.1.0-rc.4/core/account-ref.json",
      "description": "Account reference for pricing. When provided with include_pricing, the agent returns pricing_options from this account's rate card on each format."
    },
    "pagination": {
      "$ref": "/schemas/3.1.0-rc.4/core/pagination-request.json"
    },
    "context": {
      "$ref": "/schemas/3.1.0-rc.4/core/context.json"
    },
    "ext": {
      "$ref": "/schemas/3.1.0-rc.4/core/ext.json"
    }
  },
  "additionalProperties": true
}
