@adcp/sdk 8.1.0-beta.6 → 8.1.0-beta.8
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/README.md +12 -0
- package/dist/lib/conformance/oracle.d.ts.map +1 -1
- package/dist/lib/conformance/oracle.js +8 -1
- package/dist/lib/conformance/oracle.js.map +1 -1
- package/dist/lib/conformance/schemaArbitrary.js +135 -9
- package/dist/lib/conformance/schemaArbitrary.js.map +1 -1
- package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
- package/dist/lib/server/create-adcp-server.d.ts +5 -0
- package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
- package/dist/lib/server/create-adcp-server.js +41 -3
- package/dist/lib/server/create-adcp-server.js.map +1 -1
- package/dist/lib/server/decisioning/capabilities.d.ts +8 -0
- package/dist/lib/server/decisioning/capabilities.d.ts.map +1 -1
- package/dist/lib/server/decisioning/proposal/dispatch.d.ts.map +1 -1
- package/dist/lib/server/decisioning/proposal/dispatch.js +2 -0
- package/dist/lib/server/decisioning/proposal/dispatch.js.map +1 -1
- package/dist/lib/server/decisioning/runtime/from-platform.d.ts.map +1 -1
- package/dist/lib/server/decisioning/runtime/from-platform.js +14 -1
- package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
- package/dist/lib/server/responses.d.ts +1 -1
- package/dist/lib/server/responses.d.ts.map +1 -1
- package/dist/lib/server/responses.js +5 -2
- package/dist/lib/server/responses.js.map +1 -1
- package/dist/lib/signing/types.d.ts +6 -0
- package/dist/lib/signing/types.d.ts.map +1 -1
- package/dist/lib/signing/types.js.map +1 -1
- package/dist/lib/signing/verifier.d.ts.map +1 -1
- package/dist/lib/signing/verifier.js +33 -4
- package/dist/lib/signing/verifier.js.map +1 -1
- package/dist/lib/testing/storyboard/compliance.d.ts +1 -0
- package/dist/lib/testing/storyboard/compliance.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/compliance.js +8 -2
- package/dist/lib/testing/storyboard/compliance.js.map +1 -1
- package/dist/lib/testing/storyboard/index.d.ts +1 -1
- package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/index.js +3 -2
- package/dist/lib/testing/storyboard/index.js.map +1 -1
- package/dist/lib/testing/storyboard/probes.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/probes.js +3 -0
- package/dist/lib/testing/storyboard/probes.js.map +1 -1
- package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/runner.js +294 -29
- package/dist/lib/testing/storyboard/runner.js.map +1 -1
- package/dist/lib/testing/storyboard/types.d.ts +59 -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/storyboard/validations.d.ts +4 -3
- package/dist/lib/testing/storyboard/validations.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/validations.js +26 -2
- package/dist/lib/testing/storyboard/validations.js.map +1 -1
- package/dist/lib/types/activate-signal.d.ts +647 -0
- package/dist/lib/types/build-creative.d.ts +2105 -0
- package/dist/lib/types/calibrate-content.d.ts +675 -0
- package/dist/lib/types/check-governance.d.ts +619 -0
- package/dist/lib/types/comply-test-controller.d.ts +8428 -0
- package/dist/lib/types/core.generated.d.ts +180 -252
- package/dist/lib/types/core.generated.d.ts.map +1 -1
- package/dist/lib/types/core.generated.js +1 -1
- package/dist/lib/types/create-collection-list.d.ts +693 -0
- package/dist/lib/types/create-content-standards.d.ts +830 -0
- package/dist/lib/types/create-media-buy.d.ts +3374 -0
- package/dist/lib/types/create-property-list.d.ts +836 -0
- package/dist/lib/types/delete-collection-list.d.ts +497 -0
- package/dist/lib/types/delete-property-list.d.ts +497 -0
- package/dist/lib/types/get-account-financials.d.ts +624 -0
- package/dist/lib/types/get-adcp-capabilities.d.ts +2863 -0
- package/dist/lib/types/get-collection-list.d.ts +763 -0
- package/dist/lib/types/get-content-standards.d.ts +919 -0
- package/dist/lib/types/get-creative-delivery.d.ts +2219 -0
- package/dist/lib/types/get-creative-features.d.ts +1736 -0
- package/dist/lib/types/get-media-buy-artifacts.d.ts +864 -0
- package/dist/lib/types/get-media-buys.d.ts +1670 -0
- package/dist/lib/types/get-plan-audit-logs.d.ts +455 -0
- package/dist/lib/types/get-products.d.ts +4935 -0
- package/dist/lib/types/get-property-list.d.ts +874 -0
- package/dist/lib/types/get-signals.d.ts +986 -0
- package/dist/lib/types/list-accounts.d.ts +851 -0
- package/dist/lib/types/list-content-standards.d.ts +975 -0
- package/dist/lib/types/list-creative-formats.d.ts +3132 -0
- package/dist/lib/types/list-creatives.d.ts +2390 -0
- package/dist/lib/types/list-property-lists.d.ts +855 -0
- package/dist/lib/types/log-event.d.ts +373 -0
- package/dist/lib/types/per-tool-index.json +391 -0
- package/dist/lib/types/preview-creative.d.ts +1981 -0
- package/dist/lib/types/provide-performance-feedback.d.ts +218 -0
- package/dist/lib/types/report-plan-outcome.d.ts +433 -0
- package/dist/lib/types/report-usage.d.ts +579 -0
- package/dist/lib/types/schemas.generated.d.ts +127279 -125067
- package/dist/lib/types/schemas.generated.d.ts.map +1 -1
- package/dist/lib/types/schemas.generated.js +221 -293
- package/dist/lib/types/schemas.generated.js.map +1 -1
- package/dist/lib/types/si-get-offering.d.ts +259 -0
- package/dist/lib/types/si-initiate-session.d.ts +372 -0
- package/dist/lib/types/si-send-message.d.ts +300 -0
- package/dist/lib/types/si-terminate-session.d.ts +213 -0
- package/dist/lib/types/sync-accounts.d.ts +856 -0
- package/dist/lib/types/sync-audiences.d.ts +707 -0
- package/dist/lib/types/sync-catalogs.d.ts +766 -0
- package/dist/lib/types/sync-creatives.d.ts +2134 -0
- package/dist/lib/types/sync-event-sources.d.ts +665 -0
- package/dist/lib/types/sync-governance.d.ts +558 -0
- package/dist/lib/types/sync-plans.d.ts +979 -0
- package/dist/lib/types/update-collection-list.d.ts +697 -0
- package/dist/lib/types/update-content-standards.d.ts +847 -0
- package/dist/lib/types/update-media-buy.d.ts +3047 -0
- package/dist/lib/types/update-property-list.d.ts +840 -0
- package/dist/lib/types/validate-content-delivery.d.ts +722 -0
- package/dist/lib/types/validate-input.d.ts +1683 -0
- package/dist/lib/utils/response-schemas.js +1 -1
- package/dist/lib/utils/response-schemas.js.map +1 -1
- package/dist/lib/utils/response-unwrapper.d.ts.map +1 -1
- package/dist/lib/utils/response-unwrapper.js +18 -3
- package/dist/lib/utils/response-unwrapper.js.map +1 -1
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.js +3 -3
- package/examples/error-compliant-server.ts +1 -1
- package/examples/hello_seller_adapter_guaranteed.ts +8 -3
- package/examples/hello_seller_adapter_multi_tenant.ts +27 -23
- package/examples/hello_seller_adapter_non_guaranteed.ts +7 -3
- package/examples/hello_seller_adapter_proposal_mode.ts +22 -6
- package/examples/hello_signals_adapter_marketplace.ts +34 -3
- package/package.json +9 -2
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
// AUTO-GENERATED — DO NOT EDIT.
|
|
2
|
+
// Per-tool .d.ts slice for `provide_performance_feedback`. Built from the published
|
|
3
|
+
// `tools.generated.d.ts` + `core.generated.d.ts` + `enums.generated.d.ts`
|
|
4
|
+
// by `scripts/generate-per-tool-types.ts`.
|
|
5
|
+
//
|
|
6
|
+
// Self-contained: imports nothing from the broader SDK. Adopters who
|
|
7
|
+
// import only this slice pay a fraction of the tsc cost of pulling in
|
|
8
|
+
// `@adcp/sdk` root — useful when strict + skipLibCheck:false adopters
|
|
9
|
+
// hit memory pressure on the full surface.
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Request payload for provide_performance_feedback task
|
|
13
|
+
*/
|
|
14
|
+
export interface ProvidePerformanceFeedbackRequest {
|
|
15
|
+
/**
|
|
16
|
+
* 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.
|
|
17
|
+
*/
|
|
18
|
+
adcp_version?: string;
|
|
19
|
+
/**
|
|
20
|
+
* 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.
|
|
21
|
+
*/
|
|
22
|
+
adcp_major_version?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Seller's media buy identifier
|
|
25
|
+
* @minLength 1
|
|
26
|
+
*/
|
|
27
|
+
media_buy_id: string;
|
|
28
|
+
/**
|
|
29
|
+
* Client-generated unique key for this request. Prevents duplicate feedback submissions on retries. MUST be unique per (seller, request) pair to prevent cross-seller correlation. Use a fresh UUID v4 for each request.
|
|
30
|
+
* @minLength 16
|
|
31
|
+
* @maxLength 255
|
|
32
|
+
* @pattern ^[A-Za-z0-9_.:-]{16,255}$
|
|
33
|
+
*/
|
|
34
|
+
idempotency_key: string;
|
|
35
|
+
measurement_period: DatetimeRange;
|
|
36
|
+
/**
|
|
37
|
+
* Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)
|
|
38
|
+
* @minimum 0
|
|
39
|
+
*/
|
|
40
|
+
performance_index: number;
|
|
41
|
+
/**
|
|
42
|
+
* Specific package within the media buy (if feedback is package-specific)
|
|
43
|
+
* @minLength 1
|
|
44
|
+
*/
|
|
45
|
+
package_id?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Specific creative asset (if feedback is creative-specific)
|
|
48
|
+
* @minLength 1
|
|
49
|
+
*/
|
|
50
|
+
creative_id?: string;
|
|
51
|
+
metric_type?: MetricTypeDeprecated;
|
|
52
|
+
feedback_source?: FeedbackSource;
|
|
53
|
+
context?: ContextObject;
|
|
54
|
+
ext?: ExtensionObject;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Response payload for provide_performance_feedback task. Returns either success confirmation OR error information, never both.
|
|
59
|
+
*/
|
|
60
|
+
export type ProvidePerformanceFeedbackResponse = {
|
|
61
|
+
/**
|
|
62
|
+
* Session/conversation identifier for tracking related operations across multiple task invocations. Managed by the protocol layer to maintain conversational context. Distinct from `context` (per-request opaque echo, see below).
|
|
63
|
+
*/
|
|
64
|
+
context_id?: string;
|
|
65
|
+
context?: ContextObject;
|
|
66
|
+
/**
|
|
67
|
+
* Unique identifier for tracking asynchronous operations. Present when a task requires extended processing time. Used to query task status and retrieve results when complete.
|
|
68
|
+
*/
|
|
69
|
+
task_id?: string;
|
|
70
|
+
status: TaskStatus;
|
|
71
|
+
/**
|
|
72
|
+
* Human-readable summary of the task result. Provides natural language explanation of what happened, suitable for display to end users or for AI agent comprehension. Generated by the protocol layer based on the task response.
|
|
73
|
+
*/
|
|
74
|
+
message?: string;
|
|
75
|
+
/**
|
|
76
|
+
* ISO 8601 timestamp when the response was generated. Useful for debugging, logging, cache validation, and tracking async operation progress.
|
|
77
|
+
*/
|
|
78
|
+
timestamp?: string;
|
|
79
|
+
/**
|
|
80
|
+
* Set to true when this response was returned from the idempotency cache rather than from a fresh execution. Set to false (or omitted) when the request was executed fresh. Buyers use this to distinguish cached replays from new executions — matters for billing reconciliation, audit logs, state-machine routing (cached state-tracking fields are historical snapshots, not current state — re-read via the resource's read endpoint), and any downstream system that assumes exactly-once event semantics. From 3.1 onward, `replayed` MAY appear on responses to any request that resolved via the idempotency cache, including read tools — universal `idempotency_key` (see security.mdx §Idempotency) means the cache holds read responses too.
|
|
81
|
+
*/
|
|
82
|
+
replayed?: boolean;
|
|
83
|
+
adcp_error?: Error;
|
|
84
|
+
push_notification_config?: PushNotificationConfig;
|
|
85
|
+
/**
|
|
86
|
+
* Governance context token issued by the account's governance agent during check_governance. Buyers attach it to governed purchase requests (media buys, rights acquisitions, signal activations, creative services); sellers persist it and include it on all subsequent governance calls for that action's lifecycle. An account binds to one governance agent (see sync_governance); governance is phased across `purchase` / `modification` / `delivery`, not partitioned across specialist agents, so the envelope carries a single token for the full lifecycle.
|
|
87
|
+
*
|
|
88
|
+
* Value format: governance agents MUST emit a compact JWS per the AdCP JWS profile (see Security — Signed Governance Context). Sellers MAY verify; sellers that do not verify MUST persist and forward the token unchanged. In 3.1 all sellers MUST verify. Non-JWS values from pre-3.0 governance agents are deprecated.
|
|
89
|
+
*
|
|
90
|
+
* This is the primary correlation key for audit and reporting across the governance lifecycle.
|
|
91
|
+
*/
|
|
92
|
+
governance_context?: string;
|
|
93
|
+
/**
|
|
94
|
+
* Conceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json). `payload` is a documentary construct — it is NOT a required wire field, and its on-the-wire shape depends on transport (see Transport serialization below). Task response schemas declare body fields without wrapping them in a `payload` object; the wire representation places those body fields per transport convention. On MCP the body fields appear as siblings of envelope fields at the root of the tool response; on A2A they appear inside `task.artifacts[0].parts[].DataPart`; on REST they appear at the root of the JSON body.
|
|
95
|
+
*/
|
|
96
|
+
payload?: {};
|
|
97
|
+
/**
|
|
98
|
+
* 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.
|
|
99
|
+
*/
|
|
100
|
+
adcp_version?: string;
|
|
101
|
+
/**
|
|
102
|
+
* 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.
|
|
103
|
+
*/
|
|
104
|
+
adcp_major_version?: number;
|
|
105
|
+
} & (ProvidePerformanceFeedbackSuccess | ProvidePerformanceFeedbackError);
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Success response - feedback received and processed
|
|
109
|
+
*/
|
|
110
|
+
export interface ProvidePerformanceFeedbackSuccess {
|
|
111
|
+
/**
|
|
112
|
+
* Whether the performance feedback was successfully received
|
|
113
|
+
*/
|
|
114
|
+
success: true;
|
|
115
|
+
/**
|
|
116
|
+
* When true, this response contains simulated data from sandbox mode.
|
|
117
|
+
*/
|
|
118
|
+
sandbox?: boolean;
|
|
119
|
+
context?: ContextObject;
|
|
120
|
+
ext?: ExtensionObject;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Error response - feedback rejected or could not be processed
|
|
125
|
+
*/
|
|
126
|
+
export interface ProvidePerformanceFeedbackError {
|
|
127
|
+
/**
|
|
128
|
+
* Array of errors explaining why feedback was rejected (e.g., invalid measurement period, missing campaign data)
|
|
129
|
+
*/
|
|
130
|
+
errors: Error[];
|
|
131
|
+
context?: ContextObject;
|
|
132
|
+
ext?: ExtensionObject;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Legacy authentication schemes for the webhook auth block. Bearer: token sent in Authorization header. HMAC-SHA256: legacy shared-secret signing. Both are deprecated; new integrations SHOULD omit the authentication block and use the RFC 9421 webhook signing profile (applicable on schemas where authentication is optional). Removed in AdCP 4.0.
|
|
137
|
+
*/
|
|
138
|
+
export type AuthenticationScheme = 'Bearer' | 'HMAC-SHA256';
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
142
|
+
*/
|
|
143
|
+
export interface ContextObject {
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Time period for performance measurement
|
|
148
|
+
*/
|
|
149
|
+
export interface DatetimeRange {
|
|
150
|
+
/**
|
|
151
|
+
* Start timestamp (inclusive), ISO 8601
|
|
152
|
+
* @format date-time
|
|
153
|
+
*/
|
|
154
|
+
start: string;
|
|
155
|
+
/**
|
|
156
|
+
* End timestamp (inclusive), ISO 8601
|
|
157
|
+
* @format date-time
|
|
158
|
+
*/
|
|
159
|
+
end: string;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.
|
|
164
|
+
*/
|
|
165
|
+
export interface ExtensionObject {
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Source of the performance data
|
|
170
|
+
*/
|
|
171
|
+
export type FeedbackSource = 'buyer_attribution' | 'third_party_measurement' | 'platform_analytics' | 'verification_partner';
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* The business metric being measured
|
|
175
|
+
*/
|
|
176
|
+
export type MetricTypeDeprecated = 'overall_performance' | 'conversion_rate' | 'brand_lift' | 'click_through_rate' | 'completion_rate' | 'viewability' | 'brand_safety' | 'cost_efficiency';
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Push notification configuration for async task updates (A2A and REST protocols). Echoed from the request to confirm webhook settings. Specifies URL, authentication scheme (Bearer or HMAC-SHA256), and credentials. MCP uses progress notifications instead of webhooks.
|
|
180
|
+
*/
|
|
181
|
+
export interface PushNotificationConfig {
|
|
182
|
+
/**
|
|
183
|
+
* Webhook endpoint URL for task status notifications. The wire contract is unconstrained beyond `format: "uri"` — in particular, publishers SHOULD NOT enforce a destination-port allowlist by default, since buyers legitimately host receivers on non-standard TLS ports (`:9443`, `:4443`, path-routed multi-tenant gateways). The SSRF guard the protocol relies on is the IP-range check + DNS-rebinding-resistant connect pin defined in [Webhook URL validation (SSRF)](/docs/building/by-layer/L1/security#webhook-url-validation-ssrf), not port filtering. Operators who want a hardened destination-port allowlist as defense-in-depth (e.g., locked-down enterprise egress) opt in explicitly — see [Destination port: permissive by default](/docs/building/by-layer/L1/security#destination-port-permissive-by-default).
|
|
184
|
+
*/
|
|
185
|
+
url: string;
|
|
186
|
+
/**
|
|
187
|
+
* Buyer-supplied correlation identifier for the operation that will produce webhooks against this registration. The seller MUST echo this value verbatim into every webhook payload's `operation_id` field (see [`mcp-webhook-payload.json`](/schemas/core/mcp-webhook-payload.json) and [Webhooks — Operation IDs](/docs/building/by-layer/L3/webhooks#operation-ids-and-url-templates)). Buyers SHOULD generate a unique value per task invocation (UUID recommended). This field is the canonical registration channel for `operation_id`; buyers MAY additionally embed the same value in the URL path or query as a routing aid for their own HTTP server, but the URL is opaque to the seller and the wire-level source of truth is this field. Sellers MUST NOT parse the URL to recover `operation_id`. Sellers that receive a webhook registration without `operation_id` MAY reject the task with `INVALID_REQUEST`.
|
|
188
|
+
* @minLength 1
|
|
189
|
+
* @maxLength 255
|
|
190
|
+
* @pattern ^[A-Za-z0-9_.:-]{1,255}$
|
|
191
|
+
*/
|
|
192
|
+
operation_id?: string;
|
|
193
|
+
/**
|
|
194
|
+
* Optional client-provided token for webhook validation. The seller MUST echo this value verbatim in every webhook payload's `token` field (see [`mcp-webhook-payload.json`](/schemas/core/mcp-webhook-payload.json) for the receiver-side validation obligation). Length bounds give receivers a defensive range check on the echoed value; senders SHOULD generate tokens with at least 128 bits of entropy (≥22 base64url characters). This is a complementary authenticity mechanism that can layer on top of the RFC 9421 webhook signature — unlike the `authentication` block below, it is not on the 4.0 removal track. Receivers that registered both a signing key (RFC 9421) and a `token` MUST NOT treat a valid token echo as authorization to skip signature verification; both checks remain independent obligations.
|
|
195
|
+
* @minLength 16
|
|
196
|
+
* @maxLength 4096
|
|
197
|
+
*/
|
|
198
|
+
token?: string;
|
|
199
|
+
/**
|
|
200
|
+
* Legacy authentication configuration (A2A-compatible). Opts the seller into Bearer or HMAC-SHA256 signing instead of the default RFC 9421 webhook profile. Deprecated; removed in AdCP 4.0. **Precedence is a switch, not a fallback:** presence of this block selects the legacy scheme; absence selects 9421. A seller MUST NOT sign the same webhook both ways, and a buyer MUST NOT attempt 'try 9421 first, fall back to HMAC' verification — signature mode is determined solely by whether this block was present at registration time. The seller's baseline 9421 webhook-signing key published at its brand.json `agents[]` `jwks_uri` does not override this selector; it is always discoverable but only used when `authentication` is omitted. See docs/building/implementation/security.mdx#webhook-callbacks for the full precedence and downgrade-resistance rules (including the `webhook_mode_mismatch` rejection a buyer MUST apply when a received webhook's signing mode does not match the registered mode).
|
|
201
|
+
*/
|
|
202
|
+
authentication?: {
|
|
203
|
+
/**
|
|
204
|
+
* Array of authentication schemes. Supported: ['Bearer'] for simple token auth, ['HMAC-SHA256'] for legacy shared-secret signing. Both are deprecated; new integrations SHOULD omit `authentication` and use the RFC 9421 webhook profile.
|
|
205
|
+
*/
|
|
206
|
+
schemes: AuthenticationScheme[];
|
|
207
|
+
/**
|
|
208
|
+
* Credentials for the legacy scheme. For Bearer: token sent in Authorization header. For HMAC-SHA256: shared secret used to generate signature. Minimum 32 characters. Exchanged out-of-band during onboarding.
|
|
209
|
+
* @minLength 32
|
|
210
|
+
*/
|
|
211
|
+
credentials: string;
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Current task execution state. Indicates whether the task is completed, in progress (working), submitted for async processing, failed, or requires user input. REQUIRED on every task response envelope. Synchronous tasks (including read-only metadata calls like `get_adcp_capabilities`) MUST emit `status: "completed"`; async tasks emit `submitted`, `working`, `input-required`, etc. per their lifecycle. Agents MUST NOT emit the legacy task_status or response_status fields alongside this field — the status field is the single authoritative task state.
|
|
217
|
+
*/
|
|
218
|
+
export type TaskStatus = 'submitted' | 'working' | 'input-required' | 'completed' | 'canceled' | 'failed' | 'rejected' | 'auth-required' | 'unknown';
|
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
// AUTO-GENERATED — DO NOT EDIT.
|
|
2
|
+
// Per-tool .d.ts slice for `report_plan_outcome`. Built from the published
|
|
3
|
+
// `tools.generated.d.ts` + `core.generated.d.ts` + `enums.generated.d.ts`
|
|
4
|
+
// by `scripts/generate-per-tool-types.ts`.
|
|
5
|
+
//
|
|
6
|
+
// Self-contained: imports nothing from the broader SDK. Adopters who
|
|
7
|
+
// import only this slice pay a fraction of the tsc cost of pulling in
|
|
8
|
+
// `@adcp/sdk` root — useful when strict + skipLibCheck:false adopters
|
|
9
|
+
// hit memory pressure on the full surface.
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Report the outcome of an action to the governance agent. Called by the orchestrator (buyer-side agent) after a seller responds. This is the 'after' half of the governance loop. Sellers do not call this task -- they report delivery data via check_governance with phase 'delivery'.
|
|
13
|
+
*/
|
|
14
|
+
export interface ReportPlanOutcomeRequest {
|
|
15
|
+
/**
|
|
16
|
+
* 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.
|
|
17
|
+
*/
|
|
18
|
+
adcp_version?: string;
|
|
19
|
+
/**
|
|
20
|
+
* 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.
|
|
21
|
+
*/
|
|
22
|
+
adcp_major_version?: number;
|
|
23
|
+
/**
|
|
24
|
+
* The plan this outcome is for. The plan uniquely scopes the account and operator; do not include a separate `account` field — the governance agent resolves account from the plan. Including `account` is rejected by `additionalProperties: false`.
|
|
25
|
+
*/
|
|
26
|
+
plan_id: string;
|
|
27
|
+
/**
|
|
28
|
+
* The check_id from check_governance. Links the outcome to the governance check that authorized it. Required for 'completed' and 'failed' outcomes.
|
|
29
|
+
*/
|
|
30
|
+
check_id?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Client-generated unique key for this request. Prevents duplicate outcome reports on retries. MUST be unique per (seller, request) pair to prevent cross-seller correlation. Use a fresh UUID v4 for each request.
|
|
33
|
+
* @minLength 16
|
|
34
|
+
* @maxLength 255
|
|
35
|
+
* @pattern ^[A-Za-z0-9_.:-]{16,255}$
|
|
36
|
+
*/
|
|
37
|
+
idempotency_key: string;
|
|
38
|
+
purchase_type?: PurchaseType;
|
|
39
|
+
outcome: OutcomeType;
|
|
40
|
+
/**
|
|
41
|
+
* The seller's full response. Required when outcome is 'completed'.
|
|
42
|
+
*/
|
|
43
|
+
seller_response?: {
|
|
44
|
+
/**
|
|
45
|
+
* The seller's identifier for the created resource (e.g., media_buy_id, rights_grant_id, deployment_id). Not interpreted by the governance agent — included in audit logs for human-readable traceability alongside the opaque governance_context.
|
|
46
|
+
* @maxLength 255
|
|
47
|
+
*/
|
|
48
|
+
seller_reference?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Total budget committed across all confirmed packages. When present, the governance agent uses this directly instead of summing package budgets.
|
|
51
|
+
* @minimum 0
|
|
52
|
+
*/
|
|
53
|
+
committed_budget?: number;
|
|
54
|
+
/**
|
|
55
|
+
* Confirmed packages with actual budget and targeting.
|
|
56
|
+
*/
|
|
57
|
+
packages?: {
|
|
58
|
+
/**
|
|
59
|
+
* @minimum 0
|
|
60
|
+
*/
|
|
61
|
+
budget?: number;
|
|
62
|
+
}[];
|
|
63
|
+
planned_delivery?: PlannedDelivery;
|
|
64
|
+
/**
|
|
65
|
+
* ISO 8601 deadline for creative submission.
|
|
66
|
+
* @format date-time
|
|
67
|
+
*/
|
|
68
|
+
creative_deadline?: string;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Delivery metrics. Required when outcome is 'delivery'.
|
|
72
|
+
*/
|
|
73
|
+
delivery?: {
|
|
74
|
+
/**
|
|
75
|
+
* Start and end timestamps for the reporting window.
|
|
76
|
+
*/
|
|
77
|
+
reporting_period?: {
|
|
78
|
+
/**
|
|
79
|
+
* @format date-time
|
|
80
|
+
*/
|
|
81
|
+
start: string;
|
|
82
|
+
/**
|
|
83
|
+
* @format date-time
|
|
84
|
+
*/
|
|
85
|
+
end: string;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Impressions delivered in the period.
|
|
89
|
+
* @minimum 0
|
|
90
|
+
*/
|
|
91
|
+
impressions?: number;
|
|
92
|
+
/**
|
|
93
|
+
* Spend in the period.
|
|
94
|
+
*/
|
|
95
|
+
spend?: number;
|
|
96
|
+
/**
|
|
97
|
+
* Effective CPM for the period.
|
|
98
|
+
*/
|
|
99
|
+
cpm?: number;
|
|
100
|
+
/**
|
|
101
|
+
* Viewability rate (0-1).
|
|
102
|
+
*/
|
|
103
|
+
viewability_rate?: number;
|
|
104
|
+
/**
|
|
105
|
+
* Video completion rate (0-1).
|
|
106
|
+
*/
|
|
107
|
+
completion_rate?: number;
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Error details. Required when outcome is 'failed'.
|
|
111
|
+
*/
|
|
112
|
+
error?: {
|
|
113
|
+
/**
|
|
114
|
+
* Error code from the seller.
|
|
115
|
+
*/
|
|
116
|
+
code?: string;
|
|
117
|
+
/**
|
|
118
|
+
* Human-readable error description.
|
|
119
|
+
*/
|
|
120
|
+
message?: string;
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Opaque governance context from the check_governance response that authorized this action. Enables the governance agent to correlate the outcome to the original check.
|
|
124
|
+
* @minLength 1
|
|
125
|
+
* @maxLength 4096
|
|
126
|
+
* @pattern ^[\x20-\x7E]+$
|
|
127
|
+
*/
|
|
128
|
+
governance_context: string;
|
|
129
|
+
context?: ContextObject;
|
|
130
|
+
ext?: ExtensionObject;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Response from reporting an action outcome. Only returned to the orchestrator (buyer-side agent) that manages the plan. Sellers report delivery data via check_governance with phase 'delivery', not via this task.
|
|
135
|
+
*/
|
|
136
|
+
export interface ReportPlanOutcomeResponse {
|
|
137
|
+
/**
|
|
138
|
+
* 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.
|
|
139
|
+
*/
|
|
140
|
+
adcp_version?: string;
|
|
141
|
+
/**
|
|
142
|
+
* 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.
|
|
143
|
+
*/
|
|
144
|
+
adcp_major_version?: number;
|
|
145
|
+
/**
|
|
146
|
+
* Unique identifier for this outcome record.
|
|
147
|
+
*/
|
|
148
|
+
outcome_id: string;
|
|
149
|
+
/**
|
|
150
|
+
* Outcome state. 'accepted' means state updated with no issues. 'findings' means issues were detected. Renamed from `status` in 3.1 to free the top-level `status` key for the envelope task-status (TaskStatus) under MCP flat-on-the-wire serialization.
|
|
151
|
+
*/
|
|
152
|
+
outcome_state: 'accepted' | 'findings';
|
|
153
|
+
/**
|
|
154
|
+
* Budget committed from this outcome. Present for 'completed' and 'failed' outcomes.
|
|
155
|
+
*/
|
|
156
|
+
committed_budget?: number;
|
|
157
|
+
/**
|
|
158
|
+
* Issues detected. Present only when outcome_state is 'findings'.
|
|
159
|
+
*/
|
|
160
|
+
findings?: {
|
|
161
|
+
/**
|
|
162
|
+
* Which validation category flagged the issue.
|
|
163
|
+
*/
|
|
164
|
+
category_id: string;
|
|
165
|
+
severity: EscalationSeverity;
|
|
166
|
+
/**
|
|
167
|
+
* Human-readable description of the issue.
|
|
168
|
+
*/
|
|
169
|
+
explanation: string;
|
|
170
|
+
/**
|
|
171
|
+
* Structured details for programmatic consumption.
|
|
172
|
+
*/
|
|
173
|
+
details?: {};
|
|
174
|
+
}[];
|
|
175
|
+
/**
|
|
176
|
+
* Updated plan budget state. Present for 'completed' and 'failed' outcomes.
|
|
177
|
+
*/
|
|
178
|
+
plan_summary?: {
|
|
179
|
+
/**
|
|
180
|
+
* Total budget committed across all campaigns in the plan.
|
|
181
|
+
*/
|
|
182
|
+
total_committed?: number;
|
|
183
|
+
/**
|
|
184
|
+
* Authorized budget minus total committed.
|
|
185
|
+
*/
|
|
186
|
+
budget_remaining?: number;
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* Set to true when this response was returned from the idempotency cache rather than from a fresh execution. Set to false (or omitted) when the request was executed fresh. Buyers use this to distinguish cached replays from new executions — matters for billing reconciliation, audit logs, state-machine routing (cached state-tracking fields are historical snapshots, not current state — re-read via the resource's read endpoint), and any downstream system that assumes exactly-once event semantics. From 3.1 onward, `replayed` MAY appear on responses to any request that resolved via the idempotency cache, including read tools — universal `idempotency_key` (see security.mdx §Idempotency) means the cache holds read responses too.
|
|
190
|
+
*/
|
|
191
|
+
replayed?: boolean;
|
|
192
|
+
context?: ContextObject;
|
|
193
|
+
ext?: ExtensionObject;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Selects an audience by signal reference or natural language description. Uses 'type' as the primary discriminator (signal vs description). Signal selectors additionally use 'value_type' to determine the targeting expression format (matching signal-targeting.json variants).
|
|
198
|
+
*/
|
|
199
|
+
export type AudienceSelector = {
|
|
200
|
+
/**
|
|
201
|
+
* Discriminator for signal-based selectors
|
|
202
|
+
*/
|
|
203
|
+
type: 'signal';
|
|
204
|
+
signal_id: SignalID;
|
|
205
|
+
/**
|
|
206
|
+
* Discriminator for binary signals
|
|
207
|
+
*/
|
|
208
|
+
value_type: 'binary';
|
|
209
|
+
/**
|
|
210
|
+
* Whether to include (true) or exclude (false) users matching this signal
|
|
211
|
+
*/
|
|
212
|
+
value: boolean;
|
|
213
|
+
} | {
|
|
214
|
+
/**
|
|
215
|
+
* Discriminator for signal-based selectors
|
|
216
|
+
*/
|
|
217
|
+
type: 'signal';
|
|
218
|
+
signal_id: SignalID;
|
|
219
|
+
/**
|
|
220
|
+
* Discriminator for categorical signals
|
|
221
|
+
*/
|
|
222
|
+
value_type: 'categorical';
|
|
223
|
+
/**
|
|
224
|
+
* Values to target. Users with any of these values will be included.
|
|
225
|
+
*/
|
|
226
|
+
values: string[];
|
|
227
|
+
} | {
|
|
228
|
+
/**
|
|
229
|
+
* Discriminator for signal-based selectors
|
|
230
|
+
*/
|
|
231
|
+
type: 'signal';
|
|
232
|
+
signal_id: SignalID;
|
|
233
|
+
/**
|
|
234
|
+
* Discriminator for numeric signals
|
|
235
|
+
*/
|
|
236
|
+
value_type: 'numeric';
|
|
237
|
+
/**
|
|
238
|
+
* Minimum value (inclusive). Omit for no minimum. Must be <= max_value when both are provided.
|
|
239
|
+
*/
|
|
240
|
+
min_value?: number;
|
|
241
|
+
/**
|
|
242
|
+
* Maximum value (inclusive). Omit for no maximum. Must be >= min_value when both are provided.
|
|
243
|
+
*/
|
|
244
|
+
max_value?: number;
|
|
245
|
+
} | {
|
|
246
|
+
/**
|
|
247
|
+
* Discriminator for description-based selectors
|
|
248
|
+
*/
|
|
249
|
+
type: 'description';
|
|
250
|
+
/**
|
|
251
|
+
* Natural language description of the audience (e.g., 'likely EV buyers', 'high net worth individuals', 'vulnerable communities')
|
|
252
|
+
* @minLength 1
|
|
253
|
+
* @maxLength 2000
|
|
254
|
+
*/
|
|
255
|
+
description: string;
|
|
256
|
+
/**
|
|
257
|
+
* Optional grouping hint for the governance agent (e.g., 'demographic', 'behavioral', 'contextual', 'financial')
|
|
258
|
+
*/
|
|
259
|
+
category?: string;
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
264
|
+
*/
|
|
265
|
+
export interface ContextObject {
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* A time duration expressed as an interval and unit. Used for frequency cap windows, attribution windows, reach optimization windows, time budgets, and other time-based settings. When unit is 'campaign', interval must be 1 — the window spans the full campaign flight.
|
|
270
|
+
*/
|
|
271
|
+
export interface Duration {
|
|
272
|
+
/**
|
|
273
|
+
* Number of time units. Must be 1 when unit is 'campaign'.
|
|
274
|
+
* @minimum 1
|
|
275
|
+
*/
|
|
276
|
+
interval: number;
|
|
277
|
+
/**
|
|
278
|
+
* Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.
|
|
279
|
+
*/
|
|
280
|
+
unit: 'seconds' | 'minutes' | 'hours' | 'days' | 'campaign';
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Finding severity.
|
|
285
|
+
*/
|
|
286
|
+
export type EscalationSeverity = 'info' | 'warning' | 'critical';
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.
|
|
290
|
+
*/
|
|
291
|
+
export interface ExtensionObject {
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set.
|
|
296
|
+
*/
|
|
297
|
+
export type FrequencyCap = {
|
|
298
|
+
[k: string]: unknown | undefined;
|
|
299
|
+
} & {
|
|
300
|
+
/**
|
|
301
|
+
* Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {"interval": 60, "unit": "minutes"} for a 1-hour cooldown). Preferred over suppress_minutes.
|
|
302
|
+
*/
|
|
303
|
+
suppress?: Duration;
|
|
304
|
+
/**
|
|
305
|
+
* Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).
|
|
306
|
+
* @minimum 0
|
|
307
|
+
*/
|
|
308
|
+
suppress_minutes?: number;
|
|
309
|
+
/**
|
|
310
|
+
* Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window; 'campaign' applies a fixed cap across the full flight.
|
|
311
|
+
* @minimum 1
|
|
312
|
+
*/
|
|
313
|
+
max_impressions?: number;
|
|
314
|
+
/**
|
|
315
|
+
* Entity granularity for impression counting. Required when max_impressions is set.
|
|
316
|
+
*/
|
|
317
|
+
per?: ReachUnit;
|
|
318
|
+
/**
|
|
319
|
+
* Time window for the max_impressions cap (e.g. {"interval": 7, "unit": "days"} or {"interval": 1, "unit": "campaign"} for the full flight). Required when max_impressions is set.
|
|
320
|
+
*/
|
|
321
|
+
window?: Duration;
|
|
322
|
+
};
|
|
323
|
+
|
|
324
|
+
/**
|
|
325
|
+
* Standardized advertising media channels describing how buyers allocate budget. Channels are planning abstractions, not technical substrates. See the Media Channel Taxonomy specification for detailed definitions.
|
|
326
|
+
*/
|
|
327
|
+
export type MediaChannel = 'display' | 'olv' | 'social' | 'search' | 'ctv' | 'linear_tv' | 'radio' | 'streaming_audio' | 'podcast' | 'dooh' | 'ooh' | 'print' | 'cinema' | 'email' | 'gaming' | 'retail_media' | 'influencer' | 'affiliate' | 'product_placement' | 'sponsored_intelligence';
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Outcome type.
|
|
331
|
+
*/
|
|
332
|
+
export type OutcomeType = 'completed' | 'failed' | 'delivery';
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* The seller's interpreted delivery parameters. Describes what the seller will actually run -- geo, channels, flight dates, frequency caps, and budget. Present when the account has governance_agents or when the seller chooses to provide delivery transparency.
|
|
336
|
+
*/
|
|
337
|
+
export interface PlannedDelivery {
|
|
338
|
+
/**
|
|
339
|
+
* Geographic targeting the seller will apply.
|
|
340
|
+
*/
|
|
341
|
+
geo?: {
|
|
342
|
+
/**
|
|
343
|
+
* ISO 3166-1 alpha-2 country codes where ads will deliver.
|
|
344
|
+
*/
|
|
345
|
+
countries?: string[];
|
|
346
|
+
/**
|
|
347
|
+
* ISO 3166-2 subdivision codes where ads will deliver.
|
|
348
|
+
*/
|
|
349
|
+
regions?: string[];
|
|
350
|
+
};
|
|
351
|
+
/**
|
|
352
|
+
* Channels the seller will deliver on.
|
|
353
|
+
*/
|
|
354
|
+
channels?: MediaChannel[];
|
|
355
|
+
/**
|
|
356
|
+
* Actual flight start the seller will use.
|
|
357
|
+
* @format date-time
|
|
358
|
+
*/
|
|
359
|
+
start_time?: string;
|
|
360
|
+
/**
|
|
361
|
+
* Actual flight end the seller will use.
|
|
362
|
+
* @format date-time
|
|
363
|
+
*/
|
|
364
|
+
end_time?: string;
|
|
365
|
+
frequency_cap?: FrequencyCap;
|
|
366
|
+
/**
|
|
367
|
+
* Human-readable summary of the audience the seller will target.
|
|
368
|
+
*/
|
|
369
|
+
audience_summary?: string;
|
|
370
|
+
/**
|
|
371
|
+
* Structured audience targeting the seller will activate. Each entry is either a signal reference or a descriptive criterion. When present, governance agents MUST use this for bias/fairness validation and SHOULD ignore audience_summary for validation purposes. The audience_summary field is a human-readable rendering of this array, not an independent declaration.
|
|
372
|
+
*/
|
|
373
|
+
audience_targeting?: AudienceSelector[];
|
|
374
|
+
/**
|
|
375
|
+
* Total budget the seller will deliver against.
|
|
376
|
+
* @minimum 0
|
|
377
|
+
*/
|
|
378
|
+
total_budget?: number;
|
|
379
|
+
/**
|
|
380
|
+
* ISO 4217 currency code for the budget.
|
|
381
|
+
* @pattern ^[A-Z]{3}$
|
|
382
|
+
*/
|
|
383
|
+
currency?: string;
|
|
384
|
+
/**
|
|
385
|
+
* Registry policy IDs the seller will enforce for this delivery.
|
|
386
|
+
*/
|
|
387
|
+
enforced_policies?: string[];
|
|
388
|
+
ext?: ExtensionObject;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* The type of financial commitment this outcome is for. Determines which budget allocation (if any) to charge against. Defaults to 'media_buy' when omitted.
|
|
393
|
+
*/
|
|
394
|
+
export type PurchaseType = 'media_buy' | 'rights_license' | 'signal_activation' | 'creative_services';
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* Unit of measurement for reach and audience_size metrics in this forecast. Required for cross-channel forecast comparison.
|
|
398
|
+
*/
|
|
399
|
+
export type ReachUnit = 'individuals' | 'households' | 'devices' | 'accounts' | 'cookies' | 'custom';
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* The signal to target
|
|
403
|
+
*/
|
|
404
|
+
export type SignalID = {
|
|
405
|
+
/**
|
|
406
|
+
* Discriminator indicating this signal is from a data provider's published catalog
|
|
407
|
+
*/
|
|
408
|
+
source: 'catalog';
|
|
409
|
+
/**
|
|
410
|
+
* Domain of the data provider that owns this signal (e.g., 'polk.com', 'experian.com'). The signal definition is published at this domain's /.well-known/adagents.json
|
|
411
|
+
* @pattern ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$
|
|
412
|
+
*/
|
|
413
|
+
data_provider_domain: string;
|
|
414
|
+
/**
|
|
415
|
+
* Signal identifier within the data provider's catalog (e.g., 'likely_tesla_buyers', 'income_100k_plus')
|
|
416
|
+
* @pattern ^[a-zA-Z0-9_-]+$
|
|
417
|
+
*/
|
|
418
|
+
id: string;
|
|
419
|
+
} | {
|
|
420
|
+
/**
|
|
421
|
+
* Discriminator indicating this signal is native to the agent (not from a data provider catalog)
|
|
422
|
+
*/
|
|
423
|
+
source: 'agent';
|
|
424
|
+
/**
|
|
425
|
+
* URL of the signals agent that provides this signal (e.g., 'https://liveramp.com/.well-known/adcp/signals')
|
|
426
|
+
*/
|
|
427
|
+
agent_url: string;
|
|
428
|
+
/**
|
|
429
|
+
* Signal identifier within the agent's signal set (e.g., 'custom_auto_intenders')
|
|
430
|
+
* @pattern ^[a-zA-Z0-9_-]+$
|
|
431
|
+
*/
|
|
432
|
+
id: string;
|
|
433
|
+
};
|