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