@adcp/sdk API Reference - v14.3.0
    Preparing search index...

    Interface DeclineProposalsRequest

    Terminally decline one or more immutable proposals. Repeating an already-applied decline with a new idempotency key succeeds with outcome declined and preserves the first recorded reason and detail; the proposal cannot later be executed.

    interface DeclineProposalsRequest {
        adcp_version?: string;
        adcp_major_version?: number;
        context_id?: string;
        context?: ContextObject;
        governance_context?: string;
        push_notification_config?: PushNotificationConfig;
        idempotency_key: string;
        declines: {
            proposal_id: string;
            reason: ProposalDeclineReason;
            detail?: string;
        }[];
        opportunity?: {
            opportunity_id: string;
            phase?: "exploratory"
            | "planning"
            | "active_sourcing";
            intent?: "planning" | "test" | "speculative" | "live_rfp";
            planning_horizon?: DateRange;
            response_deadline?: string;
            status?: "closed" | "open";
            close_reason?:
                | "other"
                | "budget_changed"
                | "selected_alternative"
                | "accepted_with_seller"
                | "purchased_elsewhere"
                | "not_pursued"
                | "timing_changed";
            close_detail?: string;
        };
    }
    Index
    adcp_version?: string

    Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1", "3.1-beta"). On a request: the buyer's release pin — the seller validates against its supported_versions and returns VERSION_UNSUPPORTED on cross-major mismatch, or downshifts to the highest supported release within the same major. On a response: the release the seller actually served — clients SHOULD validate the response against that release's schema, not against their pin. Patches are not negotiated; surface them as build_version on capabilities for operational visibility. When omitted, falls back to adcp_major_version (deprecated) or server default. Buyers SHOULD emit both adcp_version and adcp_major_version through 3.x to remain compatible with sellers that only read the legacy field. NORMALIZATION: SDKs that read full-semver values from bundle metadata (e.g. ComplianceIndex.published_version = "3.1.0-beta.1") MUST normalize to release-precision ("3.1-beta.1") before emitting on the wire — meta-field values are NOT valid wire values.

    adcp_major_version?: number

    DEPRECATED in favor of adcp_version (release-precision string). Servers MUST continue to honor this field through 3.x. Removed in 4.0. Original semantics: the AdCP major version the buyer's payloads conform to. Sellers validate against their supported major_versions and return VERSION_UNSUPPORTED if unsupported. When omitted, the seller assumes its highest supported version.

    context_id?: string

    MCP compatibility field: servers ignore this value; A2A uses transport-native Message/Task contextId.

    1

    context?: ContextObject
    governance_context?: string

    1

    4096

    push_notification_config?: PushNotificationConfig
    idempotency_key: string

    Client-generated key required for retry-safe proposal decline.

    16

    255

    ^[A-Za-z0-9_.:-]{16,255}$

    declines: {
        proposal_id: string;
        reason: ProposalDeclineReason;
        detail?: string;
    }[]

    Proposal declines to apply. proposal_id is the semantic uniqueness key and values MUST be unique even when two entries otherwise differ; implementations enforce this rule because JSON Schema uniqueItems only compares whole objects. Results preserve request order.

    Type Declaration

    • proposal_id: string

      Immutable proposal ID returned by request_proposals or refine_proposals.

    • reason: ProposalDeclineReason
    • Optionaldetail?: string

      Optional short, non-identifying explanation. MUST NOT identify a competitor or disclose sensitive campaign information.

    25

    opportunity?: {
        opportunity_id: string;
        phase?: "exploratory" | "planning" | "active_sourcing";
        intent?: "planning" | "test" | "speculative" | "live_rfp";
        planning_horizon?: DateRange;
        response_deadline?: string;
        status?: "closed" | "open";
        close_reason?:
            | "other"
            | "budget_changed"
            | "selected_alternative"
            | "accepted_with_seller"
            | "purchased_elsewhere"
            | "not_pursued"
            | "timing_changed";
        close_detail?: string;
    }

    Type Declaration

    • opportunity_id: string

      Opaque buyer-assigned identifier for this planning cycle, scoped to the seller and account.

    • Optionalphase?: "exploratory" | "planning" | "active_sourcing"

      Current stage of buyer planning.

    • Optionalintent?: "planning" | "test" | "speculative" | "live_rfp"

      How seriously the buyer is evaluating supply in this cycle.

    • Optionalplanning_horizon?: DateRange
    • Optionalresponse_deadline?: string

      Deadline by which the buyer needs a seller response.

    • Optionalstatus?: "closed" | "open"

      Whether the planning cycle remains open. On calls after initial creation, omission means no status update and MUST NOT reopen or close the opportunity implicitly, except that successful create_media_buy proposal execution explicitly infers accepted closure.

    • Optionalclose_reason?:
          | "other"
          | "budget_changed"
          | "selected_alternative"
          | "accepted_with_seller"
          | "purchased_elsewhere"
          | "not_pursued"
          | "timing_changed"

      Why the opportunity closed. Required when status is closed.

    • Optionalclose_detail?: string

      Optional non-sensitive context about closure. MUST NOT identify a competitor or disclose confidential clearing terms.