@defoai/ads-client 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/README.md +88 -0
  2. package/dist/generated/apis/AdAssetsApi.d.ts +140 -0
  3. package/dist/generated/apis/AdAssetsApi.js +173 -0
  4. package/dist/generated/apis/AdGroupsApi.d.ts +165 -0
  5. package/dist/generated/apis/AdGroupsApi.js +205 -0
  6. package/dist/generated/apis/AdsApi.d.ts +160 -0
  7. package/dist/generated/apis/AdsApi.js +200 -0
  8. package/dist/generated/apis/AssetsApi.d.ts +162 -0
  9. package/dist/generated/apis/AssetsApi.js +203 -0
  10. package/dist/generated/apis/CampaignAssetsApi.d.ts +136 -0
  11. package/dist/generated/apis/CampaignAssetsApi.js +167 -0
  12. package/dist/generated/apis/CampaignsApi.d.ts +169 -0
  13. package/dist/generated/apis/CampaignsApi.js +206 -0
  14. package/dist/generated/apis/KeywordsApi.d.ts +160 -0
  15. package/dist/generated/apis/KeywordsApi.js +200 -0
  16. package/dist/generated/apis/MediaApi.d.ts +50 -0
  17. package/dist/generated/apis/MediaApi.js +51 -0
  18. package/dist/generated/apis/MetaApi.d.ts +86 -0
  19. package/dist/generated/apis/MetaApi.js +104 -0
  20. package/dist/generated/apis/ReportsApi.d.ts +50 -0
  21. package/dist/generated/apis/ReportsApi.js +51 -0
  22. package/dist/generated/apis/SitesApi.d.ts +163 -0
  23. package/dist/generated/apis/SitesApi.js +202 -0
  24. package/dist/generated/apis/SyncApi.d.ts +199 -0
  25. package/dist/generated/apis/SyncApi.js +241 -0
  26. package/dist/generated/apis/index.d.ts +12 -0
  27. package/dist/generated/apis/index.js +14 -0
  28. package/dist/generated/index.d.ts +3 -0
  29. package/dist/generated/index.js +5 -0
  30. package/dist/generated/models/AdAssetCreate.d.ts +83 -0
  31. package/dist/generated/models/AdAssetCreate.js +76 -0
  32. package/dist/generated/models/AdCreate.d.ts +147 -0
  33. package/dist/generated/models/AdCreate.js +97 -0
  34. package/dist/generated/models/AdGroupAudience.d.ts +44 -0
  35. package/dist/generated/models/AdGroupAudience.js +49 -0
  36. package/dist/generated/models/AdGroupCreate.d.ts +104 -0
  37. package/dist/generated/models/AdGroupCreate.js +74 -0
  38. package/dist/generated/models/AdGroupUpdate.d.ts +104 -0
  39. package/dist/generated/models/AdGroupUpdate.js +70 -0
  40. package/dist/generated/models/AdUpdate.d.ts +147 -0
  41. package/dist/generated/models/AdUpdate.js +85 -0
  42. package/dist/generated/models/AssetCreate.d.ts +117 -0
  43. package/dist/generated/models/AssetCreate.js +80 -0
  44. package/dist/generated/models/AssetUpdate.d.ts +79 -0
  45. package/dist/generated/models/AssetUpdate.js +61 -0
  46. package/dist/generated/models/BiddingStrategy.d.ts +70 -0
  47. package/dist/generated/models/BiddingStrategy.js +62 -0
  48. package/dist/generated/models/CampaignAdScheduleField.d.ts +12 -0
  49. package/dist/generated/models/CampaignAdScheduleField.js +4 -0
  50. package/dist/generated/models/CampaignAssetCreate.d.ts +57 -0
  51. package/dist/generated/models/CampaignAssetCreate.js +63 -0
  52. package/dist/generated/models/CampaignCreate.d.ts +161 -0
  53. package/dist/generated/models/CampaignCreate.js +102 -0
  54. package/dist/generated/models/CampaignTargeting.d.ts +50 -0
  55. package/dist/generated/models/CampaignTargeting.js +47 -0
  56. package/dist/generated/models/CampaignUpdate.d.ts +161 -0
  57. package/dist/generated/models/CampaignUpdate.js +98 -0
  58. package/dist/generated/models/CampaignsListCursorParameter.d.ts +26 -0
  59. package/dist/generated/models/CampaignsListCursorParameter.js +31 -0
  60. package/dist/generated/models/ErrorEnvelope.d.ts +33 -0
  61. package/dist/generated/models/ErrorEnvelope.js +44 -0
  62. package/dist/generated/models/ErrorEnvelopeError.d.ts +44 -0
  63. package/dist/generated/models/ErrorEnvelopeError.js +49 -0
  64. package/dist/generated/models/KeywordCreate.d.ts +86 -0
  65. package/dist/generated/models/KeywordCreate.js +73 -0
  66. package/dist/generated/models/KeywordUpdate.d.ts +86 -0
  67. package/dist/generated/models/KeywordUpdate.js +69 -0
  68. package/dist/generated/models/Location.d.ts +61 -0
  69. package/dist/generated/models/Location.js +61 -0
  70. package/dist/generated/models/NegativeKeywordEntry.d.ts +47 -0
  71. package/dist/generated/models/NegativeKeywordEntry.js +55 -0
  72. package/dist/generated/models/ScheduleWindow.d.ts +95 -0
  73. package/dist/generated/models/ScheduleWindow.js +87 -0
  74. package/dist/generated/models/SiteCreate.d.ts +99 -0
  75. package/dist/generated/models/SiteCreate.js +78 -0
  76. package/dist/generated/models/SiteCreateSeoKeywords.d.ts +11 -0
  77. package/dist/generated/models/SiteCreateSeoKeywords.js +12 -0
  78. package/dist/generated/models/SiteCreateTargetGroups.d.ts +11 -0
  79. package/dist/generated/models/SiteCreateTargetGroups.js +12 -0
  80. package/dist/generated/models/SiteLinkEntry.d.ts +50 -0
  81. package/dist/generated/models/SiteLinkEntry.js +47 -0
  82. package/dist/generated/models/SiteUpdate.d.ts +99 -0
  83. package/dist/generated/models/SiteUpdate.js +74 -0
  84. package/dist/generated/models/Sitelink.d.ts +64 -0
  85. package/dist/generated/models/Sitelink.js +51 -0
  86. package/dist/generated/models/StructuredSchedule.d.ts +39 -0
  87. package/dist/generated/models/StructuredSchedule.js +46 -0
  88. package/dist/generated/models/StructuredSnippet.d.ts +38 -0
  89. package/dist/generated/models/StructuredSnippet.js +47 -0
  90. package/dist/generated/models/SuccessEnvelope.d.ts +39 -0
  91. package/dist/generated/models/SuccessEnvelope.js +46 -0
  92. package/dist/generated/models/SuccessEnvelopeMeta.d.ts +39 -0
  93. package/dist/generated/models/SuccessEnvelopeMeta.js +44 -0
  94. package/dist/generated/models/SuccessEnvelopeMetaNextCursor.d.ts +26 -0
  95. package/dist/generated/models/SuccessEnvelopeMetaNextCursor.js +31 -0
  96. package/dist/generated/models/SyncCampaignDetail.d.ts +88 -0
  97. package/dist/generated/models/SyncCampaignDetail.js +71 -0
  98. package/dist/generated/models/SyncPlan.d.ts +35 -0
  99. package/dist/generated/models/SyncPlan.js +43 -0
  100. package/dist/generated/models/SyncPlanPlatformsValue.d.ts +33 -0
  101. package/dist/generated/models/SyncPlanPlatformsValue.js +42 -0
  102. package/dist/generated/models/SyncPlanPlatformsValueTotals.d.ts +44 -0
  103. package/dist/generated/models/SyncPlanPlatformsValueTotals.js +45 -0
  104. package/dist/generated/models/SyncProgress.d.ts +57 -0
  105. package/dist/generated/models/SyncProgress.js +50 -0
  106. package/dist/generated/models/SyncRecord.d.ts +103 -0
  107. package/dist/generated/models/SyncRecord.js +73 -0
  108. package/dist/generated/models/SyncRecordErrorsInner.d.ts +38 -0
  109. package/dist/generated/models/SyncRecordErrorsInner.js +43 -0
  110. package/dist/generated/models/SyncTotals.d.ts +68 -0
  111. package/dist/generated/models/SyncTotals.js +53 -0
  112. package/dist/generated/models/SyncTriggerRequest.d.ts +39 -0
  113. package/dist/generated/models/SyncTriggerRequest.js +44 -0
  114. package/dist/generated/models/SyncTriggerRequestOptions.d.ts +56 -0
  115. package/dist/generated/models/SyncTriggerRequestOptions.js +49 -0
  116. package/dist/generated/models/SyncTriggerResponse.d.ts +59 -0
  117. package/dist/generated/models/SyncTriggerResponse.js +55 -0
  118. package/dist/generated/models/SyncUnlinkRequest.d.ts +44 -0
  119. package/dist/generated/models/SyncUnlinkRequest.js +47 -0
  120. package/dist/generated/models/index.d.ts +45 -0
  121. package/dist/generated/models/index.js +47 -0
  122. package/dist/generated/runtime.d.ts +182 -0
  123. package/dist/generated/runtime.js +318 -0
  124. package/dist/index.d.ts +177 -0
  125. package/dist/index.js +207 -0
  126. package/package.json +32 -0
  127. package/src/generated/apis/AdAssetsApi.ts +342 -0
  128. package/src/generated/apis/AdGroupsApi.ts +408 -0
  129. package/src/generated/apis/AdsApi.ts +399 -0
  130. package/src/generated/apis/AssetsApi.ts +405 -0
  131. package/src/generated/apis/CampaignAssetsApi.ts +330 -0
  132. package/src/generated/apis/CampaignsApi.ts +408 -0
  133. package/src/generated/apis/KeywordsApi.ts +399 -0
  134. package/src/generated/apis/MediaApi.ts +99 -0
  135. package/src/generated/apis/MetaApi.ts +186 -0
  136. package/src/generated/apis/ReportsApi.ts +99 -0
  137. package/src/generated/apis/SitesApi.ts +402 -0
  138. package/src/generated/apis/SyncApi.ts +468 -0
  139. package/src/generated/apis/index.ts +14 -0
  140. package/src/generated/index.ts +5 -0
  141. package/src/generated/models/AdAssetCreate.ts +133 -0
  142. package/src/generated/models/AdCreate.ts +234 -0
  143. package/src/generated/models/AdGroupAudience.ts +83 -0
  144. package/src/generated/models/AdGroupCreate.ts +167 -0
  145. package/src/generated/models/AdGroupUpdate.ts +165 -0
  146. package/src/generated/models/AdUpdate.ts +228 -0
  147. package/src/generated/models/AssetCreate.ts +175 -0
  148. package/src/generated/models/AssetUpdate.ts +125 -0
  149. package/src/generated/models/BiddingStrategy.ts +114 -0
  150. package/src/generated/models/CampaignAdScheduleField.ts +16 -0
  151. package/src/generated/models/CampaignAssetCreate.ts +100 -0
  152. package/src/generated/models/CampaignCreate.ts +263 -0
  153. package/src/generated/models/CampaignTargeting.ts +89 -0
  154. package/src/generated/models/CampaignUpdate.ts +261 -0
  155. package/src/generated/models/CampaignsListCursorParameter.ts +46 -0
  156. package/src/generated/models/ErrorEnvelope.ts +74 -0
  157. package/src/generated/models/ErrorEnvelopeError.ts +83 -0
  158. package/src/generated/models/KeywordCreate.ts +137 -0
  159. package/src/generated/models/KeywordUpdate.ts +135 -0
  160. package/src/generated/models/Location.ts +105 -0
  161. package/src/generated/models/NegativeKeywordEntry.ts +87 -0
  162. package/src/generated/models/ScheduleWindow.ts +146 -0
  163. package/src/generated/models/SiteCreate.ts +173 -0
  164. package/src/generated/models/SiteCreateSeoKeywords.ts +16 -0
  165. package/src/generated/models/SiteCreateTargetGroups.ts +16 -0
  166. package/src/generated/models/SiteLinkEntry.ts +89 -0
  167. package/src/generated/models/SiteUpdate.ts +171 -0
  168. package/src/generated/models/Sitelink.ts +105 -0
  169. package/src/generated/models/StructuredSchedule.ts +82 -0
  170. package/src/generated/models/StructuredSnippet.ts +75 -0
  171. package/src/generated/models/SuccessEnvelope.ts +82 -0
  172. package/src/generated/models/SuccessEnvelopeMeta.ts +81 -0
  173. package/src/generated/models/SuccessEnvelopeMetaNextCursor.ts +46 -0
  174. package/src/generated/models/SyncCampaignDetail.ts +137 -0
  175. package/src/generated/models/SyncPlan.ts +73 -0
  176. package/src/generated/models/SyncPlanPlatformsValue.ts +73 -0
  177. package/src/generated/models/SyncPlanPlatformsValueTotals.ts +81 -0
  178. package/src/generated/models/SyncProgress.ts +105 -0
  179. package/src/generated/models/SyncRecord.ts +174 -0
  180. package/src/generated/models/SyncRecordErrorsInner.ts +73 -0
  181. package/src/generated/models/SyncTotals.ts +113 -0
  182. package/src/generated/models/SyncTriggerRequest.ts +81 -0
  183. package/src/generated/models/SyncTriggerRequestOptions.ts +97 -0
  184. package/src/generated/models/SyncTriggerResponse.ts +108 -0
  185. package/src/generated/models/SyncUnlinkRequest.ts +82 -0
  186. package/src/generated/models/index.ts +47 -0
  187. package/src/generated/runtime.ts +431 -0
  188. package/src/index.ts +229 -0
@@ -0,0 +1,468 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Defo Ads Public API
5
+ * Stable public API for managing campaigns, ads, keywords, and sites.
6
+ *
7
+ * The version of the OpenAPI document: 1.4.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+
16
+ import * as runtime from '../runtime';
17
+ import type {
18
+ CampaignsListCursorParameter,
19
+ ErrorEnvelope,
20
+ SuccessEnvelope,
21
+ SyncTriggerRequest,
22
+ SyncUnlinkRequest,
23
+ } from '../models/index';
24
+ import {
25
+ CampaignsListCursorParameterFromJSON,
26
+ CampaignsListCursorParameterToJSON,
27
+ ErrorEnvelopeFromJSON,
28
+ ErrorEnvelopeToJSON,
29
+ SuccessEnvelopeFromJSON,
30
+ SuccessEnvelopeToJSON,
31
+ SyncTriggerRequestFromJSON,
32
+ SyncTriggerRequestToJSON,
33
+ SyncUnlinkRequestFromJSON,
34
+ SyncUnlinkRequestToJSON,
35
+ } from '../models/index';
36
+
37
+ export interface SyncCancelRequest {
38
+ id: string;
39
+ xSpaceId?: string;
40
+ }
41
+
42
+ export interface SyncGetRequest {
43
+ id: string;
44
+ xSpaceId?: string;
45
+ }
46
+
47
+ export interface SyncListRequest {
48
+ limit?: number;
49
+ cursor?: CampaignsListCursorParameter;
50
+ xSpaceId?: string;
51
+ }
52
+
53
+ export interface SyncPlanRequest {
54
+ platforms?: string;
55
+ xSpaceId?: string;
56
+ }
57
+
58
+ export interface SyncTriggerOperationRequest {
59
+ syncTriggerRequest: SyncTriggerRequest;
60
+ xSpaceId?: string;
61
+ }
62
+
63
+ export interface SyncUnlinkOperationRequest {
64
+ syncUnlinkRequest: SyncUnlinkRequest;
65
+ xSpaceId?: string;
66
+ }
67
+
68
+ /**
69
+ * SyncApi - interface
70
+ *
71
+ * @export
72
+ * @interface SyncApiInterface
73
+ */
74
+ export interface SyncApiInterface {
75
+ /**
76
+ * Cancellation takes effect at the next campaign boundary.
77
+ * @summary Request cancellation of a running sync
78
+ * @param {string} id
79
+ * @param {string} [xSpaceId] Target Space ID (e.g. `spc_…`). Omit to use the caller\'s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.
80
+ * @param {*} [options] Override http request option.
81
+ * @throws {RequiredError}
82
+ * @memberof SyncApiInterface
83
+ */
84
+ syncCancelRaw(requestParameters: SyncCancelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;
85
+
86
+ /**
87
+ * Cancellation takes effect at the next campaign boundary.
88
+ * Request cancellation of a running sync
89
+ */
90
+ syncCancel(requestParameters: SyncCancelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;
91
+
92
+ /**
93
+ * Returns the full record including per-campaign progress and structured errors. 404 if the id is outside the caller\'s Space.
94
+ * @summary Get a sync record (status, progress, totals, errors)
95
+ * @param {string} id
96
+ * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.
97
+ * @param {*} [options] Override http request option.
98
+ * @throws {RequiredError}
99
+ * @memberof SyncApiInterface
100
+ */
101
+ syncGetRaw(requestParameters: SyncGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;
102
+
103
+ /**
104
+ * Returns the full record including per-campaign progress and structured errors. 404 if the id is outside the caller\'s Space.
105
+ * Get a sync record (status, progress, totals, errors)
106
+ */
107
+ syncGet(requestParameters: SyncGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;
108
+
109
+ /**
110
+ *
111
+ * @summary List recent syncs for the active Space
112
+ * @param {number} [limit] Maximum items to return. Default 50, max 200.
113
+ * @param {CampaignsListCursorParameter} [cursor] Opaque pagination cursor returned by the previous page in &#x60;meta.nextCursor&#x60;.
114
+ * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.
115
+ * @param {*} [options] Override http request option.
116
+ * @throws {RequiredError}
117
+ * @memberof SyncApiInterface
118
+ */
119
+ syncListRaw(requestParameters: SyncListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;
120
+
121
+ /**
122
+ * List recent syncs for the active Space
123
+ */
124
+ syncList(requestParameters: SyncListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;
125
+
126
+ /**
127
+ * Computes the import/export/remove plan for the active Space without executing.
128
+ * @summary Preview what a sync would do (dry run)
129
+ * @param {string} [platforms] Comma-separated platform ids (e.g. &#x60;google-ads,microsoft-ads&#x60;). Defaults to all connected platforms.
130
+ * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.
131
+ * @param {*} [options] Override http request option.
132
+ * @throws {RequiredError}
133
+ * @memberof SyncApiInterface
134
+ */
135
+ syncPlanRaw(requestParameters: SyncPlanRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;
136
+
137
+ /**
138
+ * Computes the import/export/remove plan for the active Space without executing.
139
+ * Preview what a sync would do (dry run)
140
+ */
141
+ syncPlan(requestParameters: SyncPlanRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;
142
+
143
+ /**
144
+ * 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.
145
+ * @summary Trigger a sync for the active Space
146
+ * @param {SyncTriggerRequest} syncTriggerRequest
147
+ * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.
148
+ * @param {*} [options] Override http request option.
149
+ * @throws {RequiredError}
150
+ * @memberof SyncApiInterface
151
+ */
152
+ syncTriggerRaw(requestParameters: SyncTriggerOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;
153
+
154
+ /**
155
+ * 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.
156
+ * Trigger a sync for the active Space
157
+ */
158
+ syncTrigger(requestParameters: SyncTriggerOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;
159
+
160
+ /**
161
+ * 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.
162
+ * @summary Unlink the active Space\'s campaigns from a platform
163
+ * @param {SyncUnlinkRequest} syncUnlinkRequest
164
+ * @param {string} [xSpaceId] Target Space ID (e.g. &#x60;spc_…&#x60;). Omit to use the caller\&#39;s Personal Space. Invalid Space → 404 SPACE_NOT_FOUND; non-member → 403 NOT_A_MEMBER.
165
+ * @param {*} [options] Override http request option.
166
+ * @throws {RequiredError}
167
+ * @memberof SyncApiInterface
168
+ */
169
+ syncUnlinkRaw(requestParameters: SyncUnlinkOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>>;
170
+
171
+ /**
172
+ * 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.
173
+ * Unlink the active Space\'s campaigns from a platform
174
+ */
175
+ syncUnlink(requestParameters: SyncUnlinkOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope>;
176
+
177
+ }
178
+
179
+ /**
180
+ *
181
+ */
182
+ export class SyncApi extends runtime.BaseAPI implements SyncApiInterface {
183
+
184
+ /**
185
+ * Cancellation takes effect at the next campaign boundary.
186
+ * Request cancellation of a running sync
187
+ */
188
+ async syncCancelRaw(requestParameters: SyncCancelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {
189
+ if (requestParameters['id'] == null) {
190
+ throw new runtime.RequiredError(
191
+ 'id',
192
+ 'Required parameter "id" was null or undefined when calling syncCancel().'
193
+ );
194
+ }
195
+
196
+ const queryParameters: any = {};
197
+
198
+ const headerParameters: runtime.HTTPHeaders = {};
199
+
200
+ if (requestParameters['xSpaceId'] != null) {
201
+ headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);
202
+ }
203
+
204
+ if (this.configuration && this.configuration.accessToken) {
205
+ const token = this.configuration.accessToken;
206
+ const tokenString = await token("ApiToken", ["sync:write"]);
207
+
208
+ if (tokenString) {
209
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
210
+ }
211
+ }
212
+ const response = await this.request({
213
+ path: `/api/v1/sync/{id}/cancel`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
214
+ method: 'POST',
215
+ headers: headerParameters,
216
+ query: queryParameters,
217
+ }, initOverrides);
218
+
219
+ return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
220
+ }
221
+
222
+ /**
223
+ * Cancellation takes effect at the next campaign boundary.
224
+ * Request cancellation of a running sync
225
+ */
226
+ async syncCancel(requestParameters: SyncCancelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {
227
+ const response = await this.syncCancelRaw(requestParameters, initOverrides);
228
+ return await response.value();
229
+ }
230
+
231
+ /**
232
+ * Returns the full record including per-campaign progress and structured errors. 404 if the id is outside the caller\'s Space.
233
+ * Get a sync record (status, progress, totals, errors)
234
+ */
235
+ async syncGetRaw(requestParameters: SyncGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {
236
+ if (requestParameters['id'] == null) {
237
+ throw new runtime.RequiredError(
238
+ 'id',
239
+ 'Required parameter "id" was null or undefined when calling syncGet().'
240
+ );
241
+ }
242
+
243
+ const queryParameters: any = {};
244
+
245
+ const headerParameters: runtime.HTTPHeaders = {};
246
+
247
+ if (requestParameters['xSpaceId'] != null) {
248
+ headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);
249
+ }
250
+
251
+ if (this.configuration && this.configuration.accessToken) {
252
+ const token = this.configuration.accessToken;
253
+ const tokenString = await token("ApiToken", ["sync:read"]);
254
+
255
+ if (tokenString) {
256
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
257
+ }
258
+ }
259
+ const response = await this.request({
260
+ path: `/api/v1/sync/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
261
+ method: 'GET',
262
+ headers: headerParameters,
263
+ query: queryParameters,
264
+ }, initOverrides);
265
+
266
+ return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
267
+ }
268
+
269
+ /**
270
+ * Returns the full record including per-campaign progress and structured errors. 404 if the id is outside the caller\'s Space.
271
+ * Get a sync record (status, progress, totals, errors)
272
+ */
273
+ async syncGet(requestParameters: SyncGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {
274
+ const response = await this.syncGetRaw(requestParameters, initOverrides);
275
+ return await response.value();
276
+ }
277
+
278
+ /**
279
+ * List recent syncs for the active Space
280
+ */
281
+ async syncListRaw(requestParameters: SyncListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {
282
+ const queryParameters: any = {};
283
+
284
+ if (requestParameters['limit'] != null) {
285
+ queryParameters['limit'] = requestParameters['limit'];
286
+ }
287
+
288
+ if (requestParameters['cursor'] != null) {
289
+ queryParameters['cursor'] = requestParameters['cursor'];
290
+ }
291
+
292
+ const headerParameters: runtime.HTTPHeaders = {};
293
+
294
+ if (requestParameters['xSpaceId'] != null) {
295
+ headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);
296
+ }
297
+
298
+ if (this.configuration && this.configuration.accessToken) {
299
+ const token = this.configuration.accessToken;
300
+ const tokenString = await token("ApiToken", ["sync:read"]);
301
+
302
+ if (tokenString) {
303
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
304
+ }
305
+ }
306
+ const response = await this.request({
307
+ path: `/api/v1/sync`,
308
+ method: 'GET',
309
+ headers: headerParameters,
310
+ query: queryParameters,
311
+ }, initOverrides);
312
+
313
+ return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
314
+ }
315
+
316
+ /**
317
+ * List recent syncs for the active Space
318
+ */
319
+ async syncList(requestParameters: SyncListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {
320
+ const response = await this.syncListRaw(requestParameters, initOverrides);
321
+ return await response.value();
322
+ }
323
+
324
+ /**
325
+ * Computes the import/export/remove plan for the active Space without executing.
326
+ * Preview what a sync would do (dry run)
327
+ */
328
+ async syncPlanRaw(requestParameters: SyncPlanRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {
329
+ const queryParameters: any = {};
330
+
331
+ if (requestParameters['platforms'] != null) {
332
+ queryParameters['platforms'] = requestParameters['platforms'];
333
+ }
334
+
335
+ const headerParameters: runtime.HTTPHeaders = {};
336
+
337
+ if (requestParameters['xSpaceId'] != null) {
338
+ headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);
339
+ }
340
+
341
+ if (this.configuration && this.configuration.accessToken) {
342
+ const token = this.configuration.accessToken;
343
+ const tokenString = await token("ApiToken", ["sync:read"]);
344
+
345
+ if (tokenString) {
346
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
347
+ }
348
+ }
349
+ const response = await this.request({
350
+ path: `/api/v1/sync/plan`,
351
+ method: 'GET',
352
+ headers: headerParameters,
353
+ query: queryParameters,
354
+ }, initOverrides);
355
+
356
+ return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
357
+ }
358
+
359
+ /**
360
+ * Computes the import/export/remove plan for the active Space without executing.
361
+ * Preview what a sync would do (dry run)
362
+ */
363
+ async syncPlan(requestParameters: SyncPlanRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {
364
+ const response = await this.syncPlanRaw(requestParameters, initOverrides);
365
+ return await response.value();
366
+ }
367
+
368
+ /**
369
+ * 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.
370
+ * Trigger a sync for the active Space
371
+ */
372
+ async syncTriggerRaw(requestParameters: SyncTriggerOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {
373
+ if (requestParameters['syncTriggerRequest'] == null) {
374
+ throw new runtime.RequiredError(
375
+ 'syncTriggerRequest',
376
+ 'Required parameter "syncTriggerRequest" was null or undefined when calling syncTrigger().'
377
+ );
378
+ }
379
+
380
+ const queryParameters: any = {};
381
+
382
+ const headerParameters: runtime.HTTPHeaders = {};
383
+
384
+ headerParameters['Content-Type'] = 'application/json';
385
+
386
+ if (requestParameters['xSpaceId'] != null) {
387
+ headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);
388
+ }
389
+
390
+ if (this.configuration && this.configuration.accessToken) {
391
+ const token = this.configuration.accessToken;
392
+ const tokenString = await token("ApiToken", ["sync:write"]);
393
+
394
+ if (tokenString) {
395
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
396
+ }
397
+ }
398
+ const response = await this.request({
399
+ path: `/api/v1/sync`,
400
+ method: 'POST',
401
+ headers: headerParameters,
402
+ query: queryParameters,
403
+ body: SyncTriggerRequestToJSON(requestParameters['syncTriggerRequest']),
404
+ }, initOverrides);
405
+
406
+ return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
407
+ }
408
+
409
+ /**
410
+ * 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.
411
+ * Trigger a sync for the active Space
412
+ */
413
+ async syncTrigger(requestParameters: SyncTriggerOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {
414
+ const response = await this.syncTriggerRaw(requestParameters, initOverrides);
415
+ return await response.value();
416
+ }
417
+
418
+ /**
419
+ * 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.
420
+ * Unlink the active Space\'s campaigns from a platform
421
+ */
422
+ async syncUnlinkRaw(requestParameters: SyncUnlinkOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SuccessEnvelope>> {
423
+ if (requestParameters['syncUnlinkRequest'] == null) {
424
+ throw new runtime.RequiredError(
425
+ 'syncUnlinkRequest',
426
+ 'Required parameter "syncUnlinkRequest" was null or undefined when calling syncUnlink().'
427
+ );
428
+ }
429
+
430
+ const queryParameters: any = {};
431
+
432
+ const headerParameters: runtime.HTTPHeaders = {};
433
+
434
+ headerParameters['Content-Type'] = 'application/json';
435
+
436
+ if (requestParameters['xSpaceId'] != null) {
437
+ headerParameters['X-Space-Id'] = String(requestParameters['xSpaceId']);
438
+ }
439
+
440
+ if (this.configuration && this.configuration.accessToken) {
441
+ const token = this.configuration.accessToken;
442
+ const tokenString = await token("ApiToken", ["sync:write"]);
443
+
444
+ if (tokenString) {
445
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
446
+ }
447
+ }
448
+ const response = await this.request({
449
+ path: `/api/v1/sync/unlink`,
450
+ method: 'POST',
451
+ headers: headerParameters,
452
+ query: queryParameters,
453
+ body: SyncUnlinkRequestToJSON(requestParameters['syncUnlinkRequest']),
454
+ }, initOverrides);
455
+
456
+ return new runtime.JSONApiResponse(response, (jsonValue) => SuccessEnvelopeFromJSON(jsonValue));
457
+ }
458
+
459
+ /**
460
+ * 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.
461
+ * Unlink the active Space\'s campaigns from a platform
462
+ */
463
+ async syncUnlink(requestParameters: SyncUnlinkOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SuccessEnvelope> {
464
+ const response = await this.syncUnlinkRaw(requestParameters, initOverrides);
465
+ return await response.value();
466
+ }
467
+
468
+ }
@@ -0,0 +1,14 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ export * from './AdAssetsApi';
4
+ export * from './AdGroupsApi';
5
+ export * from './AdsApi';
6
+ export * from './AssetsApi';
7
+ export * from './CampaignAssetsApi';
8
+ export * from './CampaignsApi';
9
+ export * from './KeywordsApi';
10
+ export * from './MediaApi';
11
+ export * from './MetaApi';
12
+ export * from './ReportsApi';
13
+ export * from './SitesApi';
14
+ export * from './SyncApi';
@@ -0,0 +1,5 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ export * from './runtime';
4
+ export * from './apis/index';
5
+ export * from './models/index';
@@ -0,0 +1,133 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Defo Ads Public API
5
+ * Stable public API for managing campaigns, ads, keywords, and sites.
6
+ *
7
+ * The version of the OpenAPI document: 1.4.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ /**
17
+ * Bind an asset to an ad (scope=AD, adId required) or ad group (scope=AD_GROUP, adGroupId required). campaignId is derived from the ad/ad group when omitted.
18
+ * @export
19
+ * @interface AdAssetCreate
20
+ */
21
+ export interface AdAssetCreate {
22
+ /**
23
+ *
24
+ * @type {string}
25
+ * @memberof AdAssetCreate
26
+ */
27
+ scope: AdAssetCreateScopeEnum;
28
+ /**
29
+ * Required when scope=AD.
30
+ * @type {string}
31
+ * @memberof AdAssetCreate
32
+ */
33
+ adId?: string;
34
+ /**
35
+ * Required when scope=AD_GROUP.
36
+ * @type {string}
37
+ * @memberof AdAssetCreate
38
+ */
39
+ adGroupId?: string;
40
+ /**
41
+ * Optional; derived from the ad/ad group when omitted.
42
+ * @type {string}
43
+ * @memberof AdAssetCreate
44
+ */
45
+ campaignId?: string;
46
+ /**
47
+ *
48
+ * @type {string}
49
+ * @memberof AdAssetCreate
50
+ */
51
+ assetId: string;
52
+ /**
53
+ *
54
+ * @type {string}
55
+ * @memberof AdAssetCreate
56
+ */
57
+ role: AdAssetCreateRoleEnum;
58
+ }
59
+
60
+
61
+ /**
62
+ * @export
63
+ */
64
+ export const AdAssetCreateScopeEnum = {
65
+ AD: 'AD',
66
+ AD_GROUP: 'AD_GROUP'
67
+ } as const;
68
+ export type AdAssetCreateScopeEnum = typeof AdAssetCreateScopeEnum[keyof typeof AdAssetCreateScopeEnum];
69
+
70
+ /**
71
+ * @export
72
+ */
73
+ export const AdAssetCreateRoleEnum = {
74
+ MARKETING_IMAGE: 'MARKETING_IMAGE',
75
+ SQUARE_MARKETING_IMAGE: 'SQUARE_MARKETING_IMAGE',
76
+ PORTRAIT_MARKETING_IMAGE: 'PORTRAIT_MARKETING_IMAGE',
77
+ LOGO: 'LOGO',
78
+ LANDSCAPE_LOGO: 'LANDSCAPE_LOGO',
79
+ YOUTUBE_VIDEO: 'YOUTUBE_VIDEO',
80
+ VIDEO: 'VIDEO'
81
+ } as const;
82
+ export type AdAssetCreateRoleEnum = typeof AdAssetCreateRoleEnum[keyof typeof AdAssetCreateRoleEnum];
83
+
84
+
85
+ /**
86
+ * Check if a given object implements the AdAssetCreate interface.
87
+ */
88
+ export function instanceOfAdAssetCreate(value: object): value is AdAssetCreate {
89
+ if (!('scope' in value) || value['scope'] === undefined) return false;
90
+ if (!('assetId' in value) || value['assetId'] === undefined) return false;
91
+ if (!('role' in value) || value['role'] === undefined) return false;
92
+ return true;
93
+ }
94
+
95
+ export function AdAssetCreateFromJSON(json: any): AdAssetCreate {
96
+ return AdAssetCreateFromJSONTyped(json, false);
97
+ }
98
+
99
+ export function AdAssetCreateFromJSONTyped(json: any, ignoreDiscriminator: boolean): AdAssetCreate {
100
+ if (json == null) {
101
+ return json;
102
+ }
103
+ return {
104
+
105
+ 'scope': json['scope'],
106
+ 'adId': json['adId'] == null ? undefined : json['adId'],
107
+ 'adGroupId': json['adGroupId'] == null ? undefined : json['adGroupId'],
108
+ 'campaignId': json['campaignId'] == null ? undefined : json['campaignId'],
109
+ 'assetId': json['assetId'],
110
+ 'role': json['role'],
111
+ };
112
+ }
113
+
114
+ export function AdAssetCreateToJSON(json: any): AdAssetCreate {
115
+ return AdAssetCreateToJSONTyped(json, false);
116
+ }
117
+
118
+ export function AdAssetCreateToJSONTyped(value?: AdAssetCreate | null, ignoreDiscriminator: boolean = false): any {
119
+ if (value == null) {
120
+ return value;
121
+ }
122
+
123
+ return {
124
+
125
+ 'scope': value['scope'],
126
+ 'adId': value['adId'],
127
+ 'adGroupId': value['adGroupId'],
128
+ 'campaignId': value['campaignId'],
129
+ 'assetId': value['assetId'],
130
+ 'role': value['role'],
131
+ };
132
+ }
133
+