@apostra/sdk 0.39.0 → 0.41.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.
@@ -82,14 +82,23 @@ export class Apostra extends Transport {
82
82
  /** Show a seller what reporting we received for one buyer media buy, whether each receipt was accepted, and the current computed daily totals. Opens the Media Buy Timeline Glance. Returns the data together with response headers and request ID. */
83
83
  getSellerReportingReceiptsWithResponse(input, options) { return this.requestDetailed("get_seller_reporting_receipts", input, options); }
84
84
  /**
85
- * Current account, state, blockers, exact fixes, and reachable accounts. For seller demand, use it to tell whether readiness stops requests before source calls; read before diagnosing source health, empty responses, or demand. A Developer account adds each agent's stage, blocker, and next call.
85
+ * Current account, state, blockers, exact fixes, accounts to pick from. For seller demand, tells if readiness stops requests before source calls; read before diagnosing source health, empty responses, or demand. A Developer account adds each agent's stage, blocker, next call.
86
86
  *
87
87
  * @example
88
88
  * await client.getStatus(input)
89
89
  */
90
90
  getStatus(input = {}, options) { return this.request("get_status", input, options); }
91
- /** Current account, state, blockers, exact fixes, and reachable accounts. For seller demand, use it to tell whether readiness stops requests before source calls; read before diagnosing source health, empty responses, or demand. A Developer account adds each agent's stage, blocker, and next call. Returns the data together with response headers and request ID. */
91
+ /** Current account, state, blockers, exact fixes, accounts to pick from. For seller demand, tells if readiness stops requests before source calls; read before diagnosing source health, empty responses, or demand. A Developer account adds each agent's stage, blocker, next call. Returns the data together with response headers and request ID. */
92
92
  getStatusWithResponse(input = {}, options) { return this.requestDetailed("get_status", input, options); }
93
+ /**
94
+ * Send up to 10,000 AdCP conversion events (log_event) to an event source the advertiser registered with save_event_source. Events must also pass the v2 rules: no raw email or phone in user_match, each event_type + event_id once per call. One invalid event refuses the whole call.
95
+ *
96
+ * @example
97
+ * await client.logEvent(input, { idempotencyKey: 'stable-key' })
98
+ */
99
+ logEvent(input, options) { return this.request("log_event", input, options); }
100
+ /** Send up to 10,000 AdCP conversion events (log_event) to an event source the advertiser registered with save_event_source. Events must also pass the v2 rules: no raw email or phone in user_match, each event_type + event_id once per call. One invalid event refuses the whole call. Returns the data together with response headers and request ID. */
101
+ logEventWithResponse(input, options) { return this.requestDetailed("log_event", input, options); }
93
102
  /**
94
103
  * Open the Advertisers Page: every advertiser with its campaign and draft counts and one next action each. Use it for "show my advertisers" or "where do I start"; the Page self-fetches. To add or set up an advertiser, pass intent: "add". For a text answer use search(kind: "advertiser").
95
104
  *
@@ -99,15 +108,6 @@ export class Apostra extends Transport {
99
108
  openAdvertisersPage(input, options) { return this.request("open_advertisers_page", input, options); }
100
109
  /** Open the Advertisers Page: every advertiser with its campaign and draft counts and one next action each. Use it for "show my advertisers" or "where do I start"; the Page self-fetches. To add or set up an advertiser, pass intent: "add". For a text answer use search(kind: "advertiser"). Returns the data together with response headers and request ID. */
101
110
  openAdvertisersPageWithResponse(input, options) { return this.requestDetailed("open_advertisers_page", input, options); }
102
- /**
103
- * Open one agent’s Test & certify Page: live certification per use case, recent test runs, AdCP 4.0 readiness and capability declarations. Read-only.
104
- *
105
- * @example
106
- * await client.openAgentCertificationPage(input)
107
- */
108
- openAgentCertificationPage(input, options) { return this.request("open_agent_certification_page", input, options); }
109
- /** Open one agent’s Test & certify Page: live certification per use case, recent test runs, AdCP 4.0 readiness and capability declarations. Read-only. Returns the data together with response headers and request ID. */
110
- openAgentCertificationPageWithResponse(input, options) { return this.requestDetailed("open_agent_certification_page", input, options); }
111
111
  /**
112
112
  * Open one agent owned by this Developer account.
113
113
  *
@@ -190,13 +190,13 @@ export class Apostra extends Transport {
190
190
  /** Open the buyer Creative Engines Page. Optionally focus an engine, connection, or its secure setup control; the buyer starts setup in the Page, and this does not authorize a provider or start generation. Returns the data together with response headers and request ID. */
191
191
  openCreativeEnginesPageWithResponse(input, options) { return this.requestDetailed("open_creative_engines_page", input, options); }
192
192
  /**
193
- * Open Creative Library. Use search for a plain object answer. Composer needs campaignId; assembly needs no Creative Engine. To save a draft, use exactly one format: a canonical format such as image, hosted video, or hosted audio, or a seller format.
193
+ * Open Creative Library. Use search for a plain object answer. The composer can start from an advertiser or a campaign and does not need a Creative Engine. To save a draft, use exactly one format: a canonical format such as image, hosted video, or hosted audio, or a seller format.
194
194
  *
195
195
  * @example
196
196
  * await client.openCreativeLibrary(input, { idempotencyKey: 'stable-key' })
197
197
  */
198
198
  openCreativeLibrary(input, options) { return this.request("open_creative_library", input, options); }
199
- /** Open Creative Library. Use search for a plain object answer. Composer needs campaignId; assembly needs no Creative Engine. To save a draft, use exactly one format: a canonical format such as image, hosted video, or hosted audio, or a seller format. Returns the data together with response headers and request ID. */
199
+ /** Open Creative Library. Use search for a plain object answer. The composer can start from an advertiser or a campaign and does not need a Creative Engine. To save a draft, use exactly one format: a canonical format such as image, hosted video, or hosted audio, or a seller format. Returns the data together with response headers and request ID. */
200
200
  openCreativeLibraryWithResponse(input, options) { return this.requestDetailed("open_creative_library", input, options); }
201
201
  /**
202
202
  * Open the Developer home for this Developer account: its agents, their stages and what to do next.
@@ -262,13 +262,13 @@ export class Apostra extends Transport {
262
262
  /** Show a saved Creative Session’s variants (find via search/get kind creative_session). Not for generating new variants. Returns the data together with response headers and request ID. */
263
263
  openVariantGalleryWithResponse(input, options) { return this.requestDetailed("open_variant_gallery", input, options); }
264
264
  /**
265
- * Rechecks one external sales-agent source with no-spend get_products and, if it publishes one, a catalog refresh. Returns each check, findings still open, evidence IDs and readiness; no source configuration or media buy.
265
+ * Rechecks one external sales-agent source with no-spend get_products and, if it publishes one, a catalog refresh. Returns each check, findings still open, evidence IDs and readiness; no source configuration or media buy. scope accounts re-lists the source's accounts instead.
266
266
  *
267
267
  * @example
268
268
  * await client.refreshInventorySourceHealth(input, { idempotencyKey: 'stable-key' })
269
269
  */
270
270
  refreshInventorySourceHealth(input, options) { return this.request("refresh_inventory_source_health", input, options); }
271
- /** Rechecks one external sales-agent source with no-spend get_products and, if it publishes one, a catalog refresh. Returns each check, findings still open, evidence IDs and readiness; no source configuration or media buy. Returns the data together with response headers and request ID. */
271
+ /** Rechecks one external sales-agent source with no-spend get_products and, if it publishes one, a catalog refresh. Returns each check, findings still open, evidence IDs and readiness; no source configuration or media buy. scope accounts re-lists the source's accounts instead. Returns the data together with response headers and request ID. */
272
272
  refreshInventorySourceHealthWithResponse(input, options) { return this.requestDetailed("refresh_inventory_source_health", input, options); }
273
273
  /**
274
274
  * Request a Buyer child under the selected Organization. Nothing is created until an Organization administrator approves it on our site; the result is approval_required with a link to show the person. Repeat with the same idempotencyKey and name for the outcome.
@@ -361,13 +361,13 @@ export class Apostra extends Transport {
361
361
  /** Confirm a Sales Agent product mode, register a Sales or Creative Agent, or update an owned Agent: rename it or allow certification buys. To connect from a URL, send agentUrl with dryRun: true, show what was read, then send it without dryRun. A connected agent is not yet verified as theirs. Returns the data together with response headers and request ID. */
362
362
  saveAgentWithResponse(input, options) { return this.requestDetailed("save_agent", input, options); }
363
363
  /**
364
- * File or update a typed ask in the Apostra Support workflow; returns askId. Supply is buyer inventory. Call immediately with type support when a person explicitly asks for a human; do not diagnose first.
364
+ * File or update a typed ask in the Apostra Support workflow; returns askId. kind create files a new ask; kind update sends only id and requester. Supply is buyer inventory. Call immediately with type support when a person explicitly asks for a human; do not diagnose first.
365
365
  *
366
366
  * @example
367
367
  * await client.saveAsk(input, { idempotencyKey: 'stable-key' })
368
368
  */
369
369
  saveAsk(input, options) { return this.request("save_ask", input, options); }
370
- /** File or update a typed ask in the Apostra Support workflow; returns askId. Supply is buyer inventory. Call immediately with type support when a person explicitly asks for a human; do not diagnose first. Returns the data together with response headers and request ID. */
370
+ /** File or update a typed ask in the Apostra Support workflow; returns askId. kind create files a new ask; kind update sends only id and requester. Supply is buyer inventory. Call immediately with type support when a person explicitly asks for a human; do not diagnose first. Returns the data together with response headers and request ID. */
371
371
  saveAskWithResponse(input, options) { return this.requestDetailed("save_ask", input, options); }
372
372
  /**
373
373
  * Sync first-party CRM audiences for a buyer advertiser. Each audiences[] item may add, remove, or delete members. Returns an operationId; use get(kind: audience, advertiserId: "...") to read match status after it settles.
@@ -379,13 +379,13 @@ export class Apostra extends Transport {
379
379
  /** Sync first-party CRM audiences for a buyer advertiser. Each audiences[] item may add, remove, or delete members. Returns an operationId; use get(kind: audience, advertiserId: "...") to read match status after it settles. Returns the data together with response headers and request ID. */
380
380
  saveAudienceWithResponse(input, options) { return this.requestDetailed("save_audience", input, options); }
381
381
  /**
382
- * Accept Terms, set the payment terms sellers are asked for, or accept a plan, answer its offer and change its renewal. Cards stay off MCP.
382
+ * Accept Terms, set the payment terms sellers are asked for, or accept a plan, answer its offer and change its renewal. Accepting a plan needs an administrator to approve it on our site. Cards stay off MCP.
383
383
  *
384
384
  * @example
385
385
  * await client.saveBilling(input, { idempotencyKey: 'stable-key' })
386
386
  */
387
387
  saveBilling(input, options) { return this.request("save_billing", input, options); }
388
- /** Accept Terms, set the payment terms sellers are asked for, or accept a plan, answer its offer and change its renewal. Cards stay off MCP. Returns the data together with response headers and request ID. */
388
+ /** Accept Terms, set the payment terms sellers are asked for, or accept a plan, answer its offer and change its renewal. Accepting a plan needs an administrator to approve it on our site. Cards stay off MCP. Returns the data together with response headers and request ID. */
389
389
  saveBillingWithResponse(input, options) { return this.requestDetailed("save_billing", input, options); }
390
390
  /**
391
391
  * Write seller AI Business Rules. Policy content needs an account admin and both policy fields. Approval auto needs acknowledgeNoHumanReview.
@@ -442,22 +442,22 @@ export class Apostra extends Transport {
442
442
  /** Manage seller or creative-engine authorization, accounts and advertiser mappings. Seller-only: reporting, selection, billing, policy, activation. Returns the data together with response headers and request ID. */
443
443
  saveConnectionWithResponse(input, options) { return this.requestDetailed("save_connection", input, options); }
444
444
  /**
445
- * Declare publisher domains this Seller sells and its claimed properties. `domains` replaces the complete set; `add`, `remove`, `declareProperties`, and `removeProperties` change named items only. Read authorization; never assume it.
445
+ * Declare publisher domains this Seller sells and its claimed properties. `domains` replaces the complete set; `add`, `remove`, `declareProperties`, `removeProperties`, and `refresh` act on named items only. Read authorization; never assume it.
446
446
  *
447
447
  * @example
448
448
  * await client.saveCoverage(input, { idempotencyKey: 'stable-key' })
449
449
  */
450
450
  saveCoverage(input, options) { return this.request("save_coverage", input, options); }
451
- /** Declare publisher domains this Seller sells and its claimed properties. `domains` replaces the complete set; `add`, `remove`, `declareProperties`, and `removeProperties` change named items only. Read authorization; never assume it. Returns the data together with response headers and request ID. */
451
+ /** Declare publisher domains this Seller sells and its claimed properties. `domains` replaces the complete set; `add`, `remove`, `declareProperties`, `removeProperties`, and `refresh` act on named items only. Read authorization; never assume it. Returns the data together with response headers and request ID. */
452
452
  saveCoverageWithResponse(input, options) { return this.requestDetailed("save_coverage", input, options); }
453
453
  /**
454
- * advertiserId/campaignId:name,message;assets/landing_page_url/social/sourceAssetRef/sourceAssets;Supplied content/assets only;generate new media (radio spots):save_creative_session;exactly one format selector:formatKind/formatParams,creativeFormatId/formatOptionRef;libraryRole:Buyer Account only.
454
+ * Save content you supply: advertiserId/campaignId, name, message, assets (landing_page_url, social, sourceAssetRef/sourceAssets). New media like radio spots: use save_creative_session. One format selector: formatKind+formatParams or creativeFormatId+formatOptionRef. libraryRole: Buyer Account only.
455
455
  *
456
456
  * @example
457
457
  * await client.saveCreative(input, { idempotencyKey: 'stable-key' })
458
458
  */
459
459
  saveCreative(input, options) { return this.request("save_creative", input, options); }
460
- /** advertiserId/campaignId:name,message;assets/landing_page_url/social/sourceAssetRef/sourceAssets;Supplied content/assets only;generate new media (radio spots):save_creative_session;exactly one format selector:formatKind/formatParams,creativeFormatId/formatOptionRef;libraryRole:Buyer Account only. Returns the data together with response headers and request ID. */
460
+ /** Save content you supply: advertiserId/campaignId, name, message, assets (landing_page_url, social, sourceAssetRef/sourceAssets). New media like radio spots: use save_creative_session. One format selector: formatKind+formatParams or creativeFormatId+formatOptionRef. libraryRole: Buyer Account only. Returns the data together with response headers and request ID. */
461
461
  saveCreativeWithResponse(input, options) { return this.requestDetailed("save_creative", input, options); }
462
462
  /**
463
463
  * Manage collections. Create with one owner and name: campaignId or advertiserId. Only advertiser mutations of an existing collection need expectedUpdatedAt; campaign writes and creates do not. isArchived archives or restores advertiser collections.
@@ -505,22 +505,22 @@ export class Apostra extends Transport {
505
505
  /** Create, change, archive, or restore up to 50 advertiser conversion event sources (pixels, server feeds). Each entry is keyed by eventSourceId and succeeds or fails alone. Setup is not proof events flow: check health with get, then use eventSourceId in an optimization goal. Returns the data together with response headers and request ID. */
506
506
  saveEventSourceWithResponse(input, options) { return this.requestDetailed("save_event_source", input, options); }
507
507
  /**
508
- * Create or update where a seller's inventory comes from. Pass `id` to change a source or omit it to add one. Pass only `agentId` or `adServer` to open the form that connects an agent or an ad server. Credentials are never passed here; a source that needs one returns the page that collects it.
508
+ * Create or update where a seller's inventory comes from. Pass `id` to change a source or omit it to add one. Add a sales agent with only `agentId`, never its address, or an ad server with only `adServer`; each opens a form. Credentials are never passed here; a source that needs one returns its form.
509
509
  *
510
510
  * @example
511
511
  * await client.saveInventorySource(input, { idempotencyKey: 'stable-key' })
512
512
  */
513
513
  saveInventorySource(input, options) { return this.request("save_inventory_source", input, options); }
514
- /** Create or update where a seller's inventory comes from. Pass `id` to change a source or omit it to add one. Pass only `agentId` or `adServer` to open the form that connects an agent or an ad server. Credentials are never passed here; a source that needs one returns the page that collects it. Returns the data together with response headers and request ID. */
514
+ /** Create or update where a seller's inventory comes from. Pass `id` to change a source or omit it to add one. Add a sales agent with only `agentId`, never its address, or an ad server with only `adServer`; each opens a form. Credentials are never passed here; a source that needs one returns its form. Returns the data together with response headers and request ID. */
515
515
  saveInventorySourceWithResponse(input, options) { return this.requestDetailed("save_inventory_source", input, options); }
516
516
  /**
517
- * Manage seller lessons in a seller account context; use switch_account first. propose requires lesson; approve and retire require lessonId; preview requires lessonId and brief. Preserve seller words from a private Session note and ask if kind or scope is unclear.
517
+ * Manage seller lessons in a seller account; send the accountId of that account. propose requires lesson; approve and retire require lessonId; preview requires lessonId and brief. Preserve seller words from a private Session note and ask if kind or scope is unclear.
518
518
  *
519
519
  * @example
520
520
  * await client.saveLesson(input, { idempotencyKey: 'stable-key' })
521
521
  */
522
522
  saveLesson(input, options) { return this.request("save_lesson", input, options); }
523
- /** Manage seller lessons in a seller account context; use switch_account first. propose requires lesson; approve and retire require lessonId; preview requires lessonId and brief. Preserve seller words from a private Session note and ask if kind or scope is unclear. Returns the data together with response headers and request ID. */
523
+ /** Manage seller lessons in a seller account; send the accountId of that account. propose requires lesson; approve and retire require lessonId; preview requires lessonId and brief. Preserve seller words from a private Session note and ask if kind or scope is unclear. Returns the data together with response headers and request ID. */
524
524
  saveLessonWithResponse(input, options) { return this.requestDetailed("save_lesson", input, options); }
525
525
  /**
526
526
  * Open a seller library request or close it with seller Material.
@@ -541,13 +541,13 @@ export class Apostra extends Transport {
541
541
  /** Create or update seller Materials. Seller beta: preview, delete, Undo deletion, or Include again for one imported Library document. Delete archives it, excludes its source until Include again, and purges it after 30 days. https://docs.apostra.com/v3/delete-from-apostra Returns the data together with response headers and request ID. */
542
542
  saveMaterialWithResponse(input, options) { return this.requestDetailed("save_material", input, options); }
543
543
  /**
544
- * Create DRAFT buy; no spend until confirmed. Meta: shared campaign=seller_optimized; ad sets=fixed; ask if unclear. Shared: omit buy/product budgets. Pause/resume: mediaBuyId + isPaused. Proposal: flight + total budget; omit products. channelGroupId: required if grouped; invalid ungrouped/updates.
544
+ * Create DRAFT buy; no spend until confirmed. Meta: shared campaign=seller_optimized; ad sets=fixed; ask if unclear. Shared: omit product budgets. Pause/resume: mediaBuyId + isPaused. Proposal: flight + total budget; omit products. channelGroupId: required if grouped; invalid ungrouped/updates.
545
545
  *
546
546
  * @example
547
547
  * await client.saveMediaBuy(input, { idempotencyKey: 'stable-key' })
548
548
  */
549
549
  saveMediaBuy(input, options) { return this.request("save_media_buy", input, options); }
550
- /** Create DRAFT buy; no spend until confirmed. Meta: shared campaign=seller_optimized; ad sets=fixed; ask if unclear. Shared: omit buy/product budgets. Pause/resume: mediaBuyId + isPaused. Proposal: flight + total budget; omit products. channelGroupId: required if grouped; invalid ungrouped/updates. Returns the data together with response headers and request ID. */
550
+ /** Create DRAFT buy; no spend until confirmed. Meta: shared campaign=seller_optimized; ad sets=fixed; ask if unclear. Shared: omit product budgets. Pause/resume: mediaBuyId + isPaused. Proposal: flight + total budget; omit products. channelGroupId: required if grouped; invalid ungrouped/updates. Returns the data together with response headers and request ID. */
551
551
  saveMediaBuyWithResponse(input, options) { return this.requestDetailed("save_media_buy", input, options); }
552
552
  /**
553
553
  * Deprecated compatibility tool ("listing" is the modern term). It writes only the legacy businessProfile and does not update the canonical buyer-visible listing. New clients must read with `get({ kind: "seller", include: ["listing"] })` and write with `save_seller`.
@@ -604,13 +604,13 @@ export class Apostra extends Transport {
604
604
  /** Change one RFP turn: release it, request or cancel a proposal file, append feedback, or record its outcome. One of these per call; revise, endorse and attach a response with save_rfp. Returns the data together with response headers and request ID. */
605
605
  saveRfpTurnWithResponse(input, options) { return this.requestDetailed("save_rfp_turn", input, options); }
606
606
  /**
607
- * Save Seller identity, capabilities, Apostra listing, buyer-visible listing (mediaKit is a deprecated alias), Distribution's OpenAI challenge token, an admission, or the intake hold. Scope3 eligibility and Market Maker entitlements are read-only here. Read Distribution with get(kind:"distribution").
607
+ * Save Seller identity, capabilities, buyer-visible listing (mediaKit is a deprecated alias), Distribution's OpenAI challenge token, an admission, the intake hold, or the demo's expiry and sample sources. Scope3 eligibility and Market Maker entitlements are read-only here. Read Distribution with get.
608
608
  *
609
609
  * @example
610
610
  * await client.saveSeller(input, { idempotencyKey: 'stable-key' })
611
611
  */
612
612
  saveSeller(input, options) { return this.request("save_seller", input, options); }
613
- /** Save Seller identity, capabilities, Apostra listing, buyer-visible listing (mediaKit is a deprecated alias), Distribution's OpenAI challenge token, an admission, or the intake hold. Scope3 eligibility and Market Maker entitlements are read-only here. Read Distribution with get(kind:"distribution"). Returns the data together with response headers and request ID. */
613
+ /** Save Seller identity, capabilities, buyer-visible listing (mediaKit is a deprecated alias), Distribution's OpenAI challenge token, an admission, the intake hold, or the demo's expiry and sample sources. Scope3 eligibility and Market Maker entitlements are read-only here. Read Distribution with get. Returns the data together with response headers and request ID. */
614
614
  saveSellerWithResponse(input, options) { return this.requestDetailed("save_seller", input, options); }
615
615
  /**
616
616
  * Create, replace, or archive a signal. Managed writes need a complete draft; read before updates. Without sourceId, writes the seller catalog.
@@ -1,4 +1,4 @@
1
- export declare const version = "0.39.0";
1
+ export declare const version = "0.41.0";
2
2
  export declare const baseUrl = "https://api.apostra.com/api/v3";
3
3
  export declare const m2mTokenUrl = "https://identity.scope3.com/oauth2/token";
4
4
  export declare const operations: {
@@ -178,24 +178,25 @@ export declare const operations: {
178
178
  }, {
179
179
  readonly m2mOAuth: readonly ["interchange:read"];
180
180
  }];
181
- readonly summary: "Current account, state, blockers, exact fixes, and reachable accounts. For seller demand, use it to tell whether readiness stops requests before source calls; read before diagnosing source health, empty responses, or demand. A Developer account adds each agent's stage, blocker, and next call.";
181
+ readonly summary: "Current account, state, blockers, exact fixes, accounts to pick from. For seller demand, tells if readiness stops requests before source calls; read before diagnosing source health, empty responses, or demand. A Developer account adds each agent's stage, blocker, next call.";
182
182
  };
183
- readonly open_advertisers_page: {
184
- readonly path: "/tools/open_advertisers_page";
183
+ readonly log_event: {
184
+ readonly path: "/tools/log_event";
185
185
  readonly method: "POST";
186
186
  readonly body: true;
187
187
  readonly binary: false;
188
- readonly idempotencyKey: false;
188
+ readonly idempotencyKey: true;
189
+ readonly bodyKeyField: "idempotencyKey";
189
190
  readonly parameters: readonly [];
190
191
  readonly security: readonly [{
191
192
  readonly apiKeyAuth: readonly [];
192
193
  }, {
193
- readonly m2mOAuth: readonly ["interchange:read"];
194
+ readonly m2mOAuth: readonly ["interchange:write"];
194
195
  }];
195
- readonly summary: "Open the Advertisers Page: every advertiser with its campaign and draft counts and one next action each. Use it for \"show my advertisers\" or \"where do I start\"; the Page self-fetches. To add or set up an advertiser, pass intent: \"add\". For a text answer use search(kind: \"advertiser\").";
196
+ readonly summary: "Send up to 10,000 AdCP conversion events (log_event) to an event source the advertiser registered with save_event_source. Events must also pass the v2 rules: no raw email or phone in user_match, each event_type + event_id once per call. One invalid event refuses the whole call.";
196
197
  };
197
- readonly open_agent_certification_page: {
198
- readonly path: "/tools/open_agent_certification_page";
198
+ readonly open_advertisers_page: {
199
+ readonly path: "/tools/open_advertisers_page";
199
200
  readonly method: "POST";
200
201
  readonly body: true;
201
202
  readonly binary: false;
@@ -206,7 +207,7 @@ export declare const operations: {
206
207
  }, {
207
208
  readonly m2mOAuth: readonly ["interchange:read"];
208
209
  }];
209
- readonly summary: "Open one agent’s Test & certify Page: live certification per use case, recent test runs, AdCP 4.0 readiness and capability declarations. Read-only.";
210
+ readonly summary: "Open the Advertisers Page: every advertiser with its campaign and draft counts and one next action each. Use it for \"show my advertisers\" or \"where do I start\"; the Page self-fetches. To add or set up an advertiser, pass intent: \"add\". For a text answer use search(kind: \"advertiser\").";
210
211
  };
211
212
  readonly open_agent_page: {
212
213
  readonly path: "/tools/open_agent_page";
@@ -346,7 +347,7 @@ export declare const operations: {
346
347
  }, {
347
348
  readonly m2mOAuth: readonly ["interchange:read"];
348
349
  }];
349
- readonly summary: "Open Creative Library. Use search for a plain object answer. Composer needs campaignId; assembly needs no Creative Engine. To save a draft, use exactly one format: a canonical format such as image, hosted video, or hosted audio, or a seller format.";
350
+ readonly summary: "Open Creative Library. Use search for a plain object answer. The composer can start from an advertiser or a campaign and does not need a Creative Engine. To save a draft, use exactly one format: a canonical format such as image, hosted video, or hosted audio, or a seller format.";
350
351
  };
351
352
  readonly open_developer_home: {
352
353
  readonly path: "/tools/open_developer_home";
@@ -458,7 +459,7 @@ export declare const operations: {
458
459
  }, {
459
460
  readonly m2mOAuth: readonly ["interchange:write"];
460
461
  }];
461
- readonly summary: "Rechecks one external sales-agent source with no-spend get_products and, if it publishes one, a catalog refresh. Returns each check, findings still open, evidence IDs and readiness; no source configuration or media buy.";
462
+ readonly summary: "Rechecks one external sales-agent source with no-spend get_products and, if it publishes one, a catalog refresh. Returns each check, findings still open, evidence IDs and readiness; no source configuration or media buy. scope accounts re-lists the source's accounts instead.";
462
463
  };
463
464
  readonly request_buyer_child_account: {
464
465
  readonly path: "/tools/request_buyer_child_account";
@@ -614,7 +615,7 @@ export declare const operations: {
614
615
  }, {
615
616
  readonly m2mOAuth: readonly ["interchange:read"];
616
617
  }];
617
- readonly summary: "File or update a typed ask in the Apostra Support workflow; returns askId. Supply is buyer inventory. Call immediately with type support when a person explicitly asks for a human; do not diagnose first.";
618
+ readonly summary: "File or update a typed ask in the Apostra Support workflow; returns askId. kind create files a new ask; kind update sends only id and requester. Supply is buyer inventory. Call immediately with type support when a person explicitly asks for a human; do not diagnose first.";
618
619
  };
619
620
  readonly save_audience: {
620
621
  readonly path: "/tools/save_audience";
@@ -642,7 +643,7 @@ export declare const operations: {
642
643
  }, {
643
644
  readonly m2mOAuth: readonly ["interchange:read"];
644
645
  }];
645
- readonly summary: "Accept Terms, set the payment terms sellers are asked for, or accept a plan, answer its offer and change its renewal. Cards stay off MCP.";
646
+ readonly summary: "Accept Terms, set the payment terms sellers are asked for, or accept a plan, answer its offer and change its renewal. Accepting a plan needs an administrator to approve it on our site. Cards stay off MCP.";
646
647
  };
647
648
  readonly save_business_rules: {
648
649
  readonly path: "/tools/save_business_rules";
@@ -742,7 +743,7 @@ export declare const operations: {
742
743
  }, {
743
744
  readonly m2mOAuth: readonly ["interchange:write"];
744
745
  }];
745
- readonly summary: "Declare publisher domains this Seller sells and its claimed properties. `domains` replaces the complete set; `add`, `remove`, `declareProperties`, and `removeProperties` change named items only. Read authorization; never assume it.";
746
+ readonly summary: "Declare publisher domains this Seller sells and its claimed properties. `domains` replaces the complete set; `add`, `remove`, `declareProperties`, `removeProperties`, and `refresh` act on named items only. Read authorization; never assume it.";
746
747
  };
747
748
  readonly save_creative: {
748
749
  readonly path: "/tools/save_creative";
@@ -756,7 +757,7 @@ export declare const operations: {
756
757
  }, {
757
758
  readonly m2mOAuth: readonly ["interchange:write"];
758
759
  }];
759
- readonly summary: "advertiserId/campaignId:name,message;assets/landing_page_url/social/sourceAssetRef/sourceAssets;Supplied content/assets only;generate new media (radio spots):save_creative_session;exactly one format selector:formatKind/formatParams,creativeFormatId/formatOptionRef;libraryRole:Buyer Account only.";
760
+ readonly summary: "Save content you supply: advertiserId/campaignId, name, message, assets (landing_page_url, social, sourceAssetRef/sourceAssets). New media like radio spots: use save_creative_session. One format selector: formatKind+formatParams or creativeFormatId+formatOptionRef. libraryRole: Buyer Account only.";
760
761
  };
761
762
  readonly save_creative_collection: {
762
763
  readonly path: "/tools/save_creative_collection";
@@ -842,7 +843,7 @@ export declare const operations: {
842
843
  }, {
843
844
  readonly m2mOAuth: readonly ["interchange:write"];
844
845
  }];
845
- readonly summary: "Create or update where a seller's inventory comes from. Pass `id` to change a source or omit it to add one. Pass only `agentId` or `adServer` to open the form that connects an agent or an ad server. Credentials are never passed here; a source that needs one returns the page that collects it.";
846
+ readonly summary: "Create or update where a seller's inventory comes from. Pass `id` to change a source or omit it to add one. Add a sales agent with only `agentId`, never its address, or an ad server with only `adServer`; each opens a form. Credentials are never passed here; a source that needs one returns its form.";
846
847
  };
847
848
  readonly save_lesson: {
848
849
  readonly path: "/tools/save_lesson";
@@ -856,7 +857,7 @@ export declare const operations: {
856
857
  }, {
857
858
  readonly m2mOAuth: readonly ["interchange:write"];
858
859
  }];
859
- readonly summary: "Manage seller lessons in a seller account context; use switch_account first. propose requires lesson; approve and retire require lessonId; preview requires lessonId and brief. Preserve seller words from a private Session note and ask if kind or scope is unclear.";
860
+ readonly summary: "Manage seller lessons in a seller account; send the accountId of that account. propose requires lesson; approve and retire require lessonId; preview requires lessonId and brief. Preserve seller words from a private Session note and ask if kind or scope is unclear.";
860
861
  };
861
862
  readonly save_library_request: {
862
863
  readonly path: "/tools/save_library_request";
@@ -899,7 +900,7 @@ export declare const operations: {
899
900
  }, {
900
901
  readonly m2mOAuth: readonly ["interchange:write"];
901
902
  }];
902
- readonly summary: "Create DRAFT buy; no spend until confirmed. Meta: shared campaign=seller_optimized; ad sets=fixed; ask if unclear. Shared: omit buy/product budgets. Pause/resume: mediaBuyId + isPaused. Proposal: flight + total budget; omit products. channelGroupId: required if grouped; invalid ungrouped/updates.";
903
+ readonly summary: "Create DRAFT buy; no spend until confirmed. Meta: shared campaign=seller_optimized; ad sets=fixed; ask if unclear. Shared: omit product budgets. Pause/resume: mediaBuyId + isPaused. Proposal: flight + total budget; omit products. channelGroupId: required if grouped; invalid ungrouped/updates.";
903
904
  };
904
905
  readonly save_media_kit: {
905
906
  readonly path: "/tools/save_media_kit";
@@ -999,7 +1000,7 @@ export declare const operations: {
999
1000
  }, {
1000
1001
  readonly m2mOAuth: readonly ["interchange:write"];
1001
1002
  }];
1002
- readonly summary: "Save Seller identity, capabilities, Apostra listing, buyer-visible listing (mediaKit is a deprecated alias), Distribution's OpenAI challenge token, an admission, or the intake hold. Scope3 eligibility and Market Maker entitlements are read-only here. Read Distribution with get(kind:\"distribution\").";
1003
+ readonly summary: "Save Seller identity, capabilities, buyer-visible listing (mediaKit is a deprecated alias), Distribution's OpenAI challenge token, an admission, the intake hold, or the demo's expiry and sample sources. Scope3 eligibility and Market Maker entitlements are read-only here. Read Distribution with get.";
1003
1004
  };
1004
1005
  readonly save_signal: {
1005
1006
  readonly path: "/tools/save_signal";
@@ -1,5 +1,5 @@
1
1
  // Generated. Do not edit.
2
- export const version = '0.39.0';
2
+ export const version = '0.41.0';
3
3
  export const baseUrl = "https://api.apostra.com/api/v3";
4
4
  export const m2mTokenUrl = "https://identity.scope3.com/oauth2/token";
5
5
  export const operations = {
@@ -244,14 +244,15 @@ export const operations = {
244
244
  ]
245
245
  }
246
246
  ],
247
- "summary": "Current account, state, blockers, exact fixes, and reachable accounts. For seller demand, use it to tell whether readiness stops requests before source calls; read before diagnosing source health, empty responses, or demand. A Developer account adds each agent's stage, blocker, and next call."
247
+ "summary": "Current account, state, blockers, exact fixes, accounts to pick from. For seller demand, tells if readiness stops requests before source calls; read before diagnosing source health, empty responses, or demand. A Developer account adds each agent's stage, blocker, next call."
248
248
  },
249
- "open_advertisers_page": {
250
- "path": "/tools/open_advertisers_page",
249
+ "log_event": {
250
+ "path": "/tools/log_event",
251
251
  "method": "POST",
252
252
  "body": true,
253
253
  "binary": false,
254
- "idempotencyKey": false,
254
+ "idempotencyKey": true,
255
+ "bodyKeyField": "idempotencyKey",
255
256
  "parameters": [],
256
257
  "security": [
257
258
  {
@@ -259,14 +260,14 @@ export const operations = {
259
260
  },
260
261
  {
261
262
  "m2mOAuth": [
262
- "interchange:read"
263
+ "interchange:write"
263
264
  ]
264
265
  }
265
266
  ],
266
- "summary": "Open the Advertisers Page: every advertiser with its campaign and draft counts and one next action each. Use it for \"show my advertisers\" or \"where do I start\"; the Page self-fetches. To add or set up an advertiser, pass intent: \"add\". For a text answer use search(kind: \"advertiser\")."
267
+ "summary": "Send up to 10,000 AdCP conversion events (log_event) to an event source the advertiser registered with save_event_source. Events must also pass the v2 rules: no raw email or phone in user_match, each event_type + event_id once per call. One invalid event refuses the whole call."
267
268
  },
268
- "open_agent_certification_page": {
269
- "path": "/tools/open_agent_certification_page",
269
+ "open_advertisers_page": {
270
+ "path": "/tools/open_advertisers_page",
270
271
  "method": "POST",
271
272
  "body": true,
272
273
  "binary": false,
@@ -282,7 +283,7 @@ export const operations = {
282
283
  ]
283
284
  }
284
285
  ],
285
- "summary": "Open one agent’s Test & certify Page: live certification per use case, recent test runs, AdCP 4.0 readiness and capability declarations. Read-only."
286
+ "summary": "Open the Advertisers Page: every advertiser with its campaign and draft counts and one next action each. Use it for \"show my advertisers\" or \"where do I start\"; the Page self-fetches. To add or set up an advertiser, pass intent: \"add\". For a text answer use search(kind: \"advertiser\")."
286
287
  },
287
288
  "open_agent_page": {
288
289
  "path": "/tools/open_agent_page",
@@ -472,7 +473,7 @@ export const operations = {
472
473
  ]
473
474
  }
474
475
  ],
475
- "summary": "Open Creative Library. Use search for a plain object answer. Composer needs campaignId; assembly needs no Creative Engine. To save a draft, use exactly one format: a canonical format such as image, hosted video, or hosted audio, or a seller format."
476
+ "summary": "Open Creative Library. Use search for a plain object answer. The composer can start from an advertiser or a campaign and does not need a Creative Engine. To save a draft, use exactly one format: a canonical format such as image, hosted video, or hosted audio, or a seller format."
476
477
  },
477
478
  "open_developer_home": {
478
479
  "path": "/tools/open_developer_home",
@@ -624,7 +625,7 @@ export const operations = {
624
625
  ]
625
626
  }
626
627
  ],
627
- "summary": "Rechecks one external sales-agent source with no-spend get_products and, if it publishes one, a catalog refresh. Returns each check, findings still open, evidence IDs and readiness; no source configuration or media buy."
628
+ "summary": "Rechecks one external sales-agent source with no-spend get_products and, if it publishes one, a catalog refresh. Returns each check, findings still open, evidence IDs and readiness; no source configuration or media buy. scope accounts re-lists the source's accounts instead."
628
629
  },
629
630
  "request_buyer_child_account": {
630
631
  "path": "/tools/request_buyer_child_account",
@@ -835,7 +836,7 @@ export const operations = {
835
836
  ]
836
837
  }
837
838
  ],
838
- "summary": "File or update a typed ask in the Apostra Support workflow; returns askId. Supply is buyer inventory. Call immediately with type support when a person explicitly asks for a human; do not diagnose first."
839
+ "summary": "File or update a typed ask in the Apostra Support workflow; returns askId. kind create files a new ask; kind update sends only id and requester. Supply is buyer inventory. Call immediately with type support when a person explicitly asks for a human; do not diagnose first."
839
840
  },
840
841
  "save_audience": {
841
842
  "path": "/tools/save_audience",
@@ -873,7 +874,7 @@ export const operations = {
873
874
  ]
874
875
  }
875
876
  ],
876
- "summary": "Accept Terms, set the payment terms sellers are asked for, or accept a plan, answer its offer and change its renewal. Cards stay off MCP."
877
+ "summary": "Accept Terms, set the payment terms sellers are asked for, or accept a plan, answer its offer and change its renewal. Accepting a plan needs an administrator to approve it on our site. Cards stay off MCP."
877
878
  },
878
879
  "save_business_rules": {
879
880
  "path": "/tools/save_business_rules",
@@ -1008,7 +1009,7 @@ export const operations = {
1008
1009
  ]
1009
1010
  }
1010
1011
  ],
1011
- "summary": "Declare publisher domains this Seller sells and its claimed properties. `domains` replaces the complete set; `add`, `remove`, `declareProperties`, and `removeProperties` change named items only. Read authorization; never assume it."
1012
+ "summary": "Declare publisher domains this Seller sells and its claimed properties. `domains` replaces the complete set; `add`, `remove`, `declareProperties`, `removeProperties`, and `refresh` act on named items only. Read authorization; never assume it."
1012
1013
  },
1013
1014
  "save_creative": {
1014
1015
  "path": "/tools/save_creative",
@@ -1027,7 +1028,7 @@ export const operations = {
1027
1028
  ]
1028
1029
  }
1029
1030
  ],
1030
- "summary": "advertiserId/campaignId:name,message;assets/landing_page_url/social/sourceAssetRef/sourceAssets;Supplied content/assets only;generate new media (radio spots):save_creative_session;exactly one format selector:formatKind/formatParams,creativeFormatId/formatOptionRef;libraryRole:Buyer Account only."
1031
+ "summary": "Save content you supply: advertiserId/campaignId, name, message, assets (landing_page_url, social, sourceAssetRef/sourceAssets). New media like radio spots: use save_creative_session. One format selector: formatKind+formatParams or creativeFormatId+formatOptionRef. libraryRole: Buyer Account only."
1031
1032
  },
1032
1033
  "save_creative_collection": {
1033
1034
  "path": "/tools/save_creative_collection",
@@ -1143,7 +1144,7 @@ export const operations = {
1143
1144
  ]
1144
1145
  }
1145
1146
  ],
1146
- "summary": "Create or update where a seller's inventory comes from. Pass `id` to change a source or omit it to add one. Pass only `agentId` or `adServer` to open the form that connects an agent or an ad server. Credentials are never passed here; a source that needs one returns the page that collects it."
1147
+ "summary": "Create or update where a seller's inventory comes from. Pass `id` to change a source or omit it to add one. Add a sales agent with only `agentId`, never its address, or an ad server with only `adServer`; each opens a form. Credentials are never passed here; a source that needs one returns its form."
1147
1148
  },
1148
1149
  "save_lesson": {
1149
1150
  "path": "/tools/save_lesson",
@@ -1162,7 +1163,7 @@ export const operations = {
1162
1163
  ]
1163
1164
  }
1164
1165
  ],
1165
- "summary": "Manage seller lessons in a seller account context; use switch_account first. propose requires lesson; approve and retire require lessonId; preview requires lessonId and brief. Preserve seller words from a private Session note and ask if kind or scope is unclear."
1166
+ "summary": "Manage seller lessons in a seller account; send the accountId of that account. propose requires lesson; approve and retire require lessonId; preview requires lessonId and brief. Preserve seller words from a private Session note and ask if kind or scope is unclear."
1166
1167
  },
1167
1168
  "save_library_request": {
1168
1169
  "path": "/tools/save_library_request",
@@ -1220,7 +1221,7 @@ export const operations = {
1220
1221
  ]
1221
1222
  }
1222
1223
  ],
1223
- "summary": "Create DRAFT buy; no spend until confirmed. Meta: shared campaign=seller_optimized; ad sets=fixed; ask if unclear. Shared: omit buy/product budgets. Pause/resume: mediaBuyId + isPaused. Proposal: flight + total budget; omit products. channelGroupId: required if grouped; invalid ungrouped/updates."
1224
+ "summary": "Create DRAFT buy; no spend until confirmed. Meta: shared campaign=seller_optimized; ad sets=fixed; ask if unclear. Shared: omit product budgets. Pause/resume: mediaBuyId + isPaused. Proposal: flight + total budget; omit products. channelGroupId: required if grouped; invalid ungrouped/updates."
1224
1225
  },
1225
1226
  "save_media_kit": {
1226
1227
  "path": "/tools/save_media_kit",
@@ -1355,7 +1356,7 @@ export const operations = {
1355
1356
  ]
1356
1357
  }
1357
1358
  ],
1358
- "summary": "Save Seller identity, capabilities, Apostra listing, buyer-visible listing (mediaKit is a deprecated alias), Distribution's OpenAI challenge token, an admission, or the intake hold. Scope3 eligibility and Market Maker entitlements are read-only here. Read Distribution with get(kind:\"distribution\")."
1359
+ "summary": "Save Seller identity, capabilities, buyer-visible listing (mediaKit is a deprecated alias), Distribution's OpenAI challenge token, an admission, the intake hold, or the demo's expiry and sample sources. Scope3 eligibility and Market Maker entitlements are read-only here. Read Distribution with get."
1359
1360
  },
1360
1361
  "save_signal": {
1361
1362
  "path": "/tools/save_signal",