glitch-javascript-sdk 1.7.6 → 1.7.8

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/Titles.ts CHANGED
@@ -366,9 +366,9 @@ class Titles {
366
366
  }
367
367
 
368
368
  /**
369
- * List sessions for a specific title, with optional filters and pagination.
370
- * Returns a paginated list of sessions with start/end times, session_length, user info, etc.
371
- */
369
+ * List sessions for a specific title, with optional filters and pagination.
370
+ * Returns a paginated list of sessions with start/end times, session_length, user info, etc.
371
+ */
372
372
  public static listSessions<T>(
373
373
  title_id: string,
374
374
  params?: Record<string, any>
@@ -400,15 +400,76 @@ class Titles {
400
400
  public static sessionsHistogram<T>(
401
401
  title_id: string,
402
402
  params?: Record<string, any>
403
- ): AxiosPromise<Response<T>> {
403
+ ): AxiosPromise<Response<T>> {
404
404
  return Requests.processRoute(
405
- TitlesRoute.routes.sessionsHistogram,
406
- {},
407
- { title_id },
408
- params
405
+ TitlesRoute.routes.sessionsHistogram,
406
+ {},
407
+ { title_id },
408
+ params
409
409
  );
410
- }
411
-
410
+ }
411
+
412
+ /**
413
+ * Upload a CSV/Excel file containing daily UTM analytics for a specific title.
414
+ *
415
+ * @param title_id The UUID of the title
416
+ * @param file The CSV or Excel file
417
+ * @param data Optional form fields (if needed)
418
+ * @param params Optional query parameters
419
+ * @returns AxiosPromise
420
+ */
421
+ public static importUtmAnalytics<T>(
422
+ title_id: string,
423
+ file: File | Blob,
424
+ data?: Record<string, any>,
425
+ params?: Record<string, any>
426
+ ): AxiosPromise<Response<T>> {
427
+ const url = TitlesRoute.routes.importUtmAnalytics.url.replace("{title_id}", title_id);
428
+ return Requests.uploadFile<T>(url, "file", file, data, params);
429
+ }
430
+
431
+ /**
432
+ * Retrieve the UTM analytics data for a title (paginated, filterable, sortable).
433
+ *
434
+ * GET /titles/{title_id}/utm
435
+ *
436
+ * @param title_id The UUID of the title
437
+ * @param params Optional query params: start_date, end_date, source, device_type, sort_by, etc.
438
+ * @returns AxiosPromise
439
+ */
440
+ public static getUtmAnalytics<T>(
441
+ title_id: string,
442
+ params?: Record<string, any>
443
+ ): AxiosPromise<Response<T>> {
444
+ return Requests.processRoute(
445
+ TitlesRoute.routes.getUtmAnalytics,
446
+ {},
447
+ { title_id },
448
+ params
449
+ );
450
+ }
451
+
452
+ /**
453
+ * Analyze UTM data with optional group_by (source, campaign, medium, device_type, etc.)
454
+ *
455
+ * GET /titles/{title_id}/utm/analysis
456
+ *
457
+ * @param title_id The UUID of the title
458
+ * @param params e.g. ?group_by=source&start_date=YYYY-MM-DD
459
+ * @returns AxiosPromise
460
+ */
461
+ public static analyzeUtmAnalytics<T>(
462
+ title_id: string,
463
+ params?: Record<string, any>
464
+ ): AxiosPromise<Response<T>> {
465
+ return Requests.processRoute(
466
+ TitlesRoute.routes.analyzeUtmAnalytics,
467
+ {},
468
+ { title_id },
469
+ params
470
+ );
471
+ }
472
+
412
473
 
413
474
  }
414
475
 
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,127 @@
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
+ // AD GROUPS (AKA AD SETS)
43
+ // ----------------------------------------------------------------
44
+ getGroups: {
45
+ url: "/ads/campaigns/{campaign_id}/groups",
46
+ method: HTTP_METHODS.GET,
47
+ },
48
+
49
+ createGroup: {
50
+ url: "/ads/campaigns/{campaign_id}/groups",
51
+ method: HTTP_METHODS.POST,
52
+ },
53
+
54
+ retrieveGroup: {
55
+ url: "/ads/campaigns/{campaign_id}/groups/{group_id}",
56
+ method: HTTP_METHODS.GET,
57
+ },
58
+
59
+ updateGroup: {
60
+ url: "/ads/campaigns/{campaign_id}/groups/{group_id}",
61
+ method: HTTP_METHODS.PUT,
62
+ },
63
+
64
+ deleteGroup: {
65
+ url: "/ads/campaigns/{campaign_id}/groups/{group_id}",
66
+ method: HTTP_METHODS.DELETE,
67
+ },
68
+
69
+ // ----------------------------------------------------------------
70
+ // ADS (CREATIVES)
71
+ // ----------------------------------------------------------------
72
+ getAds: {
73
+ url: "/ads/creatives",
74
+ method: HTTP_METHODS.GET,
75
+ },
76
+
77
+ createAd: {
78
+ url: "/ads/creatives",
79
+ method: HTTP_METHODS.POST,
80
+ },
81
+
82
+ retrieveAd: {
83
+ url: "/ads/creatives/{ad_id}",
84
+ method: HTTP_METHODS.GET,
85
+ },
86
+
87
+ updateAd: {
88
+ url: "/ads/creatives/{ad_id}",
89
+ method: HTTP_METHODS.PUT,
90
+ },
91
+
92
+ deleteAd: {
93
+ url: "/ads/creatives/{ad_id}",
94
+ method: HTTP_METHODS.DELETE,
95
+ },
96
+
97
+ // ----------------------------------------------------------------
98
+ // AD GROUP TRIGGERS
99
+ // ----------------------------------------------------------------
100
+ getTriggers: {
101
+ url: "/ads/campaigns/{campaign_id}/groups/{group_id}/triggers",
102
+ method: HTTP_METHODS.GET,
103
+ },
104
+
105
+ createTrigger: {
106
+ url: "/ads/campaigns/{campaign_id}/groups/{group_id}/triggers",
107
+ method: HTTP_METHODS.POST,
108
+ },
109
+
110
+ retrieveTrigger: {
111
+ url: "/ads/campaigns/{campaign_id}/groups/{group_id}/triggers/{trigger_id}",
112
+ method: HTTP_METHODS.GET,
113
+ },
114
+
115
+ updateTrigger: {
116
+ url: "/ads/campaigns/{campaign_id}/groups/{group_id}/triggers/{trigger_id}",
117
+ method: HTTP_METHODS.PUT,
118
+ },
119
+
120
+ deleteTrigger: {
121
+ url: "/ads/campaigns/{campaign_id}/groups/{group_id}/triggers/{trigger_id}",
122
+ method: HTTP_METHODS.DELETE,
123
+ },
124
+ };
125
+ }
126
+
127
+ export default AdsRoute;
@@ -44,6 +44,33 @@ class TitlesRoute {
44
44
  url: '/titles/{title_id}/sessions/histogram',
45
45
  method: HTTP_METHODS.GET
46
46
  },
47
+ /**
48
+ * 1) Import a CSV/Excel file containing daily UTM analytics data for a Title
49
+ * POST /titles/{title_id}/utm/import
50
+ */
51
+ importUtmAnalytics: {
52
+ url: "/titles/{title_id}/utm/import",
53
+ method: HTTP_METHODS.POST,
54
+ },
55
+
56
+ /**
57
+ * 2) Retrieve paginated/filterable UTM analytics data for a Title
58
+ * GET /titles/{title_id}/utm
59
+ */
60
+ getUtmAnalytics: {
61
+ url: "/titles/{title_id}/utm",
62
+ method: HTTP_METHODS.GET,
63
+ },
64
+
65
+ /**
66
+ * 3) Analyze UTM data with optional group_by / dimension-based aggregates
67
+ * GET /titles/{title_id}/utm/analysis
68
+ */
69
+ analyzeUtmAnalytics: {
70
+ url: "/titles/{title_id}/utm/analysis",
71
+ method: HTTP_METHODS.GET,
72
+ },
73
+
47
74
  };
48
75
 
49
76
  }