@apostra/sdk 0.40.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.
- package/dist/cli-login.js +75 -19
- package/dist/generated/client.d.ts +18 -34
- package/dist/generated/client.js +18 -27
- package/dist/generated/metadata.d.ts +10 -24
- package/dist/generated/metadata.js +10 -29
- package/dist/generated/types.gen.d.ts +1799 -446
- package/package.json +2 -2
package/dist/cli-login.js
CHANGED
|
@@ -65,27 +65,39 @@ function parseEntry(value) {
|
|
|
65
65
|
if (!isRecord(value))
|
|
66
66
|
return undefined;
|
|
67
67
|
const text = ['issuer', 'resource', 'clientId', 'accessToken', 'refreshToken'];
|
|
68
|
+
const expiresAt = typeof value.expiresAt === 'string' &&
|
|
69
|
+
!Number.isNaN(Date.parse(value.expiresAt))
|
|
70
|
+
? new Date(value.expiresAt).toISOString()
|
|
71
|
+
: undefined;
|
|
68
72
|
if (!text.every((k) => typeof value[k] === 'string' && value[k]) ||
|
|
69
|
-
|
|
70
|
-
Number.isNaN(Date.parse(value.expiresAt)) ||
|
|
73
|
+
!expiresAt ||
|
|
71
74
|
typeof value.accountId !== 'string' ||
|
|
72
75
|
!Array.isArray(value.scopes) ||
|
|
73
76
|
!value.scopes.every((s) => typeof s === 'string'))
|
|
74
77
|
return undefined;
|
|
75
|
-
|
|
78
|
+
// Credential stores round-trip text. Canonicalise at their boundary so a
|
|
79
|
+
// value with sub-millisecond precision cannot oscillate between clients.
|
|
80
|
+
return { ...value, expiresAt };
|
|
76
81
|
}
|
|
77
|
-
function
|
|
82
|
+
function readFileStore() {
|
|
78
83
|
const { fs } = node();
|
|
79
84
|
try {
|
|
80
85
|
const file = JSON.parse(fs.readFileSync(credentialsPath(), 'utf8'));
|
|
81
|
-
|
|
86
|
+
if (!isRecord(file) || !isRecord(file.logins))
|
|
87
|
+
return { logins: {}, authoritative: new Set() };
|
|
88
|
+
return {
|
|
89
|
+
logins: file.logins,
|
|
90
|
+
authoritative: new Set(Array.isArray(file.authoritativeFileLogins)
|
|
91
|
+
? file.authoritativeFileLogins.filter((resource) => typeof resource === 'string')
|
|
92
|
+
: []),
|
|
93
|
+
};
|
|
82
94
|
}
|
|
83
95
|
catch {
|
|
84
|
-
return {};
|
|
96
|
+
return { logins: {}, authoritative: new Set() };
|
|
85
97
|
}
|
|
86
98
|
}
|
|
87
99
|
/** Atomic (temp file + rename), directory 0700, file 0600. */
|
|
88
|
-
function writeFileLogins(logins) {
|
|
100
|
+
function writeFileLogins(logins, authoritative = new Set()) {
|
|
89
101
|
const { fs, path } = node();
|
|
90
102
|
const file = credentialsPath();
|
|
91
103
|
const dir = path.dirname(file);
|
|
@@ -98,7 +110,17 @@ function writeFileLogins(logins) {
|
|
|
98
110
|
const temp = `${file}.${proc().pid}.${Math.random().toString(36).slice(2)}.tmp`;
|
|
99
111
|
const fd = fs.openSync(temp, 'wx', 0o600);
|
|
100
112
|
try {
|
|
101
|
-
fs.writeSync(fd, `${JSON.stringify({
|
|
113
|
+
fs.writeSync(fd, `${JSON.stringify({
|
|
114
|
+
version: 1,
|
|
115
|
+
logins,
|
|
116
|
+
...(authoritative.size > 0
|
|
117
|
+
? {
|
|
118
|
+
authoritativeFileLogins: [...authoritative]
|
|
119
|
+
.filter((resource) => resource in logins)
|
|
120
|
+
.sort(),
|
|
121
|
+
}
|
|
122
|
+
: {}),
|
|
123
|
+
}, null, 2)}\n`);
|
|
102
124
|
}
|
|
103
125
|
finally {
|
|
104
126
|
fs.closeSync(fd);
|
|
@@ -176,7 +198,8 @@ function warnFileFallback() {
|
|
|
176
198
|
*/
|
|
177
199
|
function migrateFileLogins(lockHeld = false) {
|
|
178
200
|
const { fs, path } = node();
|
|
179
|
-
const
|
|
201
|
+
const fileStore = readFileStore();
|
|
202
|
+
const fileLogins = fileStore.logins;
|
|
180
203
|
const entries = Object.entries(fileLogins).flatMap(([resource, value]) => {
|
|
181
204
|
const entry = parseEntry(value);
|
|
182
205
|
return entry ? [[resource, entry]] : [];
|
|
@@ -202,17 +225,30 @@ function migrateFileLogins(lockHeld = false) {
|
|
|
202
225
|
}
|
|
203
226
|
}
|
|
204
227
|
try {
|
|
228
|
+
const remaining = { ...fileLogins };
|
|
229
|
+
const remainingAuthoritative = new Set(fileStore.authoritative);
|
|
205
230
|
for (const [resource, entry] of entries) {
|
|
206
231
|
// A keyring value is authoritative: preserving it avoids overwriting a
|
|
207
232
|
// token another process has already refreshed during an interrupted
|
|
208
|
-
// earlier migration
|
|
233
|
+
// earlier migration, unless the protected fallback marks a replacement
|
|
234
|
+
// as authoritative after a failed secure-store rotation.
|
|
209
235
|
const stored = readSecureLogin(resource);
|
|
210
|
-
if (stored.entry)
|
|
236
|
+
if (!fileStore.authoritative.has(resource) && stored.entry) {
|
|
237
|
+
delete remaining[resource];
|
|
238
|
+
remainingAuthoritative.delete(resource);
|
|
211
239
|
continue;
|
|
212
|
-
|
|
240
|
+
}
|
|
241
|
+
if (!stored.available || !writeSecureLogin(resource, entry)) {
|
|
242
|
+
// Retain only entries that still need migration. Otherwise a
|
|
243
|
+
// successfully migrated authoritative login could shadow its next
|
|
244
|
+
// secure-store refresh while another login remains in the file.
|
|
245
|
+
writeFileLogins(remaining, remainingAuthoritative);
|
|
213
246
|
return false;
|
|
247
|
+
}
|
|
248
|
+
delete remaining[resource];
|
|
249
|
+
remainingAuthoritative.delete(resource);
|
|
214
250
|
}
|
|
215
|
-
|
|
251
|
+
writeFileLogins(remaining, remainingAuthoritative);
|
|
216
252
|
return true;
|
|
217
253
|
}
|
|
218
254
|
finally {
|
|
@@ -229,17 +265,24 @@ function migrateFileLogins(lockHeld = false) {
|
|
|
229
265
|
}
|
|
230
266
|
export function readCliLogin(baseUrl) {
|
|
231
267
|
const resource = normalizeBaseUrl(baseUrl);
|
|
268
|
+
const fileStore = readFileStore();
|
|
269
|
+
const fileEntry = parseEntry(fileStore.logins[resource]);
|
|
270
|
+
// A refresh token can rotate before a credential store reports an update
|
|
271
|
+
// failure. This marker makes its 0600 fallback authoritative over the now
|
|
272
|
+
// invalid secure-store value until a later read can migrate it safely.
|
|
273
|
+
if (fileStore.authoritative.has(resource) && fileEntry)
|
|
274
|
+
return fileEntry;
|
|
232
275
|
const secure = readSecureLogin(resource);
|
|
233
276
|
if (secure.entry)
|
|
234
277
|
return secure.entry;
|
|
235
|
-
const fileLogins =
|
|
278
|
+
const fileLogins = fileStore.logins;
|
|
236
279
|
if (Object.keys(fileLogins).length === 0)
|
|
237
280
|
return undefined;
|
|
238
281
|
if (migrateFileLogins())
|
|
239
282
|
return readSecureLogin(resource).entry;
|
|
240
283
|
if (!secure.available)
|
|
241
284
|
warnFileFallback();
|
|
242
|
-
return
|
|
285
|
+
return fileEntry;
|
|
243
286
|
}
|
|
244
287
|
/** Like `readCliLogin`, but never throws: for the SDK's default credential chain. */
|
|
245
288
|
export function storedCliLogin(baseUrl) {
|
|
@@ -360,13 +403,24 @@ export async function withCliLoginLock(fn) {
|
|
|
360
403
|
/** Save a login. Call inside `withCliLoginLock`. */
|
|
361
404
|
export function writeCliLogin(baseUrl, entry) {
|
|
362
405
|
const resource = normalizeBaseUrl(baseUrl);
|
|
406
|
+
const normalised = parseEntry(entry);
|
|
407
|
+
if (!normalised)
|
|
408
|
+
throw new TypeError('Apostra login is invalid');
|
|
363
409
|
// Callers hold the cross-process lock, so the legacy file cannot overwrite
|
|
364
410
|
// a rotated credential while it is being migrated.
|
|
365
411
|
migrateFileLogins(true);
|
|
366
|
-
|
|
412
|
+
const existing = readSecureLogin(resource);
|
|
413
|
+
if (writeSecureLogin(resource, normalised))
|
|
367
414
|
return;
|
|
368
415
|
warnFileFallback();
|
|
369
|
-
|
|
416
|
+
const fileStore = readFileStore();
|
|
417
|
+
// A refresh token may rotate while the OS credential store disappears. Its
|
|
418
|
+
// next read could reveal the older credential, so the protected fallback is
|
|
419
|
+
// authoritative both when we saw an old entry and when availability is
|
|
420
|
+
// unknown.
|
|
421
|
+
if (!existing.available || existing.entry)
|
|
422
|
+
fileStore.authoritative.add(resource);
|
|
423
|
+
writeFileLogins({ ...fileStore.logins, [resource]: normalised }, fileStore.authoritative);
|
|
370
424
|
}
|
|
371
425
|
async function send(fetcher, url, init = {}) {
|
|
372
426
|
return fetcher(url, {
|
|
@@ -530,8 +584,10 @@ export async function logoutCliLogin(baseUrl, { fetch: f = globalThis.fetch } =
|
|
|
530
584
|
// A prior fallback login can still be present even when the credential
|
|
531
585
|
// store has no entry (or is available again). Remove it unconditionally:
|
|
532
586
|
// otherwise its refresh token could be migrated back after logout.
|
|
533
|
-
const
|
|
534
|
-
|
|
587
|
+
const fileStore = readFileStore();
|
|
588
|
+
const { [key]: _removed, ...rest } = fileStore.logins;
|
|
589
|
+
fileStore.authoritative.delete(key);
|
|
590
|
+
writeFileLogins(rest, fileStore.authoritative);
|
|
535
591
|
return { found: true, revoked };
|
|
536
592
|
});
|
|
537
593
|
}
|
|
@@ -49,9 +49,6 @@ export type LogEventError = Wire.LogEventErrors[keyof Wire.LogEventErrors];
|
|
|
49
49
|
export type OpenAdvertisersPageInput = Wire.OpenAdvertisersPageData['body'];
|
|
50
50
|
export type OpenAdvertisersPageResult = Wire.OpenAdvertisersPageResponses[200]['data'];
|
|
51
51
|
export type OpenAdvertisersPageError = Wire.OpenAdvertisersPageErrors[keyof Wire.OpenAdvertisersPageErrors];
|
|
52
|
-
export type OpenAgentCertificationPageInput = Wire.OpenAgentCertificationPageData['body'];
|
|
53
|
-
export type OpenAgentCertificationPageResult = Wire.OpenAgentCertificationPageResponses[200]['data'];
|
|
54
|
-
export type OpenAgentCertificationPageError = Wire.OpenAgentCertificationPageErrors[keyof Wire.OpenAgentCertificationPageErrors];
|
|
55
52
|
export type OpenAgentPageInput = Wire.OpenAgentPageData['body'];
|
|
56
53
|
export type OpenAgentPageResult = Wire.OpenAgentPageResponses[200]['data'];
|
|
57
54
|
export type OpenAgentPageError = Wire.OpenAgentPageErrors[keyof Wire.OpenAgentPageErrors];
|
|
@@ -287,10 +284,6 @@ export interface OperationTypes {
|
|
|
287
284
|
input: OpenAdvertisersPageInput;
|
|
288
285
|
result: OpenAdvertisersPageResult;
|
|
289
286
|
};
|
|
290
|
-
"open_agent_certification_page": {
|
|
291
|
-
input: OpenAgentCertificationPageInput;
|
|
292
|
-
result: OpenAgentCertificationPageResult;
|
|
293
|
-
};
|
|
294
287
|
"open_agent_page": {
|
|
295
288
|
input: OpenAgentPageInput;
|
|
296
289
|
result: OpenAgentPageResult;
|
|
@@ -623,13 +616,13 @@ export declare class Apostra extends Transport {
|
|
|
623
616
|
/** 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. */
|
|
624
617
|
getSellerReportingReceiptsWithResponse(input: GetSellerReportingReceiptsInput, options?: RequestOptions): Promise<ResponseDetails<GetSellerReportingReceiptsResult>>;
|
|
625
618
|
/**
|
|
626
|
-
* Current account, state, blockers, exact fixes,
|
|
619
|
+
* 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.
|
|
627
620
|
*
|
|
628
621
|
* @example
|
|
629
622
|
* await client.getStatus(input)
|
|
630
623
|
*/
|
|
631
624
|
getStatus(input?: GetStatusInput, options?: RequestOptions): Promise<GetStatusResult>;
|
|
632
|
-
/** Current account, state, blockers, exact fixes,
|
|
625
|
+
/** 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. */
|
|
633
626
|
getStatusWithResponse(input?: GetStatusInput, options?: RequestOptions): Promise<ResponseDetails<GetStatusResult>>;
|
|
634
627
|
/**
|
|
635
628
|
* 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.
|
|
@@ -649,15 +642,6 @@ export declare class Apostra extends Transport {
|
|
|
649
642
|
openAdvertisersPage(input: OpenAdvertisersPageInput, options?: RequestOptions): Promise<OpenAdvertisersPageResult>;
|
|
650
643
|
/** 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. */
|
|
651
644
|
openAdvertisersPageWithResponse(input: OpenAdvertisersPageInput, options?: RequestOptions): Promise<ResponseDetails<OpenAdvertisersPageResult>>;
|
|
652
|
-
/**
|
|
653
|
-
* Open one agent’s Test & certify Page: live certification per use case, recent test runs, AdCP 4.0 readiness and capability declarations. Read-only.
|
|
654
|
-
*
|
|
655
|
-
* @example
|
|
656
|
-
* await client.openAgentCertificationPage(input)
|
|
657
|
-
*/
|
|
658
|
-
openAgentCertificationPage(input: OpenAgentCertificationPageInput, options?: RequestOptions): Promise<OpenAgentCertificationPageResult>;
|
|
659
|
-
/** 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. */
|
|
660
|
-
openAgentCertificationPageWithResponse(input: OpenAgentCertificationPageInput, options?: RequestOptions): Promise<ResponseDetails<OpenAgentCertificationPageResult>>;
|
|
661
645
|
/**
|
|
662
646
|
* Open one agent owned by this Developer account.
|
|
663
647
|
*
|
|
@@ -740,13 +724,13 @@ export declare class Apostra extends Transport {
|
|
|
740
724
|
/** 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. */
|
|
741
725
|
openCreativeEnginesPageWithResponse(input: OpenCreativeEnginesPageInput, options?: RequestOptions): Promise<ResponseDetails<OpenCreativeEnginesPageResult>>;
|
|
742
726
|
/**
|
|
743
|
-
* Open Creative Library. Use search for a plain object answer.
|
|
727
|
+
* 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.
|
|
744
728
|
*
|
|
745
729
|
* @example
|
|
746
730
|
* await client.openCreativeLibrary(input, { idempotencyKey: 'stable-key' })
|
|
747
731
|
*/
|
|
748
732
|
openCreativeLibrary(input: OpenCreativeLibraryInput, options: WriteRequestOptions): Promise<OpenCreativeLibraryResult>;
|
|
749
|
-
/** Open Creative Library. Use search for a plain object answer.
|
|
733
|
+
/** 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. */
|
|
750
734
|
openCreativeLibraryWithResponse(input: OpenCreativeLibraryInput, options: WriteRequestOptions): Promise<ResponseDetails<OpenCreativeLibraryResult>>;
|
|
751
735
|
/**
|
|
752
736
|
* Open the Developer home for this Developer account: its agents, their stages and what to do next.
|
|
@@ -812,13 +796,13 @@ export declare class Apostra extends Transport {
|
|
|
812
796
|
/** 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. */
|
|
813
797
|
openVariantGalleryWithResponse(input: OpenVariantGalleryInput, options?: RequestOptions): Promise<ResponseDetails<OpenVariantGalleryResult>>;
|
|
814
798
|
/**
|
|
815
|
-
* 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.
|
|
799
|
+
* 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.
|
|
816
800
|
*
|
|
817
801
|
* @example
|
|
818
802
|
* await client.refreshInventorySourceHealth(input, { idempotencyKey: 'stable-key' })
|
|
819
803
|
*/
|
|
820
804
|
refreshInventorySourceHealth(input: RefreshInventorySourceHealthInput, options: WriteRequestOptions): Promise<RefreshInventorySourceHealthResult>;
|
|
821
|
-
/** 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. */
|
|
805
|
+
/** 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. */
|
|
822
806
|
refreshInventorySourceHealthWithResponse(input: RefreshInventorySourceHealthInput, options: WriteRequestOptions): Promise<ResponseDetails<RefreshInventorySourceHealthResult>>;
|
|
823
807
|
/**
|
|
824
808
|
* 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.
|
|
@@ -911,13 +895,13 @@ export declare class Apostra extends Transport {
|
|
|
911
895
|
/** 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. */
|
|
912
896
|
saveAgentWithResponse(input: SaveAgentInput, options: WriteRequestOptions): Promise<ResponseDetails<SaveAgentResult>>;
|
|
913
897
|
/**
|
|
914
|
-
* 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.
|
|
898
|
+
* 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.
|
|
915
899
|
*
|
|
916
900
|
* @example
|
|
917
901
|
* await client.saveAsk(input, { idempotencyKey: 'stable-key' })
|
|
918
902
|
*/
|
|
919
903
|
saveAsk(input: SaveAskInput, options: WriteRequestOptions): Promise<SaveAskResult>;
|
|
920
|
-
/** 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. */
|
|
904
|
+
/** 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. */
|
|
921
905
|
saveAskWithResponse(input: SaveAskInput, options: WriteRequestOptions): Promise<ResponseDetails<SaveAskResult>>;
|
|
922
906
|
/**
|
|
923
907
|
* 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.
|
|
@@ -992,22 +976,22 @@ export declare class Apostra extends Transport {
|
|
|
992
976
|
/** 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. */
|
|
993
977
|
saveConnectionWithResponse(input: SaveConnectionInput, options: WriteRequestOptions): Promise<ResponseDetails<SaveConnectionResult>>;
|
|
994
978
|
/**
|
|
995
|
-
* Declare publisher domains this Seller sells and its claimed properties. `domains` replaces the complete set; `add`, `remove`, `declareProperties`, and `
|
|
979
|
+
* 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.
|
|
996
980
|
*
|
|
997
981
|
* @example
|
|
998
982
|
* await client.saveCoverage(input, { idempotencyKey: 'stable-key' })
|
|
999
983
|
*/
|
|
1000
984
|
saveCoverage(input: SaveCoverageInput, options: WriteRequestOptions): Promise<SaveCoverageResult>;
|
|
1001
|
-
/** Declare publisher domains this Seller sells and its claimed properties. `domains` replaces the complete set; `add`, `remove`, `declareProperties`, and `
|
|
985
|
+
/** 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. */
|
|
1002
986
|
saveCoverageWithResponse(input: SaveCoverageInput, options: WriteRequestOptions): Promise<ResponseDetails<SaveCoverageResult>>;
|
|
1003
987
|
/**
|
|
1004
|
-
* advertiserId/campaignId
|
|
988
|
+
* 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.
|
|
1005
989
|
*
|
|
1006
990
|
* @example
|
|
1007
991
|
* await client.saveCreative(input, { idempotencyKey: 'stable-key' })
|
|
1008
992
|
*/
|
|
1009
993
|
saveCreative(input: SaveCreativeInput, options: WriteRequestOptions): Promise<SaveCreativeResult>;
|
|
1010
|
-
/** advertiserId/campaignId
|
|
994
|
+
/** 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. */
|
|
1011
995
|
saveCreativeWithResponse(input: SaveCreativeInput, options: WriteRequestOptions): Promise<ResponseDetails<SaveCreativeResult>>;
|
|
1012
996
|
/**
|
|
1013
997
|
* 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.
|
|
@@ -1055,13 +1039,13 @@ export declare class Apostra extends Transport {
|
|
|
1055
1039
|
/** 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. */
|
|
1056
1040
|
saveEventSourceWithResponse(input: SaveEventSourceInput, options: WriteRequestOptions): Promise<ResponseDetails<SaveEventSourceResult>>;
|
|
1057
1041
|
/**
|
|
1058
|
-
* Create or update where a seller's inventory comes from. Pass `id` to change a source or omit it to add one.
|
|
1042
|
+
* 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.
|
|
1059
1043
|
*
|
|
1060
1044
|
* @example
|
|
1061
1045
|
* await client.saveInventorySource(input, { idempotencyKey: 'stable-key' })
|
|
1062
1046
|
*/
|
|
1063
1047
|
saveInventorySource(input: SaveInventorySourceInput, options: WriteRequestOptions): Promise<SaveInventorySourceResult>;
|
|
1064
|
-
/** Create or update where a seller's inventory comes from. Pass `id` to change a source or omit it to add one.
|
|
1048
|
+
/** 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. */
|
|
1065
1049
|
saveInventorySourceWithResponse(input: SaveInventorySourceInput, options: WriteRequestOptions): Promise<ResponseDetails<SaveInventorySourceResult>>;
|
|
1066
1050
|
/**
|
|
1067
1051
|
* 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.
|
|
@@ -1091,13 +1075,13 @@ export declare class Apostra extends Transport {
|
|
|
1091
1075
|
/** 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. */
|
|
1092
1076
|
saveMaterialWithResponse(input: SaveMaterialInput, options: WriteRequestOptions): Promise<ResponseDetails<SaveMaterialResult>>;
|
|
1093
1077
|
/**
|
|
1094
|
-
* Create DRAFT buy; no spend until confirmed. Meta: shared campaign=seller_optimized; ad sets=fixed; ask if unclear. Shared: omit
|
|
1078
|
+
* 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.
|
|
1095
1079
|
*
|
|
1096
1080
|
* @example
|
|
1097
1081
|
* await client.saveMediaBuy(input, { idempotencyKey: 'stable-key' })
|
|
1098
1082
|
*/
|
|
1099
1083
|
saveMediaBuy(input: SaveMediaBuyInput, options: WriteRequestOptions): Promise<SaveMediaBuyResult>;
|
|
1100
|
-
/** Create DRAFT buy; no spend until confirmed. Meta: shared campaign=seller_optimized; ad sets=fixed; ask if unclear. Shared: omit
|
|
1084
|
+
/** 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. */
|
|
1101
1085
|
saveMediaBuyWithResponse(input: SaveMediaBuyInput, options: WriteRequestOptions): Promise<ResponseDetails<SaveMediaBuyResult>>;
|
|
1102
1086
|
/**
|
|
1103
1087
|
* 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`.
|
|
@@ -1154,13 +1138,13 @@ export declare class Apostra extends Transport {
|
|
|
1154
1138
|
/** 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. */
|
|
1155
1139
|
saveRfpTurnWithResponse(input: SaveRfpTurnInput, options: WriteRequestOptions): Promise<ResponseDetails<SaveRfpTurnResult>>;
|
|
1156
1140
|
/**
|
|
1157
|
-
* Save Seller identity, capabilities,
|
|
1141
|
+
* 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.
|
|
1158
1142
|
*
|
|
1159
1143
|
* @example
|
|
1160
1144
|
* await client.saveSeller(input, { idempotencyKey: 'stable-key' })
|
|
1161
1145
|
*/
|
|
1162
1146
|
saveSeller(input: SaveSellerInput, options: WriteRequestOptions): Promise<SaveSellerResult>;
|
|
1163
|
-
/** Save Seller identity, capabilities,
|
|
1147
|
+
/** 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. */
|
|
1164
1148
|
saveSellerWithResponse(input: SaveSellerInput, options: WriteRequestOptions): Promise<ResponseDetails<SaveSellerResult>>;
|
|
1165
1149
|
/**
|
|
1166
1150
|
* Create, replace, or archive a signal. Managed writes need a complete draft; read before updates. Without sourceId, writes the seller catalog.
|
package/dist/generated/client.js
CHANGED
|
@@ -82,13 +82,13 @@ 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,
|
|
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,
|
|
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
93
|
/**
|
|
94
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.
|
|
@@ -108,15 +108,6 @@ export class Apostra extends Transport {
|
|
|
108
108
|
openAdvertisersPage(input, options) { return this.request("open_advertisers_page", input, options); }
|
|
109
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. */
|
|
110
110
|
openAdvertisersPageWithResponse(input, options) { return this.requestDetailed("open_advertisers_page", input, options); }
|
|
111
|
-
/**
|
|
112
|
-
* Open one agent’s Test & certify Page: live certification per use case, recent test runs, AdCP 4.0 readiness and capability declarations. Read-only.
|
|
113
|
-
*
|
|
114
|
-
* @example
|
|
115
|
-
* await client.openAgentCertificationPage(input)
|
|
116
|
-
*/
|
|
117
|
-
openAgentCertificationPage(input, options) { return this.request("open_agent_certification_page", input, options); }
|
|
118
|
-
/** 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. */
|
|
119
|
-
openAgentCertificationPageWithResponse(input, options) { return this.requestDetailed("open_agent_certification_page", input, options); }
|
|
120
111
|
/**
|
|
121
112
|
* Open one agent owned by this Developer account.
|
|
122
113
|
*
|
|
@@ -199,13 +190,13 @@ export class Apostra extends Transport {
|
|
|
199
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. */
|
|
200
191
|
openCreativeEnginesPageWithResponse(input, options) { return this.requestDetailed("open_creative_engines_page", input, options); }
|
|
201
192
|
/**
|
|
202
|
-
* Open Creative Library. Use search for a plain object answer.
|
|
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.
|
|
203
194
|
*
|
|
204
195
|
* @example
|
|
205
196
|
* await client.openCreativeLibrary(input, { idempotencyKey: 'stable-key' })
|
|
206
197
|
*/
|
|
207
198
|
openCreativeLibrary(input, options) { return this.request("open_creative_library", input, options); }
|
|
208
|
-
/** Open Creative Library. Use search for a plain object answer.
|
|
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. */
|
|
209
200
|
openCreativeLibraryWithResponse(input, options) { return this.requestDetailed("open_creative_library", input, options); }
|
|
210
201
|
/**
|
|
211
202
|
* Open the Developer home for this Developer account: its agents, their stages and what to do next.
|
|
@@ -271,13 +262,13 @@ export class Apostra extends Transport {
|
|
|
271
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. */
|
|
272
263
|
openVariantGalleryWithResponse(input, options) { return this.requestDetailed("open_variant_gallery", input, options); }
|
|
273
264
|
/**
|
|
274
|
-
* 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.
|
|
275
266
|
*
|
|
276
267
|
* @example
|
|
277
268
|
* await client.refreshInventorySourceHealth(input, { idempotencyKey: 'stable-key' })
|
|
278
269
|
*/
|
|
279
270
|
refreshInventorySourceHealth(input, options) { return this.request("refresh_inventory_source_health", input, options); }
|
|
280
|
-
/** 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. */
|
|
281
272
|
refreshInventorySourceHealthWithResponse(input, options) { return this.requestDetailed("refresh_inventory_source_health", input, options); }
|
|
282
273
|
/**
|
|
283
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.
|
|
@@ -370,13 +361,13 @@ export class Apostra extends Transport {
|
|
|
370
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. */
|
|
371
362
|
saveAgentWithResponse(input, options) { return this.requestDetailed("save_agent", input, options); }
|
|
372
363
|
/**
|
|
373
|
-
* 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.
|
|
374
365
|
*
|
|
375
366
|
* @example
|
|
376
367
|
* await client.saveAsk(input, { idempotencyKey: 'stable-key' })
|
|
377
368
|
*/
|
|
378
369
|
saveAsk(input, options) { return this.request("save_ask", input, options); }
|
|
379
|
-
/** 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. */
|
|
380
371
|
saveAskWithResponse(input, options) { return this.requestDetailed("save_ask", input, options); }
|
|
381
372
|
/**
|
|
382
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.
|
|
@@ -451,22 +442,22 @@ export class Apostra extends Transport {
|
|
|
451
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. */
|
|
452
443
|
saveConnectionWithResponse(input, options) { return this.requestDetailed("save_connection", input, options); }
|
|
453
444
|
/**
|
|
454
|
-
* Declare publisher domains this Seller sells and its claimed properties. `domains` replaces the complete set; `add`, `remove`, `declareProperties`, and `
|
|
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.
|
|
455
446
|
*
|
|
456
447
|
* @example
|
|
457
448
|
* await client.saveCoverage(input, { idempotencyKey: 'stable-key' })
|
|
458
449
|
*/
|
|
459
450
|
saveCoverage(input, options) { return this.request("save_coverage", input, options); }
|
|
460
|
-
/** Declare publisher domains this Seller sells and its claimed properties. `domains` replaces the complete set; `add`, `remove`, `declareProperties`, and `
|
|
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. */
|
|
461
452
|
saveCoverageWithResponse(input, options) { return this.requestDetailed("save_coverage", input, options); }
|
|
462
453
|
/**
|
|
463
|
-
* advertiserId/campaignId
|
|
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.
|
|
464
455
|
*
|
|
465
456
|
* @example
|
|
466
457
|
* await client.saveCreative(input, { idempotencyKey: 'stable-key' })
|
|
467
458
|
*/
|
|
468
459
|
saveCreative(input, options) { return this.request("save_creative", input, options); }
|
|
469
|
-
/** advertiserId/campaignId
|
|
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. */
|
|
470
461
|
saveCreativeWithResponse(input, options) { return this.requestDetailed("save_creative", input, options); }
|
|
471
462
|
/**
|
|
472
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.
|
|
@@ -514,13 +505,13 @@ export class Apostra extends Transport {
|
|
|
514
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. */
|
|
515
506
|
saveEventSourceWithResponse(input, options) { return this.requestDetailed("save_event_source", input, options); }
|
|
516
507
|
/**
|
|
517
|
-
* Create or update where a seller's inventory comes from. Pass `id` to change a source or omit it to add one.
|
|
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.
|
|
518
509
|
*
|
|
519
510
|
* @example
|
|
520
511
|
* await client.saveInventorySource(input, { idempotencyKey: 'stable-key' })
|
|
521
512
|
*/
|
|
522
513
|
saveInventorySource(input, options) { return this.request("save_inventory_source", input, options); }
|
|
523
|
-
/** Create or update where a seller's inventory comes from. Pass `id` to change a source or omit it to add one.
|
|
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. */
|
|
524
515
|
saveInventorySourceWithResponse(input, options) { return this.requestDetailed("save_inventory_source", input, options); }
|
|
525
516
|
/**
|
|
526
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.
|
|
@@ -550,13 +541,13 @@ export class Apostra extends Transport {
|
|
|
550
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. */
|
|
551
542
|
saveMaterialWithResponse(input, options) { return this.requestDetailed("save_material", input, options); }
|
|
552
543
|
/**
|
|
553
|
-
* Create DRAFT buy; no spend until confirmed. Meta: shared campaign=seller_optimized; ad sets=fixed; ask if unclear. Shared: omit
|
|
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.
|
|
554
545
|
*
|
|
555
546
|
* @example
|
|
556
547
|
* await client.saveMediaBuy(input, { idempotencyKey: 'stable-key' })
|
|
557
548
|
*/
|
|
558
549
|
saveMediaBuy(input, options) { return this.request("save_media_buy", input, options); }
|
|
559
|
-
/** Create DRAFT buy; no spend until confirmed. Meta: shared campaign=seller_optimized; ad sets=fixed; ask if unclear. Shared: omit
|
|
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. */
|
|
560
551
|
saveMediaBuyWithResponse(input, options) { return this.requestDetailed("save_media_buy", input, options); }
|
|
561
552
|
/**
|
|
562
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`.
|
|
@@ -613,13 +604,13 @@ export class Apostra extends Transport {
|
|
|
613
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. */
|
|
614
605
|
saveRfpTurnWithResponse(input, options) { return this.requestDetailed("save_rfp_turn", input, options); }
|
|
615
606
|
/**
|
|
616
|
-
* Save Seller identity, capabilities,
|
|
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.
|
|
617
608
|
*
|
|
618
609
|
* @example
|
|
619
610
|
* await client.saveSeller(input, { idempotencyKey: 'stable-key' })
|
|
620
611
|
*/
|
|
621
612
|
saveSeller(input, options) { return this.request("save_seller", input, options); }
|
|
622
|
-
/** Save Seller identity, capabilities,
|
|
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. */
|
|
623
614
|
saveSellerWithResponse(input, options) { return this.requestDetailed("save_seller", input, options); }
|
|
624
615
|
/**
|
|
625
616
|
* Create, replace, or archive a signal. Managed writes need a complete draft; read before updates. Without sourceId, writes the seller catalog.
|