Verify a proposal's binding commercial terms against the complete terms the
buyer reviewed.
The comparison surface is read at runtime from media-buy/commercial-terms.json
in the selected AdCP schema bundle. This coupling is deliberate: callers
should pass the seller-served release through adcpVersion, and must ship
that matching bundle. A newly added optional commercial field is therefore
compared automatically when present instead of being omitted by a stale SDK
allowlist. It fails closed unless the buyer's complete reviewed snapshot also
contains that field. Unknown schema keywords or changed non-structural
validation contracts require explicit SDK support, even for equal snapshots.
No version projection, field stripping, or contract-reference resolution is
performed. A 3.1 bundle without commercial_terms returns schema_unavailable.
This Node.js API loads local bundles; importing it does not load a client or
contact the seller. See @adcp/sdk/negotiation/verification.
The proposal's terms_digest is checked before schema validation or field
comparison. A digest failure returns only digest_mismatch, preventing a
tampered payload from being interpreted as a trustworthy field-level diff.
Paths are RFC 6901 JSON Pointers rooted at /commercial_terms.
Verify a proposal's binding commercial terms against the complete terms the buyer reviewed.
The comparison surface is read at runtime from
media-buy/commercial-terms.jsonin the selected AdCP schema bundle. This coupling is deliberate: callers should pass the seller-served release throughadcpVersion, and must ship that matching bundle. A newly added optional commercial field is therefore compared automatically when present instead of being omitted by a stale SDK allowlist. It fails closed unless the buyer's complete reviewed snapshot also contains that field. Unknown schema keywords or changed non-structural validation contracts require explicit SDK support, even for equal snapshots. No version projection, field stripping, or contract-reference resolution is performed. A 3.1 bundle without commercial_terms returns schema_unavailable. This Node.js API loads local bundles; importing it does not load a client or contact the seller. See @adcp/sdk/negotiation/verification.The proposal's
terms_digestis checked before schema validation or field comparison. A digest failure returns onlydigest_mismatch, preventing a tampered payload from being interpreted as a trustworthy field-level diff. Paths are RFC 6901 JSON Pointers rooted at/commercial_terms.