@adcp/sdk 14.1.0 → 14.2.0
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/dist/lib/core/SingleAgentClient.d.mts +4 -1
- package/dist/lib/core/SingleAgentClient.d.ts +4 -1
- package/dist/lib/core/SingleAgentClient.js +25 -4
- package/dist/lib/core/SingleAgentClient.mjs +25 -4
- package/dist/lib/core/TaskExecutor.d.mts +3 -1
- package/dist/lib/core/TaskExecutor.d.ts +3 -1
- package/dist/lib/core/TaskExecutor.js +15 -11
- package/dist/lib/core/TaskExecutor.mjs +15 -11
- package/dist/lib/core/buyer-account-registry.d.mts +30 -2
- package/dist/lib/core/buyer-account-registry.d.ts +30 -2
- package/dist/lib/core/buyer-account-registry.js +126 -42
- package/dist/lib/core/buyer-account-registry.mjs +127 -43
- package/dist/lib/index.d.mts +3 -2
- package/dist/lib/index.d.ts +3 -2
- package/dist/lib/index.js +9 -0
- package/dist/lib/index.mjs +12 -1
- package/dist/lib/net/agent-transport-fetch.d.mts +4 -0
- package/dist/lib/net/agent-transport-fetch.d.ts +4 -0
- package/dist/lib/net/agent-transport-fetch.js +18 -5
- package/dist/lib/net/agent-transport-fetch.mjs +17 -5
- package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
- package/dist/lib/signing/agent-resolver/errors.d.mts +2 -0
- package/dist/lib/signing/agent-resolver/errors.d.ts +2 -0
- package/dist/lib/signing/agent-resolver/errors.js +6 -0
- package/dist/lib/signing/agent-resolver/errors.mjs +6 -0
- package/dist/lib/signing/agent-resolver/fetch-helpers.d.mts +9 -0
- package/dist/lib/signing/agent-resolver/fetch-helpers.d.ts +9 -0
- package/dist/lib/signing/agent-resolver/fetch-helpers.js +35 -1
- package/dist/lib/signing/agent-resolver/fetch-helpers.mjs +38 -2
- package/dist/lib/signing/agent-resolver/legacy-brand.js +1 -1
- package/dist/lib/signing/agent-resolver/legacy-brand.mjs +2 -2
- package/dist/lib/signing/agent-resolver/resolve-agent.d.mts +1 -1
- package/dist/lib/signing/agent-resolver/resolve-agent.d.ts +1 -1
- package/dist/lib/signing/agent-resolver/resolve-agent.js +47 -5
- package/dist/lib/signing/agent-resolver/resolve-agent.mjs +55 -6
- package/dist/lib/signing/brand-jwks.d.mts +2 -0
- package/dist/lib/signing/brand-jwks.d.ts +2 -0
- package/dist/lib/signing/brand-jwks.js +10 -2
- package/dist/lib/signing/brand-jwks.mjs +10 -2
- package/dist/lib/signing/errors.d.mts +4 -2
- package/dist/lib/signing/errors.d.ts +4 -2
- package/dist/lib/signing/errors.js +3 -1
- package/dist/lib/signing/errors.mjs +3 -1
- package/dist/lib/signing/verifier.js +1 -1
- package/dist/lib/signing/verifier.mjs +1 -1
- package/dist/lib/signing/webhook-verifier.js +2 -2
- package/dist/lib/signing/webhook-verifier.mjs +3 -3
- package/dist/lib/testing/storyboard/validations.d.mts +1 -1
- package/dist/lib/testing/storyboard/validations.d.ts +1 -1
- package/dist/lib/types/accept-proposal.d.ts +19 -1
- package/dist/lib/types/buy-products.d.ts +19 -1
- package/dist/lib/types/check-governance.d.ts +19 -1
- package/dist/lib/types/comply-test-controller.d.ts +19 -1
- package/dist/lib/types/control-media-buy.d.ts +19 -1
- package/dist/lib/types/core.generated.d.mts +14 -1
- package/dist/lib/types/core.generated.d.ts +14 -1
- package/dist/lib/types/create-media-buy.d.ts +14 -1
- package/dist/lib/types/get-media-buys.d.ts +14 -1
- package/dist/lib/types/get-products.d.ts +19 -1
- package/dist/lib/types/list-products.d.ts +19 -1
- package/dist/lib/types/refine-proposals.d.ts +19 -1
- package/dist/lib/types/request-proposals.d.ts +19 -1
- package/dist/lib/types/schemas.generated.d.ts +12 -3
- package/dist/lib/types/schemas.generated.js +4 -1
- package/dist/lib/types/schemas.generated.mjs +4 -1
- package/dist/lib/types/tools.generated.d.mts +14 -1
- package/dist/lib/types/tools.generated.d.ts +14 -1
- package/dist/lib/types/update-media-buy.d.ts +14 -1
- package/dist/lib/version.d.mts +3 -3
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.js +3 -3
- package/dist/lib/version.mjs +3 -3
- package/dist/lib/webhooks/index.d.mts +24 -0
- package/dist/lib/webhooks/index.d.ts +24 -0
- package/dist/lib/webhooks/index.js +50 -24
- package/dist/lib/webhooks/index.mjs +49 -24
- package/dist/lib/wholesale-feed-sync/index.d.mts +2 -0
- package/dist/lib/wholesale-feed-sync/index.d.ts +2 -0
- package/dist/lib/wholesale-feed-sync/index.js +7 -0
- package/dist/lib/wholesale-feed-sync/index.mjs +4 -0
- package/dist/lib/wholesale-feed-sync/mirror.d.mts +97 -0
- package/dist/lib/wholesale-feed-sync/mirror.d.ts +97 -0
- package/dist/lib/wholesale-feed-sync/mirror.js +350 -0
- package/dist/lib/wholesale-feed-sync/mirror.mjs +322 -0
- package/dist/lib/wholesale-feed-sync/sync.d.mts +12 -29
- package/dist/lib/wholesale-feed-sync/sync.d.ts +12 -29
- package/dist/lib/wholesale-feed-sync/sync.js +153 -297
- package/dist/lib/wholesale-feed-sync/sync.mjs +158 -297
- package/docs/README.md +6 -0
- package/docs/TYPE-SUMMARY.md +2 -2
- package/docs/guides/BUYER-STORAGE.md +3 -0
- package/docs/guides/FIRST-CALL-TO-A-SELLER.md +3 -1
- package/docs/guides/account-resolution.md +46 -10
- package/docs/llms.txt +2 -2
- package/docs/migration-14.0-to-14.1.md +85 -0
- package/docs/migration-14.x-rc-worksheet.md +4 -4
- package/docs/migration-agent-resolution-3.3.md +5 -3
- package/docs/recipes/verifying-inbound-webhooks.md +4 -0
- package/package.json +2 -1
- package/skills/adcp-brand.previous/SKILL.md +0 -200
- package/skills/adcp-creative.previous/SKILL.md +0 -305
- package/skills/adcp-governance.previous/SKILL.md +0 -566
- package/skills/adcp-measurement.previous/SKILL.md +0 -136
- package/skills/adcp-media-buy.previous/SKILL.md +0 -556
- package/skills/adcp-si.previous/SKILL.md +0 -206
- package/skills/adcp-signals.previous/SKILL.md +0 -204
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: adcp-si
|
|
3
|
-
description: Execute AdCP Sponsored Intelligence (SI) Protocol operations with brand agents - start conversational sessions, send messages, preview offerings, and manage session lifecycle. Use when users want to have conversations with brand agents, explore product offerings, or manage sponsored interactions.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# AdCP Sponsored Intelligence (SI) Protocol
|
|
7
|
-
|
|
8
|
-
This skill enables you to execute the AdCP SI Protocol with brand agents. SI enables conversational commerce sessions where users engage directly with brand agents for shopping, inquiries, and transactions.
|
|
9
|
-
|
|
10
|
-
> **Buyer-side basics** — idempotency replay, `oneOf` variants, async `status:'submitted'` polling, error recovery from `adcp_error.issues[]` — live in `skills/call-adcp-agent/SKILL.md`. This skill covers per-task semantics only.
|
|
11
|
-
|
|
12
|
-
## Overview
|
|
13
|
-
|
|
14
|
-
The SI Protocol provides 4 standardized tasks for managing conversational sessions:
|
|
15
|
-
|
|
16
|
-
| Task | Purpose | Response Time |
|
|
17
|
-
|------|---------|---------------|
|
|
18
|
-
| `si_initiate_session` | Start a brand conversation | ~2-5s |
|
|
19
|
-
| `si_send_message` | Send a message in an active session | ~1-5s |
|
|
20
|
-
| `si_get_offering` | Preview offerings before starting | ~1-3s |
|
|
21
|
-
| `si_terminate_session` | End a session | ~1s |
|
|
22
|
-
|
|
23
|
-
## Typical Workflow
|
|
24
|
-
|
|
25
|
-
1. **Preview** (optional): `si_get_offering` to see what the brand offers before consent
|
|
26
|
-
2. **Start session**: `si_initiate_session` with the user's `intent` and consent
|
|
27
|
-
3. **Converse**: `si_send_message` to relay user messages and action responses
|
|
28
|
-
4. **End**: `si_terminate_session` when done
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## Task Reference
|
|
33
|
-
|
|
34
|
-
### si_initiate_session
|
|
35
|
-
|
|
36
|
-
Start a conversational session with a brand agent.
|
|
37
|
-
|
|
38
|
-
**Request:**
|
|
39
|
-
```json
|
|
40
|
-
{
|
|
41
|
-
"intent": "I'm interested in your winter jacket collection",
|
|
42
|
-
"identity": {
|
|
43
|
-
"consent_granted": true,
|
|
44
|
-
"consent_timestamp": "2025-01-15T10:30:00Z",
|
|
45
|
-
"consent_scope": ["email", "name"],
|
|
46
|
-
"user": {
|
|
47
|
-
"email": "user@example.com",
|
|
48
|
-
"name": "Jane Smith",
|
|
49
|
-
"locale": "en-US"
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
"placement": "chatgpt_search"
|
|
53
|
-
}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**Key fields:**
|
|
57
|
-
- `intent` (string, required): Natural language description of user intent — the conversation handoff from host to brand agent
|
|
58
|
-
- `identity` (object, required): User identity with consent status
|
|
59
|
-
- `consent_granted` (boolean, required): Whether user consented to share identity
|
|
60
|
-
- `consent_timestamp` (string, optional): ISO 8601 timestamp of consent
|
|
61
|
-
- `consent_scope` (array, optional): Fields user agreed to share
|
|
62
|
-
- `user` (object, optional): PII (only if consent_granted is true) — `email`, `name`, `locale`
|
|
63
|
-
- `anonymous_session_id` (string, optional): Session ID if no consent
|
|
64
|
-
- `media_buy_id` (string, optional): AdCP media buy ID if triggered by advertising
|
|
65
|
-
- `placement` (string, optional): Where the session was triggered
|
|
66
|
-
- `offering_id` (string, optional): Brand-specific offering reference
|
|
67
|
-
- `offering_token` (string, optional): Token from `si_get_offering` for session continuity
|
|
68
|
-
- `supported_capabilities` (object, optional): Host platform capabilities (modalities, components, commerce)
|
|
69
|
-
- `context` (object, optional): Opaque correlation data (e.g., `{"trace_id": "abc-123"}`) echoed unchanged in the response — never parsed by the brand agent
|
|
70
|
-
|
|
71
|
-
**Response contains:**
|
|
72
|
-
- `session_id`: Use in subsequent `si_send_message` and `si_terminate_session` calls
|
|
73
|
-
- `greeting`: Brand agent's initial message
|
|
74
|
-
- `suggested_actions`: Optional UI elements (buttons, quick replies)
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
### si_send_message
|
|
79
|
-
|
|
80
|
-
Send a message within an active SI session.
|
|
81
|
-
|
|
82
|
-
**Text message:**
|
|
83
|
-
```json
|
|
84
|
-
{
|
|
85
|
-
"session_id": "sess_abc123",
|
|
86
|
-
"message": "Do you have this in size medium?"
|
|
87
|
-
}
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
**Action response (button click, form submit):**
|
|
91
|
-
```json
|
|
92
|
-
{
|
|
93
|
-
"session_id": "sess_abc123",
|
|
94
|
-
"action_response": {
|
|
95
|
-
"action": "add_to_cart",
|
|
96
|
-
"element_id": "btn_add_cart_sku789",
|
|
97
|
-
"payload": {
|
|
98
|
-
"size": "M",
|
|
99
|
-
"color": "navy"
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
**Key fields:**
|
|
106
|
-
- `session_id` (string, required): Session ID from `si_initiate_session`
|
|
107
|
-
- `message` (string, conditional): User's text message. Required unless `action_response` is provided.
|
|
108
|
-
- `action_response` (object, conditional): Response to a UI action — `action`, `element_id`, `payload`. Required unless `message` is provided.
|
|
109
|
-
|
|
110
|
-
**Response contains:**
|
|
111
|
-
- `message`: Brand agent's response text
|
|
112
|
-
- `suggested_actions`: Optional UI elements for next interaction
|
|
113
|
-
- `components`: Optional rich UI components (product cards, carousels, forms)
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
### si_get_offering
|
|
118
|
-
|
|
119
|
-
Get offering details and availability before initiating a session. Allows showing rich previews before asking for user consent.
|
|
120
|
-
|
|
121
|
-
**Request:**
|
|
122
|
-
```json
|
|
123
|
-
{
|
|
124
|
-
"offering_id": "winter-collection-2025",
|
|
125
|
-
"intent": "Looking for warm jackets under $200",
|
|
126
|
-
"include_products": true,
|
|
127
|
-
"product_limit": 5
|
|
128
|
-
}
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
**Key fields:**
|
|
132
|
-
- `offering_id` (string, required): Offering identifier from the catalog
|
|
133
|
-
- `intent` (string, optional): Natural language description of user intent for personalized results (no PII)
|
|
134
|
-
- `include_products` (boolean, optional): Include matching products
|
|
135
|
-
- `product_limit` (number, optional): Max products to return (default 5, max 50)
|
|
136
|
-
- `context` (object, optional): Opaque correlation data echoed unchanged in the response — never parsed by the brand agent
|
|
137
|
-
|
|
138
|
-
**Response contains:**
|
|
139
|
-
- `offering`: Offering details (name, description, availability)
|
|
140
|
-
- `products`: Matching products if `include_products` is true
|
|
141
|
-
- `offering_token`: Pass to `si_initiate_session` for session continuity
|
|
142
|
-
|
|
143
|
-
---
|
|
144
|
-
|
|
145
|
-
### si_terminate_session
|
|
146
|
-
|
|
147
|
-
End an SI session.
|
|
148
|
-
|
|
149
|
-
**Request:**
|
|
150
|
-
```json
|
|
151
|
-
{
|
|
152
|
-
"session_id": "sess_abc123",
|
|
153
|
-
"reason": "user_exit"
|
|
154
|
-
}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
**Key fields:**
|
|
158
|
-
- `session_id` (string, required): Session ID to terminate
|
|
159
|
-
- `reason` (string, required): Why the session is ending — `handoff_transaction`, `handoff_complete`, `user_exit`, `session_timeout`, `host_terminated`
|
|
160
|
-
- `termination_context` (object, optional): Conversation summary, transaction intent, and cause for the termination
|
|
161
|
-
- `context` (object, optional): Opaque correlation data echoed unchanged in the response — never parsed by the brand agent
|
|
162
|
-
|
|
163
|
-
**Reason values:**
|
|
164
|
-
- `handoff_transaction`: User is being redirected to complete a transaction
|
|
165
|
-
- `handoff_complete`: Transaction completed within the session
|
|
166
|
-
- `user_exit`: User chose to leave
|
|
167
|
-
- `session_timeout`: Session timed out
|
|
168
|
-
- `host_terminated`: Host platform ended the session
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
## Key Concepts
|
|
173
|
-
|
|
174
|
-
### Consent Model
|
|
175
|
-
|
|
176
|
-
SI sessions require explicit user consent before sharing PII:
|
|
177
|
-
- `consent_granted: false` + `anonymous_session_id`: Anonymous session
|
|
178
|
-
- `consent_granted: true` + `user` object: Personalized session with identity
|
|
179
|
-
|
|
180
|
-
### Session Lifecycle
|
|
181
|
-
|
|
182
|
-
```
|
|
183
|
-
si_get_offering (optional) → si_initiate_session → si_send_message (repeat) → si_terminate_session
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
Sessions are stateful. The brand agent maintains context across messages within a session.
|
|
187
|
-
|
|
188
|
-
### Placements
|
|
189
|
-
|
|
190
|
-
Where the SI session was triggered:
|
|
191
|
-
- `chatgpt_search`: Within ChatGPT search results
|
|
192
|
-
- `publisher_article`: On a publisher's article page
|
|
193
|
-
- `social_feed`: In a social media feed
|
|
194
|
-
- `ctv_overlay`: On a CTV streaming overlay
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
## Error Handling
|
|
199
|
-
|
|
200
|
-
Common error codes:
|
|
201
|
-
|
|
202
|
-
- `SESSION_NOT_FOUND`: Invalid or expired session_id
|
|
203
|
-
- `SESSION_EXPIRED`: Session timed out
|
|
204
|
-
- `CONSENT_REQUIRED`: Attempting to share PII without consent
|
|
205
|
-
- `OFFERING_NOT_FOUND`: Invalid offering_id
|
|
206
|
-
- `RATE_LIMITED`: Too many messages in quick succession
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: adcp-signals
|
|
3
|
-
description: Execute AdCP Signals Protocol operations with signal agents - discover audience signals using natural language and activate them on DSPs or sales agents. Use when users want to find targeting data, activate audience segments, or work with signal providers.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# AdCP Signals Protocol
|
|
7
|
-
|
|
8
|
-
This skill enables you to execute the AdCP Signals Protocol with signal agents. Use the standard MCP tools (`get_signals`, `activate_signal`) exposed by the connected agent.
|
|
9
|
-
|
|
10
|
-
> **Buyer-side basics** — idempotency replay, `oneOf` variants, async `status:'submitted'` polling, error recovery from `adcp_error.issues[]` — live in `skills/call-adcp-agent/SKILL.md`. This skill covers per-task semantics only.
|
|
11
|
-
|
|
12
|
-
## Overview
|
|
13
|
-
|
|
14
|
-
The Signals Protocol provides 2 standardized tasks for discovering and activating targeting data:
|
|
15
|
-
|
|
16
|
-
| Task | Purpose | Response Time |
|
|
17
|
-
|------|---------|---------------|
|
|
18
|
-
| `get_signals` | Discover signals using natural language | ~60s |
|
|
19
|
-
| `activate_signal` | Activate a signal on a platform/agent | Minutes-Hours |
|
|
20
|
-
|
|
21
|
-
## Typical Workflow
|
|
22
|
-
|
|
23
|
-
1. **Discover signals**: `get_signals` with a natural language description of targeting needs
|
|
24
|
-
2. **Review options**: Evaluate signals by coverage, pricing, and deployment status
|
|
25
|
-
3. **Activate if needed**: `activate_signal` for signals not yet live on your platform
|
|
26
|
-
4. **Use in campaigns**: Reference the activation key in your media buy targeting
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## Task Reference
|
|
31
|
-
|
|
32
|
-
### get_signals
|
|
33
|
-
|
|
34
|
-
Discover signals based on natural language description, with deployment status across platforms.
|
|
35
|
-
|
|
36
|
-
**Request:**
|
|
37
|
-
```json
|
|
38
|
-
{
|
|
39
|
-
"signal_spec": "High-income households interested in luxury goods",
|
|
40
|
-
"destinations": [
|
|
41
|
-
{
|
|
42
|
-
"type": "platform",
|
|
43
|
-
"platform": "the-trade-desk",
|
|
44
|
-
"account": "agency-123"
|
|
45
|
-
}
|
|
46
|
-
],
|
|
47
|
-
"countries": ["US"],
|
|
48
|
-
"filters": {
|
|
49
|
-
"max_cpm": 5.0,
|
|
50
|
-
"catalog_types": ["marketplace"]
|
|
51
|
-
},
|
|
52
|
-
"max_results": 5
|
|
53
|
-
}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**Key fields:**
|
|
57
|
-
- `signal_spec` (string, conditional): Natural language description of desired signals. Required unless `signal_ids` is provided.
|
|
58
|
-
- `destinations` (array, optional): Filter signals to those activatable on specific agents/platforms. When omitted, returns all signals available on the current agent. Each item: `type`, `platform`/`agent_url`, optional `account`.
|
|
59
|
-
- `countries` (array, optional): ISO 3166-1 alpha-2 country codes where signals will be used
|
|
60
|
-
- `filters` (object, optional): Filter by `catalog_types`, `data_providers`, `max_cpm`, `min_coverage_percentage`
|
|
61
|
-
- `max_results` (number, optional): Limit number of results
|
|
62
|
-
|
|
63
|
-
**Deployment types:**
|
|
64
|
-
```json
|
|
65
|
-
// DSP platform
|
|
66
|
-
{ "type": "platform", "platform": "the-trade-desk", "account": "agency-123" }
|
|
67
|
-
|
|
68
|
-
// Sales agent
|
|
69
|
-
{ "type": "agent", "agent_url": "https://salesagent.example.com" }
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
**Response contains:**
|
|
73
|
-
- `signals`: Array of matching signals with:
|
|
74
|
-
- `signal_agent_segment_id`: Use this in `activate_signal`
|
|
75
|
-
- `name`, `description`: Human-readable signal info
|
|
76
|
-
- `data_provider`: Source of the signal data
|
|
77
|
-
- `coverage_percentage`: Reach relative to agent's population
|
|
78
|
-
- `deployments`: Status per platform with `is_live`, `activation_key`, `estimated_activation_duration_minutes`
|
|
79
|
-
- `pricing`: CPM and currency
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
### activate_signal
|
|
84
|
-
|
|
85
|
-
Activate a signal for use on a specific platform or agent.
|
|
86
|
-
|
|
87
|
-
**Request:**
|
|
88
|
-
```json
|
|
89
|
-
{
|
|
90
|
-
"signal_agent_segment_id": "luxury_auto_intenders",
|
|
91
|
-
"deployments": [
|
|
92
|
-
{
|
|
93
|
-
"type": "platform",
|
|
94
|
-
"platform": "the-trade-desk",
|
|
95
|
-
"account": "agency-123-ttd"
|
|
96
|
-
}
|
|
97
|
-
]
|
|
98
|
-
}
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
**Key fields:**
|
|
102
|
-
- `signal_agent_segment_id` (string, required): From `get_signals` response
|
|
103
|
-
- `deployments` (array, required): Target deployment(s) with `type`, `platform`/`agent_url`, and optional `account`
|
|
104
|
-
|
|
105
|
-
**Response contains:**
|
|
106
|
-
- `deployments`: Array with activation results per target
|
|
107
|
-
- `activation_key`: The key to use for targeting (segment ID or key-value pair)
|
|
108
|
-
- `deployed_at`: ISO timestamp when activation completed
|
|
109
|
-
- `estimated_activation_duration_minutes`: Time remaining if async
|
|
110
|
-
- `errors`: Any warnings or errors encountered
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
## Key Concepts
|
|
115
|
-
|
|
116
|
-
### Deployment Targets
|
|
117
|
-
|
|
118
|
-
Signals can be activated on two types of targets:
|
|
119
|
-
|
|
120
|
-
**DSP Platforms:**
|
|
121
|
-
```json
|
|
122
|
-
{
|
|
123
|
-
"type": "platform",
|
|
124
|
-
"platform": "the-trade-desk",
|
|
125
|
-
"account": "agency-123"
|
|
126
|
-
}
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
**Sales Agents:**
|
|
130
|
-
```json
|
|
131
|
-
{
|
|
132
|
-
"type": "agent",
|
|
133
|
-
"agent_url": "https://wonderstruck.salesagents.com"
|
|
134
|
-
}
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
### Activation Keys
|
|
138
|
-
|
|
139
|
-
When signals are live, the response includes an activation key for targeting:
|
|
140
|
-
|
|
141
|
-
**Segment ID format (typical for DSPs):**
|
|
142
|
-
```json
|
|
143
|
-
{
|
|
144
|
-
"type": "segment_id",
|
|
145
|
-
"segment_id": "ttd_segment_12345"
|
|
146
|
-
}
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
**Key-Value format (typical for sales agents):**
|
|
150
|
-
```json
|
|
151
|
-
{
|
|
152
|
-
"type": "key_value",
|
|
153
|
-
"key": "audience_segment",
|
|
154
|
-
"value": "luxury_auto_intenders"
|
|
155
|
-
}
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
### Signal Types
|
|
159
|
-
|
|
160
|
-
- **marketplace**: Licensed from data providers (CPM pricing)
|
|
161
|
-
- **custom**: Built for specific principal accounts
|
|
162
|
-
- **owned**: Private signals from your own data (no cost)
|
|
163
|
-
|
|
164
|
-
### Coverage Percentage
|
|
165
|
-
|
|
166
|
-
Indicates signal reach relative to the agent's population:
|
|
167
|
-
- 99%: Very broad signal (matches most identifiers)
|
|
168
|
-
- 50%: Medium signal
|
|
169
|
-
- 1%: Very niche signal
|
|
170
|
-
|
|
171
|
-
### Asynchronous Operations
|
|
172
|
-
|
|
173
|
-
Signal activation may take time. Check the response:
|
|
174
|
-
- `is_live: true` + `activation_key`: Ready to use immediately
|
|
175
|
-
- `is_live: false` + `estimated_activation_duration_minutes`: Activation in progress
|
|
176
|
-
|
|
177
|
-
Poll or use webhooks to check completion status.
|
|
178
|
-
|
|
179
|
-
---
|
|
180
|
-
|
|
181
|
-
## Error Handling
|
|
182
|
-
|
|
183
|
-
Common error codes:
|
|
184
|
-
|
|
185
|
-
- `SIGNAL_AGENT_SEGMENT_NOT_FOUND`: Invalid signal_agent_segment_id
|
|
186
|
-
- `ACTIVATION_FAILED`: Could not activate signal
|
|
187
|
-
- `ALREADY_ACTIVATED`: Signal already active on target
|
|
188
|
-
- `DEPLOYMENT_UNAUTHORIZED`: Not authorized for platform/account
|
|
189
|
-
- `AGENT_NOT_FOUND`: Private agent not visible to this principal
|
|
190
|
-
- `AGENT_ACCESS_DENIED`: Not authorized for this signal agent
|
|
191
|
-
|
|
192
|
-
Error responses include:
|
|
193
|
-
```json
|
|
194
|
-
{
|
|
195
|
-
"errors": [
|
|
196
|
-
{
|
|
197
|
-
"code": "DEPLOYMENT_UNAUTHORIZED",
|
|
198
|
-
"message": "Account not authorized for this data provider",
|
|
199
|
-
"field": "deployment.account",
|
|
200
|
-
"suggestion": "Contact your account manager to enable access"
|
|
201
|
-
}
|
|
202
|
-
]
|
|
203
|
-
}
|
|
204
|
-
```
|