@adcp/sdk 7.11.0 → 7.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compliance/cache/3.1.0-rc.2/domains/brand/index.yaml +160 -0
- package/compliance/cache/3.1.0-rc.2/domains/brand/scenarios/distributed_brand_resolution.yaml +415 -0
- package/compliance/cache/3.1.0-rc.2/domains/brand/scenarios/single_side_trust_extension.yaml +454 -0
- package/compliance/cache/3.1.0-rc.2/domains/creative/index.yaml +339 -0
- package/compliance/cache/3.1.0-rc.2/domains/creative/scenarios/billing_out_of_band.yaml +153 -0
- package/compliance/cache/3.1.0-rc.2/domains/creative/scenarios/canonical_supported_formats.yaml +212 -0
- package/compliance/cache/3.1.0-rc.2/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +389 -0
- package/compliance/cache/3.1.0-rc.2/domains/creative/scenarios/native_in_feed.yaml +543 -0
- package/compliance/cache/3.1.0-rc.2/domains/governance/index.yaml +682 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/index.yaml +789 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/audience_buy_flow.yaml +380 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/available_actions.yaml +565 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/billing_finality_delivery.yaml +354 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/canonical_formats.yaml +861 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/clicks_buy_flow.yaml +264 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/completed_views_buy_flow.yaml +344 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/create_media_buy_async.yaml +234 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +419 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/creative_reception.yaml +247 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/delivery_reporting.yaml +357 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/dependency_impairment.yaml +633 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +800 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/event_dedup_flow.yaml +399 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +309 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/governance_approved.yaml +214 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/governance_conditions.yaml +199 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/governance_denied.yaml +204 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/governance_denied_recovery.yaml +252 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/invalid_transitions.yaml +289 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/inventory_list_no_match.yaml +148 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/inventory_list_targeting.yaml +276 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/measurement_accountability.yaml +244 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/measurement_terms_rejected.yaml +203 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/package_correlation_legacy_fallback.yaml +113 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/pending_creatives_to_start.yaml +292 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +500 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/performance_buy_flow.yaml +428 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +470 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/product_signal_targeting.yaml +373 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/proposal_finalize.yaml +399 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +264 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/proposal_not_found_errors.yaml +257 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/provenance_audit_observation.yaml +333 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/provenance_enforcement.yaml +517 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +294 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/reach_buy_flow.yaml +823 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +360 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/refine_products.yaml +148 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/vendor_metric_accountability.yaml +293 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +307 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +576 -0
- package/compliance/cache/3.1.0-rc.2/domains/media-buy/state-machine.yaml +442 -0
- package/compliance/cache/3.1.0-rc.2/domains/signals/index.yaml +266 -0
- package/compliance/cache/3.1.0-rc.2/domains/sponsored-intelligence/index.yaml +256 -0
- package/compliance/cache/3.1.0-rc.2/index.json +356 -0
- package/compliance/cache/3.1.0-rc.2/protocols/brand/index.yaml +160 -0
- package/compliance/cache/3.1.0-rc.2/protocols/brand/scenarios/distributed_brand_resolution.yaml +415 -0
- package/compliance/cache/3.1.0-rc.2/protocols/brand/scenarios/single_side_trust_extension.yaml +454 -0
- package/compliance/cache/3.1.0-rc.2/protocols/creative/index.yaml +339 -0
- package/compliance/cache/3.1.0-rc.2/protocols/creative/scenarios/billing_out_of_band.yaml +153 -0
- package/compliance/cache/3.1.0-rc.2/protocols/creative/scenarios/canonical_supported_formats.yaml +212 -0
- package/compliance/cache/3.1.0-rc.2/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +389 -0
- package/compliance/cache/3.1.0-rc.2/protocols/creative/scenarios/native_in_feed.yaml +543 -0
- package/compliance/cache/3.1.0-rc.2/protocols/governance/index.yaml +682 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/index.yaml +789 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/audience_buy_flow.yaml +380 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/available_actions.yaml +565 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/billing_finality_delivery.yaml +354 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/canonical_formats.yaml +861 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/clicks_buy_flow.yaml +264 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +344 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/create_media_buy_async.yaml +234 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +419 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/creative_reception.yaml +247 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/delivery_reporting.yaml +357 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/dependency_impairment.yaml +633 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +800 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/event_dedup_flow.yaml +399 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +309 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/governance_approved.yaml +214 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/governance_conditions.yaml +199 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/governance_denied.yaml +204 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/governance_denied_recovery.yaml +252 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/invalid_transitions.yaml +289 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/inventory_list_no_match.yaml +148 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/inventory_list_targeting.yaml +276 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/measurement_accountability.yaml +244 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +203 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/package_correlation_legacy_fallback.yaml +113 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +292 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +500 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/performance_buy_flow.yaml +428 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +470 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/product_signal_targeting.yaml +373 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/proposal_finalize.yaml +399 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +264 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +257 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/provenance_audit_observation.yaml +333 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/provenance_enforcement.yaml +517 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +294 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/reach_buy_flow.yaml +823 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +360 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/refine_products.yaml +148 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +293 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +307 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +576 -0
- package/compliance/cache/3.1.0-rc.2/protocols/media-buy/state-machine.yaml +442 -0
- package/compliance/cache/3.1.0-rc.2/protocols/signals/index.yaml +266 -0
- package/compliance/cache/3.1.0-rc.2/protocols/sponsored-intelligence/index.yaml +256 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/audience-sync/index.yaml +313 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/brand-rights/index.yaml +350 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/brand-rights/scenarios/governance_denied.yaml +226 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/collection-lists/index.yaml +359 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/content-standards/index.yaml +572 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/creative-ad-server/index.yaml +409 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/creative-generative/generative-seller.yaml +807 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/creative-generative/index.yaml +758 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/creative-template/index.yaml +510 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/governance-aware-seller/index.yaml +143 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +117 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/governance-delivery-monitor/index.yaml +441 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/governance-spend-authority/denied.yaml +221 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/governance-spend-authority/index.yaml +330 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/property-lists/index.yaml +482 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/sales-broadcast-tv/index.yaml +738 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/sales-catalog-driven/index.yaml +840 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/sales-guaranteed/index.yaml +601 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/sales-non-guaranteed/index.yaml +546 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/sales-proposal-mode/index.yaml +586 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/sales-social/index.yaml +919 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/signal-marketplace/index.yaml +424 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/signal-marketplace/scenarios/governance_denied.yaml +210 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/signal-owned/index.yaml +317 -0
- package/compliance/cache/3.1.0-rc.2/specialisms/sponsored-intelligence/index.yaml +59 -0
- package/compliance/cache/3.1.0-rc.2/test-kits/acme-outdoor-live.yaml +78 -0
- package/compliance/cache/3.1.0-rc.2/test-kits/acme-outdoor.yaml +223 -0
- package/compliance/cache/3.1.0-rc.2/test-kits/billing-gate-runner.yaml +115 -0
- package/compliance/cache/3.1.0-rc.2/test-kits/bistro-oranje.yaml +126 -0
- package/compliance/cache/3.1.0-rc.2/test-kits/distributed-brand-runner.yaml +281 -0
- package/compliance/cache/3.1.0-rc.2/test-kits/nova-motors.yaml +262 -0
- package/compliance/cache/3.1.0-rc.2/test-kits/osei-natural.yaml +126 -0
- package/compliance/cache/3.1.0-rc.2/test-kits/parallel-dispatch-runner.yaml +196 -0
- package/compliance/cache/3.1.0-rc.2/test-kits/rate-limit-trip-runner.yaml +172 -0
- package/compliance/cache/3.1.0-rc.2/test-kits/signed-requests-runner.yaml +155 -0
- package/compliance/cache/3.1.0-rc.2/test-kits/single-side-trust-runner.yaml +294 -0
- package/compliance/cache/3.1.0-rc.2/test-kits/substitution-observer-runner.yaml +688 -0
- package/compliance/cache/3.1.0-rc.2/test-kits/summit-foods.yaml +125 -0
- package/compliance/cache/3.1.0-rc.2/test-kits/webhook-receiver-runner.yaml +265 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/001-minimal-plan.json +43 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/002-full-plan.json +217 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/README.md +220 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/canonicalization.json +241 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/keys.json +60 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/001-basic-post.json +30 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/003-es256-post.json +30 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/README.md +211 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/keys.json +61 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
- package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
- package/compliance/cache/3.1.0-rc.2/universal/billing-gate-dispatch.yaml +450 -0
- package/compliance/cache/3.1.0-rc.2/universal/canonical-format-validate-input.yaml +640 -0
- package/compliance/cache/3.1.0-rc.2/universal/capability-discovery.yaml +125 -0
- package/compliance/cache/3.1.0-rc.2/universal/collection-lists-pagination-integrity.yaml +306 -0
- package/compliance/cache/3.1.0-rc.2/universal/comply-controller-mode-gate.yaml +141 -0
- package/compliance/cache/3.1.0-rc.2/universal/content-standards-pagination-integrity.yaml +326 -0
- package/compliance/cache/3.1.0-rc.2/universal/deterministic-testing.yaml +1430 -0
- package/compliance/cache/3.1.0-rc.2/universal/error-compliance-signals.yaml +377 -0
- package/compliance/cache/3.1.0-rc.2/universal/error-compliance.yaml +528 -0
- package/compliance/cache/3.1.0-rc.2/universal/fictional-entities.yaml +307 -0
- package/compliance/cache/3.1.0-rc.2/universal/get-media-buys-pagination-integrity.yaml +160 -0
- package/compliance/cache/3.1.0-rc.2/universal/get-signals-pagination-integrity.yaml +210 -0
- package/compliance/cache/3.1.0-rc.2/universal/idempotency.yaml +861 -0
- package/compliance/cache/3.1.0-rc.2/universal/notification-config-event-scope.yaml +119 -0
- package/compliance/cache/3.1.0-rc.2/universal/notification-config-lifecycle.yaml +337 -0
- package/compliance/cache/3.1.0-rc.2/universal/notification-config-rejections.yaml +107 -0
- package/compliance/cache/3.1.0-rc.2/universal/pagination-integrity-creative-formats.yaml +265 -0
- package/compliance/cache/3.1.0-rc.2/universal/pagination-integrity-list-accounts.yaml +245 -0
- package/compliance/cache/3.1.0-rc.2/universal/pagination-integrity.yaml +263 -0
- package/compliance/cache/3.1.0-rc.2/universal/property-lists-pagination-integrity.yaml +307 -0
- package/compliance/cache/3.1.0-rc.2/universal/read-tool-idempotency.yaml +405 -0
- package/compliance/cache/3.1.0-rc.2/universal/runner-output-contract.yaml +1285 -0
- package/compliance/cache/3.1.0-rc.2/universal/schema-validation-signals.yaml +181 -0
- package/compliance/cache/3.1.0-rc.2/universal/schema-validation.yaml +548 -0
- package/compliance/cache/3.1.0-rc.2/universal/security.yaml +539 -0
- package/compliance/cache/3.1.0-rc.2/universal/signed-requests.yaml +217 -0
- package/compliance/cache/3.1.0-rc.2/universal/stale-response-advisory.yaml +295 -0
- package/compliance/cache/3.1.0-rc.2/universal/storyboard-schema.yaml +2194 -0
- package/compliance/cache/3.1.0-rc.2/universal/v3-envelope-integrity.yaml +117 -0
- package/compliance/cache/3.1.0-rc.2/universal/version-negotiation.yaml +130 -0
- package/compliance/cache/3.1.0-rc.2/universal/webhook-emission.yaml +411 -0
- package/compliance/cache/3.1.0-rc.2/universal/wholesale-feed-bulk-webhooks.yaml +82 -0
- package/compliance/cache/3.1.0-rc.2/universal/wholesale-feed-product-webhooks.yaml +83 -0
- package/compliance/cache/3.1.0-rc.2/universal/wholesale-feed-products.yaml +151 -0
- package/compliance/cache/3.1.0-rc.2/universal/wholesale-feed-signal-webhooks.yaml +83 -0
- package/compliance/cache/3.1.0-rc.2/universal/wholesale-feed-signals.yaml +149 -0
- package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
- package/dist/lib/testing/storyboard/default-invariants.js +23 -0
- package/dist/lib/testing/storyboard/default-invariants.js.map +1 -1
- package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/runner.js +84 -21
- package/dist/lib/testing/storyboard/runner.js.map +1 -1
- package/dist/lib/testing/storyboard/types.d.ts +21 -0
- package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/types.js.map +1 -1
- package/dist/lib/testing/types.d.ts +9 -0
- package/dist/lib/testing/types.d.ts.map +1 -1
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.js +3 -3
- package/package.json +1 -1
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
id: error_compliance_signals
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
title: "Error handling — signals protocol"
|
|
4
|
+
category: error_compliance
|
|
5
|
+
summary: "Validates that signals agents return properly structured AdCP errors with correct codes, recovery hints, and transport bindings."
|
|
6
|
+
track: error_handling
|
|
7
|
+
required_tools:
|
|
8
|
+
- get_signals
|
|
9
|
+
- activate_signal
|
|
10
|
+
|
|
11
|
+
narrative: |
|
|
12
|
+
Every AdCP agent must handle invalid input gracefully. When a buyer sends a
|
|
13
|
+
nonexistent signal ID, an activation request with a missing required field, or
|
|
14
|
+
a protocol version the agent cannot support, the agent should return a structured
|
|
15
|
+
error response — not a stack trace or a generic 500.
|
|
16
|
+
|
|
17
|
+
AdCP defines three compliance levels for error responses:
|
|
18
|
+
- L1: isError flag set on the MCP response
|
|
19
|
+
- L2: JSON text fallback with adcp_error object in content
|
|
20
|
+
- L3: structuredContent.adcp_error binding (full compliance)
|
|
21
|
+
|
|
22
|
+
This storyboard sends intentionally bad input to a signals agent and validates
|
|
23
|
+
that the agent rejects it with the correct error code, recovery classification,
|
|
24
|
+
and transport binding. Agents that use the adcpError() helper from @adcp/client
|
|
25
|
+
get L3 compliance automatically.
|
|
26
|
+
|
|
27
|
+
Context echo is required on error responses — the correlation ID is even more
|
|
28
|
+
important for error diagnosis than for success cases. Every error response must
|
|
29
|
+
include the caller's context object unchanged. This contract applies to
|
|
30
|
+
application-level errors (your tool handler returns an error). MCP transport
|
|
31
|
+
errors (unknown tool, malformed request) are outside the agent's control and do
|
|
32
|
+
not carry AdCP context.
|
|
33
|
+
|
|
34
|
+
agent:
|
|
35
|
+
interaction_model: owned_signals
|
|
36
|
+
capabilities: []
|
|
37
|
+
examples:
|
|
38
|
+
- "Any AdCP signals agent (owned or marketplace)"
|
|
39
|
+
|
|
40
|
+
caller:
|
|
41
|
+
role: buyer_agent
|
|
42
|
+
example: "Compliance test harness"
|
|
43
|
+
|
|
44
|
+
prerequisites:
|
|
45
|
+
description: |
|
|
46
|
+
No special prerequisites. The storyboard sends intentionally invalid requests
|
|
47
|
+
to test error handling.
|
|
48
|
+
test_kit: "test-kits/nova-motors.yaml"
|
|
49
|
+
|
|
50
|
+
phases:
|
|
51
|
+
- id: capability_discovery
|
|
52
|
+
title: "Capability discovery"
|
|
53
|
+
narrative: |
|
|
54
|
+
The buyer calls get_adcp_capabilities to confirm the agent supports the
|
|
55
|
+
signals protocol before testing error handling.
|
|
56
|
+
|
|
57
|
+
steps:
|
|
58
|
+
- id: get_capabilities
|
|
59
|
+
title: "Check agent capabilities"
|
|
60
|
+
narrative: |
|
|
61
|
+
Verify that the agent declares the expected protocol support before
|
|
62
|
+
proceeding with domain-specific operations.
|
|
63
|
+
task: get_adcp_capabilities
|
|
64
|
+
schema_ref: "protocol/get-adcp-capabilities-request.json"
|
|
65
|
+
response_schema_ref: "protocol/get-adcp-capabilities-response.json"
|
|
66
|
+
doc_ref: "/protocol/get_adcp_capabilities"
|
|
67
|
+
comply_scenario: capability_discovery
|
|
68
|
+
stateful: false
|
|
69
|
+
expected: |
|
|
70
|
+
Return capabilities declaring signals in supported_protocols, confirming
|
|
71
|
+
the agent exposes get_signals and activate_signal.
|
|
72
|
+
sample_request:
|
|
73
|
+
context:
|
|
74
|
+
correlation_id: "error_compliance_signals--get_capabilities"
|
|
75
|
+
validations:
|
|
76
|
+
- check: response_schema
|
|
77
|
+
description: "Response matches get-adcp-capabilities-response.json schema"
|
|
78
|
+
- check: field_present
|
|
79
|
+
path: "supported_protocols"
|
|
80
|
+
description: "Agent declares supported protocols"
|
|
81
|
+
|
|
82
|
+
- check: field_present
|
|
83
|
+
path: "context"
|
|
84
|
+
description: "Response echoes back the context object"
|
|
85
|
+
- check: field_value
|
|
86
|
+
path: "context.correlation_id"
|
|
87
|
+
value: "error_compliance_signals--get_capabilities"
|
|
88
|
+
description: "Context correlation_id returned unchanged"
|
|
89
|
+
|
|
90
|
+
- id: error_responses
|
|
91
|
+
title: "Error responses for invalid input"
|
|
92
|
+
narrative: |
|
|
93
|
+
The buyer sends activation requests with intentionally invalid data — a
|
|
94
|
+
nonexistent signal ID and an activation request missing a required field.
|
|
95
|
+
Each request should be rejected with a structured error containing an
|
|
96
|
+
appropriate AdCP error code.
|
|
97
|
+
|
|
98
|
+
steps:
|
|
99
|
+
- id: nonexistent_signal
|
|
100
|
+
title: "Reject nonexistent signal_agent_segment_id"
|
|
101
|
+
narrative: |
|
|
102
|
+
The buyer references a signal_agent_segment_id that does not exist on
|
|
103
|
+
this platform. REFERENCE_NOT_FOUND is the canonical code for a typed
|
|
104
|
+
parameter with no dedicated error code that fails to resolve. INVALID_REQUEST
|
|
105
|
+
is accepted as an alternative. SIGNAL_NOT_FOUND is reserved for unresolvable
|
|
106
|
+
signal_id (data-provider catalog references), not for opaque agent-internal
|
|
107
|
+
segment IDs.
|
|
108
|
+
task: activate_signal
|
|
109
|
+
schema_ref: "signals/activate-signal-request.json"
|
|
110
|
+
response_schema_ref: "signals/activate-signal-response.json"
|
|
111
|
+
doc_ref: "/signals/tasks/activate_signal"
|
|
112
|
+
comply_scenario: error_handling
|
|
113
|
+
expect_error: true
|
|
114
|
+
negative_path: payload_well_formed
|
|
115
|
+
stateful: false
|
|
116
|
+
expected: |
|
|
117
|
+
Reject the request with:
|
|
118
|
+
- code: REFERENCE_NOT_FOUND or INVALID_REQUEST
|
|
119
|
+
- recovery: correctable
|
|
120
|
+
|
|
121
|
+
sample_request:
|
|
122
|
+
account:
|
|
123
|
+
brand:
|
|
124
|
+
domain: "novamotors.example"
|
|
125
|
+
operator: "pinnacle-agency.example"
|
|
126
|
+
signal_agent_segment_id: "nonexistent-signal-id-xyz"
|
|
127
|
+
destinations:
|
|
128
|
+
- type: "agent"
|
|
129
|
+
agent_url: "https://test-dsp.example"
|
|
130
|
+
idempotency_key: "$generate:uuid_v4#error-signals-nonexistent"
|
|
131
|
+
context:
|
|
132
|
+
correlation_id: "error_compliance_signals--nonexistent_signal"
|
|
133
|
+
validations:
|
|
134
|
+
- check: error_code
|
|
135
|
+
allowed_values: ["REFERENCE_NOT_FOUND", "INVALID_REQUEST"]
|
|
136
|
+
description: "Error code is REFERENCE_NOT_FOUND or INVALID_REQUEST for unresolvable signal_agent_segment_id"
|
|
137
|
+
|
|
138
|
+
- check: field_present
|
|
139
|
+
path: "context"
|
|
140
|
+
description: "Response echoes back the context object"
|
|
141
|
+
- check: field_value
|
|
142
|
+
path: "context.correlation_id"
|
|
143
|
+
value: "error_compliance_signals--nonexistent_signal"
|
|
144
|
+
description: "Context correlation_id returned unchanged"
|
|
145
|
+
|
|
146
|
+
- id: missing_required_field
|
|
147
|
+
title: "Reject activation missing signal_agent_segment_id"
|
|
148
|
+
narrative: |
|
|
149
|
+
Send an activate_signal request without the required
|
|
150
|
+
signal_agent_segment_id field. The agent must reject this malformed
|
|
151
|
+
request with a structured error.
|
|
152
|
+
task: activate_signal
|
|
153
|
+
expect_error: true
|
|
154
|
+
negative_path: schema_invalid
|
|
155
|
+
schema_ref: "signals/activate-signal-request.json"
|
|
156
|
+
response_schema_ref: "signals/activate-signal-response.json"
|
|
157
|
+
doc_ref: "/signals/tasks/activate_signal"
|
|
158
|
+
comply_scenario: error_handling
|
|
159
|
+
stateful: false
|
|
160
|
+
# signal_agent_segment_id is required per the schema — this request
|
|
161
|
+
# intentionally omits it to verify the agent's validation response.
|
|
162
|
+
sample_request_skip_schema: true
|
|
163
|
+
expected: |
|
|
164
|
+
Reject the request with:
|
|
165
|
+
- code: INVALID_REQUEST or VALIDATION_ERROR
|
|
166
|
+
- recovery: correctable
|
|
167
|
+
|
|
168
|
+
sample_request:
|
|
169
|
+
account:
|
|
170
|
+
brand:
|
|
171
|
+
domain: "novamotors.example"
|
|
172
|
+
operator: "pinnacle-agency.example"
|
|
173
|
+
destinations:
|
|
174
|
+
- type: "agent"
|
|
175
|
+
agent_url: "https://test-dsp.example"
|
|
176
|
+
idempotency_key: "$generate:uuid_v4#error-signals-missing-field"
|
|
177
|
+
context:
|
|
178
|
+
correlation_id: "error_compliance_signals--missing_required_field"
|
|
179
|
+
validations:
|
|
180
|
+
- check: error_code
|
|
181
|
+
allowed_values: ["INVALID_REQUEST", "VALIDATION_ERROR"]
|
|
182
|
+
description: "Error code is INVALID_REQUEST or VALIDATION_ERROR"
|
|
183
|
+
|
|
184
|
+
- check: field_present
|
|
185
|
+
path: "context"
|
|
186
|
+
description: "Response echoes back the context object"
|
|
187
|
+
- check: field_value
|
|
188
|
+
path: "context.correlation_id"
|
|
189
|
+
value: "error_compliance_signals--missing_required_field"
|
|
190
|
+
description: "Context correlation_id returned unchanged"
|
|
191
|
+
|
|
192
|
+
- id: error_structure
|
|
193
|
+
title: "Error structure compliance"
|
|
194
|
+
narrative: |
|
|
195
|
+
Validates that error responses follow the AdCP error structure with required
|
|
196
|
+
and optional fields.
|
|
197
|
+
|
|
198
|
+
steps:
|
|
199
|
+
- id: validate_error_shape
|
|
200
|
+
title: "Validate error response structure"
|
|
201
|
+
narrative: |
|
|
202
|
+
Trigger an error and inspect the response structure. The adcp_error object
|
|
203
|
+
must have code and message. Optional fields include recovery, retry_after,
|
|
204
|
+
field, and suggestion.
|
|
205
|
+
task: activate_signal
|
|
206
|
+
schema_ref: "signals/activate-signal-request.json"
|
|
207
|
+
response_schema_ref: "signals/activate-signal-response.json"
|
|
208
|
+
doc_ref: "/signals/tasks/activate_signal"
|
|
209
|
+
comply_scenario: error_codes
|
|
210
|
+
expect_error: true
|
|
211
|
+
negative_path: payload_well_formed
|
|
212
|
+
stateful: false
|
|
213
|
+
expected: |
|
|
214
|
+
Error response with:
|
|
215
|
+
- code: a recognized AdCP error code
|
|
216
|
+
- message: human-readable description
|
|
217
|
+
- recovery: correctable, transient, or fatal (optional)
|
|
218
|
+
|
|
219
|
+
sample_request:
|
|
220
|
+
account:
|
|
221
|
+
brand:
|
|
222
|
+
domain: "novamotors.example"
|
|
223
|
+
operator: "pinnacle-agency.example"
|
|
224
|
+
signal_agent_segment_id: "nonexistent-signal-error-structure"
|
|
225
|
+
destinations:
|
|
226
|
+
- type: "agent"
|
|
227
|
+
agent_url: "https://test-dsp.example"
|
|
228
|
+
idempotency_key: "$generate:uuid_v4#error-signals-structure"
|
|
229
|
+
context:
|
|
230
|
+
correlation_id: "error_compliance_signals--validate_error_shape"
|
|
231
|
+
validations:
|
|
232
|
+
- check: error_code
|
|
233
|
+
description: "Response surfaces a typed error code via either adcp_error (envelope) or errors[] (payload)"
|
|
234
|
+
- check: field_present
|
|
235
|
+
path: "context"
|
|
236
|
+
description: "Response echoes back the context object even on errors"
|
|
237
|
+
- check: field_value
|
|
238
|
+
path: "context.correlation_id"
|
|
239
|
+
value: "error_compliance_signals--validate_error_shape"
|
|
240
|
+
description: "Context correlation_id returned unchanged"
|
|
241
|
+
|
|
242
|
+
- id: version_negotiation
|
|
243
|
+
title: "Protocol version validation"
|
|
244
|
+
narrative: |
|
|
245
|
+
Every AdCP request may carry adcp_major_version. Agents validate against their
|
|
246
|
+
declared supported_major_versions (from get_adcp_capabilities) and return
|
|
247
|
+
VERSION_UNSUPPORTED when the buyer asks for a version the agent does not speak.
|
|
248
|
+
When omitted, the agent assumes its highest supported version — so version
|
|
249
|
+
validation only fires when the buyer explicitly declares an unsupported number.
|
|
250
|
+
|
|
251
|
+
steps:
|
|
252
|
+
- id: unsupported_major_version
|
|
253
|
+
title: "Reject unsupported adcp_major_version"
|
|
254
|
+
narrative: |
|
|
255
|
+
Send a get_signals request asserting a future major version the agent
|
|
256
|
+
cannot support. The agent must reject with VERSION_UNSUPPORTED and
|
|
257
|
+
indicate which versions are supported so the buyer can retry.
|
|
258
|
+
task: get_signals
|
|
259
|
+
schema_ref: "signals/get-signals-request.json"
|
|
260
|
+
response_schema_ref: "signals/get-signals-response.json"
|
|
261
|
+
doc_ref: "/signals/tasks/get_signals"
|
|
262
|
+
comply_scenario: error_handling
|
|
263
|
+
expect_error: true
|
|
264
|
+
negative_path: payload_well_formed
|
|
265
|
+
stateful: false
|
|
266
|
+
expected: |
|
|
267
|
+
Reject with:
|
|
268
|
+
- code: VERSION_UNSUPPORTED
|
|
269
|
+
- recovery: fatal
|
|
270
|
+
- message referencing the buyer's requested version and the agent's supported set
|
|
271
|
+
|
|
272
|
+
sample_request:
|
|
273
|
+
adcp_major_version: 99
|
|
274
|
+
signal_spec: "Version negotiation probe"
|
|
275
|
+
account:
|
|
276
|
+
brand:
|
|
277
|
+
domain: "novamotors.example"
|
|
278
|
+
operator: "pinnacle-agency.example"
|
|
279
|
+
|
|
280
|
+
context:
|
|
281
|
+
correlation_id: "error_compliance_signals--unsupported_major_version"
|
|
282
|
+
validations:
|
|
283
|
+
- check: error_code
|
|
284
|
+
allowed_values: ["VERSION_UNSUPPORTED"]
|
|
285
|
+
description: "Error code is VERSION_UNSUPPORTED"
|
|
286
|
+
- check: field_present
|
|
287
|
+
path: "context"
|
|
288
|
+
description: "Response echoes back the context object even on errors"
|
|
289
|
+
- check: field_value
|
|
290
|
+
path: "context.correlation_id"
|
|
291
|
+
value: "error_compliance_signals--unsupported_major_version"
|
|
292
|
+
description: "Context correlation_id returned unchanged"
|
|
293
|
+
|
|
294
|
+
- id: supported_major_version
|
|
295
|
+
title: "Accept supported adcp_major_version"
|
|
296
|
+
narrative: |
|
|
297
|
+
Send a get_signals request with the current major version (3). The agent
|
|
298
|
+
must accept the request normally — version negotiation only rejects
|
|
299
|
+
mismatched versions, not explicit declarations of a supported one.
|
|
300
|
+
task: get_signals
|
|
301
|
+
schema_ref: "signals/get-signals-request.json"
|
|
302
|
+
response_schema_ref: "signals/get-signals-response.json"
|
|
303
|
+
doc_ref: "/signals/tasks/get_signals"
|
|
304
|
+
comply_scenario: signals_flow
|
|
305
|
+
stateful: false
|
|
306
|
+
expected: |
|
|
307
|
+
Return signals normally — adcp_major_version: 3 is a supported version.
|
|
308
|
+
|
|
309
|
+
sample_request:
|
|
310
|
+
adcp_major_version: 3
|
|
311
|
+
signal_spec: "Adults interested in electric vehicles"
|
|
312
|
+
account:
|
|
313
|
+
brand:
|
|
314
|
+
domain: "novamotors.example"
|
|
315
|
+
operator: "pinnacle-agency.example"
|
|
316
|
+
|
|
317
|
+
context:
|
|
318
|
+
correlation_id: "error_compliance_signals--supported_major_version"
|
|
319
|
+
validations:
|
|
320
|
+
- check: response_schema
|
|
321
|
+
description: "Response matches get-signals-response.json schema"
|
|
322
|
+
- check: field_present
|
|
323
|
+
path: "context"
|
|
324
|
+
description: "Response echoes back the context object"
|
|
325
|
+
- check: field_value
|
|
326
|
+
path: "context.correlation_id"
|
|
327
|
+
value: "error_compliance_signals--supported_major_version"
|
|
328
|
+
description: "Context correlation_id returned unchanged"
|
|
329
|
+
|
|
330
|
+
- id: error_transport
|
|
331
|
+
title: "Error transport bindings"
|
|
332
|
+
narrative: |
|
|
333
|
+
Validates that errors are transported correctly via MCP. The isError flag must
|
|
334
|
+
be set, and the error should be available in both JSON text content (L2) and
|
|
335
|
+
structuredContent (L3) bindings.
|
|
336
|
+
|
|
337
|
+
steps:
|
|
338
|
+
- id: validate_transport_binding
|
|
339
|
+
title: "Validate error transport binding"
|
|
340
|
+
narrative: |
|
|
341
|
+
Trigger an error and verify the MCP transport binding: isError flag must
|
|
342
|
+
be set to true, and the error content should include the adcp_error object.
|
|
343
|
+
task: activate_signal
|
|
344
|
+
schema_ref: "signals/activate-signal-request.json"
|
|
345
|
+
response_schema_ref: "signals/activate-signal-response.json"
|
|
346
|
+
doc_ref: "/signals/tasks/activate_signal"
|
|
347
|
+
comply_scenario: error_transport
|
|
348
|
+
expect_error: true
|
|
349
|
+
negative_path: payload_well_formed
|
|
350
|
+
stateful: false
|
|
351
|
+
expected: |
|
|
352
|
+
MCP response with:
|
|
353
|
+
- isError: true
|
|
354
|
+
- content containing adcp_error (L2: JSON text, L3: structuredContent)
|
|
355
|
+
|
|
356
|
+
sample_request:
|
|
357
|
+
account:
|
|
358
|
+
brand:
|
|
359
|
+
domain: "novamotors.example"
|
|
360
|
+
operator: "pinnacle-agency.example"
|
|
361
|
+
signal_agent_segment_id: "nonexistent-signal-transport-test"
|
|
362
|
+
destinations:
|
|
363
|
+
- type: "agent"
|
|
364
|
+
agent_url: "https://test-dsp.example"
|
|
365
|
+
idempotency_key: "$generate:uuid_v4#error-signals-transport"
|
|
366
|
+
context:
|
|
367
|
+
correlation_id: "error_compliance_signals--validate_transport_binding"
|
|
368
|
+
validations:
|
|
369
|
+
- check: error_code
|
|
370
|
+
description: "Transport binding surfaces a typed error code via either adcp_error (envelope) or errors[] (payload)"
|
|
371
|
+
- check: field_present
|
|
372
|
+
path: "context"
|
|
373
|
+
description: "Response echoes back the context object even on errors"
|
|
374
|
+
- check: field_value
|
|
375
|
+
path: "context.correlation_id"
|
|
376
|
+
value: "error_compliance_signals--validate_transport_binding"
|
|
377
|
+
description: "Context correlation_id returned unchanged"
|