@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,182 @@
1
+ /**
2
+ * Defo Ads Public API
3
+ * Stable public API for managing campaigns, ads, keywords, and sites.
4
+ *
5
+ * The version of the OpenAPI document: 1.4.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ export declare const BASE_PATH: string;
13
+ export interface ConfigurationParameters {
14
+ basePath?: string;
15
+ fetchApi?: FetchAPI;
16
+ middleware?: Middleware[];
17
+ queryParamsStringify?: (params: HTTPQuery) => string;
18
+ username?: string;
19
+ password?: string;
20
+ apiKey?: string | Promise<string> | ((name: string) => string | Promise<string>);
21
+ accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>);
22
+ headers?: HTTPHeaders;
23
+ credentials?: RequestCredentials;
24
+ }
25
+ export declare class Configuration {
26
+ private configuration;
27
+ constructor(configuration?: ConfigurationParameters);
28
+ set config(configuration: Configuration);
29
+ get basePath(): string;
30
+ get fetchApi(): FetchAPI | undefined;
31
+ get middleware(): Middleware[];
32
+ get queryParamsStringify(): (params: HTTPQuery) => string;
33
+ get username(): string | undefined;
34
+ get password(): string | undefined;
35
+ get apiKey(): ((name: string) => string | Promise<string>) | undefined;
36
+ get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined;
37
+ get headers(): HTTPHeaders | undefined;
38
+ get credentials(): RequestCredentials | undefined;
39
+ }
40
+ export declare const DefaultConfig: Configuration;
41
+ /**
42
+ * This is the base class for all generated API classes.
43
+ */
44
+ export declare class BaseAPI {
45
+ protected configuration: Configuration;
46
+ private static readonly jsonRegex;
47
+ private middleware;
48
+ constructor(configuration?: Configuration);
49
+ withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]): T;
50
+ withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>): T;
51
+ withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>): T;
52
+ /**
53
+ * Check if the given MIME is a JSON MIME.
54
+ * JSON MIME examples:
55
+ * application/json
56
+ * application/json; charset=UTF8
57
+ * APPLICATION/JSON
58
+ * application/vnd.company+json
59
+ * @param mime - MIME (Multipurpose Internet Mail Extensions)
60
+ * @return True if the given MIME is JSON, false otherwise.
61
+ */
62
+ protected isJsonMime(mime: string | null | undefined): boolean;
63
+ protected request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response>;
64
+ private createFetchParams;
65
+ private fetchApi;
66
+ /**
67
+ * Create a shallow clone of `this` by constructing a new instance
68
+ * and then shallow cloning data members.
69
+ */
70
+ private clone;
71
+ }
72
+ export declare class ResponseError extends Error {
73
+ response: Response;
74
+ name: "ResponseError";
75
+ constructor(response: Response, msg?: string);
76
+ }
77
+ export declare class FetchError extends Error {
78
+ cause: Error;
79
+ name: "FetchError";
80
+ constructor(cause: Error, msg?: string);
81
+ }
82
+ export declare class RequiredError extends Error {
83
+ field: string;
84
+ name: "RequiredError";
85
+ constructor(field: string, msg?: string);
86
+ }
87
+ export declare const COLLECTION_FORMATS: {
88
+ csv: string;
89
+ ssv: string;
90
+ tsv: string;
91
+ pipes: string;
92
+ };
93
+ export type FetchAPI = WindowOrWorkerGlobalScope['fetch'];
94
+ export type Json = any;
95
+ export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';
96
+ export type HTTPHeaders = {
97
+ [key: string]: string;
98
+ };
99
+ export type HTTPQuery = {
100
+ [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery;
101
+ };
102
+ export type HTTPBody = Json | FormData | URLSearchParams;
103
+ export type HTTPRequestInit = {
104
+ headers?: HTTPHeaders;
105
+ method: HTTPMethod;
106
+ credentials?: RequestCredentials;
107
+ body?: HTTPBody;
108
+ };
109
+ export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
110
+ export type InitOverrideFunction = (requestContext: {
111
+ init: HTTPRequestInit;
112
+ context: RequestOpts;
113
+ }) => Promise<RequestInit>;
114
+ export interface FetchParams {
115
+ url: string;
116
+ init: RequestInit;
117
+ }
118
+ export interface RequestOpts {
119
+ path: string;
120
+ method: HTTPMethod;
121
+ headers: HTTPHeaders;
122
+ query?: HTTPQuery;
123
+ body?: HTTPBody;
124
+ }
125
+ export declare function querystring(params: HTTPQuery, prefix?: string): string;
126
+ export declare function exists(json: any, key: string): boolean;
127
+ export declare function mapValues(data: any, fn: (item: any) => any): {};
128
+ export declare function canConsumeForm(consumes: Consume[]): boolean;
129
+ export interface Consume {
130
+ contentType: string;
131
+ }
132
+ export interface RequestContext {
133
+ fetch: FetchAPI;
134
+ url: string;
135
+ init: RequestInit;
136
+ }
137
+ export interface ResponseContext {
138
+ fetch: FetchAPI;
139
+ url: string;
140
+ init: RequestInit;
141
+ response: Response;
142
+ }
143
+ export interface ErrorContext {
144
+ fetch: FetchAPI;
145
+ url: string;
146
+ init: RequestInit;
147
+ error: unknown;
148
+ response?: Response;
149
+ }
150
+ export interface Middleware {
151
+ pre?(context: RequestContext): Promise<FetchParams | void>;
152
+ post?(context: ResponseContext): Promise<Response | void>;
153
+ onError?(context: ErrorContext): Promise<Response | void>;
154
+ }
155
+ export interface ApiResponse<T> {
156
+ raw: Response;
157
+ value(): Promise<T>;
158
+ }
159
+ export interface ResponseTransformer<T> {
160
+ (json: any): T;
161
+ }
162
+ export declare class JSONApiResponse<T> {
163
+ raw: Response;
164
+ private transformer;
165
+ constructor(raw: Response, transformer?: ResponseTransformer<T>);
166
+ value(): Promise<T>;
167
+ }
168
+ export declare class VoidApiResponse {
169
+ raw: Response;
170
+ constructor(raw: Response);
171
+ value(): Promise<void>;
172
+ }
173
+ export declare class BlobApiResponse {
174
+ raw: Response;
175
+ constructor(raw: Response);
176
+ value(): Promise<Blob>;
177
+ }
178
+ export declare class TextApiResponse {
179
+ raw: Response;
180
+ constructor(raw: Response);
181
+ value(): Promise<string>;
182
+ }
@@ -0,0 +1,318 @@
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
+ export const BASE_PATH = "https://api.ads.defoai.com".replace(/\/+$/, "");
15
+ export class Configuration {
16
+ constructor(configuration = {}) {
17
+ this.configuration = configuration;
18
+ }
19
+ set config(configuration) {
20
+ this.configuration = configuration;
21
+ }
22
+ get basePath() {
23
+ return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;
24
+ }
25
+ get fetchApi() {
26
+ return this.configuration.fetchApi;
27
+ }
28
+ get middleware() {
29
+ return this.configuration.middleware || [];
30
+ }
31
+ get queryParamsStringify() {
32
+ return this.configuration.queryParamsStringify || querystring;
33
+ }
34
+ get username() {
35
+ return this.configuration.username;
36
+ }
37
+ get password() {
38
+ return this.configuration.password;
39
+ }
40
+ get apiKey() {
41
+ const apiKey = this.configuration.apiKey;
42
+ if (apiKey) {
43
+ return typeof apiKey === 'function' ? apiKey : () => apiKey;
44
+ }
45
+ return undefined;
46
+ }
47
+ get accessToken() {
48
+ const accessToken = this.configuration.accessToken;
49
+ if (accessToken) {
50
+ return typeof accessToken === 'function' ? accessToken : async () => accessToken;
51
+ }
52
+ return undefined;
53
+ }
54
+ get headers() {
55
+ return this.configuration.headers;
56
+ }
57
+ get credentials() {
58
+ return this.configuration.credentials;
59
+ }
60
+ }
61
+ export const DefaultConfig = new Configuration();
62
+ /**
63
+ * This is the base class for all generated API classes.
64
+ */
65
+ export class BaseAPI {
66
+ constructor(configuration = DefaultConfig) {
67
+ this.configuration = configuration;
68
+ this.fetchApi = async (url, init) => {
69
+ let fetchParams = { url, init };
70
+ for (const middleware of this.middleware) {
71
+ if (middleware.pre) {
72
+ fetchParams = await middleware.pre({
73
+ fetch: this.fetchApi,
74
+ ...fetchParams,
75
+ }) || fetchParams;
76
+ }
77
+ }
78
+ let response = undefined;
79
+ try {
80
+ response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);
81
+ }
82
+ catch (e) {
83
+ for (const middleware of this.middleware) {
84
+ if (middleware.onError) {
85
+ response = await middleware.onError({
86
+ fetch: this.fetchApi,
87
+ url: fetchParams.url,
88
+ init: fetchParams.init,
89
+ error: e,
90
+ response: response ? response.clone() : undefined,
91
+ }) || response;
92
+ }
93
+ }
94
+ if (response === undefined) {
95
+ if (e instanceof Error) {
96
+ throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');
97
+ }
98
+ else {
99
+ throw e;
100
+ }
101
+ }
102
+ }
103
+ for (const middleware of this.middleware) {
104
+ if (middleware.post) {
105
+ response = await middleware.post({
106
+ fetch: this.fetchApi,
107
+ url: fetchParams.url,
108
+ init: fetchParams.init,
109
+ response: response.clone(),
110
+ }) || response;
111
+ }
112
+ }
113
+ return response;
114
+ };
115
+ this.middleware = configuration.middleware;
116
+ }
117
+ withMiddleware(...middlewares) {
118
+ const next = this.clone();
119
+ next.middleware = next.middleware.concat(...middlewares);
120
+ return next;
121
+ }
122
+ withPreMiddleware(...preMiddlewares) {
123
+ const middlewares = preMiddlewares.map((pre) => ({ pre }));
124
+ return this.withMiddleware(...middlewares);
125
+ }
126
+ withPostMiddleware(...postMiddlewares) {
127
+ const middlewares = postMiddlewares.map((post) => ({ post }));
128
+ return this.withMiddleware(...middlewares);
129
+ }
130
+ /**
131
+ * Check if the given MIME is a JSON MIME.
132
+ * JSON MIME examples:
133
+ * application/json
134
+ * application/json; charset=UTF8
135
+ * APPLICATION/JSON
136
+ * application/vnd.company+json
137
+ * @param mime - MIME (Multipurpose Internet Mail Extensions)
138
+ * @return True if the given MIME is JSON, false otherwise.
139
+ */
140
+ isJsonMime(mime) {
141
+ if (!mime) {
142
+ return false;
143
+ }
144
+ return BaseAPI.jsonRegex.test(mime);
145
+ }
146
+ async request(context, initOverrides) {
147
+ const { url, init } = await this.createFetchParams(context, initOverrides);
148
+ const response = await this.fetchApi(url, init);
149
+ if (response && (response.status >= 200 && response.status < 300)) {
150
+ return response;
151
+ }
152
+ throw new ResponseError(response, 'Response returned an error code');
153
+ }
154
+ async createFetchParams(context, initOverrides) {
155
+ let url = this.configuration.basePath + context.path;
156
+ if (context.query !== undefined && Object.keys(context.query).length !== 0) {
157
+ // only add the querystring to the URL if there are query parameters.
158
+ // this is done to avoid urls ending with a "?" character which buggy webservers
159
+ // do not handle correctly sometimes.
160
+ url += '?' + this.configuration.queryParamsStringify(context.query);
161
+ }
162
+ const headers = Object.assign({}, this.configuration.headers, context.headers);
163
+ Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});
164
+ const initOverrideFn = typeof initOverrides === "function"
165
+ ? initOverrides
166
+ : async () => initOverrides;
167
+ const initParams = {
168
+ method: context.method,
169
+ headers,
170
+ body: context.body,
171
+ credentials: this.configuration.credentials,
172
+ };
173
+ const overriddenInit = {
174
+ ...initParams,
175
+ ...(await initOverrideFn({
176
+ init: initParams,
177
+ context,
178
+ }))
179
+ };
180
+ let body;
181
+ if (isFormData(overriddenInit.body)
182
+ || (overriddenInit.body instanceof URLSearchParams)
183
+ || isBlob(overriddenInit.body)) {
184
+ body = overriddenInit.body;
185
+ }
186
+ else if (this.isJsonMime(headers['Content-Type'])) {
187
+ body = JSON.stringify(overriddenInit.body);
188
+ }
189
+ else {
190
+ body = overriddenInit.body;
191
+ }
192
+ const init = {
193
+ ...overriddenInit,
194
+ body
195
+ };
196
+ return { url, init };
197
+ }
198
+ /**
199
+ * Create a shallow clone of `this` by constructing a new instance
200
+ * and then shallow cloning data members.
201
+ */
202
+ clone() {
203
+ const constructor = this.constructor;
204
+ const next = new constructor(this.configuration);
205
+ next.middleware = this.middleware.slice();
206
+ return next;
207
+ }
208
+ }
209
+ BaseAPI.jsonRegex = new RegExp('^(:?application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(:?;.*)?$', 'i');
210
+ ;
211
+ function isBlob(value) {
212
+ return typeof Blob !== 'undefined' && value instanceof Blob;
213
+ }
214
+ function isFormData(value) {
215
+ return typeof FormData !== "undefined" && value instanceof FormData;
216
+ }
217
+ export class ResponseError extends Error {
218
+ constructor(response, msg) {
219
+ super(msg);
220
+ this.response = response;
221
+ this.name = "ResponseError";
222
+ }
223
+ }
224
+ export class FetchError extends Error {
225
+ constructor(cause, msg) {
226
+ super(msg);
227
+ this.cause = cause;
228
+ this.name = "FetchError";
229
+ }
230
+ }
231
+ export class RequiredError extends Error {
232
+ constructor(field, msg) {
233
+ super(msg);
234
+ this.field = field;
235
+ this.name = "RequiredError";
236
+ }
237
+ }
238
+ export const COLLECTION_FORMATS = {
239
+ csv: ",",
240
+ ssv: " ",
241
+ tsv: "\t",
242
+ pipes: "|",
243
+ };
244
+ export function querystring(params, prefix = '') {
245
+ return Object.keys(params)
246
+ .map(key => querystringSingleKey(key, params[key], prefix))
247
+ .filter(part => part.length > 0)
248
+ .join('&');
249
+ }
250
+ function querystringSingleKey(key, value, keyPrefix = '') {
251
+ const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);
252
+ if (value instanceof Array) {
253
+ const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))
254
+ .join(`&${encodeURIComponent(fullKey)}=`);
255
+ return `${encodeURIComponent(fullKey)}=${multiValue}`;
256
+ }
257
+ if (value instanceof Set) {
258
+ const valueAsArray = Array.from(value);
259
+ return querystringSingleKey(key, valueAsArray, keyPrefix);
260
+ }
261
+ if (value instanceof Date) {
262
+ return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;
263
+ }
264
+ if (value instanceof Object) {
265
+ return querystring(value, fullKey);
266
+ }
267
+ return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;
268
+ }
269
+ export function exists(json, key) {
270
+ const value = json[key];
271
+ return value !== null && value !== undefined;
272
+ }
273
+ export function mapValues(data, fn) {
274
+ return Object.keys(data).reduce((acc, key) => ({ ...acc, [key]: fn(data[key]) }), {});
275
+ }
276
+ export function canConsumeForm(consumes) {
277
+ for (const consume of consumes) {
278
+ if ('multipart/form-data' === consume.contentType) {
279
+ return true;
280
+ }
281
+ }
282
+ return false;
283
+ }
284
+ export class JSONApiResponse {
285
+ constructor(raw, transformer = (jsonValue) => jsonValue) {
286
+ this.raw = raw;
287
+ this.transformer = transformer;
288
+ }
289
+ async value() {
290
+ return this.transformer(await this.raw.json());
291
+ }
292
+ }
293
+ export class VoidApiResponse {
294
+ constructor(raw) {
295
+ this.raw = raw;
296
+ }
297
+ async value() {
298
+ return undefined;
299
+ }
300
+ }
301
+ export class BlobApiResponse {
302
+ constructor(raw) {
303
+ this.raw = raw;
304
+ }
305
+ async value() {
306
+ return await this.raw.blob();
307
+ }
308
+ ;
309
+ }
310
+ export class TextApiResponse {
311
+ constructor(raw) {
312
+ this.raw = raw;
313
+ }
314
+ async value() {
315
+ return await this.raw.text();
316
+ }
317
+ ;
318
+ }
@@ -0,0 +1,177 @@
1
+ import { type CampaignCreate, type CampaignUpdate, type AdGroupCreate, type AdGroupUpdate, type AdCreate, type AdUpdate, type KeywordCreate, type KeywordUpdate, type SiteCreate, type SiteUpdate, type AssetCreate, type AssetUpdate, type CampaignAssetCreate, type AdAssetCreate, type SyncTriggerRequest, type SyncUnlinkRequest } from './generated';
2
+ /** The production base URL. Override via `baseUrl` (e.g. for staging). */
3
+ export declare const PRODUCTION_BASE_URL = "https://api.ads.defoai.com";
4
+ export declare const STAGING_BASE_URL = "https://api-ads-staging.defoai.com";
5
+ export interface DefoAdsOptions {
6
+ /** A Defo Ads personal access token (`dads_…`). Required. */
7
+ token: string;
8
+ /** Default Space id (`spc_…`) sent as `X-Space-Id` on every call. Omit to use your Personal Space. */
9
+ space?: string;
10
+ /** Base URL. Defaults to production. Use {@link STAGING_BASE_URL} for staging. */
11
+ baseUrl?: string;
12
+ /** Max automatic retries on 429 / 5xx. Default 3. */
13
+ maxRetries?: number;
14
+ /** Inject a fetch implementation (handy for tests / non-global-fetch runtimes). */
15
+ fetch?: typeof fetch;
16
+ }
17
+ /** Base error for any non-2xx response; carries the API's `{ code, message, details }`. */
18
+ export declare class DefoAdsError extends Error {
19
+ readonly status: number;
20
+ readonly code?: string;
21
+ readonly details?: unknown;
22
+ constructor(status: number, code: string | undefined, message: string, details?: unknown);
23
+ }
24
+ /** 401 — missing/invalid token. */ export declare class AuthError extends DefoAdsError {
25
+ name: string;
26
+ }
27
+ /** 403 — token lacks the required scope or Space membership. */ export declare class ForbiddenError extends DefoAdsError {
28
+ name: string;
29
+ }
30
+ /** 404 — resource not found (or outside your Space). */ export declare class NotFoundError extends DefoAdsError {
31
+ name: string;
32
+ }
33
+ /** 409 — conflict (e.g. delete blocked by dependents, or a sync already running). */ export declare class ConflictError extends DefoAdsError {
34
+ name: string;
35
+ }
36
+ /** 429 — rate limited. The SDK already retried up to `maxRetries`. */ export declare class RateLimitError extends DefoAdsError {
37
+ name: string;
38
+ }
39
+ interface ListParams {
40
+ limit?: number;
41
+ cursor?: string | number;
42
+ }
43
+ /** The Defo Ads client. Construct once, reuse everywhere. */
44
+ export declare class DefoAds {
45
+ readonly campaigns: {
46
+ /** List one page (default 50, max 200). */
47
+ list: (params?: ListParams) => Promise<any[]>;
48
+ /** Async-iterate EVERY item across all pages (follows `meta.nextCursor`). */
49
+ listAll(params?: ListParams): AsyncGenerator<any>;
50
+ /** Fetch one by id. */
51
+ get: (id: string) => Promise<any>;
52
+ /** Create. */
53
+ create: (body: CampaignCreate) => Promise<any>;
54
+ /** Partial update by id. */
55
+ update: (id: string, body: CampaignUpdate) => Promise<any>;
56
+ /** Delete by id. */
57
+ delete: (id: string) => Promise<any>;
58
+ };
59
+ readonly adGroups: {
60
+ /** List one page (default 50, max 200). */
61
+ list: (params?: ListParams) => Promise<any[]>;
62
+ /** Async-iterate EVERY item across all pages (follows `meta.nextCursor`). */
63
+ listAll(params?: ListParams): AsyncGenerator<any>;
64
+ /** Fetch one by id. */
65
+ get: (id: string) => Promise<any>;
66
+ /** Create. */
67
+ create: (body: AdGroupCreate) => Promise<any>;
68
+ /** Partial update by id. */
69
+ update: (id: string, body: AdGroupUpdate) => Promise<any>;
70
+ /** Delete by id. */
71
+ delete: (id: string) => Promise<any>;
72
+ };
73
+ readonly ads: {
74
+ /** List one page (default 50, max 200). */
75
+ list: (params?: ListParams) => Promise<any[]>;
76
+ /** Async-iterate EVERY item across all pages (follows `meta.nextCursor`). */
77
+ listAll(params?: ListParams): AsyncGenerator<any>;
78
+ /** Fetch one by id. */
79
+ get: (id: string) => Promise<any>;
80
+ /** Create. */
81
+ create: (body: AdCreate) => Promise<any>;
82
+ /** Partial update by id. */
83
+ update: (id: string, body: AdUpdate) => Promise<any>;
84
+ /** Delete by id. */
85
+ delete: (id: string) => Promise<any>;
86
+ };
87
+ readonly keywords: {
88
+ /** List one page (default 50, max 200). */
89
+ list: (params?: ListParams) => Promise<any[]>;
90
+ /** Async-iterate EVERY item across all pages (follows `meta.nextCursor`). */
91
+ listAll(params?: ListParams): AsyncGenerator<any>;
92
+ /** Fetch one by id. */
93
+ get: (id: string) => Promise<any>;
94
+ /** Create. */
95
+ create: (body: KeywordCreate) => Promise<any>;
96
+ /** Partial update by id. */
97
+ update: (id: string, body: KeywordUpdate) => Promise<any>;
98
+ /** Delete by id. */
99
+ delete: (id: string) => Promise<any>;
100
+ };
101
+ readonly sites: {
102
+ /** List one page (default 50, max 200). */
103
+ list: (params?: ListParams) => Promise<any[]>;
104
+ /** Async-iterate EVERY item across all pages (follows `meta.nextCursor`). */
105
+ listAll(params?: ListParams): AsyncGenerator<any>;
106
+ /** Fetch one by id. */
107
+ get: (id: string) => Promise<any>;
108
+ /** Create. */
109
+ create: (body: SiteCreate) => Promise<any>;
110
+ /** Partial update by id. */
111
+ update: (id: string, body: SiteUpdate) => Promise<any>;
112
+ /** Delete by id. */
113
+ delete: (id: string) => Promise<any>;
114
+ };
115
+ readonly assets: {
116
+ /** List one page (default 50, max 200). */
117
+ list: (params?: ListParams) => Promise<any[]>;
118
+ /** Async-iterate EVERY item across all pages (follows `meta.nextCursor`). */
119
+ listAll(params?: ListParams): AsyncGenerator<any>;
120
+ /** Fetch one by id. */
121
+ get: (id: string) => Promise<any>;
122
+ /** Create. */
123
+ create: (body: AssetCreate) => Promise<any>;
124
+ /** Partial update by id. */
125
+ update: (id: string, body: AssetUpdate) => Promise<any>;
126
+ /** Delete by id. */
127
+ delete: (id: string) => Promise<any>;
128
+ };
129
+ readonly campaignAssets: {
130
+ list: (p?: ListParams & {
131
+ campaignId?: string;
132
+ assetId?: string;
133
+ }) => Promise<any>;
134
+ get: (id: string) => Promise<any>;
135
+ create: (body: CampaignAssetCreate) => Promise<any>;
136
+ delete: (id: string) => Promise<any>;
137
+ };
138
+ readonly adAssets: {
139
+ list: (p?: ListParams & {
140
+ adId?: string;
141
+ adGroupId?: string;
142
+ campaignId?: string;
143
+ role?: string;
144
+ }) => Promise<any>;
145
+ get: (id: string) => Promise<any>;
146
+ create: (body: AdAssetCreate) => Promise<any>;
147
+ delete: (id: string) => Promise<any>;
148
+ };
149
+ readonly media: {
150
+ matrix: () => Promise<any>;
151
+ };
152
+ readonly reports: {
153
+ /** Performance stats; see the reference for `date_range`, `group_by`, `metrics`, etc. */
154
+ stats: (params?: Record<string, any>) => Promise<any>;
155
+ };
156
+ readonly sync: {
157
+ /** Trigger a sync for the active Space (async — poll `get(syncId)`). */
158
+ trigger: (body?: SyncTriggerRequest) => Promise<any>;
159
+ list: (p?: ListParams) => Promise<any>;
160
+ /** Dry-run plan (import/export/remove) without executing. */
161
+ plan: (p?: {
162
+ platforms?: string;
163
+ }) => Promise<any>;
164
+ get: (id: string) => Promise<any>;
165
+ cancel: (id: string) => Promise<any>;
166
+ /** Unlink campaigns from a platform (keeps the local campaign). */
167
+ unlink: (body: SyncUnlinkRequest) => Promise<any>;
168
+ };
169
+ readonly meta: {
170
+ /** Introspect the authenticated token. */
171
+ me: () => Promise<any>;
172
+ /** List Spaces the token can access. */
173
+ spaces: () => Promise<any>;
174
+ };
175
+ constructor(options: DefoAdsOptions);
176
+ }
177
+ export default DefoAds;