glitch-javascript-sdk 1.7.7 → 1.7.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/api/Ads.ts ADDED
@@ -0,0 +1,479 @@
1
+ import AdsRoute from "../routes/AdsRoute";
2
+ import Requests from "../util/Requests";
3
+ import Response from "../util/Response";
4
+ import { AxiosPromise } from "axios";
5
+
6
+ class Ads {
7
+ // ----------------------------------------------------------------------
8
+ // AD CAMPAIGNS
9
+ // ----------------------------------------------------------------------
10
+
11
+ /**
12
+ * List Ad Campaigns.
13
+ *
14
+ * Example usage:
15
+ * Ads.listCampaigns({ community: 'uuid-of-community', platform: 'tiktok' })
16
+ *
17
+ * @param params Query parameters (e.g. community, platform, advertiser_id, etc.)
18
+ * @returns A paginated list of AdCampaign resources
19
+ */
20
+ public static listCampaigns<T>(params?: Record<string, any>): AxiosPromise<Response<T>> {
21
+ return Requests.processRoute(AdsRoute.routes.getCampaigns, undefined, undefined, params);
22
+ }
23
+
24
+ /**
25
+ * Create a new Ad Campaign.
26
+ *
27
+ * @param data The Ad Campaign payload (JSON) to create
28
+ * @param params Optional query parameters
29
+ * @returns The newly created AdCampaign resource
30
+ */
31
+ public static createCampaign<T>(data?: object, params?: Record<string, any>): AxiosPromise<Response<T>> {
32
+ return Requests.processRoute(AdsRoute.routes.createCampaign, data, {}, params);
33
+ }
34
+
35
+ /**
36
+ * Retrieve a single Ad Campaign by ID.
37
+ *
38
+ * @param campaign_id The UUID of the campaign to fetch
39
+ * @param params Optional query parameters
40
+ * @returns The requested AdCampaign resource
41
+ */
42
+ public static viewCampaign<T>(campaign_id: string, params?: Record<string, any>): AxiosPromise<Response<T>> {
43
+ return Requests.processRoute(
44
+ AdsRoute.routes.retrieveCampaign,
45
+ {},
46
+ { campaign_id: campaign_id },
47
+ params
48
+ );
49
+ }
50
+
51
+ /**
52
+ * Update an existing Ad Campaign by ID.
53
+ *
54
+ * @param campaign_id The UUID of the campaign to update
55
+ * @param data The partial or full updated AdCampaign payload
56
+ * @param params Optional query parameters
57
+ * @returns The updated AdCampaign resource
58
+ */
59
+ public static updateCampaign<T>(
60
+ campaign_id: string,
61
+ data?: object,
62
+ params?: Record<string, any>
63
+ ): AxiosPromise<Response<T>> {
64
+ return Requests.processRoute(
65
+ AdsRoute.routes.updateCampaign,
66
+ data,
67
+ { campaign_id: campaign_id },
68
+ params
69
+ );
70
+ }
71
+
72
+ /**
73
+ * Delete an Ad Campaign by ID.
74
+ *
75
+ * @param campaign_id The UUID of the campaign to delete
76
+ * @param params Optional query parameters
77
+ * @returns A 204 No Content response on success
78
+ */
79
+ public static deleteCampaign<T>(
80
+ campaign_id: string,
81
+ params?: Record<string, any>
82
+ ): AxiosPromise<Response<T>> {
83
+ return Requests.processRoute(
84
+ AdsRoute.routes.deleteCampaign,
85
+ {},
86
+ { campaign_id: campaign_id },
87
+ params
88
+ );
89
+ }
90
+
91
+ // ----------------------------------------------------------------------
92
+ // AD GROUPS (AD SETS)
93
+ // ----------------------------------------------------------------------
94
+
95
+ /**
96
+ * List Ad Groups (ad sets) for a specific campaign.
97
+ *
98
+ * Example usage:
99
+ * Ads.listGroups('some-campaign-uuid', { promotion_type: 'WEBSITE' })
100
+ *
101
+ * @param campaign_id The UUID of the parent Ad Campaign
102
+ * @param params Optional query parameters (e.g. promotion_type, operation_status, etc.)
103
+ * @returns A paginated list of AdGroup resources
104
+ */
105
+ public static listGroups<T>(
106
+ campaign_id: string,
107
+ params?: Record<string, any>
108
+ ): AxiosPromise<Response<T>> {
109
+ return Requests.processRoute(
110
+ AdsRoute.routes.getGroups,
111
+ {},
112
+ { campaign_id },
113
+ params
114
+ );
115
+ }
116
+
117
+ /**
118
+ * Create a new Ad Group (ad set) under a specific campaign.
119
+ *
120
+ * @param campaign_id The UUID of the parent Ad Campaign
121
+ * @param data The AdGroup creation payload
122
+ * @param params Optional query parameters
123
+ * @returns The newly created AdGroup resource
124
+ */
125
+ public static createGroup<T>(
126
+ campaign_id: string,
127
+ data?: object,
128
+ params?: Record<string, any>
129
+ ): AxiosPromise<Response<T>> {
130
+ return Requests.processRoute(
131
+ AdsRoute.routes.createGroup,
132
+ data,
133
+ { campaign_id },
134
+ params
135
+ );
136
+ }
137
+
138
+ /**
139
+ * Retrieve a single Ad Group by ID, under a specific campaign.
140
+ *
141
+ * @param campaign_id The UUID of the parent Ad Campaign
142
+ * @param group_id The UUID of the AdGroup to fetch
143
+ * @param params Optional query parameters
144
+ * @returns The requested AdGroup resource
145
+ */
146
+ public static viewGroup<T>(
147
+ campaign_id: string,
148
+ group_id: string,
149
+ params?: Record<string, any>
150
+ ): AxiosPromise<Response<T>> {
151
+ return Requests.processRoute(
152
+ AdsRoute.routes.retrieveGroup,
153
+ {},
154
+ { campaign_id, group_id },
155
+ params
156
+ );
157
+ }
158
+
159
+ /**
160
+ * Update an Ad Group (ad set) by ID.
161
+ *
162
+ * @param campaign_id The UUID of the parent Ad Campaign
163
+ * @param group_id The UUID of the AdGroup to update
164
+ * @param data Updated fields for the AdGroup
165
+ * @param params Optional query parameters
166
+ * @returns The updated AdGroup resource
167
+ */
168
+ public static updateGroup<T>(
169
+ campaign_id: string,
170
+ group_id: string,
171
+ data?: object,
172
+ params?: Record<string, any>
173
+ ): AxiosPromise<Response<T>> {
174
+ return Requests.processRoute(
175
+ AdsRoute.routes.updateGroup,
176
+ data,
177
+ { campaign_id, group_id },
178
+ params
179
+ );
180
+ }
181
+
182
+ /**
183
+ * Delete an Ad Group (ad set) by ID, under a specific campaign.
184
+ *
185
+ * @param campaign_id The UUID of the parent Ad Campaign
186
+ * @param group_id The UUID of the AdGroup to delete
187
+ * @param params Optional query parameters
188
+ * @returns A 204 No Content response on success
189
+ */
190
+ public static deleteGroup<T>(
191
+ campaign_id: string,
192
+ group_id: string,
193
+ params?: Record<string, any>
194
+ ): AxiosPromise<Response<T>> {
195
+ return Requests.processRoute(
196
+ AdsRoute.routes.deleteGroup,
197
+ {},
198
+ { campaign_id, group_id },
199
+ params
200
+ );
201
+ }
202
+
203
+ // ----------------------------------------------------------------------
204
+ // ADS (CREATIVES)
205
+ // ----------------------------------------------------------------------
206
+
207
+ /**
208
+ * List Ads (creatives).
209
+ *
210
+ * Supports filtering by ad_group_id, social_media_post_id, operation_status, etc.
211
+ *
212
+ * @param params Optional query parameters for filtering/sorting
213
+ * @returns A paginated list of Ad resources
214
+ */
215
+ public static listAds<T>(params?: Record<string, any>): AxiosPromise<Response<T>> {
216
+ return Requests.processRoute(AdsRoute.routes.getAds, undefined, undefined, params);
217
+ }
218
+
219
+ /**
220
+ * Create a new Ad (creative).
221
+ *
222
+ * @param data The Ad creation payload
223
+ * @param params Optional query parameters
224
+ * @returns The newly created Ad resource
225
+ */
226
+ public static createAd<T>(data?: object, params?: Record<string, any>): AxiosPromise<Response<T>> {
227
+ return Requests.processRoute(AdsRoute.routes.createAd, data, {}, params);
228
+ }
229
+
230
+ /**
231
+ * Retrieve a single Ad by ID.
232
+ *
233
+ * @param ad_id The UUID of the Ad to fetch
234
+ * @param params Optional query parameters
235
+ * @returns The requested Ad resource
236
+ */
237
+ public static viewAd<T>(
238
+ ad_id: string,
239
+ params?: Record<string, any>
240
+ ): AxiosPromise<Response<T>> {
241
+ return Requests.processRoute(
242
+ AdsRoute.routes.retrieveAd,
243
+ {},
244
+ { ad_id },
245
+ params
246
+ );
247
+ }
248
+
249
+ /**
250
+ * Update an existing Ad by ID.
251
+ *
252
+ * @param ad_id The UUID of the Ad to update
253
+ * @param data The partial or full Ad payload
254
+ * @param params Optional query parameters
255
+ * @returns The updated Ad resource
256
+ */
257
+ public static updateAd<T>(
258
+ ad_id: string,
259
+ data?: object,
260
+ params?: Record<string, any>
261
+ ): AxiosPromise<Response<T>> {
262
+ return Requests.processRoute(
263
+ AdsRoute.routes.updateAd,
264
+ data,
265
+ { ad_id },
266
+ params
267
+ );
268
+ }
269
+
270
+ /**
271
+ * Delete an Ad by ID.
272
+ *
273
+ * @param ad_id The UUID of the Ad to delete
274
+ * @param params Optional query parameters
275
+ * @returns A 204 No Content response on success
276
+ */
277
+ public static deleteAd<T>(
278
+ ad_id: string,
279
+ params?: Record<string, any>
280
+ ): AxiosPromise<Response<T>> {
281
+ return Requests.processRoute(
282
+ AdsRoute.routes.deleteAd,
283
+ {},
284
+ { ad_id },
285
+ params
286
+ );
287
+ }
288
+
289
+ // ----------------------------------------------------------------------
290
+ // AD GROUP TRIGGERS
291
+ // ----------------------------------------------------------------------
292
+
293
+ /**
294
+ * List triggers defined for a given Ad Group.
295
+ *
296
+ * @param campaign_id The UUID of the parent Ad Campaign
297
+ * @param group_id The UUID of the Ad Group
298
+ * @param params Optional query parameters (pagination, etc.)
299
+ * @returns A paginated list of AdGroupTrigger resources
300
+ */
301
+ public static listTriggers<T>(
302
+ campaign_id: string,
303
+ group_id: string,
304
+ params?: Record<string, any>
305
+ ): AxiosPromise<Response<T>> {
306
+ return Requests.processRoute(
307
+ AdsRoute.routes.getTriggers,
308
+ {},
309
+ { campaign_id, group_id },
310
+ params
311
+ );
312
+ }
313
+
314
+ /**
315
+ * Create a new Ad Group Trigger.
316
+ *
317
+ * @param campaign_id The UUID of the parent Ad Campaign
318
+ * @param group_id The UUID of the Ad Group
319
+ * @param data The trigger creation payload
320
+ * @param params Optional query parameters
321
+ * @returns The newly created AdGroupTrigger resource
322
+ */
323
+ public static createTrigger<T>(
324
+ campaign_id: string,
325
+ group_id: string,
326
+ data?: object,
327
+ params?: Record<string, any>
328
+ ): AxiosPromise<Response<T>> {
329
+ return Requests.processRoute(
330
+ AdsRoute.routes.createTrigger,
331
+ data,
332
+ { campaign_id, group_id },
333
+ params
334
+ );
335
+ }
336
+
337
+ /**
338
+ * Retrieve a single Ad Group Trigger by ID.
339
+ *
340
+ * @param campaign_id The UUID of the parent Ad Campaign
341
+ * @param group_id The UUID of the Ad Group
342
+ * @param trigger_id The UUID of the trigger
343
+ * @param params Optional query parameters
344
+ * @returns The requested AdGroupTrigger resource
345
+ */
346
+ public static viewTrigger<T>(
347
+ campaign_id: string,
348
+ group_id: string,
349
+ trigger_id: string,
350
+ params?: Record<string, any>
351
+ ): AxiosPromise<Response<T>> {
352
+ return Requests.processRoute(
353
+ AdsRoute.routes.retrieveTrigger,
354
+ {},
355
+ { campaign_id, group_id, trigger_id },
356
+ params
357
+ );
358
+ }
359
+
360
+ /**
361
+ * Update an existing Ad Group Trigger by ID.
362
+ *
363
+ * @param campaign_id The UUID of the parent Ad Campaign
364
+ * @param group_id The UUID of the Ad Group
365
+ * @param trigger_id The UUID of the trigger to update
366
+ * @param data Updated trigger fields
367
+ * @param params Optional query parameters
368
+ * @returns The updated AdGroupTrigger resource
369
+ */
370
+ public static updateTrigger<T>(
371
+ campaign_id: string,
372
+ group_id: string,
373
+ trigger_id: string,
374
+ data?: object,
375
+ params?: Record<string, any>
376
+ ): AxiosPromise<Response<T>> {
377
+ return Requests.processRoute(
378
+ AdsRoute.routes.updateTrigger,
379
+ data,
380
+ { campaign_id, group_id, trigger_id },
381
+ params
382
+ );
383
+ }
384
+
385
+ /**
386
+ * Delete an Ad Group Trigger by ID.
387
+ *
388
+ * @param campaign_id The UUID of the parent Ad Campaign
389
+ * @param group_id The UUID of the Ad Group
390
+ * @param trigger_id The UUID of the trigger
391
+ * @param params Optional query parameters
392
+ * @returns A 204 No Content response on success
393
+ */
394
+ public static deleteTrigger<T>(
395
+ campaign_id: string,
396
+ group_id: string,
397
+ trigger_id: string,
398
+ params?: Record<string, any>
399
+ ): AxiosPromise<Response<T>> {
400
+ return Requests.processRoute(
401
+ AdsRoute.routes.deleteTrigger,
402
+ {},
403
+ { campaign_id, group_id, trigger_id },
404
+ params
405
+ );
406
+ }
407
+
408
+ /**
409
+ * List platform-level businesses for the given campaign ID,
410
+ * as defined by /ads/campaigns/{id}/businesses on the backend.
411
+ *
412
+ * Typically relevant for Reddit (list businesses), or might return a
413
+ * "not supported" message for Meta/TikTok.
414
+ *
415
+ * @param campaign_id The UUID of the Ad Campaign
416
+ * @param params Optional query parameters, e.g. page.size, etc.
417
+ * @returns A response object with data (business list or messages)
418
+ */
419
+ public static listCampaignBusinesses<T>(
420
+ campaign_id: string,
421
+ params?: Record<string, any>
422
+ ): AxiosPromise<Response<T>> {
423
+ return Requests.processRoute(
424
+ AdsRoute.routes.getCampaignBusinesses,
425
+ undefined, // no request body
426
+ { campaign_id }, // path params
427
+ params // query params
428
+ );
429
+ }
430
+
431
+ /**
432
+ * List Ad Accounts for the given campaign ID,
433
+ * as defined by /ads/campaigns/{id}/ad_accounts on the backend.
434
+ *
435
+ * E.g. for Reddit, you can pass ?business_id= to get business-level ad accounts,
436
+ * or for Twitter, it might just return a user’s ad accounts, etc.
437
+ *
438
+ * @param campaign_id The UUID of the Ad Campaign
439
+ * @param params Optional query parameters, e.g. business_id, page.size, etc.
440
+ * @returns A response object with data (ad account list)
441
+ */
442
+ public static listCampaignAdAccounts<T>(
443
+ campaign_id: string,
444
+ params?: Record<string, any>
445
+ ): AxiosPromise<Response<T>> {
446
+ return Requests.processRoute(
447
+ AdsRoute.routes.getCampaignAdAccounts,
448
+ undefined,
449
+ { campaign_id },
450
+ params
451
+ );
452
+ }
453
+
454
+ /**
455
+ * List funding instruments for the given campaign ID,
456
+ * as defined by /ads/campaigns/{id}/funding_instruments on the backend.
457
+ *
458
+ * For Twitter, pass ?account_id=...
459
+ * For Reddit, pass ?ad_account_id=... or ?business_id=...
460
+ *
461
+ * @param campaign_id The UUID of the Ad Campaign
462
+ * @param params Optional query parameters
463
+ * @returns A response object with data (funding instruments)
464
+ */
465
+ public static listCampaignFundingInstruments<T>(
466
+ campaign_id: string,
467
+ params?: Record<string, any>
468
+ ): AxiosPromise<Response<T>> {
469
+ return Requests.processRoute(
470
+ AdsRoute.routes.getCampaignFundingInstruments,
471
+ undefined,
472
+ { campaign_id },
473
+ params
474
+ );
475
+ }
476
+
477
+ }
478
+
479
+ export default Ads;
package/src/api/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import Auth from "./Auth";
2
+ import Ads from "./Ads";
2
3
  import Competitions from "./Competitions";
3
4
  import Communities from "./Communities";
4
5
  import Users from "./Users";
@@ -31,6 +32,7 @@ import Funnel from "./Funnel";
31
32
  import SocialStats from "./SocialStats";
32
33
  import Hashtags from "./Hashtags";
33
34
 
35
+ export {Ads};
34
36
  export {Auth};
35
37
  export {Competitions};
36
38
  export {Communities};
package/src/index.ts CHANGED
@@ -6,6 +6,7 @@ import { Config } from "./config";
6
6
  import Auth from "./api/Auth";
7
7
  import Competitions from "./api/Competitions";
8
8
  import {Communities, Social} from "./api";
9
+ import { Ads } from "./api";
9
10
  import { Users } from "./api";
10
11
  import { Events } from "./api";
11
12
  import { Teams } from "./api";
@@ -35,8 +36,6 @@ import {Funnel} from "./api";
35
36
  import {SocialStats} from "./api";
36
37
  import {Hashtags} from "./api";
37
38
 
38
-
39
-
40
39
  import Requests from "./util/Requests";
41
40
  import Parser from "./util/Parser";
42
41
  import Session from "./util/Session";
@@ -67,6 +66,7 @@ class Glitch {
67
66
  };
68
67
 
69
68
  public static api = {
69
+ Ads: Ads,
70
70
  Auth: Auth,
71
71
  Campaigns : Campaigns,
72
72
  Competitions: Competitions,
@@ -0,0 +1,142 @@
1
+ import Route from "./interface";
2
+ import HTTP_METHODS from "../constants/HttpMethods";
3
+
4
+ /**
5
+ * AdsRoute holds all the endpoint definitions for:
6
+ * - Ad Campaigns
7
+ * - Ad Groups (Ad Sets)
8
+ * - Ads (Creatives)
9
+ * - Ad Group Triggers
10
+ */
11
+ class AdsRoute {
12
+ public static routes: { [key: string]: Route } = {
13
+ // ----------------------------------------------------------------
14
+ // AD CAMPAIGNS
15
+ // ----------------------------------------------------------------
16
+ getCampaigns: {
17
+ url: "/ads/campaigns",
18
+ method: HTTP_METHODS.GET,
19
+ },
20
+
21
+ createCampaign: {
22
+ url: "/ads/campaigns",
23
+ method: HTTP_METHODS.POST,
24
+ },
25
+
26
+ retrieveCampaign: {
27
+ url: "/ads/campaigns/{campaign_id}",
28
+ method: HTTP_METHODS.GET,
29
+ },
30
+
31
+ updateCampaign: {
32
+ url: "/ads/campaigns/{campaign_id}",
33
+ method: HTTP_METHODS.PUT,
34
+ },
35
+
36
+ deleteCampaign: {
37
+ url: "/ads/campaigns/{campaign_id}",
38
+ method: HTTP_METHODS.DELETE,
39
+ },
40
+
41
+
42
+ // ----------------------------------------------------------------
43
+ // AD GROUPS (AKA AD SETS)
44
+ // ----------------------------------------------------------------
45
+ getGroups: {
46
+ url: "/ads/campaigns/{campaign_id}/groups",
47
+ method: HTTP_METHODS.GET,
48
+ },
49
+
50
+ createGroup: {
51
+ url: "/ads/campaigns/{campaign_id}/groups",
52
+ method: HTTP_METHODS.POST,
53
+ },
54
+
55
+ retrieveGroup: {
56
+ url: "/ads/campaigns/{campaign_id}/groups/{group_id}",
57
+ method: HTTP_METHODS.GET,
58
+ },
59
+
60
+ updateGroup: {
61
+ url: "/ads/campaigns/{campaign_id}/groups/{group_id}",
62
+ method: HTTP_METHODS.PUT,
63
+ },
64
+
65
+ deleteGroup: {
66
+ url: "/ads/campaigns/{campaign_id}/groups/{group_id}",
67
+ method: HTTP_METHODS.DELETE,
68
+ },
69
+ getCampaignBusinesses: {
70
+ url: "/ads/campaigns/{campaign_id}/businesses",
71
+ method: HTTP_METHODS.GET,
72
+ },
73
+
74
+ getCampaignAdAccounts: {
75
+ url: "/ads/campaigns/{campaign_id}/ad_accounts",
76
+ method: HTTP_METHODS.GET,
77
+ },
78
+
79
+ getCampaignFundingInstruments: {
80
+ url: "/ads/campaigns/{campaign_id}/funding_instruments",
81
+ method: HTTP_METHODS.GET,
82
+ },
83
+
84
+ // ----------------------------------------------------------------
85
+ // ADS (CREATIVES)
86
+ // ----------------------------------------------------------------
87
+ getAds: {
88
+ url: "/ads/creatives",
89
+ method: HTTP_METHODS.GET,
90
+ },
91
+
92
+ createAd: {
93
+ url: "/ads/creatives",
94
+ method: HTTP_METHODS.POST,
95
+ },
96
+
97
+ retrieveAd: {
98
+ url: "/ads/creatives/{ad_id}",
99
+ method: HTTP_METHODS.GET,
100
+ },
101
+
102
+ updateAd: {
103
+ url: "/ads/creatives/{ad_id}",
104
+ method: HTTP_METHODS.PUT,
105
+ },
106
+
107
+ deleteAd: {
108
+ url: "/ads/creatives/{ad_id}",
109
+ method: HTTP_METHODS.DELETE,
110
+ },
111
+
112
+ // ----------------------------------------------------------------
113
+ // AD GROUP TRIGGERS
114
+ // ----------------------------------------------------------------
115
+ getTriggers: {
116
+ url: "/ads/campaigns/{campaign_id}/groups/{group_id}/triggers",
117
+ method: HTTP_METHODS.GET,
118
+ },
119
+
120
+ createTrigger: {
121
+ url: "/ads/campaigns/{campaign_id}/groups/{group_id}/triggers",
122
+ method: HTTP_METHODS.POST,
123
+ },
124
+
125
+ retrieveTrigger: {
126
+ url: "/ads/campaigns/{campaign_id}/groups/{group_id}/triggers/{trigger_id}",
127
+ method: HTTP_METHODS.GET,
128
+ },
129
+
130
+ updateTrigger: {
131
+ url: "/ads/campaigns/{campaign_id}/groups/{group_id}/triggers/{trigger_id}",
132
+ method: HTTP_METHODS.PUT,
133
+ },
134
+
135
+ deleteTrigger: {
136
+ url: "/ads/campaigns/{campaign_id}/groups/{group_id}/triggers/{trigger_id}",
137
+ method: HTTP_METHODS.DELETE,
138
+ },
139
+ };
140
+ }
141
+
142
+ export default AdsRoute;