{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/media-buy/request-proposals-request.json",
  "title": "Request Proposals Request",
  "description": "Ask a seller to create one or more indicative media-plan proposals from a brief. Each returned proposal_id identifies one immutable draft snapshot; revise or finalize it through refine_proposals, or decline it through decline_proposals.",
  "x-tool-summary": "Ask a seller to create one or more draft media-plan proposals from a campaign brief.",
  "type": "object",
  "x-mutates-state": true,
  "x-operation-family": "request_proposals",
  "x-added-in": "3.2.0",
  "x-legacy-fallback": {
    "tool": "get_products",
    "mode": "orchestrated"
  },
  "properties": {
    "adcp_version": {
      "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/core/version-envelope.json#/properties/adcp_version"
    },
    "adcp_major_version": {
      "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/core/version-envelope.json#/properties/adcp_major_version"
    },
    "context_id": {
      "type": "string",
      "minLength": 1
    },
    "context": {
      "allOf": [
        {
          "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/core/context.json"
        }
      ],
      "x-adcp-schema-uri": "/schemas/core/context.json"
    },
    "governance_context": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096
    },
    "push_notification_config": {
      "allOf": [
        {
          "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/core/push-notification-config.json"
        }
      ],
      "x-adcp-schema-uri": "/schemas/core/push-notification-config.json"
    },
    "idempotency_key": {
      "type": "string",
      "description": "Client-generated key required for retry-safe proposal creation.",
      "minLength": 16,
      "maxLength": 255,
      "pattern": "^[A-Za-z0-9_.:-]{16,255}$"
    },
    "account": {
      "allOf": [
        {
          "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/core/canonical-account-ref.json"
        }
      ],
      "description": "Account scope for proposal terms. A natural-key account is the single brand source and MUST NOT be combined with top-level brand."
    },
    "brand": {
      "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/core/brand-key.json"
    },
    "brief": {
      "type": "string",
      "minLength": 1,
      "description": "Campaign goal, strategy, and requirements that are not represented in structured criteria."
    },
    "criteria": {
      "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/media-buy/product-discovery-criteria.json"
    },
    "opportunity": {
      "allOf": [
        {
          "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/core/opportunity-context.json"
        },
        {
          "properties": {
            "status": {
              "const": "open"
            }
          }
        }
      ],
      "description": "Optional planning-cycle context that the seller associates with every proposal created by this request."
    }
  },
  "required": [
    "idempotency_key",
    "brief"
  ],
  "anyOf": [
    {
      "required": [
        "brand"
      ]
    },
    {
      "properties": {
        "account": {
          "required": [
            "brand",
            "operator"
          ]
        }
      },
      "required": [
        "account"
      ]
    }
  ],
  "allOf": [
    {
      "not": {
        "properties": {
          "account": {
            "required": [
              "brand",
              "operator"
            ]
          }
        },
        "required": [
          "account",
          "brand"
        ]
      }
    }
  ],
  "additionalProperties": false
}
