@defoai/ads-client 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/dist/index.cjs +2914 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +2226 -0
  4. package/dist/index.d.ts +2061 -12
  5. package/dist/index.js +2892 -198
  6. package/dist/index.js.map +1 -0
  7. package/package.json +10 -7
  8. package/dist/generated/apis/AdAssetsApi.d.ts +0 -140
  9. package/dist/generated/apis/AdAssetsApi.js +0 -173
  10. package/dist/generated/apis/AdGroupsApi.d.ts +0 -165
  11. package/dist/generated/apis/AdGroupsApi.js +0 -205
  12. package/dist/generated/apis/AdsApi.d.ts +0 -160
  13. package/dist/generated/apis/AdsApi.js +0 -200
  14. package/dist/generated/apis/AssetsApi.d.ts +0 -162
  15. package/dist/generated/apis/AssetsApi.js +0 -203
  16. package/dist/generated/apis/CampaignAssetsApi.d.ts +0 -136
  17. package/dist/generated/apis/CampaignAssetsApi.js +0 -167
  18. package/dist/generated/apis/CampaignsApi.d.ts +0 -169
  19. package/dist/generated/apis/CampaignsApi.js +0 -206
  20. package/dist/generated/apis/KeywordsApi.d.ts +0 -160
  21. package/dist/generated/apis/KeywordsApi.js +0 -200
  22. package/dist/generated/apis/MediaApi.d.ts +0 -50
  23. package/dist/generated/apis/MediaApi.js +0 -51
  24. package/dist/generated/apis/MetaApi.d.ts +0 -86
  25. package/dist/generated/apis/MetaApi.js +0 -104
  26. package/dist/generated/apis/ReportsApi.d.ts +0 -50
  27. package/dist/generated/apis/ReportsApi.js +0 -51
  28. package/dist/generated/apis/SitesApi.d.ts +0 -163
  29. package/dist/generated/apis/SitesApi.js +0 -202
  30. package/dist/generated/apis/SyncApi.d.ts +0 -199
  31. package/dist/generated/apis/SyncApi.js +0 -241
  32. package/dist/generated/apis/index.d.ts +0 -12
  33. package/dist/generated/apis/index.js +0 -14
  34. package/dist/generated/index.d.ts +0 -3
  35. package/dist/generated/index.js +0 -5
  36. package/dist/generated/models/AdAssetCreate.d.ts +0 -83
  37. package/dist/generated/models/AdAssetCreate.js +0 -76
  38. package/dist/generated/models/AdCreate.d.ts +0 -147
  39. package/dist/generated/models/AdCreate.js +0 -97
  40. package/dist/generated/models/AdGroupAudience.d.ts +0 -44
  41. package/dist/generated/models/AdGroupAudience.js +0 -49
  42. package/dist/generated/models/AdGroupCreate.d.ts +0 -104
  43. package/dist/generated/models/AdGroupCreate.js +0 -74
  44. package/dist/generated/models/AdGroupUpdate.d.ts +0 -104
  45. package/dist/generated/models/AdGroupUpdate.js +0 -70
  46. package/dist/generated/models/AdUpdate.d.ts +0 -147
  47. package/dist/generated/models/AdUpdate.js +0 -85
  48. package/dist/generated/models/AssetCreate.d.ts +0 -117
  49. package/dist/generated/models/AssetCreate.js +0 -80
  50. package/dist/generated/models/AssetUpdate.d.ts +0 -79
  51. package/dist/generated/models/AssetUpdate.js +0 -61
  52. package/dist/generated/models/BiddingStrategy.d.ts +0 -70
  53. package/dist/generated/models/BiddingStrategy.js +0 -62
  54. package/dist/generated/models/CampaignAdScheduleField.d.ts +0 -12
  55. package/dist/generated/models/CampaignAdScheduleField.js +0 -4
  56. package/dist/generated/models/CampaignAssetCreate.d.ts +0 -57
  57. package/dist/generated/models/CampaignAssetCreate.js +0 -63
  58. package/dist/generated/models/CampaignCreate.d.ts +0 -161
  59. package/dist/generated/models/CampaignCreate.js +0 -102
  60. package/dist/generated/models/CampaignTargeting.d.ts +0 -50
  61. package/dist/generated/models/CampaignTargeting.js +0 -47
  62. package/dist/generated/models/CampaignUpdate.d.ts +0 -161
  63. package/dist/generated/models/CampaignUpdate.js +0 -98
  64. package/dist/generated/models/CampaignsListCursorParameter.d.ts +0 -26
  65. package/dist/generated/models/CampaignsListCursorParameter.js +0 -31
  66. package/dist/generated/models/ErrorEnvelope.d.ts +0 -33
  67. package/dist/generated/models/ErrorEnvelope.js +0 -44
  68. package/dist/generated/models/ErrorEnvelopeError.d.ts +0 -44
  69. package/dist/generated/models/ErrorEnvelopeError.js +0 -49
  70. package/dist/generated/models/KeywordCreate.d.ts +0 -86
  71. package/dist/generated/models/KeywordCreate.js +0 -73
  72. package/dist/generated/models/KeywordUpdate.d.ts +0 -86
  73. package/dist/generated/models/KeywordUpdate.js +0 -69
  74. package/dist/generated/models/Location.d.ts +0 -61
  75. package/dist/generated/models/Location.js +0 -61
  76. package/dist/generated/models/NegativeKeywordEntry.d.ts +0 -47
  77. package/dist/generated/models/NegativeKeywordEntry.js +0 -55
  78. package/dist/generated/models/ScheduleWindow.d.ts +0 -95
  79. package/dist/generated/models/ScheduleWindow.js +0 -87
  80. package/dist/generated/models/SiteCreate.d.ts +0 -99
  81. package/dist/generated/models/SiteCreate.js +0 -78
  82. package/dist/generated/models/SiteCreateSeoKeywords.d.ts +0 -11
  83. package/dist/generated/models/SiteCreateSeoKeywords.js +0 -12
  84. package/dist/generated/models/SiteCreateTargetGroups.d.ts +0 -11
  85. package/dist/generated/models/SiteCreateTargetGroups.js +0 -12
  86. package/dist/generated/models/SiteLinkEntry.d.ts +0 -50
  87. package/dist/generated/models/SiteLinkEntry.js +0 -47
  88. package/dist/generated/models/SiteUpdate.d.ts +0 -99
  89. package/dist/generated/models/SiteUpdate.js +0 -74
  90. package/dist/generated/models/Sitelink.d.ts +0 -64
  91. package/dist/generated/models/Sitelink.js +0 -51
  92. package/dist/generated/models/StructuredSchedule.d.ts +0 -39
  93. package/dist/generated/models/StructuredSchedule.js +0 -46
  94. package/dist/generated/models/StructuredSnippet.d.ts +0 -38
  95. package/dist/generated/models/StructuredSnippet.js +0 -47
  96. package/dist/generated/models/SuccessEnvelope.d.ts +0 -39
  97. package/dist/generated/models/SuccessEnvelope.js +0 -46
  98. package/dist/generated/models/SuccessEnvelopeMeta.d.ts +0 -39
  99. package/dist/generated/models/SuccessEnvelopeMeta.js +0 -44
  100. package/dist/generated/models/SuccessEnvelopeMetaNextCursor.d.ts +0 -26
  101. package/dist/generated/models/SuccessEnvelopeMetaNextCursor.js +0 -31
  102. package/dist/generated/models/SyncCampaignDetail.d.ts +0 -88
  103. package/dist/generated/models/SyncCampaignDetail.js +0 -71
  104. package/dist/generated/models/SyncPlan.d.ts +0 -35
  105. package/dist/generated/models/SyncPlan.js +0 -43
  106. package/dist/generated/models/SyncPlanPlatformsValue.d.ts +0 -33
  107. package/dist/generated/models/SyncPlanPlatformsValue.js +0 -42
  108. package/dist/generated/models/SyncPlanPlatformsValueTotals.d.ts +0 -44
  109. package/dist/generated/models/SyncPlanPlatformsValueTotals.js +0 -45
  110. package/dist/generated/models/SyncProgress.d.ts +0 -57
  111. package/dist/generated/models/SyncProgress.js +0 -50
  112. package/dist/generated/models/SyncRecord.d.ts +0 -103
  113. package/dist/generated/models/SyncRecord.js +0 -73
  114. package/dist/generated/models/SyncRecordErrorsInner.d.ts +0 -38
  115. package/dist/generated/models/SyncRecordErrorsInner.js +0 -43
  116. package/dist/generated/models/SyncTotals.d.ts +0 -68
  117. package/dist/generated/models/SyncTotals.js +0 -53
  118. package/dist/generated/models/SyncTriggerRequest.d.ts +0 -39
  119. package/dist/generated/models/SyncTriggerRequest.js +0 -44
  120. package/dist/generated/models/SyncTriggerRequestOptions.d.ts +0 -56
  121. package/dist/generated/models/SyncTriggerRequestOptions.js +0 -49
  122. package/dist/generated/models/SyncTriggerResponse.d.ts +0 -59
  123. package/dist/generated/models/SyncTriggerResponse.js +0 -55
  124. package/dist/generated/models/SyncUnlinkRequest.d.ts +0 -44
  125. package/dist/generated/models/SyncUnlinkRequest.js +0 -47
  126. package/dist/generated/models/index.d.ts +0 -45
  127. package/dist/generated/models/index.js +0 -47
  128. package/dist/generated/runtime.d.ts +0 -182
  129. package/dist/generated/runtime.js +0 -318
package/dist/index.cjs ADDED
@@ -0,0 +1,2914 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ // src/generated/runtime.ts
6
+ var BASE_PATH = "https://api.ads.defoai.com".replace(/\/+$/, "");
7
+ var Configuration = class {
8
+ constructor(configuration = {}) {
9
+ this.configuration = configuration;
10
+ }
11
+ set config(configuration) {
12
+ this.configuration = configuration;
13
+ }
14
+ get basePath() {
15
+ return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;
16
+ }
17
+ get fetchApi() {
18
+ return this.configuration.fetchApi;
19
+ }
20
+ get middleware() {
21
+ return this.configuration.middleware || [];
22
+ }
23
+ get queryParamsStringify() {
24
+ return this.configuration.queryParamsStringify || querystring;
25
+ }
26
+ get username() {
27
+ return this.configuration.username;
28
+ }
29
+ get password() {
30
+ return this.configuration.password;
31
+ }
32
+ get apiKey() {
33
+ const apiKey = this.configuration.apiKey;
34
+ if (apiKey) {
35
+ return typeof apiKey === "function" ? apiKey : () => apiKey;
36
+ }
37
+ return void 0;
38
+ }
39
+ get accessToken() {
40
+ const accessToken = this.configuration.accessToken;
41
+ if (accessToken) {
42
+ return typeof accessToken === "function" ? accessToken : async () => accessToken;
43
+ }
44
+ return void 0;
45
+ }
46
+ get headers() {
47
+ return this.configuration.headers;
48
+ }
49
+ get credentials() {
50
+ return this.configuration.credentials;
51
+ }
52
+ };
53
+ var DefaultConfig = new Configuration();
54
+ var _BaseAPI = class _BaseAPI {
55
+ constructor(configuration = DefaultConfig) {
56
+ this.configuration = configuration;
57
+ this.fetchApi = async (url, init) => {
58
+ let fetchParams = { url, init };
59
+ for (const middleware of this.middleware) {
60
+ if (middleware.pre) {
61
+ fetchParams = await middleware.pre({
62
+ fetch: this.fetchApi,
63
+ ...fetchParams
64
+ }) || fetchParams;
65
+ }
66
+ }
67
+ let response = void 0;
68
+ try {
69
+ response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);
70
+ } catch (e) {
71
+ for (const middleware of this.middleware) {
72
+ if (middleware.onError) {
73
+ response = await middleware.onError({
74
+ fetch: this.fetchApi,
75
+ url: fetchParams.url,
76
+ init: fetchParams.init,
77
+ error: e,
78
+ response: response ? response.clone() : void 0
79
+ }) || response;
80
+ }
81
+ }
82
+ if (response === void 0) {
83
+ if (e instanceof Error) {
84
+ throw new FetchError(e, "The request failed and the interceptors did not return an alternative response");
85
+ } else {
86
+ throw e;
87
+ }
88
+ }
89
+ }
90
+ for (const middleware of this.middleware) {
91
+ if (middleware.post) {
92
+ response = await middleware.post({
93
+ fetch: this.fetchApi,
94
+ url: fetchParams.url,
95
+ init: fetchParams.init,
96
+ response: response.clone()
97
+ }) || response;
98
+ }
99
+ }
100
+ return response;
101
+ };
102
+ this.middleware = configuration.middleware;
103
+ }
104
+ withMiddleware(...middlewares) {
105
+ const next = this.clone();
106
+ next.middleware = next.middleware.concat(...middlewares);
107
+ return next;
108
+ }
109
+ withPreMiddleware(...preMiddlewares) {
110
+ const middlewares = preMiddlewares.map((pre) => ({ pre }));
111
+ return this.withMiddleware(...middlewares);
112
+ }
113
+ withPostMiddleware(...postMiddlewares) {
114
+ const middlewares = postMiddlewares.map((post) => ({ post }));
115
+ return this.withMiddleware(...middlewares);
116
+ }
117
+ /**
118
+ * Check if the given MIME is a JSON MIME.
119
+ * JSON MIME examples:
120
+ * application/json
121
+ * application/json; charset=UTF8
122
+ * APPLICATION/JSON
123
+ * application/vnd.company+json
124
+ * @param mime - MIME (Multipurpose Internet Mail Extensions)
125
+ * @return True if the given MIME is JSON, false otherwise.
126
+ */
127
+ isJsonMime(mime) {
128
+ if (!mime) {
129
+ return false;
130
+ }
131
+ return _BaseAPI.jsonRegex.test(mime);
132
+ }
133
+ async request(context, initOverrides) {
134
+ const { url, init } = await this.createFetchParams(context, initOverrides);
135
+ const response = await this.fetchApi(url, init);
136
+ if (response && (response.status >= 200 && response.status < 300)) {
137
+ return response;
138
+ }
139
+ throw new ResponseError(response, "Response returned an error code");
140
+ }
141
+ async createFetchParams(context, initOverrides) {
142
+ let url = this.configuration.basePath + context.path;
143
+ if (context.query !== void 0 && Object.keys(context.query).length !== 0) {
144
+ url += "?" + this.configuration.queryParamsStringify(context.query);
145
+ }
146
+ const headers = Object.assign({}, this.configuration.headers, context.headers);
147
+ Object.keys(headers).forEach((key) => headers[key] === void 0 ? delete headers[key] : {});
148
+ const initOverrideFn = typeof initOverrides === "function" ? initOverrides : async () => initOverrides;
149
+ const initParams = {
150
+ method: context.method,
151
+ headers,
152
+ body: context.body,
153
+ credentials: this.configuration.credentials
154
+ };
155
+ const overriddenInit = {
156
+ ...initParams,
157
+ ...await initOverrideFn({
158
+ init: initParams,
159
+ context
160
+ })
161
+ };
162
+ let body;
163
+ if (isFormData(overriddenInit.body) || overriddenInit.body instanceof URLSearchParams || isBlob(overriddenInit.body)) {
164
+ body = overriddenInit.body;
165
+ } else if (this.isJsonMime(headers["Content-Type"])) {
166
+ body = JSON.stringify(overriddenInit.body);
167
+ } else {
168
+ body = overriddenInit.body;
169
+ }
170
+ const init = {
171
+ ...overriddenInit,
172
+ body
173
+ };
174
+ return { url, init };
175
+ }
176
+ /**
177
+ * Create a shallow clone of `this` by constructing a new instance
178
+ * and then shallow cloning data members.
179
+ */
180
+ clone() {
181
+ const constructor = this.constructor;
182
+ const next = new constructor(this.configuration);
183
+ next.middleware = this.middleware.slice();
184
+ return next;
185
+ }
186
+ };
187
+ _BaseAPI.jsonRegex = new RegExp("^(:?application/json|[^;/ ]+/[^;/ ]+[+]json)[ ]*(:?;.*)?$", "i");
188
+ var BaseAPI = _BaseAPI;
189
+ function isBlob(value) {
190
+ return typeof Blob !== "undefined" && value instanceof Blob;
191
+ }
192
+ function isFormData(value) {
193
+ return typeof FormData !== "undefined" && value instanceof FormData;
194
+ }
195
+ var ResponseError = class extends Error {
196
+ constructor(response, msg) {
197
+ super(msg);
198
+ this.response = response;
199
+ this.name = "ResponseError";
200
+ }
201
+ };
202
+ var FetchError = class extends Error {
203
+ constructor(cause, msg) {
204
+ super(msg);
205
+ this.cause = cause;
206
+ this.name = "FetchError";
207
+ }
208
+ };
209
+ var RequiredError = class extends Error {
210
+ constructor(field, msg) {
211
+ super(msg);
212
+ this.field = field;
213
+ this.name = "RequiredError";
214
+ }
215
+ };
216
+ function querystring(params, prefix = "") {
217
+ return Object.keys(params).map((key) => querystringSingleKey(key, params[key], prefix)).filter((part) => part.length > 0).join("&");
218
+ }
219
+ function querystringSingleKey(key, value, keyPrefix = "") {
220
+ const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);
221
+ if (value instanceof Array) {
222
+ const multiValue = value.map((singleValue) => encodeURIComponent(String(singleValue))).join(`&${encodeURIComponent(fullKey)}=`);
223
+ return `${encodeURIComponent(fullKey)}=${multiValue}`;
224
+ }
225
+ if (value instanceof Set) {
226
+ const valueAsArray = Array.from(value);
227
+ return querystringSingleKey(key, valueAsArray, keyPrefix);
228
+ }
229
+ if (value instanceof Date) {
230
+ return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;
231
+ }
232
+ if (value instanceof Object) {
233
+ return querystring(value, fullKey);
234
+ }
235
+ return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;
236
+ }
237
+ var JSONApiResponse = class {
238
+ constructor(raw, transformer = (jsonValue) => jsonValue) {
239
+ this.raw = raw;
240
+ this.transformer = transformer;
241
+ }
242
+ async value() {
243
+ return this.transformer(await this.raw.json());
244
+ }
245
+ };
246
+
247
+ // src/generated/models/AdAssetCreate.ts
248
+ function AdAssetCreateToJSON(json) {
249
+ return AdAssetCreateToJSONTyped(json, false);
250
+ }
251
+ function AdAssetCreateToJSONTyped(value, ignoreDiscriminator = false) {
252
+ if (value == null) {
253
+ return value;
254
+ }
255
+ return {
256
+ "scope": value["scope"],
257
+ "adId": value["adId"],
258
+ "adGroupId": value["adGroupId"],
259
+ "campaignId": value["campaignId"],
260
+ "assetId": value["assetId"],
261
+ "role": value["role"]
262
+ };
263
+ }
264
+
265
+ // src/generated/models/Sitelink.ts
266
+ function SitelinkToJSON(json) {
267
+ return SitelinkToJSONTyped(json, false);
268
+ }
269
+ function SitelinkToJSONTyped(value, ignoreDiscriminator = false) {
270
+ if (value == null) {
271
+ return value;
272
+ }
273
+ return {
274
+ "text": value["text"],
275
+ "url": value["url"],
276
+ "description1": value["description1"],
277
+ "description2": value["description2"],
278
+ "trackingUrlTemplate": value["trackingUrlTemplate"],
279
+ "urlCustomParameters": value["urlCustomParameters"]
280
+ };
281
+ }
282
+
283
+ // src/generated/models/StructuredSnippet.ts
284
+ function StructuredSnippetToJSON(json) {
285
+ return StructuredSnippetToJSONTyped(json, false);
286
+ }
287
+ function StructuredSnippetToJSONTyped(value, ignoreDiscriminator = false) {
288
+ if (value == null) {
289
+ return value;
290
+ }
291
+ return {
292
+ "header": value["header"],
293
+ "values": value["values"]
294
+ };
295
+ }
296
+
297
+ // src/generated/models/AdCreate.ts
298
+ function AdCreateToJSON(json) {
299
+ return AdCreateToJSONTyped(json, false);
300
+ }
301
+ function AdCreateToJSONTyped(value, ignoreDiscriminator = false) {
302
+ if (value == null) {
303
+ return value;
304
+ }
305
+ return {
306
+ "adGroupId": value["adGroupId"],
307
+ "campaignId": value["campaignId"],
308
+ "headlinePart1": value["headlinePart1"],
309
+ "headlinePart2": value["headlinePart2"],
310
+ "headlinePart3": value["headlinePart3"],
311
+ "description": value["description"],
312
+ "description2": value["description2"],
313
+ "finalUrl": value["finalUrl"],
314
+ "path1": value["path1"],
315
+ "path2": value["path2"],
316
+ "status": value["status"],
317
+ "sitelinks": value["sitelinks"] == null ? void 0 : value["sitelinks"].map(SitelinkToJSON),
318
+ "callouts": value["callouts"],
319
+ "structuredSnippets": value["structuredSnippets"] == null ? void 0 : value["structuredSnippets"].map(StructuredSnippetToJSON),
320
+ "customLabels": value["customLabels"],
321
+ "trackingUrlTemplate": value["trackingUrlTemplate"],
322
+ "finalUrlSuffix": value["finalUrlSuffix"],
323
+ "urlCustomParameters": value["urlCustomParameters"]
324
+ };
325
+ }
326
+
327
+ // src/generated/models/AdGroupAudience.ts
328
+ function AdGroupAudienceToJSON(json) {
329
+ return AdGroupAudienceToJSONTyped(json, false);
330
+ }
331
+ function AdGroupAudienceToJSONTyped(value, ignoreDiscriminator = false) {
332
+ if (value == null) {
333
+ return value;
334
+ }
335
+ return {
336
+ "type": value["type"],
337
+ "id": value["id"],
338
+ "bidAdjustment": value["bidAdjustment"]
339
+ };
340
+ }
341
+
342
+ // src/generated/models/AdGroupCreate.ts
343
+ function AdGroupCreateToJSON(json) {
344
+ return AdGroupCreateToJSONTyped(json, false);
345
+ }
346
+ function AdGroupCreateToJSONTyped(value, ignoreDiscriminator = false) {
347
+ if (value == null) {
348
+ return value;
349
+ }
350
+ return {
351
+ "campaignId": value["campaignId"],
352
+ "name": value["name"],
353
+ "status": value["status"],
354
+ "type": value["type"],
355
+ "cpc": value["cpc"],
356
+ "cpcBid": value["cpcBid"],
357
+ "audiences": value["audiences"] == null ? void 0 : value["audiences"].map(AdGroupAudienceToJSON),
358
+ "customLabels": value["customLabels"],
359
+ "trackingUrlTemplate": value["trackingUrlTemplate"],
360
+ "finalUrlSuffix": value["finalUrlSuffix"],
361
+ "urlCustomParameters": value["urlCustomParameters"]
362
+ };
363
+ }
364
+
365
+ // src/generated/models/AdGroupUpdate.ts
366
+ function AdGroupUpdateToJSON(json) {
367
+ return AdGroupUpdateToJSONTyped(json, false);
368
+ }
369
+ function AdGroupUpdateToJSONTyped(value, ignoreDiscriminator = false) {
370
+ if (value == null) {
371
+ return value;
372
+ }
373
+ return {
374
+ "campaignId": value["campaignId"],
375
+ "name": value["name"],
376
+ "status": value["status"],
377
+ "type": value["type"],
378
+ "cpc": value["cpc"],
379
+ "cpcBid": value["cpcBid"],
380
+ "audiences": value["audiences"] == null ? void 0 : value["audiences"].map(AdGroupAudienceToJSON),
381
+ "customLabels": value["customLabels"],
382
+ "trackingUrlTemplate": value["trackingUrlTemplate"],
383
+ "finalUrlSuffix": value["finalUrlSuffix"],
384
+ "urlCustomParameters": value["urlCustomParameters"]
385
+ };
386
+ }
387
+
388
+ // src/generated/models/AdUpdate.ts
389
+ function AdUpdateToJSON(json) {
390
+ return AdUpdateToJSONTyped(json, false);
391
+ }
392
+ function AdUpdateToJSONTyped(value, ignoreDiscriminator = false) {
393
+ if (value == null) {
394
+ return value;
395
+ }
396
+ return {
397
+ "adGroupId": value["adGroupId"],
398
+ "campaignId": value["campaignId"],
399
+ "headlinePart1": value["headlinePart1"],
400
+ "headlinePart2": value["headlinePart2"],
401
+ "headlinePart3": value["headlinePart3"],
402
+ "description": value["description"],
403
+ "description2": value["description2"],
404
+ "finalUrl": value["finalUrl"],
405
+ "path1": value["path1"],
406
+ "path2": value["path2"],
407
+ "status": value["status"],
408
+ "sitelinks": value["sitelinks"] == null ? void 0 : value["sitelinks"].map(SitelinkToJSON),
409
+ "callouts": value["callouts"],
410
+ "structuredSnippets": value["structuredSnippets"] == null ? void 0 : value["structuredSnippets"].map(StructuredSnippetToJSON),
411
+ "customLabels": value["customLabels"],
412
+ "trackingUrlTemplate": value["trackingUrlTemplate"],
413
+ "finalUrlSuffix": value["finalUrlSuffix"],
414
+ "urlCustomParameters": value["urlCustomParameters"]
415
+ };
416
+ }
417
+
418
+ // src/generated/models/AssetCreate.ts
419
+ function AssetCreateToJSON(json) {
420
+ return AssetCreateToJSONTyped(json, false);
421
+ }
422
+ function AssetCreateToJSONTyped(value, ignoreDiscriminator = false) {
423
+ if (value == null) {
424
+ return value;
425
+ }
426
+ return {
427
+ "url": value["url"],
428
+ "name": value["name"],
429
+ "type": value["type"],
430
+ "mediaType": value["mediaType"],
431
+ "youtubeVideoId": value["youtubeVideoId"],
432
+ "contentType": value["contentType"],
433
+ "sizeBytes": value["sizeBytes"],
434
+ "width": value["width"],
435
+ "height": value["height"],
436
+ "tags": value["tags"],
437
+ "altText": value["altText"],
438
+ "metadata": value["metadata"]
439
+ };
440
+ }
441
+
442
+ // src/generated/models/AssetUpdate.ts
443
+ function AssetUpdateToJSON(json) {
444
+ return AssetUpdateToJSONTyped(json, false);
445
+ }
446
+ function AssetUpdateToJSONTyped(value, ignoreDiscriminator = false) {
447
+ if (value == null) {
448
+ return value;
449
+ }
450
+ return {
451
+ "name": value["name"],
452
+ "altText": value["altText"],
453
+ "tags": value["tags"],
454
+ "metadata": value["metadata"],
455
+ "status": value["status"],
456
+ "width": value["width"],
457
+ "height": value["height"]
458
+ };
459
+ }
460
+
461
+ // src/generated/models/BiddingStrategy.ts
462
+ function BiddingStrategyToJSON(json) {
463
+ return BiddingStrategyToJSONTyped(json, false);
464
+ }
465
+ function BiddingStrategyToJSONTyped(value, ignoreDiscriminator = false) {
466
+ if (value == null) {
467
+ return value;
468
+ }
469
+ return {
470
+ "type": value["type"],
471
+ "targetCpa": value["targetCpa"],
472
+ "targetRoas": value["targetRoas"],
473
+ "targetImpressionShare": value["targetImpressionShare"],
474
+ "maxCpcBidCeiling": value["maxCpcBidCeiling"]
475
+ };
476
+ }
477
+
478
+ // src/generated/models/CampaignAdScheduleField.ts
479
+ function CampaignAdScheduleFieldToJSON(value) {
480
+ return value;
481
+ }
482
+
483
+ // src/generated/models/CampaignAssetCreate.ts
484
+ function CampaignAssetCreateToJSON(json) {
485
+ return CampaignAssetCreateToJSONTyped(json, false);
486
+ }
487
+ function CampaignAssetCreateToJSONTyped(value, ignoreDiscriminator = false) {
488
+ if (value == null) {
489
+ return value;
490
+ }
491
+ return {
492
+ "campaignId": value["campaignId"],
493
+ "assetId": value["assetId"],
494
+ "role": value["role"]
495
+ };
496
+ }
497
+
498
+ // src/generated/models/CampaignTargeting.ts
499
+ function CampaignTargetingToJSON(json) {
500
+ return CampaignTargetingToJSONTyped(json, false);
501
+ }
502
+ function CampaignTargetingToJSONTyped(value, ignoreDiscriminator = false) {
503
+ if (value == null) {
504
+ return value;
505
+ }
506
+ return {
507
+ "schedule": value["schedule"],
508
+ "devices": value["devices"],
509
+ "radius": value["radius"],
510
+ "linkedin": value["linkedin"]
511
+ };
512
+ }
513
+
514
+ // src/generated/models/NegativeKeywordEntry.ts
515
+ function NegativeKeywordEntryToJSON(json) {
516
+ return NegativeKeywordEntryToJSONTyped(json, false);
517
+ }
518
+ function NegativeKeywordEntryToJSONTyped(value, ignoreDiscriminator = false) {
519
+ if (value == null) {
520
+ return value;
521
+ }
522
+ return {
523
+ "text": value["text"],
524
+ "matchType": value["matchType"]
525
+ };
526
+ }
527
+
528
+ // src/generated/models/Location.ts
529
+ function LocationToJSON(json) {
530
+ return LocationToJSONTyped(json, false);
531
+ }
532
+ function LocationToJSONTyped(value, ignoreDiscriminator = false) {
533
+ if (value == null) {
534
+ return value;
535
+ }
536
+ return {
537
+ "criterionId": value["criterionId"],
538
+ "name": value["name"],
539
+ "type": value["type"],
540
+ "countryCode": value["countryCode"]
541
+ };
542
+ }
543
+
544
+ // src/generated/models/CampaignCreate.ts
545
+ function CampaignCreateToJSON(json) {
546
+ return CampaignCreateToJSONTyped(json, false);
547
+ }
548
+ function CampaignCreateToJSONTyped(value, ignoreDiscriminator = false) {
549
+ if (value == null) {
550
+ return value;
551
+ }
552
+ return {
553
+ "name": value["name"],
554
+ "budget": value["budget"],
555
+ "currency": value["currency"],
556
+ "status": value["status"],
557
+ "type": value["type"],
558
+ "networks": value["networks"],
559
+ "languages": value["languages"],
560
+ "siteId": value["siteId"],
561
+ "goal": value["goal"],
562
+ "targetLocations": value["targetLocations"] == null ? void 0 : value["targetLocations"].map(LocationToJSON),
563
+ "customLabels": value["customLabels"],
564
+ "adSchedule": CampaignAdScheduleFieldToJSON(value["adSchedule"]),
565
+ "biddingStrategy": BiddingStrategyToJSON(value["biddingStrategy"]),
566
+ "targeting": CampaignTargetingToJSON(value["targeting"]),
567
+ "trackingUrlTemplate": value["trackingUrlTemplate"],
568
+ "finalUrlSuffix": value["finalUrlSuffix"],
569
+ "urlCustomParameters": value["urlCustomParameters"],
570
+ "negativeKeywords": value["negativeKeywords"] == null ? void 0 : value["negativeKeywords"].map(NegativeKeywordEntryToJSON)
571
+ };
572
+ }
573
+
574
+ // src/generated/models/CampaignUpdate.ts
575
+ function CampaignUpdateToJSON(json) {
576
+ return CampaignUpdateToJSONTyped(json, false);
577
+ }
578
+ function CampaignUpdateToJSONTyped(value, ignoreDiscriminator = false) {
579
+ if (value == null) {
580
+ return value;
581
+ }
582
+ return {
583
+ "name": value["name"],
584
+ "budget": value["budget"],
585
+ "currency": value["currency"],
586
+ "status": value["status"],
587
+ "type": value["type"],
588
+ "networks": value["networks"],
589
+ "languages": value["languages"],
590
+ "siteId": value["siteId"],
591
+ "goal": value["goal"],
592
+ "targetLocations": value["targetLocations"] == null ? void 0 : value["targetLocations"].map(LocationToJSON),
593
+ "customLabels": value["customLabels"],
594
+ "adSchedule": CampaignAdScheduleFieldToJSON(value["adSchedule"]),
595
+ "biddingStrategy": BiddingStrategyToJSON(value["biddingStrategy"]),
596
+ "targeting": CampaignTargetingToJSON(value["targeting"]),
597
+ "trackingUrlTemplate": value["trackingUrlTemplate"],
598
+ "finalUrlSuffix": value["finalUrlSuffix"],
599
+ "urlCustomParameters": value["urlCustomParameters"],
600
+ "negativeKeywords": value["negativeKeywords"] == null ? void 0 : value["negativeKeywords"].map(NegativeKeywordEntryToJSON)
601
+ };
602
+ }
603
+
604
+ // src/generated/models/KeywordCreate.ts
605
+ function KeywordCreateToJSON(json) {
606
+ return KeywordCreateToJSONTyped(json, false);
607
+ }
608
+ function KeywordCreateToJSONTyped(value, ignoreDiscriminator = false) {
609
+ if (value == null) {
610
+ return value;
611
+ }
612
+ return {
613
+ "adGroupId": value["adGroupId"],
614
+ "campaignId": value["campaignId"],
615
+ "text": value["text"],
616
+ "matchType": value["matchType"],
617
+ "status": value["status"],
618
+ "isNegative": value["isNegative"],
619
+ "cpcBid": value["cpcBid"]
620
+ };
621
+ }
622
+
623
+ // src/generated/models/KeywordUpdate.ts
624
+ function KeywordUpdateToJSON(json) {
625
+ return KeywordUpdateToJSONTyped(json, false);
626
+ }
627
+ function KeywordUpdateToJSONTyped(value, ignoreDiscriminator = false) {
628
+ if (value == null) {
629
+ return value;
630
+ }
631
+ return {
632
+ "adGroupId": value["adGroupId"],
633
+ "campaignId": value["campaignId"],
634
+ "text": value["text"],
635
+ "matchType": value["matchType"],
636
+ "status": value["status"],
637
+ "isNegative": value["isNegative"],
638
+ "cpcBid": value["cpcBid"]
639
+ };
640
+ }
641
+
642
+ // src/generated/models/SiteLinkEntry.ts
643
+ function SiteLinkEntryToJSON(json) {
644
+ return SiteLinkEntryToJSONTyped(json, false);
645
+ }
646
+ function SiteLinkEntryToJSONTyped(value, ignoreDiscriminator = false) {
647
+ if (value == null) {
648
+ return value;
649
+ }
650
+ return {
651
+ "text": value["text"],
652
+ "url": value["url"],
653
+ "description1": value["description1"],
654
+ "description2": value["description2"]
655
+ };
656
+ }
657
+
658
+ // src/generated/models/SiteCreateSeoKeywords.ts
659
+ function SiteCreateSeoKeywordsToJSON(value) {
660
+ return value;
661
+ }
662
+
663
+ // src/generated/models/SiteCreateTargetGroups.ts
664
+ function SiteCreateTargetGroupsToJSON(value) {
665
+ return value;
666
+ }
667
+
668
+ // src/generated/models/SiteCreate.ts
669
+ function SiteCreateToJSON(json) {
670
+ return SiteCreateToJSONTyped(json, false);
671
+ }
672
+ function SiteCreateToJSONTyped(value, ignoreDiscriminator = false) {
673
+ if (value == null) {
674
+ return value;
675
+ }
676
+ return {
677
+ "name": value["name"],
678
+ "url": value["url"],
679
+ "description": value["description"],
680
+ "seoKeywords": SiteCreateSeoKeywordsToJSON(value["seoKeywords"]),
681
+ "targetGroups": SiteCreateTargetGroupsToJSON(value["targetGroups"]),
682
+ "status": value["status"],
683
+ "logoUrl": value["logoUrl"],
684
+ "logoSource": value["logoSource"],
685
+ "siteLinks": value["siteLinks"] == null ? void 0 : value["siteLinks"].map(SiteLinkEntryToJSON)
686
+ };
687
+ }
688
+
689
+ // src/generated/models/SiteUpdate.ts
690
+ function SiteUpdateToJSON(json) {
691
+ return SiteUpdateToJSONTyped(json, false);
692
+ }
693
+ function SiteUpdateToJSONTyped(value, ignoreDiscriminator = false) {
694
+ if (value == null) {
695
+ return value;
696
+ }
697
+ return {
698
+ "name": value["name"],
699
+ "url": value["url"],
700
+ "description": value["description"],
701
+ "seoKeywords": SiteCreateSeoKeywordsToJSON(value["seoKeywords"]),
702
+ "targetGroups": SiteCreateTargetGroupsToJSON(value["targetGroups"]),
703
+ "status": value["status"],
704
+ "logoUrl": value["logoUrl"],
705
+ "logoSource": value["logoSource"],
706
+ "siteLinks": value["siteLinks"] == null ? void 0 : value["siteLinks"].map(SiteLinkEntryToJSON)
707
+ };
708
+ }
709
+
710
+ // src/generated/models/SuccessEnvelopeMetaNextCursor.ts
711
+ function SuccessEnvelopeMetaNextCursorFromJSON(json) {
712
+ return SuccessEnvelopeMetaNextCursorFromJSONTyped(json);
713
+ }
714
+ function SuccessEnvelopeMetaNextCursorFromJSONTyped(json, ignoreDiscriminator) {
715
+ return json;
716
+ }
717
+
718
+ // src/generated/models/SuccessEnvelopeMeta.ts
719
+ function SuccessEnvelopeMetaFromJSON(json) {
720
+ return SuccessEnvelopeMetaFromJSONTyped(json);
721
+ }
722
+ function SuccessEnvelopeMetaFromJSONTyped(json, ignoreDiscriminator) {
723
+ if (json == null) {
724
+ return json;
725
+ }
726
+ return {
727
+ "nextCursor": json["nextCursor"] == null ? void 0 : SuccessEnvelopeMetaNextCursorFromJSON(json["nextCursor"]),
728
+ "total": json["total"] == null ? void 0 : json["total"]
729
+ };
730
+ }
731
+
732
+ // src/generated/models/SuccessEnvelope.ts
733
+ function SuccessEnvelopeFromJSON(json) {
734
+ return SuccessEnvelopeFromJSONTyped(json);
735
+ }
736
+ function SuccessEnvelopeFromJSONTyped(json, ignoreDiscriminator) {
737
+ if (json == null) {
738
+ return json;
739
+ }
740
+ return {
741
+ "data": json["data"],
742
+ "meta": json["meta"] == null ? void 0 : SuccessEnvelopeMetaFromJSON(json["meta"])
743
+ };
744
+ }
745
+
746
+ // src/generated/models/SyncTriggerRequestOptions.ts
747
+ function SyncTriggerRequestOptionsToJSON(json) {
748
+ return SyncTriggerRequestOptionsToJSONTyped(json, false);
749
+ }
750
+ function SyncTriggerRequestOptionsToJSONTyped(value, ignoreDiscriminator = false) {
751
+ if (value == null) {
752
+ return value;
753
+ }
754
+ return {
755
+ "includeAdGroups": value["includeAdGroups"],
756
+ "includeKeywords": value["includeKeywords"],
757
+ "includeAds": value["includeAds"],
758
+ "force": value["force"],
759
+ "campaignIds": value["campaignIds"]
760
+ };
761
+ }
762
+
763
+ // src/generated/models/SyncTriggerRequest.ts
764
+ function SyncTriggerRequestToJSON(json) {
765
+ return SyncTriggerRequestToJSONTyped(json, false);
766
+ }
767
+ function SyncTriggerRequestToJSONTyped(value, ignoreDiscriminator = false) {
768
+ if (value == null) {
769
+ return value;
770
+ }
771
+ return {
772
+ "platforms": value["platforms"],
773
+ "options": SyncTriggerRequestOptionsToJSON(value["options"])
774
+ };
775
+ }
776
+
777
+ // src/generated/models/SyncUnlinkRequest.ts
778
+ function SyncUnlinkRequestToJSON(json) {
779
+ return SyncUnlinkRequestToJSONTyped(json, false);
780
+ }
781
+ function SyncUnlinkRequestToJSONTyped(value, ignoreDiscriminator = false) {
782
+ if (value == null) {
783
+ return value;
784
+ }
785
+ return {
786
+ "platform": value["platform"],
787
+ "campaignIds": value["campaignIds"],
788
+ "deleteRemote": value["deleteRemote"]
789
+ };
790
+ }
791
+
792
+ // src/generated/apis/AdAssetsApi.ts
793
+ var AdAssetsApi = class extends BaseAPI {
794
+ /**
795
+ * Bind an asset to an ad or ad group with a role
796
+ */
797
+ async adAssetsCreateRaw(requestParameters, initOverrides) {
798
+ if (requestParameters["adAssetCreate"] == null) {
799
+ throw new RequiredError(
800
+ "adAssetCreate",
801
+ 'Required parameter "adAssetCreate" was null or undefined when calling adAssetsCreate().'
802
+ );
803
+ }
804
+ const queryParameters = {};
805
+ const headerParameters = {};
806
+ headerParameters["Content-Type"] = "application/json";
807
+ if (requestParameters["xSpaceId"] != null) {
808
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
809
+ }
810
+ if (this.configuration && this.configuration.accessToken) {
811
+ const token = this.configuration.accessToken;
812
+ const tokenString = await token("ApiToken", ["ads:write"]);
813
+ if (tokenString) {
814
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
815
+ }
816
+ }
817
+ const response = await this.request({
818
+ path: `/api/v1/ad-assets`,
819
+ method: "POST",
820
+ headers: headerParameters,
821
+ query: queryParameters,
822
+ body: AdAssetCreateToJSON(requestParameters["adAssetCreate"])
823
+ }, initOverrides);
824
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
825
+ }
826
+ /**
827
+ * Bind an asset to an ad or ad group with a role
828
+ */
829
+ async adAssetsCreate(requestParameters, initOverrides) {
830
+ const response = await this.adAssetsCreateRaw(requestParameters, initOverrides);
831
+ return await response.value();
832
+ }
833
+ /**
834
+ * Remove an ad-asset binding
835
+ */
836
+ async adAssetsDeleteRaw(requestParameters, initOverrides) {
837
+ if (requestParameters["id"] == null) {
838
+ throw new RequiredError(
839
+ "id",
840
+ 'Required parameter "id" was null or undefined when calling adAssetsDelete().'
841
+ );
842
+ }
843
+ const queryParameters = {};
844
+ const headerParameters = {};
845
+ if (requestParameters["xSpaceId"] != null) {
846
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
847
+ }
848
+ if (this.configuration && this.configuration.accessToken) {
849
+ const token = this.configuration.accessToken;
850
+ const tokenString = await token("ApiToken", ["ads:write"]);
851
+ if (tokenString) {
852
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
853
+ }
854
+ }
855
+ const response = await this.request({
856
+ path: `/api/v1/ad-assets/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
857
+ method: "DELETE",
858
+ headers: headerParameters,
859
+ query: queryParameters
860
+ }, initOverrides);
861
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
862
+ }
863
+ /**
864
+ * Remove an ad-asset binding
865
+ */
866
+ async adAssetsDelete(requestParameters, initOverrides) {
867
+ const response = await this.adAssetsDeleteRaw(requestParameters, initOverrides);
868
+ return await response.value();
869
+ }
870
+ /**
871
+ * Get ad-asset binding
872
+ */
873
+ async adAssetsGetRaw(requestParameters, initOverrides) {
874
+ if (requestParameters["id"] == null) {
875
+ throw new RequiredError(
876
+ "id",
877
+ 'Required parameter "id" was null or undefined when calling adAssetsGet().'
878
+ );
879
+ }
880
+ const queryParameters = {};
881
+ const headerParameters = {};
882
+ if (requestParameters["xSpaceId"] != null) {
883
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
884
+ }
885
+ if (this.configuration && this.configuration.accessToken) {
886
+ const token = this.configuration.accessToken;
887
+ const tokenString = await token("ApiToken", ["ads:read"]);
888
+ if (tokenString) {
889
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
890
+ }
891
+ }
892
+ const response = await this.request({
893
+ path: `/api/v1/ad-assets/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
894
+ method: "GET",
895
+ headers: headerParameters,
896
+ query: queryParameters
897
+ }, initOverrides);
898
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
899
+ }
900
+ /**
901
+ * Get ad-asset binding
902
+ */
903
+ async adAssetsGet(requestParameters, initOverrides) {
904
+ const response = await this.adAssetsGetRaw(requestParameters, initOverrides);
905
+ return await response.value();
906
+ }
907
+ /**
908
+ * List ad / ad-group asset bindings (filter by adId/adGroupId/campaignId)
909
+ */
910
+ async adAssetsListRaw(requestParameters, initOverrides) {
911
+ const queryParameters = {};
912
+ if (requestParameters["limit"] != null) {
913
+ queryParameters["limit"] = requestParameters["limit"];
914
+ }
915
+ if (requestParameters["cursor"] != null) {
916
+ queryParameters["cursor"] = requestParameters["cursor"];
917
+ }
918
+ if (requestParameters["adId"] != null) {
919
+ queryParameters["adId"] = requestParameters["adId"];
920
+ }
921
+ if (requestParameters["adGroupId"] != null) {
922
+ queryParameters["adGroupId"] = requestParameters["adGroupId"];
923
+ }
924
+ if (requestParameters["campaignId"] != null) {
925
+ queryParameters["campaignId"] = requestParameters["campaignId"];
926
+ }
927
+ if (requestParameters["role"] != null) {
928
+ queryParameters["role"] = requestParameters["role"];
929
+ }
930
+ const headerParameters = {};
931
+ if (requestParameters["xSpaceId"] != null) {
932
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
933
+ }
934
+ if (this.configuration && this.configuration.accessToken) {
935
+ const token = this.configuration.accessToken;
936
+ const tokenString = await token("ApiToken", ["ads:read"]);
937
+ if (tokenString) {
938
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
939
+ }
940
+ }
941
+ const response = await this.request({
942
+ path: `/api/v1/ad-assets`,
943
+ method: "GET",
944
+ headers: headerParameters,
945
+ query: queryParameters
946
+ }, initOverrides);
947
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
948
+ }
949
+ /**
950
+ * List ad / ad-group asset bindings (filter by adId/adGroupId/campaignId)
951
+ */
952
+ async adAssetsList(requestParameters = {}, initOverrides) {
953
+ const response = await this.adAssetsListRaw(requestParameters, initOverrides);
954
+ return await response.value();
955
+ }
956
+ };
957
+
958
+ // src/generated/apis/AdGroupsApi.ts
959
+ var AdGroupsApi = class extends BaseAPI {
960
+ /**
961
+ * Create ad group
962
+ */
963
+ async adGroupsCreateRaw(requestParameters, initOverrides) {
964
+ if (requestParameters["adGroupCreate"] == null) {
965
+ throw new RequiredError(
966
+ "adGroupCreate",
967
+ 'Required parameter "adGroupCreate" was null or undefined when calling adGroupsCreate().'
968
+ );
969
+ }
970
+ const queryParameters = {};
971
+ const headerParameters = {};
972
+ headerParameters["Content-Type"] = "application/json";
973
+ if (requestParameters["xSpaceId"] != null) {
974
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
975
+ }
976
+ if (this.configuration && this.configuration.accessToken) {
977
+ const token = this.configuration.accessToken;
978
+ const tokenString = await token("ApiToken", ["ads:write"]);
979
+ if (tokenString) {
980
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
981
+ }
982
+ }
983
+ const response = await this.request({
984
+ path: `/api/v1/ad-groups`,
985
+ method: "POST",
986
+ headers: headerParameters,
987
+ query: queryParameters,
988
+ body: AdGroupCreateToJSON(requestParameters["adGroupCreate"])
989
+ }, initOverrides);
990
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
991
+ }
992
+ /**
993
+ * Create ad group
994
+ */
995
+ async adGroupsCreate(requestParameters, initOverrides) {
996
+ const response = await this.adGroupsCreateRaw(requestParameters, initOverrides);
997
+ return await response.value();
998
+ }
999
+ /**
1000
+ * Returns 409 CONFLICT with `details: { ads, keywords }` when the ad group still has dependent ads or keywords. Pass `?cascade=true` to delete them in the same request.
1001
+ * Delete ad group
1002
+ */
1003
+ async adGroupsDeleteRaw(requestParameters, initOverrides) {
1004
+ if (requestParameters["id"] == null) {
1005
+ throw new RequiredError(
1006
+ "id",
1007
+ 'Required parameter "id" was null or undefined when calling adGroupsDelete().'
1008
+ );
1009
+ }
1010
+ const queryParameters = {};
1011
+ if (requestParameters["cascade"] != null) {
1012
+ queryParameters["cascade"] = requestParameters["cascade"];
1013
+ }
1014
+ const headerParameters = {};
1015
+ if (requestParameters["xSpaceId"] != null) {
1016
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1017
+ }
1018
+ if (this.configuration && this.configuration.accessToken) {
1019
+ const token = this.configuration.accessToken;
1020
+ const tokenString = await token("ApiToken", ["ads:write"]);
1021
+ if (tokenString) {
1022
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1023
+ }
1024
+ }
1025
+ const response = await this.request({
1026
+ path: `/api/v1/ad-groups/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
1027
+ method: "DELETE",
1028
+ headers: headerParameters,
1029
+ query: queryParameters
1030
+ }, initOverrides);
1031
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1032
+ }
1033
+ /**
1034
+ * Returns 409 CONFLICT with `details: { ads, keywords }` when the ad group still has dependent ads or keywords. Pass `?cascade=true` to delete them in the same request.
1035
+ * Delete ad group
1036
+ */
1037
+ async adGroupsDelete(requestParameters, initOverrides) {
1038
+ const response = await this.adGroupsDeleteRaw(requestParameters, initOverrides);
1039
+ return await response.value();
1040
+ }
1041
+ /**
1042
+ * Get ad group
1043
+ */
1044
+ async adGroupsGetRaw(requestParameters, initOverrides) {
1045
+ if (requestParameters["id"] == null) {
1046
+ throw new RequiredError(
1047
+ "id",
1048
+ 'Required parameter "id" was null or undefined when calling adGroupsGet().'
1049
+ );
1050
+ }
1051
+ const queryParameters = {};
1052
+ const headerParameters = {};
1053
+ if (requestParameters["xSpaceId"] != null) {
1054
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1055
+ }
1056
+ if (this.configuration && this.configuration.accessToken) {
1057
+ const token = this.configuration.accessToken;
1058
+ const tokenString = await token("ApiToken", ["ads:read"]);
1059
+ if (tokenString) {
1060
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1061
+ }
1062
+ }
1063
+ const response = await this.request({
1064
+ path: `/api/v1/ad-groups/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
1065
+ method: "GET",
1066
+ headers: headerParameters,
1067
+ query: queryParameters
1068
+ }, initOverrides);
1069
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1070
+ }
1071
+ /**
1072
+ * Get ad group
1073
+ */
1074
+ async adGroupsGet(requestParameters, initOverrides) {
1075
+ const response = await this.adGroupsGetRaw(requestParameters, initOverrides);
1076
+ return await response.value();
1077
+ }
1078
+ /**
1079
+ * List ad groups
1080
+ */
1081
+ async adGroupsListRaw(requestParameters, initOverrides) {
1082
+ const queryParameters = {};
1083
+ if (requestParameters["limit"] != null) {
1084
+ queryParameters["limit"] = requestParameters["limit"];
1085
+ }
1086
+ if (requestParameters["cursor"] != null) {
1087
+ queryParameters["cursor"] = requestParameters["cursor"];
1088
+ }
1089
+ const headerParameters = {};
1090
+ if (requestParameters["xSpaceId"] != null) {
1091
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1092
+ }
1093
+ if (this.configuration && this.configuration.accessToken) {
1094
+ const token = this.configuration.accessToken;
1095
+ const tokenString = await token("ApiToken", ["ads:read"]);
1096
+ if (tokenString) {
1097
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1098
+ }
1099
+ }
1100
+ const response = await this.request({
1101
+ path: `/api/v1/ad-groups`,
1102
+ method: "GET",
1103
+ headers: headerParameters,
1104
+ query: queryParameters
1105
+ }, initOverrides);
1106
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1107
+ }
1108
+ /**
1109
+ * List ad groups
1110
+ */
1111
+ async adGroupsList(requestParameters = {}, initOverrides) {
1112
+ const response = await this.adGroupsListRaw(requestParameters, initOverrides);
1113
+ return await response.value();
1114
+ }
1115
+ /**
1116
+ * Update ad group
1117
+ */
1118
+ async adGroupsUpdateRaw(requestParameters, initOverrides) {
1119
+ if (requestParameters["id"] == null) {
1120
+ throw new RequiredError(
1121
+ "id",
1122
+ 'Required parameter "id" was null or undefined when calling adGroupsUpdate().'
1123
+ );
1124
+ }
1125
+ if (requestParameters["adGroupUpdate"] == null) {
1126
+ throw new RequiredError(
1127
+ "adGroupUpdate",
1128
+ 'Required parameter "adGroupUpdate" was null or undefined when calling adGroupsUpdate().'
1129
+ );
1130
+ }
1131
+ const queryParameters = {};
1132
+ const headerParameters = {};
1133
+ headerParameters["Content-Type"] = "application/json";
1134
+ if (requestParameters["xSpaceId"] != null) {
1135
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1136
+ }
1137
+ if (this.configuration && this.configuration.accessToken) {
1138
+ const token = this.configuration.accessToken;
1139
+ const tokenString = await token("ApiToken", ["ads:write"]);
1140
+ if (tokenString) {
1141
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1142
+ }
1143
+ }
1144
+ const response = await this.request({
1145
+ path: `/api/v1/ad-groups/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
1146
+ method: "PUT",
1147
+ headers: headerParameters,
1148
+ query: queryParameters,
1149
+ body: AdGroupUpdateToJSON(requestParameters["adGroupUpdate"])
1150
+ }, initOverrides);
1151
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1152
+ }
1153
+ /**
1154
+ * Update ad group
1155
+ */
1156
+ async adGroupsUpdate(requestParameters, initOverrides) {
1157
+ const response = await this.adGroupsUpdateRaw(requestParameters, initOverrides);
1158
+ return await response.value();
1159
+ }
1160
+ };
1161
+
1162
+ // src/generated/apis/AdsApi.ts
1163
+ var AdsApi = class extends BaseAPI {
1164
+ /**
1165
+ * Create ad
1166
+ */
1167
+ async adsCreateRaw(requestParameters, initOverrides) {
1168
+ if (requestParameters["adCreate"] == null) {
1169
+ throw new RequiredError(
1170
+ "adCreate",
1171
+ 'Required parameter "adCreate" was null or undefined when calling adsCreate().'
1172
+ );
1173
+ }
1174
+ const queryParameters = {};
1175
+ const headerParameters = {};
1176
+ headerParameters["Content-Type"] = "application/json";
1177
+ if (requestParameters["xSpaceId"] != null) {
1178
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1179
+ }
1180
+ if (this.configuration && this.configuration.accessToken) {
1181
+ const token = this.configuration.accessToken;
1182
+ const tokenString = await token("ApiToken", ["ads:write"]);
1183
+ if (tokenString) {
1184
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1185
+ }
1186
+ }
1187
+ const response = await this.request({
1188
+ path: `/api/v1/ads`,
1189
+ method: "POST",
1190
+ headers: headerParameters,
1191
+ query: queryParameters,
1192
+ body: AdCreateToJSON(requestParameters["adCreate"])
1193
+ }, initOverrides);
1194
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1195
+ }
1196
+ /**
1197
+ * Create ad
1198
+ */
1199
+ async adsCreate(requestParameters, initOverrides) {
1200
+ const response = await this.adsCreateRaw(requestParameters, initOverrides);
1201
+ return await response.value();
1202
+ }
1203
+ /**
1204
+ * Delete ad
1205
+ */
1206
+ async adsDeleteRaw(requestParameters, initOverrides) {
1207
+ if (requestParameters["id"] == null) {
1208
+ throw new RequiredError(
1209
+ "id",
1210
+ 'Required parameter "id" was null or undefined when calling adsDelete().'
1211
+ );
1212
+ }
1213
+ const queryParameters = {};
1214
+ const headerParameters = {};
1215
+ if (requestParameters["xSpaceId"] != null) {
1216
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1217
+ }
1218
+ if (this.configuration && this.configuration.accessToken) {
1219
+ const token = this.configuration.accessToken;
1220
+ const tokenString = await token("ApiToken", ["ads:write"]);
1221
+ if (tokenString) {
1222
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1223
+ }
1224
+ }
1225
+ const response = await this.request({
1226
+ path: `/api/v1/ads/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
1227
+ method: "DELETE",
1228
+ headers: headerParameters,
1229
+ query: queryParameters
1230
+ }, initOverrides);
1231
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1232
+ }
1233
+ /**
1234
+ * Delete ad
1235
+ */
1236
+ async adsDelete(requestParameters, initOverrides) {
1237
+ const response = await this.adsDeleteRaw(requestParameters, initOverrides);
1238
+ return await response.value();
1239
+ }
1240
+ /**
1241
+ * Get ad
1242
+ */
1243
+ async adsGetRaw(requestParameters, initOverrides) {
1244
+ if (requestParameters["id"] == null) {
1245
+ throw new RequiredError(
1246
+ "id",
1247
+ 'Required parameter "id" was null or undefined when calling adsGet().'
1248
+ );
1249
+ }
1250
+ const queryParameters = {};
1251
+ const headerParameters = {};
1252
+ if (requestParameters["xSpaceId"] != null) {
1253
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1254
+ }
1255
+ if (this.configuration && this.configuration.accessToken) {
1256
+ const token = this.configuration.accessToken;
1257
+ const tokenString = await token("ApiToken", ["ads:read"]);
1258
+ if (tokenString) {
1259
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1260
+ }
1261
+ }
1262
+ const response = await this.request({
1263
+ path: `/api/v1/ads/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
1264
+ method: "GET",
1265
+ headers: headerParameters,
1266
+ query: queryParameters
1267
+ }, initOverrides);
1268
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1269
+ }
1270
+ /**
1271
+ * Get ad
1272
+ */
1273
+ async adsGet(requestParameters, initOverrides) {
1274
+ const response = await this.adsGetRaw(requestParameters, initOverrides);
1275
+ return await response.value();
1276
+ }
1277
+ /**
1278
+ * List ads
1279
+ */
1280
+ async adsListRaw(requestParameters, initOverrides) {
1281
+ const queryParameters = {};
1282
+ if (requestParameters["limit"] != null) {
1283
+ queryParameters["limit"] = requestParameters["limit"];
1284
+ }
1285
+ if (requestParameters["cursor"] != null) {
1286
+ queryParameters["cursor"] = requestParameters["cursor"];
1287
+ }
1288
+ const headerParameters = {};
1289
+ if (requestParameters["xSpaceId"] != null) {
1290
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1291
+ }
1292
+ if (this.configuration && this.configuration.accessToken) {
1293
+ const token = this.configuration.accessToken;
1294
+ const tokenString = await token("ApiToken", ["ads:read"]);
1295
+ if (tokenString) {
1296
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1297
+ }
1298
+ }
1299
+ const response = await this.request({
1300
+ path: `/api/v1/ads`,
1301
+ method: "GET",
1302
+ headers: headerParameters,
1303
+ query: queryParameters
1304
+ }, initOverrides);
1305
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1306
+ }
1307
+ /**
1308
+ * List ads
1309
+ */
1310
+ async adsList(requestParameters = {}, initOverrides) {
1311
+ const response = await this.adsListRaw(requestParameters, initOverrides);
1312
+ return await response.value();
1313
+ }
1314
+ /**
1315
+ * Update ad (used by partial-resync flows)
1316
+ */
1317
+ async adsUpdateRaw(requestParameters, initOverrides) {
1318
+ if (requestParameters["id"] == null) {
1319
+ throw new RequiredError(
1320
+ "id",
1321
+ 'Required parameter "id" was null or undefined when calling adsUpdate().'
1322
+ );
1323
+ }
1324
+ if (requestParameters["adUpdate"] == null) {
1325
+ throw new RequiredError(
1326
+ "adUpdate",
1327
+ 'Required parameter "adUpdate" was null or undefined when calling adsUpdate().'
1328
+ );
1329
+ }
1330
+ const queryParameters = {};
1331
+ const headerParameters = {};
1332
+ headerParameters["Content-Type"] = "application/json";
1333
+ if (requestParameters["xSpaceId"] != null) {
1334
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1335
+ }
1336
+ if (this.configuration && this.configuration.accessToken) {
1337
+ const token = this.configuration.accessToken;
1338
+ const tokenString = await token("ApiToken", ["ads:write"]);
1339
+ if (tokenString) {
1340
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1341
+ }
1342
+ }
1343
+ const response = await this.request({
1344
+ path: `/api/v1/ads/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
1345
+ method: "PUT",
1346
+ headers: headerParameters,
1347
+ query: queryParameters,
1348
+ body: AdUpdateToJSON(requestParameters["adUpdate"])
1349
+ }, initOverrides);
1350
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1351
+ }
1352
+ /**
1353
+ * Update ad (used by partial-resync flows)
1354
+ */
1355
+ async adsUpdate(requestParameters, initOverrides) {
1356
+ const response = await this.adsUpdateRaw(requestParameters, initOverrides);
1357
+ return await response.value();
1358
+ }
1359
+ };
1360
+
1361
+ // src/generated/apis/AssetsApi.ts
1362
+ var AssetsApi = class extends BaseAPI {
1363
+ /**
1364
+ * Create asset (URL-by-reference)
1365
+ */
1366
+ async assetsCreateRaw(requestParameters, initOverrides) {
1367
+ if (requestParameters["assetCreate"] == null) {
1368
+ throw new RequiredError(
1369
+ "assetCreate",
1370
+ 'Required parameter "assetCreate" was null or undefined when calling assetsCreate().'
1371
+ );
1372
+ }
1373
+ const queryParameters = {};
1374
+ const headerParameters = {};
1375
+ headerParameters["Content-Type"] = "application/json";
1376
+ if (requestParameters["xSpaceId"] != null) {
1377
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1378
+ }
1379
+ if (this.configuration && this.configuration.accessToken) {
1380
+ const token = this.configuration.accessToken;
1381
+ const tokenString = await token("ApiToken", ["assets:write"]);
1382
+ if (tokenString) {
1383
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1384
+ }
1385
+ }
1386
+ const response = await this.request({
1387
+ path: `/api/v1/assets`,
1388
+ method: "POST",
1389
+ headers: headerParameters,
1390
+ query: queryParameters,
1391
+ body: AssetCreateToJSON(requestParameters["assetCreate"])
1392
+ }, initOverrides);
1393
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1394
+ }
1395
+ /**
1396
+ * Create asset (URL-by-reference)
1397
+ */
1398
+ async assetsCreate(requestParameters, initOverrides) {
1399
+ const response = await this.assetsCreateRaw(requestParameters, initOverrides);
1400
+ return await response.value();
1401
+ }
1402
+ /**
1403
+ * Delete asset
1404
+ */
1405
+ async assetsDeleteRaw(requestParameters, initOverrides) {
1406
+ if (requestParameters["id"] == null) {
1407
+ throw new RequiredError(
1408
+ "id",
1409
+ 'Required parameter "id" was null or undefined when calling assetsDelete().'
1410
+ );
1411
+ }
1412
+ const queryParameters = {};
1413
+ const headerParameters = {};
1414
+ if (requestParameters["xSpaceId"] != null) {
1415
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1416
+ }
1417
+ if (this.configuration && this.configuration.accessToken) {
1418
+ const token = this.configuration.accessToken;
1419
+ const tokenString = await token("ApiToken", ["assets:write"]);
1420
+ if (tokenString) {
1421
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1422
+ }
1423
+ }
1424
+ const response = await this.request({
1425
+ path: `/api/v1/assets/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
1426
+ method: "DELETE",
1427
+ headers: headerParameters,
1428
+ query: queryParameters
1429
+ }, initOverrides);
1430
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1431
+ }
1432
+ /**
1433
+ * Delete asset
1434
+ */
1435
+ async assetsDelete(requestParameters, initOverrides) {
1436
+ const response = await this.assetsDeleteRaw(requestParameters, initOverrides);
1437
+ return await response.value();
1438
+ }
1439
+ /**
1440
+ * Get asset
1441
+ */
1442
+ async assetsGetRaw(requestParameters, initOverrides) {
1443
+ if (requestParameters["id"] == null) {
1444
+ throw new RequiredError(
1445
+ "id",
1446
+ 'Required parameter "id" was null or undefined when calling assetsGet().'
1447
+ );
1448
+ }
1449
+ const queryParameters = {};
1450
+ const headerParameters = {};
1451
+ if (requestParameters["xSpaceId"] != null) {
1452
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1453
+ }
1454
+ if (this.configuration && this.configuration.accessToken) {
1455
+ const token = this.configuration.accessToken;
1456
+ const tokenString = await token("ApiToken", ["assets:read"]);
1457
+ if (tokenString) {
1458
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1459
+ }
1460
+ }
1461
+ const response = await this.request({
1462
+ path: `/api/v1/assets/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
1463
+ method: "GET",
1464
+ headers: headerParameters,
1465
+ query: queryParameters
1466
+ }, initOverrides);
1467
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1468
+ }
1469
+ /**
1470
+ * Get asset
1471
+ */
1472
+ async assetsGet(requestParameters, initOverrides) {
1473
+ const response = await this.assetsGetRaw(requestParameters, initOverrides);
1474
+ return await response.value();
1475
+ }
1476
+ /**
1477
+ * List assets
1478
+ */
1479
+ async assetsListRaw(requestParameters, initOverrides) {
1480
+ const queryParameters = {};
1481
+ if (requestParameters["limit"] != null) {
1482
+ queryParameters["limit"] = requestParameters["limit"];
1483
+ }
1484
+ if (requestParameters["cursor"] != null) {
1485
+ queryParameters["cursor"] = requestParameters["cursor"];
1486
+ }
1487
+ if (requestParameters["type"] != null) {
1488
+ queryParameters["type"] = requestParameters["type"];
1489
+ }
1490
+ const headerParameters = {};
1491
+ if (requestParameters["xSpaceId"] != null) {
1492
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1493
+ }
1494
+ if (this.configuration && this.configuration.accessToken) {
1495
+ const token = this.configuration.accessToken;
1496
+ const tokenString = await token("ApiToken", ["assets:read"]);
1497
+ if (tokenString) {
1498
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1499
+ }
1500
+ }
1501
+ const response = await this.request({
1502
+ path: `/api/v1/assets`,
1503
+ method: "GET",
1504
+ headers: headerParameters,
1505
+ query: queryParameters
1506
+ }, initOverrides);
1507
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1508
+ }
1509
+ /**
1510
+ * List assets
1511
+ */
1512
+ async assetsList(requestParameters = {}, initOverrides) {
1513
+ const response = await this.assetsListRaw(requestParameters, initOverrides);
1514
+ return await response.value();
1515
+ }
1516
+ /**
1517
+ * Update asset (partial: name, altText, tags, metadata, status, width, height)
1518
+ */
1519
+ async assetsUpdateRaw(requestParameters, initOverrides) {
1520
+ if (requestParameters["id"] == null) {
1521
+ throw new RequiredError(
1522
+ "id",
1523
+ 'Required parameter "id" was null or undefined when calling assetsUpdate().'
1524
+ );
1525
+ }
1526
+ if (requestParameters["assetUpdate"] == null) {
1527
+ throw new RequiredError(
1528
+ "assetUpdate",
1529
+ 'Required parameter "assetUpdate" was null or undefined when calling assetsUpdate().'
1530
+ );
1531
+ }
1532
+ const queryParameters = {};
1533
+ const headerParameters = {};
1534
+ headerParameters["Content-Type"] = "application/json";
1535
+ if (requestParameters["xSpaceId"] != null) {
1536
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1537
+ }
1538
+ if (this.configuration && this.configuration.accessToken) {
1539
+ const token = this.configuration.accessToken;
1540
+ const tokenString = await token("ApiToken", ["assets:write"]);
1541
+ if (tokenString) {
1542
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1543
+ }
1544
+ }
1545
+ const response = await this.request({
1546
+ path: `/api/v1/assets/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
1547
+ method: "PUT",
1548
+ headers: headerParameters,
1549
+ query: queryParameters,
1550
+ body: AssetUpdateToJSON(requestParameters["assetUpdate"])
1551
+ }, initOverrides);
1552
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1553
+ }
1554
+ /**
1555
+ * Update asset (partial: name, altText, tags, metadata, status, width, height)
1556
+ */
1557
+ async assetsUpdate(requestParameters, initOverrides) {
1558
+ const response = await this.assetsUpdateRaw(requestParameters, initOverrides);
1559
+ return await response.value();
1560
+ }
1561
+ };
1562
+
1563
+ // src/generated/apis/CampaignAssetsApi.ts
1564
+ var CampaignAssetsApi = class extends BaseAPI {
1565
+ /**
1566
+ * Bind an asset to a campaign with a role
1567
+ */
1568
+ async campaignAssetsCreateRaw(requestParameters, initOverrides) {
1569
+ if (requestParameters["campaignAssetCreate"] == null) {
1570
+ throw new RequiredError(
1571
+ "campaignAssetCreate",
1572
+ 'Required parameter "campaignAssetCreate" was null or undefined when calling campaignAssetsCreate().'
1573
+ );
1574
+ }
1575
+ const queryParameters = {};
1576
+ const headerParameters = {};
1577
+ headerParameters["Content-Type"] = "application/json";
1578
+ if (requestParameters["xSpaceId"] != null) {
1579
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1580
+ }
1581
+ if (this.configuration && this.configuration.accessToken) {
1582
+ const token = this.configuration.accessToken;
1583
+ const tokenString = await token("ApiToken", ["assets:write"]);
1584
+ if (tokenString) {
1585
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1586
+ }
1587
+ }
1588
+ const response = await this.request({
1589
+ path: `/api/v1/campaign-assets`,
1590
+ method: "POST",
1591
+ headers: headerParameters,
1592
+ query: queryParameters,
1593
+ body: CampaignAssetCreateToJSON(requestParameters["campaignAssetCreate"])
1594
+ }, initOverrides);
1595
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1596
+ }
1597
+ /**
1598
+ * Bind an asset to a campaign with a role
1599
+ */
1600
+ async campaignAssetsCreate(requestParameters, initOverrides) {
1601
+ const response = await this.campaignAssetsCreateRaw(requestParameters, initOverrides);
1602
+ return await response.value();
1603
+ }
1604
+ /**
1605
+ * Remove a campaign-asset binding
1606
+ */
1607
+ async campaignAssetsDeleteRaw(requestParameters, initOverrides) {
1608
+ if (requestParameters["id"] == null) {
1609
+ throw new RequiredError(
1610
+ "id",
1611
+ 'Required parameter "id" was null or undefined when calling campaignAssetsDelete().'
1612
+ );
1613
+ }
1614
+ const queryParameters = {};
1615
+ const headerParameters = {};
1616
+ if (requestParameters["xSpaceId"] != null) {
1617
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1618
+ }
1619
+ if (this.configuration && this.configuration.accessToken) {
1620
+ const token = this.configuration.accessToken;
1621
+ const tokenString = await token("ApiToken", ["assets:write"]);
1622
+ if (tokenString) {
1623
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1624
+ }
1625
+ }
1626
+ const response = await this.request({
1627
+ path: `/api/v1/campaign-assets/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
1628
+ method: "DELETE",
1629
+ headers: headerParameters,
1630
+ query: queryParameters
1631
+ }, initOverrides);
1632
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1633
+ }
1634
+ /**
1635
+ * Remove a campaign-asset binding
1636
+ */
1637
+ async campaignAssetsDelete(requestParameters, initOverrides) {
1638
+ const response = await this.campaignAssetsDeleteRaw(requestParameters, initOverrides);
1639
+ return await response.value();
1640
+ }
1641
+ /**
1642
+ * Get campaign-asset binding
1643
+ */
1644
+ async campaignAssetsGetRaw(requestParameters, initOverrides) {
1645
+ if (requestParameters["id"] == null) {
1646
+ throw new RequiredError(
1647
+ "id",
1648
+ 'Required parameter "id" was null or undefined when calling campaignAssetsGet().'
1649
+ );
1650
+ }
1651
+ const queryParameters = {};
1652
+ const headerParameters = {};
1653
+ if (requestParameters["xSpaceId"] != null) {
1654
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1655
+ }
1656
+ if (this.configuration && this.configuration.accessToken) {
1657
+ const token = this.configuration.accessToken;
1658
+ const tokenString = await token("ApiToken", ["assets:read"]);
1659
+ if (tokenString) {
1660
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1661
+ }
1662
+ }
1663
+ const response = await this.request({
1664
+ path: `/api/v1/campaign-assets/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
1665
+ method: "GET",
1666
+ headers: headerParameters,
1667
+ query: queryParameters
1668
+ }, initOverrides);
1669
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1670
+ }
1671
+ /**
1672
+ * Get campaign-asset binding
1673
+ */
1674
+ async campaignAssetsGet(requestParameters, initOverrides) {
1675
+ const response = await this.campaignAssetsGetRaw(requestParameters, initOverrides);
1676
+ return await response.value();
1677
+ }
1678
+ /**
1679
+ * List campaign-asset bindings (filter by campaignId/assetId)
1680
+ */
1681
+ async campaignAssetsListRaw(requestParameters, initOverrides) {
1682
+ const queryParameters = {};
1683
+ if (requestParameters["limit"] != null) {
1684
+ queryParameters["limit"] = requestParameters["limit"];
1685
+ }
1686
+ if (requestParameters["cursor"] != null) {
1687
+ queryParameters["cursor"] = requestParameters["cursor"];
1688
+ }
1689
+ if (requestParameters["campaignId"] != null) {
1690
+ queryParameters["campaignId"] = requestParameters["campaignId"];
1691
+ }
1692
+ if (requestParameters["assetId"] != null) {
1693
+ queryParameters["assetId"] = requestParameters["assetId"];
1694
+ }
1695
+ const headerParameters = {};
1696
+ if (requestParameters["xSpaceId"] != null) {
1697
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1698
+ }
1699
+ if (this.configuration && this.configuration.accessToken) {
1700
+ const token = this.configuration.accessToken;
1701
+ const tokenString = await token("ApiToken", ["assets:read"]);
1702
+ if (tokenString) {
1703
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1704
+ }
1705
+ }
1706
+ const response = await this.request({
1707
+ path: `/api/v1/campaign-assets`,
1708
+ method: "GET",
1709
+ headers: headerParameters,
1710
+ query: queryParameters
1711
+ }, initOverrides);
1712
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1713
+ }
1714
+ /**
1715
+ * List campaign-asset bindings (filter by campaignId/assetId)
1716
+ */
1717
+ async campaignAssetsList(requestParameters = {}, initOverrides) {
1718
+ const response = await this.campaignAssetsListRaw(requestParameters, initOverrides);
1719
+ return await response.value();
1720
+ }
1721
+ };
1722
+
1723
+ // src/generated/apis/CampaignsApi.ts
1724
+ var CampaignsApi = class extends BaseAPI {
1725
+ /**
1726
+ * Body accepts a Campaign object. The `adSchedule` field (US-ADS-133) follows the CampaignAdScheduleField shape — see components.schemas.
1727
+ * Create campaign
1728
+ */
1729
+ async campaignsCreateRaw(requestParameters, initOverrides) {
1730
+ if (requestParameters["campaignCreate"] == null) {
1731
+ throw new RequiredError(
1732
+ "campaignCreate",
1733
+ 'Required parameter "campaignCreate" was null or undefined when calling campaignsCreate().'
1734
+ );
1735
+ }
1736
+ const queryParameters = {};
1737
+ const headerParameters = {};
1738
+ headerParameters["Content-Type"] = "application/json";
1739
+ if (requestParameters["xSpaceId"] != null) {
1740
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1741
+ }
1742
+ if (this.configuration && this.configuration.accessToken) {
1743
+ const token = this.configuration.accessToken;
1744
+ const tokenString = await token("ApiToken", ["campaigns:write"]);
1745
+ if (tokenString) {
1746
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1747
+ }
1748
+ }
1749
+ const response = await this.request({
1750
+ path: `/api/v1/campaigns`,
1751
+ method: "POST",
1752
+ headers: headerParameters,
1753
+ query: queryParameters,
1754
+ body: CampaignCreateToJSON(requestParameters["campaignCreate"])
1755
+ }, initOverrides);
1756
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1757
+ }
1758
+ /**
1759
+ * Body accepts a Campaign object. The `adSchedule` field (US-ADS-133) follows the CampaignAdScheduleField shape — see components.schemas.
1760
+ * Create campaign
1761
+ */
1762
+ async campaignsCreate(requestParameters, initOverrides) {
1763
+ const response = await this.campaignsCreateRaw(requestParameters, initOverrides);
1764
+ return await response.value();
1765
+ }
1766
+ /**
1767
+ * Delete campaign
1768
+ */
1769
+ async campaignsDeleteRaw(requestParameters, initOverrides) {
1770
+ if (requestParameters["id"] == null) {
1771
+ throw new RequiredError(
1772
+ "id",
1773
+ 'Required parameter "id" was null or undefined when calling campaignsDelete().'
1774
+ );
1775
+ }
1776
+ const queryParameters = {};
1777
+ const headerParameters = {};
1778
+ if (requestParameters["xSpaceId"] != null) {
1779
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1780
+ }
1781
+ if (this.configuration && this.configuration.accessToken) {
1782
+ const token = this.configuration.accessToken;
1783
+ const tokenString = await token("ApiToken", ["campaigns:write"]);
1784
+ if (tokenString) {
1785
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1786
+ }
1787
+ }
1788
+ const response = await this.request({
1789
+ path: `/api/v1/campaigns/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
1790
+ method: "DELETE",
1791
+ headers: headerParameters,
1792
+ query: queryParameters
1793
+ }, initOverrides);
1794
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1795
+ }
1796
+ /**
1797
+ * Delete campaign
1798
+ */
1799
+ async campaignsDelete(requestParameters, initOverrides) {
1800
+ const response = await this.campaignsDeleteRaw(requestParameters, initOverrides);
1801
+ return await response.value();
1802
+ }
1803
+ /**
1804
+ * Response carries both `adSchedule` (legacy enum echo when set as such) and `adScheduleStructured` (canonical StructuredSchedule).
1805
+ * Get campaign
1806
+ */
1807
+ async campaignsGetRaw(requestParameters, initOverrides) {
1808
+ if (requestParameters["id"] == null) {
1809
+ throw new RequiredError(
1810
+ "id",
1811
+ 'Required parameter "id" was null or undefined when calling campaignsGet().'
1812
+ );
1813
+ }
1814
+ const queryParameters = {};
1815
+ const headerParameters = {};
1816
+ if (requestParameters["xSpaceId"] != null) {
1817
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1818
+ }
1819
+ if (this.configuration && this.configuration.accessToken) {
1820
+ const token = this.configuration.accessToken;
1821
+ const tokenString = await token("ApiToken", ["campaigns:read"]);
1822
+ if (tokenString) {
1823
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1824
+ }
1825
+ }
1826
+ const response = await this.request({
1827
+ path: `/api/v1/campaigns/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
1828
+ method: "GET",
1829
+ headers: headerParameters,
1830
+ query: queryParameters
1831
+ }, initOverrides);
1832
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1833
+ }
1834
+ /**
1835
+ * Response carries both `adSchedule` (legacy enum echo when set as such) and `adScheduleStructured` (canonical StructuredSchedule).
1836
+ * Get campaign
1837
+ */
1838
+ async campaignsGet(requestParameters, initOverrides) {
1839
+ const response = await this.campaignsGetRaw(requestParameters, initOverrides);
1840
+ return await response.value();
1841
+ }
1842
+ /**
1843
+ * List campaigns
1844
+ */
1845
+ async campaignsListRaw(requestParameters, initOverrides) {
1846
+ const queryParameters = {};
1847
+ if (requestParameters["limit"] != null) {
1848
+ queryParameters["limit"] = requestParameters["limit"];
1849
+ }
1850
+ if (requestParameters["cursor"] != null) {
1851
+ queryParameters["cursor"] = requestParameters["cursor"];
1852
+ }
1853
+ const headerParameters = {};
1854
+ if (requestParameters["xSpaceId"] != null) {
1855
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1856
+ }
1857
+ if (this.configuration && this.configuration.accessToken) {
1858
+ const token = this.configuration.accessToken;
1859
+ const tokenString = await token("ApiToken", ["campaigns:read"]);
1860
+ if (tokenString) {
1861
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1862
+ }
1863
+ }
1864
+ const response = await this.request({
1865
+ path: `/api/v1/campaigns`,
1866
+ method: "GET",
1867
+ headers: headerParameters,
1868
+ query: queryParameters
1869
+ }, initOverrides);
1870
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1871
+ }
1872
+ /**
1873
+ * List campaigns
1874
+ */
1875
+ async campaignsList(requestParameters = {}, initOverrides) {
1876
+ const response = await this.campaignsListRaw(requestParameters, initOverrides);
1877
+ return await response.value();
1878
+ }
1879
+ /**
1880
+ * Body fields are merged into the existing campaign. `adSchedule` can be the legacy enum or a StructuredSchedule; the canonical form is recomputed each write.
1881
+ * Update campaign
1882
+ */
1883
+ async campaignsUpdateRaw(requestParameters, initOverrides) {
1884
+ if (requestParameters["id"] == null) {
1885
+ throw new RequiredError(
1886
+ "id",
1887
+ 'Required parameter "id" was null or undefined when calling campaignsUpdate().'
1888
+ );
1889
+ }
1890
+ if (requestParameters["campaignUpdate"] == null) {
1891
+ throw new RequiredError(
1892
+ "campaignUpdate",
1893
+ 'Required parameter "campaignUpdate" was null or undefined when calling campaignsUpdate().'
1894
+ );
1895
+ }
1896
+ const queryParameters = {};
1897
+ const headerParameters = {};
1898
+ headerParameters["Content-Type"] = "application/json";
1899
+ if (requestParameters["xSpaceId"] != null) {
1900
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1901
+ }
1902
+ if (this.configuration && this.configuration.accessToken) {
1903
+ const token = this.configuration.accessToken;
1904
+ const tokenString = await token("ApiToken", ["campaigns:write"]);
1905
+ if (tokenString) {
1906
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1907
+ }
1908
+ }
1909
+ const response = await this.request({
1910
+ path: `/api/v1/campaigns/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
1911
+ method: "PUT",
1912
+ headers: headerParameters,
1913
+ query: queryParameters,
1914
+ body: CampaignUpdateToJSON(requestParameters["campaignUpdate"])
1915
+ }, initOverrides);
1916
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1917
+ }
1918
+ /**
1919
+ * Body fields are merged into the existing campaign. `adSchedule` can be the legacy enum or a StructuredSchedule; the canonical form is recomputed each write.
1920
+ * Update campaign
1921
+ */
1922
+ async campaignsUpdate(requestParameters, initOverrides) {
1923
+ const response = await this.campaignsUpdateRaw(requestParameters, initOverrides);
1924
+ return await response.value();
1925
+ }
1926
+ };
1927
+
1928
+ // src/generated/apis/KeywordsApi.ts
1929
+ var KeywordsApi = class extends BaseAPI {
1930
+ /**
1931
+ * Create keyword
1932
+ */
1933
+ async keywordsCreateRaw(requestParameters, initOverrides) {
1934
+ if (requestParameters["keywordCreate"] == null) {
1935
+ throw new RequiredError(
1936
+ "keywordCreate",
1937
+ 'Required parameter "keywordCreate" was null or undefined when calling keywordsCreate().'
1938
+ );
1939
+ }
1940
+ const queryParameters = {};
1941
+ const headerParameters = {};
1942
+ headerParameters["Content-Type"] = "application/json";
1943
+ if (requestParameters["xSpaceId"] != null) {
1944
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1945
+ }
1946
+ if (this.configuration && this.configuration.accessToken) {
1947
+ const token = this.configuration.accessToken;
1948
+ const tokenString = await token("ApiToken", ["keywords:write"]);
1949
+ if (tokenString) {
1950
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1951
+ }
1952
+ }
1953
+ const response = await this.request({
1954
+ path: `/api/v1/keywords`,
1955
+ method: "POST",
1956
+ headers: headerParameters,
1957
+ query: queryParameters,
1958
+ body: KeywordCreateToJSON(requestParameters["keywordCreate"])
1959
+ }, initOverrides);
1960
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1961
+ }
1962
+ /**
1963
+ * Create keyword
1964
+ */
1965
+ async keywordsCreate(requestParameters, initOverrides) {
1966
+ const response = await this.keywordsCreateRaw(requestParameters, initOverrides);
1967
+ return await response.value();
1968
+ }
1969
+ /**
1970
+ * Delete keyword
1971
+ */
1972
+ async keywordsDeleteRaw(requestParameters, initOverrides) {
1973
+ if (requestParameters["id"] == null) {
1974
+ throw new RequiredError(
1975
+ "id",
1976
+ 'Required parameter "id" was null or undefined when calling keywordsDelete().'
1977
+ );
1978
+ }
1979
+ const queryParameters = {};
1980
+ const headerParameters = {};
1981
+ if (requestParameters["xSpaceId"] != null) {
1982
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
1983
+ }
1984
+ if (this.configuration && this.configuration.accessToken) {
1985
+ const token = this.configuration.accessToken;
1986
+ const tokenString = await token("ApiToken", ["keywords:write"]);
1987
+ if (tokenString) {
1988
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1989
+ }
1990
+ }
1991
+ const response = await this.request({
1992
+ path: `/api/v1/keywords/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
1993
+ method: "DELETE",
1994
+ headers: headerParameters,
1995
+ query: queryParameters
1996
+ }, initOverrides);
1997
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
1998
+ }
1999
+ /**
2000
+ * Delete keyword
2001
+ */
2002
+ async keywordsDelete(requestParameters, initOverrides) {
2003
+ const response = await this.keywordsDeleteRaw(requestParameters, initOverrides);
2004
+ return await response.value();
2005
+ }
2006
+ /**
2007
+ * Get keyword
2008
+ */
2009
+ async keywordsGetRaw(requestParameters, initOverrides) {
2010
+ if (requestParameters["id"] == null) {
2011
+ throw new RequiredError(
2012
+ "id",
2013
+ 'Required parameter "id" was null or undefined when calling keywordsGet().'
2014
+ );
2015
+ }
2016
+ const queryParameters = {};
2017
+ const headerParameters = {};
2018
+ if (requestParameters["xSpaceId"] != null) {
2019
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
2020
+ }
2021
+ if (this.configuration && this.configuration.accessToken) {
2022
+ const token = this.configuration.accessToken;
2023
+ const tokenString = await token("ApiToken", ["keywords:read"]);
2024
+ if (tokenString) {
2025
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2026
+ }
2027
+ }
2028
+ const response = await this.request({
2029
+ path: `/api/v1/keywords/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
2030
+ method: "GET",
2031
+ headers: headerParameters,
2032
+ query: queryParameters
2033
+ }, initOverrides);
2034
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2035
+ }
2036
+ /**
2037
+ * Get keyword
2038
+ */
2039
+ async keywordsGet(requestParameters, initOverrides) {
2040
+ const response = await this.keywordsGetRaw(requestParameters, initOverrides);
2041
+ return await response.value();
2042
+ }
2043
+ /**
2044
+ * List keywords
2045
+ */
2046
+ async keywordsListRaw(requestParameters, initOverrides) {
2047
+ const queryParameters = {};
2048
+ if (requestParameters["limit"] != null) {
2049
+ queryParameters["limit"] = requestParameters["limit"];
2050
+ }
2051
+ if (requestParameters["cursor"] != null) {
2052
+ queryParameters["cursor"] = requestParameters["cursor"];
2053
+ }
2054
+ const headerParameters = {};
2055
+ if (requestParameters["xSpaceId"] != null) {
2056
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
2057
+ }
2058
+ if (this.configuration && this.configuration.accessToken) {
2059
+ const token = this.configuration.accessToken;
2060
+ const tokenString = await token("ApiToken", ["keywords:read"]);
2061
+ if (tokenString) {
2062
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2063
+ }
2064
+ }
2065
+ const response = await this.request({
2066
+ path: `/api/v1/keywords`,
2067
+ method: "GET",
2068
+ headers: headerParameters,
2069
+ query: queryParameters
2070
+ }, initOverrides);
2071
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2072
+ }
2073
+ /**
2074
+ * List keywords
2075
+ */
2076
+ async keywordsList(requestParameters = {}, initOverrides) {
2077
+ const response = await this.keywordsListRaw(requestParameters, initOverrides);
2078
+ return await response.value();
2079
+ }
2080
+ /**
2081
+ * Update keyword
2082
+ */
2083
+ async keywordsUpdateRaw(requestParameters, initOverrides) {
2084
+ if (requestParameters["id"] == null) {
2085
+ throw new RequiredError(
2086
+ "id",
2087
+ 'Required parameter "id" was null or undefined when calling keywordsUpdate().'
2088
+ );
2089
+ }
2090
+ if (requestParameters["keywordUpdate"] == null) {
2091
+ throw new RequiredError(
2092
+ "keywordUpdate",
2093
+ 'Required parameter "keywordUpdate" was null or undefined when calling keywordsUpdate().'
2094
+ );
2095
+ }
2096
+ const queryParameters = {};
2097
+ const headerParameters = {};
2098
+ headerParameters["Content-Type"] = "application/json";
2099
+ if (requestParameters["xSpaceId"] != null) {
2100
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
2101
+ }
2102
+ if (this.configuration && this.configuration.accessToken) {
2103
+ const token = this.configuration.accessToken;
2104
+ const tokenString = await token("ApiToken", ["keywords:write"]);
2105
+ if (tokenString) {
2106
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2107
+ }
2108
+ }
2109
+ const response = await this.request({
2110
+ path: `/api/v1/keywords/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
2111
+ method: "PUT",
2112
+ headers: headerParameters,
2113
+ query: queryParameters,
2114
+ body: KeywordUpdateToJSON(requestParameters["keywordUpdate"])
2115
+ }, initOverrides);
2116
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2117
+ }
2118
+ /**
2119
+ * Update keyword
2120
+ */
2121
+ async keywordsUpdate(requestParameters, initOverrides) {
2122
+ const response = await this.keywordsUpdateRaw(requestParameters, initOverrides);
2123
+ return await response.value();
2124
+ }
2125
+ };
2126
+
2127
+ // src/generated/apis/MediaApi.ts
2128
+ var MediaApi = class extends BaseAPI {
2129
+ /**
2130
+ * Media requirements matrix (per platform/campaign type: required & optional roles, scope, ad format). Versioned so consumers can detect drift.
2131
+ */
2132
+ async mediaMatrixRaw(requestParameters, initOverrides) {
2133
+ const queryParameters = {};
2134
+ const headerParameters = {};
2135
+ if (requestParameters["xSpaceId"] != null) {
2136
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
2137
+ }
2138
+ if (this.configuration && this.configuration.accessToken) {
2139
+ const token = this.configuration.accessToken;
2140
+ const tokenString = await token("ApiToken", []);
2141
+ if (tokenString) {
2142
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2143
+ }
2144
+ }
2145
+ const response = await this.request({
2146
+ path: `/api/v1/media/matrix`,
2147
+ method: "GET",
2148
+ headers: headerParameters,
2149
+ query: queryParameters
2150
+ }, initOverrides);
2151
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2152
+ }
2153
+ /**
2154
+ * Media requirements matrix (per platform/campaign type: required & optional roles, scope, ad format). Versioned so consumers can detect drift.
2155
+ */
2156
+ async mediaMatrix(requestParameters = {}, initOverrides) {
2157
+ const response = await this.mediaMatrixRaw(requestParameters, initOverrides);
2158
+ return await response.value();
2159
+ }
2160
+ };
2161
+
2162
+ // src/generated/apis/MetaApi.ts
2163
+ var MetaApi = class extends BaseAPI {
2164
+ /**
2165
+ * Introspect the authenticated API token
2166
+ */
2167
+ async meGetRaw(initOverrides) {
2168
+ const queryParameters = {};
2169
+ const headerParameters = {};
2170
+ if (this.configuration && this.configuration.accessToken) {
2171
+ const token = this.configuration.accessToken;
2172
+ const tokenString = await token("ApiToken", []);
2173
+ if (tokenString) {
2174
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2175
+ }
2176
+ }
2177
+ const response = await this.request({
2178
+ path: `/api/v1/me`,
2179
+ method: "GET",
2180
+ headers: headerParameters,
2181
+ query: queryParameters
2182
+ }, initOverrides);
2183
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2184
+ }
2185
+ /**
2186
+ * Introspect the authenticated API token
2187
+ */
2188
+ async meGet(initOverrides) {
2189
+ const response = await this.meGetRaw(initOverrides);
2190
+ return await response.value();
2191
+ }
2192
+ /**
2193
+ * OpenAPI specification for this API
2194
+ */
2195
+ async openapiGetRaw(initOverrides) {
2196
+ const queryParameters = {};
2197
+ const headerParameters = {};
2198
+ if (this.configuration && this.configuration.accessToken) {
2199
+ const token = this.configuration.accessToken;
2200
+ const tokenString = await token("ApiToken", []);
2201
+ if (tokenString) {
2202
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2203
+ }
2204
+ }
2205
+ const response = await this.request({
2206
+ path: `/api/v1/openapi.json`,
2207
+ method: "GET",
2208
+ headers: headerParameters,
2209
+ query: queryParameters
2210
+ }, initOverrides);
2211
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2212
+ }
2213
+ /**
2214
+ * OpenAPI specification for this API
2215
+ */
2216
+ async openapiGet(initOverrides) {
2217
+ const response = await this.openapiGetRaw(initOverrides);
2218
+ return await response.value();
2219
+ }
2220
+ /**
2221
+ * List Spaces the token owner is a member of
2222
+ */
2223
+ async spacesListRaw(initOverrides) {
2224
+ const queryParameters = {};
2225
+ const headerParameters = {};
2226
+ if (this.configuration && this.configuration.accessToken) {
2227
+ const token = this.configuration.accessToken;
2228
+ const tokenString = await token("ApiToken", []);
2229
+ if (tokenString) {
2230
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2231
+ }
2232
+ }
2233
+ const response = await this.request({
2234
+ path: `/api/v1/spaces`,
2235
+ method: "GET",
2236
+ headers: headerParameters,
2237
+ query: queryParameters
2238
+ }, initOverrides);
2239
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2240
+ }
2241
+ /**
2242
+ * List Spaces the token owner is a member of
2243
+ */
2244
+ async spacesList(initOverrides) {
2245
+ const response = await this.spacesListRaw(initOverrides);
2246
+ return await response.value();
2247
+ }
2248
+ };
2249
+
2250
+ // src/generated/apis/ReportsApi.ts
2251
+ var ReportsApi = class extends BaseAPI {
2252
+ /**
2253
+ * Account-wide stats
2254
+ */
2255
+ async reportsStatsRaw(requestParameters, initOverrides) {
2256
+ const queryParameters = {};
2257
+ const headerParameters = {};
2258
+ if (requestParameters["xSpaceId"] != null) {
2259
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
2260
+ }
2261
+ if (this.configuration && this.configuration.accessToken) {
2262
+ const token = this.configuration.accessToken;
2263
+ const tokenString = await token("ApiToken", ["reports:read"]);
2264
+ if (tokenString) {
2265
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2266
+ }
2267
+ }
2268
+ const response = await this.request({
2269
+ path: `/api/v1/reports/stats`,
2270
+ method: "GET",
2271
+ headers: headerParameters,
2272
+ query: queryParameters
2273
+ }, initOverrides);
2274
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2275
+ }
2276
+ /**
2277
+ * Account-wide stats
2278
+ */
2279
+ async reportsStats(requestParameters = {}, initOverrides) {
2280
+ const response = await this.reportsStatsRaw(requestParameters, initOverrides);
2281
+ return await response.value();
2282
+ }
2283
+ };
2284
+
2285
+ // src/generated/apis/SitesApi.ts
2286
+ var SitesApi = class extends BaseAPI {
2287
+ /**
2288
+ * Create site
2289
+ */
2290
+ async sitesCreateRaw(requestParameters, initOverrides) {
2291
+ if (requestParameters["siteCreate"] == null) {
2292
+ throw new RequiredError(
2293
+ "siteCreate",
2294
+ 'Required parameter "siteCreate" was null or undefined when calling sitesCreate().'
2295
+ );
2296
+ }
2297
+ const queryParameters = {};
2298
+ const headerParameters = {};
2299
+ headerParameters["Content-Type"] = "application/json";
2300
+ if (requestParameters["xSpaceId"] != null) {
2301
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
2302
+ }
2303
+ if (this.configuration && this.configuration.accessToken) {
2304
+ const token = this.configuration.accessToken;
2305
+ const tokenString = await token("ApiToken", ["sites:write"]);
2306
+ if (tokenString) {
2307
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2308
+ }
2309
+ }
2310
+ const response = await this.request({
2311
+ path: `/api/v1/sites`,
2312
+ method: "POST",
2313
+ headers: headerParameters,
2314
+ query: queryParameters,
2315
+ body: SiteCreateToJSON(requestParameters["siteCreate"])
2316
+ }, initOverrides);
2317
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2318
+ }
2319
+ /**
2320
+ * Create site
2321
+ */
2322
+ async sitesCreate(requestParameters, initOverrides) {
2323
+ const response = await this.sitesCreateRaw(requestParameters, initOverrides);
2324
+ return await response.value();
2325
+ }
2326
+ /**
2327
+ * Returns 409 CONFLICT with `details: { campaigns }` when one or more campaigns still reference the site. Delete or reassign those campaigns first; no cascade is offered.
2328
+ * Delete site
2329
+ */
2330
+ async sitesDeleteRaw(requestParameters, initOverrides) {
2331
+ if (requestParameters["id"] == null) {
2332
+ throw new RequiredError(
2333
+ "id",
2334
+ 'Required parameter "id" was null or undefined when calling sitesDelete().'
2335
+ );
2336
+ }
2337
+ const queryParameters = {};
2338
+ const headerParameters = {};
2339
+ if (requestParameters["xSpaceId"] != null) {
2340
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
2341
+ }
2342
+ if (this.configuration && this.configuration.accessToken) {
2343
+ const token = this.configuration.accessToken;
2344
+ const tokenString = await token("ApiToken", ["sites:write"]);
2345
+ if (tokenString) {
2346
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2347
+ }
2348
+ }
2349
+ const response = await this.request({
2350
+ path: `/api/v1/sites/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
2351
+ method: "DELETE",
2352
+ headers: headerParameters,
2353
+ query: queryParameters
2354
+ }, initOverrides);
2355
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2356
+ }
2357
+ /**
2358
+ * Returns 409 CONFLICT with `details: { campaigns }` when one or more campaigns still reference the site. Delete or reassign those campaigns first; no cascade is offered.
2359
+ * Delete site
2360
+ */
2361
+ async sitesDelete(requestParameters, initOverrides) {
2362
+ const response = await this.sitesDeleteRaw(requestParameters, initOverrides);
2363
+ return await response.value();
2364
+ }
2365
+ /**
2366
+ * Get site
2367
+ */
2368
+ async sitesGetRaw(requestParameters, initOverrides) {
2369
+ if (requestParameters["id"] == null) {
2370
+ throw new RequiredError(
2371
+ "id",
2372
+ 'Required parameter "id" was null or undefined when calling sitesGet().'
2373
+ );
2374
+ }
2375
+ const queryParameters = {};
2376
+ const headerParameters = {};
2377
+ if (requestParameters["xSpaceId"] != null) {
2378
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
2379
+ }
2380
+ if (this.configuration && this.configuration.accessToken) {
2381
+ const token = this.configuration.accessToken;
2382
+ const tokenString = await token("ApiToken", ["sites:read"]);
2383
+ if (tokenString) {
2384
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2385
+ }
2386
+ }
2387
+ const response = await this.request({
2388
+ path: `/api/v1/sites/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
2389
+ method: "GET",
2390
+ headers: headerParameters,
2391
+ query: queryParameters
2392
+ }, initOverrides);
2393
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2394
+ }
2395
+ /**
2396
+ * Get site
2397
+ */
2398
+ async sitesGet(requestParameters, initOverrides) {
2399
+ const response = await this.sitesGetRaw(requestParameters, initOverrides);
2400
+ return await response.value();
2401
+ }
2402
+ /**
2403
+ * List sites
2404
+ */
2405
+ async sitesListRaw(requestParameters, initOverrides) {
2406
+ const queryParameters = {};
2407
+ if (requestParameters["limit"] != null) {
2408
+ queryParameters["limit"] = requestParameters["limit"];
2409
+ }
2410
+ if (requestParameters["cursor"] != null) {
2411
+ queryParameters["cursor"] = requestParameters["cursor"];
2412
+ }
2413
+ const headerParameters = {};
2414
+ if (requestParameters["xSpaceId"] != null) {
2415
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
2416
+ }
2417
+ if (this.configuration && this.configuration.accessToken) {
2418
+ const token = this.configuration.accessToken;
2419
+ const tokenString = await token("ApiToken", ["sites:read"]);
2420
+ if (tokenString) {
2421
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2422
+ }
2423
+ }
2424
+ const response = await this.request({
2425
+ path: `/api/v1/sites`,
2426
+ method: "GET",
2427
+ headers: headerParameters,
2428
+ query: queryParameters
2429
+ }, initOverrides);
2430
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2431
+ }
2432
+ /**
2433
+ * List sites
2434
+ */
2435
+ async sitesList(requestParameters = {}, initOverrides) {
2436
+ const response = await this.sitesListRaw(requestParameters, initOverrides);
2437
+ return await response.value();
2438
+ }
2439
+ /**
2440
+ * Update site
2441
+ */
2442
+ async sitesUpdateRaw(requestParameters, initOverrides) {
2443
+ if (requestParameters["id"] == null) {
2444
+ throw new RequiredError(
2445
+ "id",
2446
+ 'Required parameter "id" was null or undefined when calling sitesUpdate().'
2447
+ );
2448
+ }
2449
+ if (requestParameters["siteUpdate"] == null) {
2450
+ throw new RequiredError(
2451
+ "siteUpdate",
2452
+ 'Required parameter "siteUpdate" was null or undefined when calling sitesUpdate().'
2453
+ );
2454
+ }
2455
+ const queryParameters = {};
2456
+ const headerParameters = {};
2457
+ headerParameters["Content-Type"] = "application/json";
2458
+ if (requestParameters["xSpaceId"] != null) {
2459
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
2460
+ }
2461
+ if (this.configuration && this.configuration.accessToken) {
2462
+ const token = this.configuration.accessToken;
2463
+ const tokenString = await token("ApiToken", ["sites:write"]);
2464
+ if (tokenString) {
2465
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2466
+ }
2467
+ }
2468
+ const response = await this.request({
2469
+ path: `/api/v1/sites/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
2470
+ method: "PUT",
2471
+ headers: headerParameters,
2472
+ query: queryParameters,
2473
+ body: SiteUpdateToJSON(requestParameters["siteUpdate"])
2474
+ }, initOverrides);
2475
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2476
+ }
2477
+ /**
2478
+ * Update site
2479
+ */
2480
+ async sitesUpdate(requestParameters, initOverrides) {
2481
+ const response = await this.sitesUpdateRaw(requestParameters, initOverrides);
2482
+ return await response.value();
2483
+ }
2484
+ };
2485
+
2486
+ // src/generated/apis/SyncApi.ts
2487
+ var SyncApi = class extends BaseAPI {
2488
+ /**
2489
+ * Cancellation takes effect at the next campaign boundary.
2490
+ * Request cancellation of a running sync
2491
+ */
2492
+ async syncCancelRaw(requestParameters, initOverrides) {
2493
+ if (requestParameters["id"] == null) {
2494
+ throw new RequiredError(
2495
+ "id",
2496
+ 'Required parameter "id" was null or undefined when calling syncCancel().'
2497
+ );
2498
+ }
2499
+ const queryParameters = {};
2500
+ const headerParameters = {};
2501
+ if (requestParameters["xSpaceId"] != null) {
2502
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
2503
+ }
2504
+ if (this.configuration && this.configuration.accessToken) {
2505
+ const token = this.configuration.accessToken;
2506
+ const tokenString = await token("ApiToken", ["sync:write"]);
2507
+ if (tokenString) {
2508
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2509
+ }
2510
+ }
2511
+ const response = await this.request({
2512
+ path: `/api/v1/sync/{id}/cancel`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
2513
+ method: "POST",
2514
+ headers: headerParameters,
2515
+ query: queryParameters
2516
+ }, initOverrides);
2517
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2518
+ }
2519
+ /**
2520
+ * Cancellation takes effect at the next campaign boundary.
2521
+ * Request cancellation of a running sync
2522
+ */
2523
+ async syncCancel(requestParameters, initOverrides) {
2524
+ const response = await this.syncCancelRaw(requestParameters, initOverrides);
2525
+ return await response.value();
2526
+ }
2527
+ /**
2528
+ * Returns the full record including per-campaign progress and structured errors. 404 if the id is outside the caller\'s Space.
2529
+ * Get a sync record (status, progress, totals, errors)
2530
+ */
2531
+ async syncGetRaw(requestParameters, initOverrides) {
2532
+ if (requestParameters["id"] == null) {
2533
+ throw new RequiredError(
2534
+ "id",
2535
+ 'Required parameter "id" was null or undefined when calling syncGet().'
2536
+ );
2537
+ }
2538
+ const queryParameters = {};
2539
+ const headerParameters = {};
2540
+ if (requestParameters["xSpaceId"] != null) {
2541
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
2542
+ }
2543
+ if (this.configuration && this.configuration.accessToken) {
2544
+ const token = this.configuration.accessToken;
2545
+ const tokenString = await token("ApiToken", ["sync:read"]);
2546
+ if (tokenString) {
2547
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2548
+ }
2549
+ }
2550
+ const response = await this.request({
2551
+ path: `/api/v1/sync/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))),
2552
+ method: "GET",
2553
+ headers: headerParameters,
2554
+ query: queryParameters
2555
+ }, initOverrides);
2556
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2557
+ }
2558
+ /**
2559
+ * Returns the full record including per-campaign progress and structured errors. 404 if the id is outside the caller\'s Space.
2560
+ * Get a sync record (status, progress, totals, errors)
2561
+ */
2562
+ async syncGet(requestParameters, initOverrides) {
2563
+ const response = await this.syncGetRaw(requestParameters, initOverrides);
2564
+ return await response.value();
2565
+ }
2566
+ /**
2567
+ * List recent syncs for the active Space
2568
+ */
2569
+ async syncListRaw(requestParameters, initOverrides) {
2570
+ const queryParameters = {};
2571
+ if (requestParameters["limit"] != null) {
2572
+ queryParameters["limit"] = requestParameters["limit"];
2573
+ }
2574
+ if (requestParameters["cursor"] != null) {
2575
+ queryParameters["cursor"] = requestParameters["cursor"];
2576
+ }
2577
+ const headerParameters = {};
2578
+ if (requestParameters["xSpaceId"] != null) {
2579
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
2580
+ }
2581
+ if (this.configuration && this.configuration.accessToken) {
2582
+ const token = this.configuration.accessToken;
2583
+ const tokenString = await token("ApiToken", ["sync:read"]);
2584
+ if (tokenString) {
2585
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2586
+ }
2587
+ }
2588
+ const response = await this.request({
2589
+ path: `/api/v1/sync`,
2590
+ method: "GET",
2591
+ headers: headerParameters,
2592
+ query: queryParameters
2593
+ }, initOverrides);
2594
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2595
+ }
2596
+ /**
2597
+ * List recent syncs for the active Space
2598
+ */
2599
+ async syncList(requestParameters = {}, initOverrides) {
2600
+ const response = await this.syncListRaw(requestParameters, initOverrides);
2601
+ return await response.value();
2602
+ }
2603
+ /**
2604
+ * Computes the import/export/remove plan for the active Space without executing.
2605
+ * Preview what a sync would do (dry run)
2606
+ */
2607
+ async syncPlanRaw(requestParameters, initOverrides) {
2608
+ const queryParameters = {};
2609
+ if (requestParameters["platforms"] != null) {
2610
+ queryParameters["platforms"] = requestParameters["platforms"];
2611
+ }
2612
+ const headerParameters = {};
2613
+ if (requestParameters["xSpaceId"] != null) {
2614
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
2615
+ }
2616
+ if (this.configuration && this.configuration.accessToken) {
2617
+ const token = this.configuration.accessToken;
2618
+ const tokenString = await token("ApiToken", ["sync:read"]);
2619
+ if (tokenString) {
2620
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2621
+ }
2622
+ }
2623
+ const response = await this.request({
2624
+ path: `/api/v1/sync/plan`,
2625
+ method: "GET",
2626
+ headers: headerParameters,
2627
+ query: queryParameters
2628
+ }, initOverrides);
2629
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2630
+ }
2631
+ /**
2632
+ * Computes the import/export/remove plan for the active Space without executing.
2633
+ * Preview what a sync would do (dry run)
2634
+ */
2635
+ async syncPlan(requestParameters = {}, initOverrides) {
2636
+ const response = await this.syncPlanRaw(requestParameters, initOverrides);
2637
+ return await response.value();
2638
+ }
2639
+ /**
2640
+ * Pushes the active Space\'s campaign tree to the connected ad platforms (and imports remote changes). Asynchronous: returns a `syncId` immediately with status `started` (or `nothing_to_sync`). Poll `GET /api/v1/sync/{id}` for progress and errors. Returns 409 CONFLICT (details: { activeSyncId, startedAt }) if a sync is already running in this Space. The platform connection used is account-wide; the campaigns synced are the active Space\'s.
2641
+ * Trigger a sync for the active Space
2642
+ */
2643
+ async syncTriggerRaw(requestParameters, initOverrides) {
2644
+ if (requestParameters["syncTriggerRequest"] == null) {
2645
+ throw new RequiredError(
2646
+ "syncTriggerRequest",
2647
+ 'Required parameter "syncTriggerRequest" was null or undefined when calling syncTrigger().'
2648
+ );
2649
+ }
2650
+ const queryParameters = {};
2651
+ const headerParameters = {};
2652
+ headerParameters["Content-Type"] = "application/json";
2653
+ if (requestParameters["xSpaceId"] != null) {
2654
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
2655
+ }
2656
+ if (this.configuration && this.configuration.accessToken) {
2657
+ const token = this.configuration.accessToken;
2658
+ const tokenString = await token("ApiToken", ["sync:write"]);
2659
+ if (tokenString) {
2660
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2661
+ }
2662
+ }
2663
+ const response = await this.request({
2664
+ path: `/api/v1/sync`,
2665
+ method: "POST",
2666
+ headers: headerParameters,
2667
+ query: queryParameters,
2668
+ body: SyncTriggerRequestToJSON(requestParameters["syncTriggerRequest"])
2669
+ }, initOverrides);
2670
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2671
+ }
2672
+ /**
2673
+ * Pushes the active Space\'s campaign tree to the connected ad platforms (and imports remote changes). Asynchronous: returns a `syncId` immediately with status `started` (or `nothing_to_sync`). Poll `GET /api/v1/sync/{id}` for progress and errors. Returns 409 CONFLICT (details: { activeSyncId, startedAt }) if a sync is already running in this Space. The platform connection used is account-wide; the campaigns synced are the active Space\'s.
2674
+ * Trigger a sync for the active Space
2675
+ */
2676
+ async syncTrigger(requestParameters, initOverrides) {
2677
+ const response = await this.syncTriggerRaw(requestParameters, initOverrides);
2678
+ return await response.value();
2679
+ }
2680
+ /**
2681
+ * Clears the platform link (and optionally removes the remote campaign) while keeping the local campaign. Returns a per-id result map; already-unlinked ids report `not_linked`. Unlink then sync to re-create campaigns cleanly on the platform.
2682
+ * Unlink the active Space\'s campaigns from a platform
2683
+ */
2684
+ async syncUnlinkRaw(requestParameters, initOverrides) {
2685
+ if (requestParameters["syncUnlinkRequest"] == null) {
2686
+ throw new RequiredError(
2687
+ "syncUnlinkRequest",
2688
+ 'Required parameter "syncUnlinkRequest" was null or undefined when calling syncUnlink().'
2689
+ );
2690
+ }
2691
+ const queryParameters = {};
2692
+ const headerParameters = {};
2693
+ headerParameters["Content-Type"] = "application/json";
2694
+ if (requestParameters["xSpaceId"] != null) {
2695
+ headerParameters["X-Space-Id"] = String(requestParameters["xSpaceId"]);
2696
+ }
2697
+ if (this.configuration && this.configuration.accessToken) {
2698
+ const token = this.configuration.accessToken;
2699
+ const tokenString = await token("ApiToken", ["sync:write"]);
2700
+ if (tokenString) {
2701
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2702
+ }
2703
+ }
2704
+ const response = await this.request({
2705
+ path: `/api/v1/sync/unlink`,
2706
+ method: "POST",
2707
+ headers: headerParameters,
2708
+ query: queryParameters,
2709
+ body: SyncUnlinkRequestToJSON(requestParameters["syncUnlinkRequest"])
2710
+ }, initOverrides);
2711
+ return new JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
2712
+ }
2713
+ /**
2714
+ * Clears the platform link (and optionally removes the remote campaign) while keeping the local campaign. Returns a per-id result map; already-unlinked ids report `not_linked`. Unlink then sync to re-create campaigns cleanly on the platform.
2715
+ * Unlink the active Space\'s campaigns from a platform
2716
+ */
2717
+ async syncUnlink(requestParameters, initOverrides) {
2718
+ const response = await this.syncUnlinkRaw(requestParameters, initOverrides);
2719
+ return await response.value();
2720
+ }
2721
+ };
2722
+
2723
+ // src/index.ts
2724
+ var PRODUCTION_BASE_URL = "https://api.ads.defoai.com";
2725
+ var STAGING_BASE_URL = "https://api-ads-staging.defoai.com";
2726
+ var DefoAdsError = class extends Error {
2727
+ constructor(status, code, message, details) {
2728
+ super(message);
2729
+ this.name = "DefoAdsError";
2730
+ this.status = status;
2731
+ this.code = code;
2732
+ this.details = details;
2733
+ }
2734
+ };
2735
+ var AuthError = class extends DefoAdsError {
2736
+ constructor() {
2737
+ super(...arguments);
2738
+ this.name = "AuthError";
2739
+ }
2740
+ };
2741
+ var ForbiddenError = class extends DefoAdsError {
2742
+ constructor() {
2743
+ super(...arguments);
2744
+ this.name = "ForbiddenError";
2745
+ }
2746
+ };
2747
+ var NotFoundError = class extends DefoAdsError {
2748
+ constructor() {
2749
+ super(...arguments);
2750
+ this.name = "NotFoundError";
2751
+ }
2752
+ };
2753
+ var ConflictError = class extends DefoAdsError {
2754
+ constructor() {
2755
+ super(...arguments);
2756
+ this.name = "ConflictError";
2757
+ }
2758
+ };
2759
+ var RateLimitError = class extends DefoAdsError {
2760
+ constructor() {
2761
+ super(...arguments);
2762
+ this.name = "RateLimitError";
2763
+ }
2764
+ };
2765
+ function toTypedError(status, code, message, details) {
2766
+ const msg = message || `HTTP ${status}`;
2767
+ switch (status) {
2768
+ case 401:
2769
+ return new AuthError(status, code, msg, details);
2770
+ case 403:
2771
+ return new ForbiddenError(status, code, msg, details);
2772
+ case 404:
2773
+ return new NotFoundError(status, code, msg, details);
2774
+ case 409:
2775
+ return new ConflictError(status, code, msg, details);
2776
+ case 429:
2777
+ return new RateLimitError(status, code, msg, details);
2778
+ default:
2779
+ return new DefoAdsError(status, code, msg, details);
2780
+ }
2781
+ }
2782
+ function retryingFetch(baseFetch, maxRetries) {
2783
+ return async (input, init) => {
2784
+ const method = (init?.method || "GET").toUpperCase();
2785
+ const idempotent = method === "GET" || method === "PUT" || method === "DELETE";
2786
+ let attempt = 0;
2787
+ while (true) {
2788
+ const res = await baseFetch(input, init);
2789
+ const retryable = res.status === 429 || res.status >= 500 && idempotent;
2790
+ if (!retryable || attempt >= maxRetries) return res;
2791
+ const retryAfter = res.headers.get("retry-after");
2792
+ const waitMs = retryAfter ? Number(retryAfter) * 1e3 : Math.min(2 ** attempt * 500, 8e3);
2793
+ await new Promise((r) => setTimeout(r, Number.isFinite(waitMs) ? waitMs : 1e3));
2794
+ attempt += 1;
2795
+ }
2796
+ };
2797
+ }
2798
+ var errorMiddleware = {
2799
+ post: async ({ response }) => {
2800
+ if (response.status >= 400) {
2801
+ let code;
2802
+ let message = response.statusText;
2803
+ let details;
2804
+ try {
2805
+ const body = await response.clone().json();
2806
+ code = body?.error?.code;
2807
+ message = body?.error?.message ?? message;
2808
+ details = body?.error?.details;
2809
+ } catch {
2810
+ }
2811
+ throw toTypedError(response.status, code, message, details);
2812
+ }
2813
+ return response;
2814
+ }
2815
+ };
2816
+ var data = (env) => env?.data;
2817
+ function crudResource(api, prefix, createKey, updateKey) {
2818
+ return {
2819
+ /** List one page (default 50, max 200). */
2820
+ list: (params = {}) => api[`${prefix}List`]({ ...params }).then(data),
2821
+ /** Async-iterate EVERY item across all pages (follows `meta.nextCursor`). */
2822
+ async *listAll(params = {}) {
2823
+ let cursor = params.cursor;
2824
+ do {
2825
+ const env = await api[`${prefix}List`]({ ...params, cursor });
2826
+ for (const item of env.data ?? []) yield item;
2827
+ cursor = env.meta?.nextCursor ?? void 0;
2828
+ } while (cursor);
2829
+ },
2830
+ /** Fetch one by id. */
2831
+ get: (id) => api[`${prefix}Get`]({ id }).then(data),
2832
+ /** Create. */
2833
+ create: (body) => api[`${prefix}Create`]({ [createKey]: body }).then(data),
2834
+ /** Partial update by id. */
2835
+ update: (id, body) => api[`${prefix}Update`]({ id, [updateKey]: body }).then(data),
2836
+ /** Delete by id. */
2837
+ delete: (id) => api[`${prefix}Delete`]({ id }).then(data)
2838
+ };
2839
+ }
2840
+ var DefoAds = class {
2841
+ constructor(options) {
2842
+ if (!options?.token) throw new Error("DefoAds: `token` is required (a dads_\u2026 personal access token).");
2843
+ const baseFetch = options.fetch ?? globalThis.fetch;
2844
+ if (!baseFetch) throw new Error("DefoAds: no global fetch \u2014 pass `fetch` in options (Node < 18).");
2845
+ const config = new Configuration({
2846
+ basePath: options.baseUrl ?? PRODUCTION_BASE_URL,
2847
+ accessToken: options.token,
2848
+ // → Authorization: Bearer <token>
2849
+ headers: options.space ? { "X-Space-Id": options.space } : {},
2850
+ fetchApi: retryingFetch(baseFetch, options.maxRetries ?? 3),
2851
+ middleware: [errorMiddleware]
2852
+ });
2853
+ this.campaigns = crudResource(new CampaignsApi(config), "campaigns", "campaignCreate", "campaignUpdate");
2854
+ this.adGroups = crudResource(new AdGroupsApi(config), "adGroups", "adGroupCreate", "adGroupUpdate");
2855
+ this.ads = crudResource(new AdsApi(config), "ads", "adCreate", "adUpdate");
2856
+ this.keywords = crudResource(new KeywordsApi(config), "keywords", "keywordCreate", "keywordUpdate");
2857
+ this.sites = crudResource(new SitesApi(config), "sites", "siteCreate", "siteUpdate");
2858
+ this.assets = crudResource(new AssetsApi(config), "assets", "assetCreate", "assetUpdate");
2859
+ const campaignAssetsApi = new CampaignAssetsApi(config);
2860
+ this.campaignAssets = {
2861
+ list: (p = {}) => campaignAssetsApi.campaignAssetsList(p).then(data),
2862
+ get: (id) => campaignAssetsApi.campaignAssetsGet({ id }).then(data),
2863
+ create: (body) => campaignAssetsApi.campaignAssetsCreate({ campaignAssetCreate: body }).then(data),
2864
+ delete: (id) => campaignAssetsApi.campaignAssetsDelete({ id }).then(data)
2865
+ };
2866
+ const adAssetsApi = new AdAssetsApi(config);
2867
+ this.adAssets = {
2868
+ list: (p = {}) => adAssetsApi.adAssetsList(p).then(data),
2869
+ get: (id) => adAssetsApi.adAssetsGet({ id }).then(data),
2870
+ create: (body) => adAssetsApi.adAssetsCreate({ adAssetCreate: body }).then(data),
2871
+ delete: (id) => adAssetsApi.adAssetsDelete({ id }).then(data)
2872
+ };
2873
+ const mediaApi = new MediaApi(config);
2874
+ this.media = { matrix: () => mediaApi.mediaMatrix().then(data) };
2875
+ const reportsApi = new ReportsApi(config);
2876
+ this.reports = {
2877
+ /** Performance stats; see the reference for `date_range`, `group_by`, `metrics`, etc. */
2878
+ stats: (params = {}) => reportsApi.reportsStats(params).then(data)
2879
+ };
2880
+ const syncApi = new SyncApi(config);
2881
+ this.sync = {
2882
+ /** Trigger a sync for the active Space (async — poll `get(syncId)`). */
2883
+ trigger: (body = {}) => syncApi.syncTrigger({ syncTriggerRequest: body }).then(data),
2884
+ list: (p = {}) => syncApi.syncList(p).then(data),
2885
+ /** Dry-run plan (import/export/remove) without executing. */
2886
+ plan: (p = {}) => syncApi.syncPlan(p).then(data),
2887
+ get: (id) => syncApi.syncGet({ id }).then(data),
2888
+ cancel: (id) => syncApi.syncCancel({ id }).then(data),
2889
+ /** Unlink campaigns from a platform (keeps the local campaign). */
2890
+ unlink: (body) => syncApi.syncUnlink({ syncUnlinkRequest: body }).then(data)
2891
+ };
2892
+ const metaApi = new MetaApi(config);
2893
+ this.meta = {
2894
+ /** Introspect the authenticated token. */
2895
+ me: () => metaApi.meGet().then(data),
2896
+ /** List Spaces the token can access. */
2897
+ spaces: () => metaApi.spacesList().then(data)
2898
+ };
2899
+ }
2900
+ };
2901
+ var index_default = DefoAds;
2902
+
2903
+ exports.AuthError = AuthError;
2904
+ exports.ConflictError = ConflictError;
2905
+ exports.DefoAds = DefoAds;
2906
+ exports.DefoAdsError = DefoAdsError;
2907
+ exports.ForbiddenError = ForbiddenError;
2908
+ exports.NotFoundError = NotFoundError;
2909
+ exports.PRODUCTION_BASE_URL = PRODUCTION_BASE_URL;
2910
+ exports.RateLimitError = RateLimitError;
2911
+ exports.STAGING_BASE_URL = STAGING_BASE_URL;
2912
+ exports.default = index_default;
2913
+ //# sourceMappingURL=index.cjs.map
2914
+ //# sourceMappingURL=index.cjs.map