{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://adcontextprotocol.org/schemas/3.2.0-rc.6/error-details/action-not-allowed.json",
  "title": "Action Not Allowed Details",
  "description": "Details payload for ACTION_NOT_ALLOWED errors. Lets buyer SDKs offer a structured recovery path without a separate get_media_buys round-trip. Producer-authored extension values remain buyer-visible and MUST NOT contain vendor identifiers, internal object names, internal IDs, stack traces, or other producer-private implementation details.",
  "type": "object",
  "properties": {
    "attempted_action": {
      "$ref": "https://adcontextprotocol.org/schemas/3.2.0-rc.6/core/media-buy-available-action-id.json",
      "description": "The action the request mapped to, per the normative action-to-field mapping in update_media_buy task-reference."
    },
    "reason": {
      "$ref": "https://adcontextprotocol.org/schemas/3.2.0-rc.6/enums/action-not-allowed-reason.json",
      "description": "Why the action was rejected. Buyer SDKs branch on this to choose a recovery path."
    },
    "currently_available_actions": {
      "type": "array",
      "description": "Echo of the buy's resolved `available_actions[]` at rejection time. Buyer SDKs render this to the caller as the recovery option set.",
      "items": {
        "$ref": "https://adcontextprotocol.org/schemas/3.2.0-rc.6/core/media-buy-available-action.json"
      },
      "uniqueItems": true
    },
    "decline_reason": {
      "$ref": "https://adcontextprotocol.org/schemas/3.2.0-rc.6/enums/seller-policy-decline-reason.json",
      "description": "Coarse seller-policy dimension behind a buy-specific denial. Sellers SHOULD populate this for `reason: not_supported_on_buy` when they have a structured reason and disclosure does not expose private thresholds or enforcement controls. It SHOULD be omitted for structural reasons such as `wrong_status`, `not_supported_on_product`, `mode_mismatch`, and `condition_unresolved`. When present, it MUST be consistent with the enclosing error.recovery classification."
    }
  },
  "required": [
    "attempted_action",
    "reason"
  ],
  "additionalProperties": true
}
