glitch-javascript-sdk 2.5.3 → 2.5.5

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.
@@ -0,0 +1,7 @@
1
+ import Route from "./interface";
2
+ declare class EducationRoute {
3
+ static routes: {
4
+ [key: string]: Route;
5
+ };
6
+ }
7
+ export default EducationRoute;
package/dist/index.d.ts CHANGED
@@ -5383,6 +5383,18 @@ declare class Newsletters {
5383
5383
  * @returns Promise
5384
5384
  */
5385
5385
  static joinCourseWaitlist<T>(data: object, params?: Record<string, any>): AxiosPromise<Response<T>>;
5386
+ /**
5387
+ * Join the raffle feature waitlist.
5388
+ *
5389
+ * @param data { name, email, game, prizes[], interest_in_playtesters, launch_timeline, target_wishlist_count }
5390
+ */
5391
+ static joinRaffleWaitlist<T>(data: object, params?: Record<string, any>): AxiosPromise<Response<T>>;
5392
+ /**
5393
+ * Join the Discord Marketplace waitlist.
5394
+ *
5395
+ * @param data { name, email, game, categories[] }
5396
+ */
5397
+ static joinDiscordMarketplaceWaitlist<T>(data: object, params?: Record<string, any>): AxiosPromise<Response<T>>;
5386
5398
  }
5387
5399
 
5388
5400
  declare class PlayTests {
@@ -7121,6 +7133,60 @@ declare class DiscordMarketplace {
7121
7133
  static getChannels<T>(id: string): AxiosPromise<Response<T>>;
7122
7134
  }
7123
7135
 
7136
+ declare class Education {
7137
+ static listCategories<T>(params?: object): AxiosPromise<Response<T>>;
7138
+ static viewCategory<T>(uuid: string, params?: object): AxiosPromise<Response<T>>;
7139
+ static createCategory<T>(data: object): AxiosPromise<Response<T>>;
7140
+ static updateCategory<T>(uuid: string, data: object): AxiosPromise<Response<T>>;
7141
+ static deleteCategory<T>(uuid: string): AxiosPromise<Response<T>>;
7142
+ static listTracks<T>(params?: object): AxiosPromise<Response<T>>;
7143
+ static viewTrack<T>(uuid: string): AxiosPromise<Response<T>>;
7144
+ static createTrack<T>(data: object): AxiosPromise<Response<T>>;
7145
+ static updateTrack<T>(uuid: string, data: object): AxiosPromise<Response<T>>;
7146
+ static deleteTrack<T>(uuid: string): AxiosPromise<Response<T>>;
7147
+ static registerForTrack<T>(uuid: string): AxiosPromise<Response<T>>;
7148
+ static myTracks<T>(): AxiosPromise<Response<T>>;
7149
+ static getTrackAnalytics<T>(uuid: string): AxiosPromise<Response<T>>;
7150
+ static listContent<T>(params?: object): AxiosPromise<Response<T>>;
7151
+ static viewContent<T>(uuid: string, params?: object): AxiosPromise<Response<T>>;
7152
+ static createContent<T>(data: object): AxiosPromise<Response<T>>;
7153
+ static updateContent<T>(uuid: string, data: object): AxiosPromise<Response<T>>;
7154
+ static deleteContent<T>(uuid: string): AxiosPromise<Response<T>>;
7155
+ static heartbeat<T>(uuid: string, data: object): AxiosPromise<Response<T>>;
7156
+ static getSecureVideo<T>(uuid: string): AxiosPromise<Response<T>>;
7157
+ static listTrackContent<T>(track_id: string): AxiosPromise<Response<T>>;
7158
+ static addContentToTrack<T>(track_id: string, data: object): AxiosPromise<Response<T>>;
7159
+ static removeContentFromTrack<T>(track_id: string, content_id: string): AxiosPromise<Response<T>>;
7160
+ static reorderTrackContent<T>(track_id: string, content_ids: string[]): AxiosPromise<Response<T>>;
7161
+ static listQuizzes<T>(params?: object): AxiosPromise<Response<T>>;
7162
+ static viewQuiz<T>(uuid: string): AxiosPromise<Response<T>>;
7163
+ static submitQuiz<T>(uuid: string, answers: object): AxiosPromise<Response<T>>;
7164
+ static myQuizAttempts<T>(uuid: string): AxiosPromise<Response<T>>;
7165
+ static viewQuizAttempt<T>(uuid: string): AxiosPromise<Response<T>>;
7166
+ static listQuizQuestions<T>(quiz_id: string): AxiosPromise<Response<T>>;
7167
+ static createQuizQuestion<T>(quiz_id: string, data: object): AxiosPromise<Response<T>>;
7168
+ static reorderQuizQuestions<T>(quiz_id: string, question_ids: string[]): AxiosPromise<Response<T>>;
7169
+ static listQuizOptions<T>(question_id: string): AxiosPromise<Response<T>>;
7170
+ static createQuizOption<T>(question_id: string, data: object): AxiosPromise<Response<T>>;
7171
+ static syncProgress<T>(data: object): AxiosPromise<Response<T>>;
7172
+ static getMyProgressByContent<T>(content_id: string): AxiosPromise<Response<T>>;
7173
+ static listRegistrations<T>(params?: object): AxiosPromise<Response<T>>;
7174
+ static refreshUserTrack<T>(uuid: string): AxiosPromise<Response<T>>;
7175
+ static logView<T>(data: object): AxiosPromise<Response<T>>;
7176
+ static saveModuleData<T>(data: object): AxiosPromise<Response<T>>;
7177
+ static getModuleData<T>(uuid: string): AxiosPromise<Response<T>>;
7178
+ static getConversionReport<T>(): AxiosPromise<Response<T>>;
7179
+ static getAdoptionReport<T>(): AxiosPromise<Response<T>>;
7180
+ static getQuestionPerformanceReport<T>(params?: object): AxiosPromise<Response<T>>;
7181
+ static myBadges<T>(): AxiosPromise<Response<T>>;
7182
+ static awardBadge<T>(data: object): AxiosPromise<Response<T>>;
7183
+ static myCertificates<T>(): AxiosPromise<Response<T>>;
7184
+ static downloadCertificate<T>(uuid: string): AxiosPromise<Response<T>>;
7185
+ static listTemplates<T>(): AxiosPromise<Response<T>>;
7186
+ static uploadTemplateSignature<T>(uuid: string, file: File): AxiosPromise<Response<T>>;
7187
+ static uploadTemplateBackground<T>(uuid: string, file: File): AxiosPromise<Response<T>>;
7188
+ }
7189
+
7124
7190
  interface Route {
7125
7191
  url: string;
7126
7192
  method: string;
@@ -7470,6 +7536,7 @@ declare class Glitch {
7470
7536
  TwitchReporting: typeof TwitchReporting;
7471
7537
  Raffles: typeof Raffles;
7472
7538
  DiscordMarketplace: typeof DiscordMarketplace;
7539
+ Education: typeof Education;
7473
7540
  };
7474
7541
  static util: {
7475
7542
  Requests: typeof Requests;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "glitch-javascript-sdk",
3
- "version": "2.5.3",
3
+ "version": "2.5.5",
4
4
  "description": "Javascript SDK for Glitch",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -0,0 +1,183 @@
1
+ import EducationRoute from "../routes/EducationRoute";
2
+ import Requests from "../util/Requests";
3
+ import Response from "../util/Response";
4
+ import { AxiosPromise } from "axios";
5
+
6
+ class Education {
7
+ // --- 1. CATEGORIES ---
8
+ public static listCategories<T>(params?: object): AxiosPromise<Response<T>> {
9
+ return Requests.processRoute(EducationRoute.routes.listCategories, undefined, undefined, params);
10
+ }
11
+ public static viewCategory<T>(uuid: string, params?: object): AxiosPromise<Response<T>> {
12
+ return Requests.processRoute(EducationRoute.routes.viewCategory, undefined, { uuid }, params);
13
+ }
14
+ public static createCategory<T>(data: object): AxiosPromise<Response<T>> {
15
+ return Requests.processRoute(EducationRoute.routes.createCategory, data);
16
+ }
17
+ public static updateCategory<T>(uuid: string, data: object): AxiosPromise<Response<T>> {
18
+ return Requests.processRoute(EducationRoute.routes.updateCategory, data, { uuid });
19
+ }
20
+ public static deleteCategory<T>(uuid: string): AxiosPromise<Response<T>> {
21
+ return Requests.processRoute(EducationRoute.routes.deleteCategory, undefined, { uuid });
22
+ }
23
+
24
+ // --- 2. TRACKS ---
25
+ public static listTracks<T>(params?: object): AxiosPromise<Response<T>> {
26
+ return Requests.processRoute(EducationRoute.routes.listTracks, undefined, undefined, params);
27
+ }
28
+ public static viewTrack<T>(uuid: string): AxiosPromise<Response<T>> {
29
+ return Requests.processRoute(EducationRoute.routes.viewTrack, undefined, { uuid });
30
+ }
31
+ public static createTrack<T>(data: object): AxiosPromise<Response<T>> {
32
+ return Requests.processRoute(EducationRoute.routes.createTrack, data);
33
+ }
34
+ public static updateTrack<T>(uuid: string, data: object): AxiosPromise<Response<T>> {
35
+ return Requests.processRoute(EducationRoute.routes.updateTrack, data, { uuid });
36
+ }
37
+ public static deleteTrack<T>(uuid: string): AxiosPromise<Response<T>> {
38
+ return Requests.processRoute(EducationRoute.routes.deleteTrack, undefined, { uuid });
39
+ }
40
+ public static registerForTrack<T>(uuid: string): AxiosPromise<Response<T>> {
41
+ return Requests.processRoute(EducationRoute.routes.registerTrack, {}, { uuid });
42
+ }
43
+ public static myTracks<T>(): AxiosPromise<Response<T>> {
44
+ return Requests.processRoute(EducationRoute.routes.myTracks);
45
+ }
46
+ public static getTrackAnalytics<T>(uuid: string): AxiosPromise<Response<T>> {
47
+ return Requests.processRoute(EducationRoute.routes.trackAnalytics, undefined, { uuid });
48
+ }
49
+
50
+ // --- 3. CONTENT ---
51
+ public static listContent<T>(params?: object): AxiosPromise<Response<T>> {
52
+ return Requests.processRoute(EducationRoute.routes.listContent, undefined, undefined, params);
53
+ }
54
+ public static viewContent<T>(uuid: string, params?: object): AxiosPromise<Response<T>> {
55
+ return Requests.processRoute(EducationRoute.routes.viewContent, undefined, { uuid }, params);
56
+ }
57
+ public static createContent<T>(data: object): AxiosPromise<Response<T>> {
58
+ return Requests.processRoute(EducationRoute.routes.createContent, data);
59
+ }
60
+ public static updateContent<T>(uuid: string, data: object): AxiosPromise<Response<T>> {
61
+ return Requests.processRoute(EducationRoute.routes.updateContent, data, { uuid });
62
+ }
63
+ public static deleteContent<T>(uuid: string): AxiosPromise<Response<T>> {
64
+ return Requests.processRoute(EducationRoute.routes.deleteContent, undefined, { uuid });
65
+ }
66
+ public static heartbeat<T>(uuid: string, data: object): AxiosPromise<Response<T>> {
67
+ return Requests.processRoute(EducationRoute.routes.contentHeartbeat, data, { uuid });
68
+ }
69
+ public static getSecureVideo<T>(uuid: string): AxiosPromise<Response<T>> {
70
+ return Requests.processRoute(EducationRoute.routes.getSecureVideo, undefined, { uuid });
71
+ }
72
+
73
+ // --- 4. TRACK CONTENT (PIVOT) ---
74
+ public static listTrackContent<T>(track_id: string): AxiosPromise<Response<T>> {
75
+ return Requests.processRoute(EducationRoute.routes.listTrackContent, undefined, { track_id });
76
+ }
77
+ public static addContentToTrack<T>(track_id: string, data: object): AxiosPromise<Response<T>> {
78
+ return Requests.processRoute(EducationRoute.routes.addContentToTrack, data, { track_id });
79
+ }
80
+ public static removeContentFromTrack<T>(track_id: string, content_id: string): AxiosPromise<Response<T>> {
81
+ return Requests.processRoute(EducationRoute.routes.removeContentFromTrack, undefined, { track_id, content_id });
82
+ }
83
+ public static reorderTrackContent<T>(track_id: string, content_ids: string[]): AxiosPromise<Response<T>> {
84
+ return Requests.processRoute(EducationRoute.routes.reorderTrackContent, { content_ids }, { track_id });
85
+ }
86
+
87
+ // --- 5. QUIZZES ---
88
+ public static listQuizzes<T>(params?: object): AxiosPromise<Response<T>> {
89
+ return Requests.processRoute(EducationRoute.routes.listQuizzes, undefined, undefined, params);
90
+ }
91
+ public static viewQuiz<T>(uuid: string): AxiosPromise<Response<T>> {
92
+ return Requests.processRoute(EducationRoute.routes.viewQuiz, undefined, { uuid });
93
+ }
94
+ public static submitQuiz<T>(uuid: string, answers: object): AxiosPromise<Response<T>> {
95
+ return Requests.processRoute(EducationRoute.routes.submitQuiz, { answers }, { uuid });
96
+ }
97
+ public static myQuizAttempts<T>(uuid: string): AxiosPromise<Response<T>> {
98
+ return Requests.processRoute(EducationRoute.routes.myQuizAttempts, undefined, { uuid });
99
+ }
100
+ public static viewQuizAttempt<T>(uuid: string): AxiosPromise<Response<T>> {
101
+ return Requests.processRoute(EducationRoute.routes.viewQuizAttempt, undefined, { uuid });
102
+ }
103
+
104
+ // --- 6. QUIZ QUESTIONS & OPTIONS ---
105
+ public static listQuizQuestions<T>(quiz_id: string): AxiosPromise<Response<T>> {
106
+ return Requests.processRoute(EducationRoute.routes.listQuizQuestions, undefined, { quiz_id });
107
+ }
108
+ public static createQuizQuestion<T>(quiz_id: string, data: object): AxiosPromise<Response<T>> {
109
+ return Requests.processRoute(EducationRoute.routes.createQuizQuestion, data, { quiz_id });
110
+ }
111
+ public static reorderQuizQuestions<T>(quiz_id: string, question_ids: string[]): AxiosPromise<Response<T>> {
112
+ return Requests.processRoute(EducationRoute.routes.reorderQuizQuestions, { question_ids }, { quiz_id });
113
+ }
114
+ public static listQuizOptions<T>(question_id: string): AxiosPromise<Response<T>> {
115
+ return Requests.processRoute(EducationRoute.routes.listQuizOptions, undefined, { question_id });
116
+ }
117
+ public static createQuizOption<T>(question_id: string, data: object): AxiosPromise<Response<T>> {
118
+ return Requests.processRoute(EducationRoute.routes.createQuizOption, data, { question_id });
119
+ }
120
+
121
+ // --- 7. PROGRESS & REGISTRATIONS ---
122
+ public static syncProgress<T>(data: object): AxiosPromise<Response<T>> {
123
+ return Requests.processRoute(EducationRoute.routes.syncProgress, data);
124
+ }
125
+ public static getMyProgressByContent<T>(content_id: string): AxiosPromise<Response<T>> {
126
+ return Requests.processRoute(EducationRoute.routes.myProgressByContent, undefined, { content_id });
127
+ }
128
+ public static listRegistrations<T>(params?: object): AxiosPromise<Response<T>> {
129
+ return Requests.processRoute(EducationRoute.routes.listRegistrations, undefined, undefined, params);
130
+ }
131
+ public static refreshUserTrack<T>(uuid: string): AxiosPromise<Response<T>> {
132
+ return Requests.processRoute(EducationRoute.routes.refreshUserTrack, {}, { uuid });
133
+ }
134
+
135
+ // --- 8. ANALYTICS & MODULE DATA ---
136
+ public static logView<T>(data: object): AxiosPromise<Response<T>> {
137
+ return Requests.processRoute(EducationRoute.routes.logView, data);
138
+ }
139
+ public static saveModuleData<T>(data: object): AxiosPromise<Response<T>> {
140
+ return Requests.processRoute(EducationRoute.routes.saveModuleData, data);
141
+ }
142
+ public static getModuleData<T>(uuid: string): AxiosPromise<Response<T>> {
143
+ return Requests.processRoute(EducationRoute.routes.viewModuleData, undefined, { uuid });
144
+ }
145
+ public static getConversionReport<T>(): AxiosPromise<Response<T>> {
146
+ return Requests.processRoute(EducationRoute.routes.reportConversion);
147
+ }
148
+ public static getAdoptionReport<T>(): AxiosPromise<Response<T>> {
149
+ return Requests.processRoute(EducationRoute.routes.reportAdoption);
150
+ }
151
+ public static getQuestionPerformanceReport<T>(params?: object): AxiosPromise<Response<T>> {
152
+ return Requests.processRoute(EducationRoute.routes.reportQuestionPerformance, undefined, undefined, params);
153
+ }
154
+
155
+ // --- 9. ACHIEVEMENTS (BADGES & CERTIFICATES) ---
156
+ public static myBadges<T>(): AxiosPromise<Response<T>> {
157
+ return Requests.processRoute(EducationRoute.routes.myBadges);
158
+ }
159
+ public static awardBadge<T>(data: object): AxiosPromise<Response<T>> {
160
+ return Requests.processRoute(EducationRoute.routes.awardBadge, data);
161
+ }
162
+ public static myCertificates<T>(): AxiosPromise<Response<T>> {
163
+ return Requests.processRoute(EducationRoute.routes.myCertificates);
164
+ }
165
+ public static downloadCertificate<T>(uuid: string): AxiosPromise<Response<T>> {
166
+ return Requests.processRoute(EducationRoute.routes.downloadCertificate, undefined, { uuid });
167
+ }
168
+
169
+ // --- 10. TEMPLATES & UPLOADS ---
170
+ public static listTemplates<T>(): AxiosPromise<Response<T>> {
171
+ return Requests.processRoute(EducationRoute.routes.listTemplates);
172
+ }
173
+ public static uploadTemplateSignature<T>(uuid: string, file: File): AxiosPromise<Response<T>> {
174
+ const url = EducationRoute.routes.uploadTemplateSignature.url.replace('{uuid}', uuid);
175
+ return Requests.uploadFile(url, 'image', file);
176
+ }
177
+ public static uploadTemplateBackground<T>(uuid: string, file: File): AxiosPromise<Response<T>> {
178
+ const url = EducationRoute.routes.uploadTemplateBackground.url.replace('{uuid}', uuid);
179
+ return Requests.uploadFile(url, 'image', file);
180
+ }
181
+ }
182
+
183
+ export default Education;
@@ -15,22 +15,40 @@ class Newsletters {
15
15
  *
16
16
  * @returns Promise
17
17
  */
18
- public static downloadMarketingChecklist<T>(data : object, params?: Record<string, any>) : AxiosPromise<Response<T>> {
18
+ public static downloadMarketingChecklist<T>(data: object, params?: Record<string, any>): AxiosPromise<Response<T>> {
19
19
 
20
20
  return Requests.processRoute(NewslettersRoutes.routes.downloadMarketingChecklist, data, undefined, params);
21
21
  }
22
22
 
23
-
23
+
24
24
  /**
25
25
  * Join the marketing course waitlist.
26
26
  *
27
27
  * @param data { name, email, game, topics[] }
28
28
  * @returns Promise
29
29
  */
30
- public static joinCourseWaitlist<T>(data : object, params?: Record<string, any>) : AxiosPromise<Response<T>> {
30
+ public static joinCourseWaitlist<T>(data: object, params?: Record<string, any>): AxiosPromise<Response<T>> {
31
31
  return Requests.processRoute(NewslettersRoutes.routes.joinCourseWaitlist, data, undefined, params);
32
32
  }
33
33
 
34
+ /**
35
+ * Join the raffle feature waitlist.
36
+ *
37
+ * @param data { name, email, game, prizes[], interest_in_playtesters, launch_timeline, target_wishlist_count }
38
+ */
39
+ public static joinRaffleWaitlist<T>(data: object, params?: Record<string, any>): AxiosPromise<Response<T>> {
40
+ return Requests.processRoute(NewslettersRoutes.routes.joinRaffleWaitlist, data, undefined, params);
41
+ }
42
+
43
+ /**
44
+ * Join the Discord Marketplace waitlist.
45
+ *
46
+ * @param data { name, email, game, categories[] }
47
+ */
48
+ public static joinDiscordMarketplaceWaitlist<T>(data: object, params?: Record<string, any>): AxiosPromise<Response<T>> {
49
+ return Requests.processRoute(NewslettersRoutes.routes.joinDiscordMarketplaceWaitlist, data, undefined, params);
50
+ }
51
+
34
52
 
35
53
  }
36
54
 
package/src/api/index.ts CHANGED
@@ -40,6 +40,7 @@ import MarketingAgencies from "./MarketingAgencies";
40
40
  import TwitchReporting from "./TwitchReporting";
41
41
  import Raffles from "./Raffles";
42
42
  import DiscordMarketplace from "./DiscordMarketplace";
43
+ import Education from "./Education";
43
44
 
44
45
  export {Ads};
45
46
  export {AccessKeys};
@@ -82,4 +83,5 @@ export {AIUsage};
82
83
  export {MarketingAgencies};
83
84
  export {TwitchReporting};
84
85
  export {Raffles};
85
- export {DiscordMarketplace};
86
+ export {DiscordMarketplace};
87
+ export {Education};
package/src/index.ts CHANGED
@@ -44,6 +44,7 @@ import {MarketingAgencies} from "./api"
44
44
  import {TwitchReporting} from './api'
45
45
  import {Raffles} from './api'
46
46
  import {DiscordMarketplace} from './api';
47
+ import {Education} from './api';
47
48
 
48
49
  import Requests from "./util/Requests";
49
50
  import Parser from "./util/Parser";
@@ -117,6 +118,7 @@ class Glitch {
117
118
  TwitchReporting: TwitchReporting,
118
119
  Raffles : Raffles,
119
120
  DiscordMarketplace : DiscordMarketplace,
121
+ Education: Education,
120
122
  }
121
123
 
122
124
  public static util = {
@@ -0,0 +1,143 @@
1
+ import Route from "./interface";
2
+ import HTTP_METHODS from "../constants/HttpMethods";
3
+
4
+ class EducationRoute {
5
+ public static routes: { [key: string]: Route } = {
6
+ // 1. EducationCategoryController
7
+ listCategories: { url: '/education/categories', method: HTTP_METHODS.GET },
8
+ viewCategory: { url: '/education/categories/{uuid}', method: HTTP_METHODS.GET },
9
+ createCategory: { url: '/education/categories', method: HTTP_METHODS.POST },
10
+ updateCategory: { url: '/education/categories/{uuid}', method: HTTP_METHODS.PUT },
11
+ deleteCategory: { url: '/education/categories/{uuid}', method: HTTP_METHODS.DELETE },
12
+
13
+ // 2. EducationTrackController
14
+ listTracks: { url: '/education/tracks', method: HTTP_METHODS.GET },
15
+ viewTrack: { url: '/education/tracks/{uuid}', method: HTTP_METHODS.GET },
16
+ createTrack: { url: '/education/tracks', method: HTTP_METHODS.POST },
17
+ updateTrack: { url: '/education/tracks/{uuid}', method: HTTP_METHODS.PUT },
18
+ deleteTrack: { url: '/education/tracks/{uuid}', method: HTTP_METHODS.DELETE },
19
+ registerTrack: { url: '/education/tracks/{uuid}/register', method: HTTP_METHODS.POST },
20
+ myTracks: { url: '/education/my-tracks', method: HTTP_METHODS.GET },
21
+ trackAnalytics: { url: '/education/tracks/{uuid}/analytics', method: HTTP_METHODS.GET },
22
+
23
+ // 3. EducationContentController
24
+ listContent: { url: '/education/content', method: HTTP_METHODS.GET },
25
+ viewContent: { url: '/education/content/{uuid}', method: HTTP_METHODS.GET },
26
+ createContent: { url: '/education/content', method: HTTP_METHODS.POST },
27
+ updateContent: { url: '/education/content/{uuid}', method: HTTP_METHODS.PUT },
28
+ deleteContent: { url: '/education/content/{uuid}', method: HTTP_METHODS.DELETE },
29
+ contentHeartbeat: { url: '/education/content/{uuid}/heartbeat', method: HTTP_METHODS.POST },
30
+ saveContentModuleState: { url: '/education/content/{uuid}/module-state', method: HTTP_METHODS.POST },
31
+ getContentModuleState: { url: '/education/content/{uuid}/module-state', method: HTTP_METHODS.GET },
32
+ getSecureVideo: { url: '/education/content/{uuid}/secure-video', method: HTTP_METHODS.GET },
33
+
34
+ // 4. EducationContentTrackController (Pivot)
35
+ listTrackContent: { url: '/education/tracks/{track_id}/content', method: HTTP_METHODS.GET },
36
+ addContentToTrack: { url: '/education/tracks/{track_id}/content', method: HTTP_METHODS.POST },
37
+ updateContentInTrack: { url: '/education/tracks/{track_id}/content/{content_id}', method: HTTP_METHODS.PUT },
38
+ removeContentFromTrack: { url: '/education/tracks/{track_id}/content/{content_id}', method: HTTP_METHODS.DELETE },
39
+ reorderTrackContent: { url: '/education/tracks/{track_id}/reorder', method: HTTP_METHODS.POST },
40
+
41
+ // 5. QuizController
42
+ listQuizzes: { url: '/education/quizzes', method: HTTP_METHODS.GET },
43
+ viewQuiz: { url: '/education/quizzes/{uuid}', method: HTTP_METHODS.GET },
44
+ createQuiz: { url: '/education/quizzes', method: HTTP_METHODS.POST },
45
+ updateQuiz: { url: '/education/quizzes/{uuid}', method: HTTP_METHODS.PUT },
46
+ deleteQuiz: { url: '/education/quizzes/{uuid}', method: HTTP_METHODS.DELETE },
47
+ submitQuiz: { url: '/education/quizzes/{uuid}/submit', method: HTTP_METHODS.POST },
48
+ myQuizAttempts: { url: '/education/quizzes/{uuid}/attempts', method: HTTP_METHODS.GET },
49
+ viewQuizAttempt: { url: '/education/quizzes/attempts/{uuid}', method: HTTP_METHODS.GET },
50
+
51
+ // 6. QuizQuestionController
52
+ listQuizQuestions: { url: '/education/quizzes/{quiz_id}/questions', method: HTTP_METHODS.GET },
53
+ createQuizQuestion: { url: '/education/quizzes/{quiz_id}/questions', method: HTTP_METHODS.POST },
54
+ viewQuizQuestion: { url: '/education/questions/{uuid}', method: HTTP_METHODS.GET },
55
+ updateQuizQuestion: { url: '/education/questions/{uuid}', method: HTTP_METHODS.PUT },
56
+ deleteQuizQuestion: { url: '/education/questions/{uuid}', method: HTTP_METHODS.DELETE },
57
+ reorderQuizQuestions: { url: '/education/quizzes/{quiz_id}/questions/reorder', method: HTTP_METHODS.POST },
58
+
59
+ // 7. QuizOptionController
60
+ listQuizOptions: { url: '/education/questions/{question_id}/options', method: HTTP_METHODS.GET },
61
+ createQuizOption: { url: '/education/questions/{question_id}/options', method: HTTP_METHODS.POST },
62
+ viewQuizOption: { url: '/education/options/{uuid}', method: HTTP_METHODS.GET },
63
+ updateQuizOption: { url: '/education/options/{uuid}', method: HTTP_METHODS.PUT },
64
+ deleteQuizOption: { url: '/education/options/{uuid}', method: HTTP_METHODS.DELETE },
65
+
66
+ // 8. QuizAttemptController
67
+ listAllQuizAttempts: { url: '/education/quiz-attempts', method: HTTP_METHODS.GET },
68
+ viewSpecificQuizAttempt: { url: '/education/quiz-attempts/{uuid}', method: HTTP_METHODS.GET },
69
+ deleteQuizAttempt: { url: '/education/quiz-attempts/{uuid}', method: HTTP_METHODS.DELETE },
70
+ listUserQuizAttempts: { url: '/users/{user_id}/quiz-attempts', method: HTTP_METHODS.GET },
71
+
72
+ // 9. QuizAttemptAnswerController
73
+ listAttemptAnswers: { url: '/education/quiz-attempts/{attempt_id}/answers', method: HTTP_METHODS.GET },
74
+ viewSpecificAnswer: { url: '/education/quiz-attempt-answers/{uuid}', method: HTTP_METHODS.GET },
75
+ reportQuestionPerformance: { url: '/education/reports/question-performance', method: HTTP_METHODS.GET },
76
+
77
+ // 10. UserEducationProgressController
78
+ listAllProgress: { url: '/education/progress', method: HTTP_METHODS.GET },
79
+ syncProgress: { url: '/education/progress/sync', method: HTTP_METHODS.POST },
80
+ viewProgress: { url: '/education/progress/{uuid}', method: HTTP_METHODS.GET },
81
+ deleteProgress: { url: '/education/progress/{uuid}', method: HTTP_METHODS.DELETE },
82
+ myProgressByContent: { url: '/education/content/{content_id}/my-progress', method: HTTP_METHODS.GET },
83
+
84
+ // 11. UserTrackController
85
+ listUserTracks: { url: '/education/user-tracks', method: HTTP_METHODS.GET },
86
+ viewUserTrack: { url: '/education/user-tracks/{uuid}', method: HTTP_METHODS.GET },
87
+ updateUserTrack: { url: '/education/user-tracks/{uuid}', method: HTTP_METHODS.PUT },
88
+ deleteUserTrack: { url: '/education/user-tracks/{uuid}', method: HTTP_METHODS.DELETE },
89
+ refreshUserTrack: { url: '/education/user-tracks/{uuid}/refresh', method: HTTP_METHODS.POST },
90
+
91
+ // 12. UserTrackRegistrationController
92
+ listRegistrations: { url: '/education/registrations', method: HTTP_METHODS.GET },
93
+ createRegistration: { url: '/education/registrations', method: HTTP_METHODS.POST },
94
+ viewRegistration: { url: '/education/registrations/{uuid}', method: HTTP_METHODS.GET },
95
+ updateRegistration: { url: '/education/registrations/{uuid}', method: HTTP_METHODS.PUT },
96
+ deleteRegistration: { url: '/education/registrations/{uuid}', method: HTTP_METHODS.DELETE },
97
+ listTrackRegistrations: { url: '/education/tracks/{track_id}/registrations', method: HTTP_METHODS.GET },
98
+
99
+ // 13. EducationViewController
100
+ listViews: { url: '/education/views', method: HTTP_METHODS.GET },
101
+ logView: { url: '/education/views', method: HTTP_METHODS.POST },
102
+ viewLogDetails: { url: '/education/views/{uuid}', method: HTTP_METHODS.GET },
103
+ reportConversion: { url: '/education/reports/conversion-impact', method: HTTP_METHODS.GET },
104
+ reportAdoption: { url: '/education/reports/adoption-metrics', method: HTTP_METHODS.GET },
105
+ reportRetention: { url: '/education/reports/retention-impact', method: HTTP_METHODS.GET },
106
+
107
+ // 14. EducationModuleDataController
108
+ listModuleData: { url: '/education/module-data', method: HTTP_METHODS.GET },
109
+ saveModuleData: { url: '/education/module-data', method: HTTP_METHODS.POST },
110
+ viewModuleData: { url: '/education/module-data/{uuid}', method: HTTP_METHODS.GET },
111
+ updateModuleData: { url: '/education/module-data/{uuid}', method: HTTP_METHODS.PUT },
112
+ deleteModuleData: { url: '/education/module-data/{uuid}', method: HTTP_METHODS.DELETE },
113
+
114
+ // 15. EducationCertificateTemplateController
115
+ listTemplates: { url: '/education/certificate-templates', method: HTTP_METHODS.GET },
116
+ createTemplate: { url: '/education/certificate-templates', method: HTTP_METHODS.POST },
117
+ viewTemplate: { url: '/education/certificate-templates/{uuid}', method: HTTP_METHODS.GET },
118
+ updateTemplate: { url: '/education/certificate-templates/{uuid}', method: HTTP_METHODS.PUT },
119
+ deleteTemplate: { url: '/education/certificate-templates/{uuid}', method: HTTP_METHODS.DELETE },
120
+ uploadTemplateSignature: { url: '/education/certificate-templates/{uuid}/uploadSignature', method: HTTP_METHODS.POST },
121
+ uploadTemplateBackground: { url: '/education/certificate-templates/{uuid}/uploadBackground', method: HTTP_METHODS.POST },
122
+
123
+ // 16. CertificateController
124
+ listAllCertificates: { url: '/certificates', method: HTTP_METHODS.GET },
125
+ myCertificates: { url: '/certificates/mine', method: HTTP_METHODS.GET },
126
+ viewCertificate: { url: '/certificates/{uuid}', method: HTTP_METHODS.GET },
127
+ downloadCertificate: { url: '/certificates/{uuid}/download', method: HTTP_METHODS.GET },
128
+ issueCertificate: { url: '/certificates', method: HTTP_METHODS.POST },
129
+ revokeCertificate: { url: '/certificates/{uuid}', method: HTTP_METHODS.DELETE },
130
+ listUserCertificates: { url: '/users/{user_id}/certificates', method: HTTP_METHODS.GET },
131
+
132
+ // 17. BadgeController
133
+ listAllBadges: { url: '/badges', method: HTTP_METHODS.GET },
134
+ myBadges: { url: '/badges/mine', method: HTTP_METHODS.GET },
135
+ viewBadge: { url: '/badges/{uuid}', method: HTTP_METHODS.GET },
136
+ awardBadge: { url: '/badges', method: HTTP_METHODS.POST },
137
+ updateBadge: { url: '/badges/{uuid}', method: HTTP_METHODS.PUT },
138
+ revokeBadge: { url: '/badges/{uuid}', method: HTTP_METHODS.DELETE },
139
+ listUserBadges: { url: '/users/{user_id}/badges', method: HTTP_METHODS.GET },
140
+ };
141
+ }
142
+
143
+ export default EducationRoute;
@@ -2,12 +2,14 @@ import Route from "./interface";
2
2
  import HTTP_METHODS from "../constants/HttpMethods";
3
3
 
4
4
  class NewslettersRoutes {
5
-
6
- public static routes: { [key: string]: Route } = {
7
- downloadMarketingChecklist: { url: '/newsletters/downloadMarketingChecklist', method: HTTP_METHODS.POST },
8
- joinCourseWaitlist: { url: '/newsletters/joinCourseWaitlist', method: HTTP_METHODS.POST },
9
- };
10
5
 
11
- }
6
+ public static routes: { [key: string]: Route } = {
7
+ downloadMarketingChecklist: { url: '/newsletters/downloadMarketingChecklist', method: HTTP_METHODS.POST },
8
+ joinCourseWaitlist: { url: '/newsletters/joinCourseWaitlist', method: HTTP_METHODS.POST },
9
+ joinRaffleWaitlist: { url: '/newsletters/joinRaffleWaitlist', method: HTTP_METHODS.POST },
10
+ joinDiscordMarketplaceWaitlist: { url: '/newsletters/joinDiscordMarketplaceWaitlist', method: HTTP_METHODS.POST },
11
+ };
12
12
 
13
- export default NewslettersRoutes;
13
+ }
14
+
15
+ export default NewslettersRoutes;