@warriorteam/redai-zalo-sdk 1.1.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 (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +448 -0
  3. package/dist/clients/base-client.d.ts +67 -0
  4. package/dist/clients/base-client.d.ts.map +1 -0
  5. package/dist/clients/base-client.js +297 -0
  6. package/dist/clients/base-client.js.map +1 -0
  7. package/dist/clients/zalo-client.d.ts +131 -0
  8. package/dist/clients/zalo-client.d.ts.map +1 -0
  9. package/dist/clients/zalo-client.js +215 -0
  10. package/dist/clients/zalo-client.js.map +1 -0
  11. package/dist/index.d.ts +40 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +82 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/services/article.service.d.ts +144 -0
  16. package/dist/services/article.service.d.ts.map +1 -0
  17. package/dist/services/article.service.js +518 -0
  18. package/dist/services/article.service.js.map +1 -0
  19. package/dist/services/auth.service.d.ts +55 -0
  20. package/dist/services/auth.service.d.ts.map +1 -0
  21. package/dist/services/auth.service.js +269 -0
  22. package/dist/services/auth.service.js.map +1 -0
  23. package/dist/services/consultation.service.d.ts +73 -0
  24. package/dist/services/consultation.service.d.ts.map +1 -0
  25. package/dist/services/consultation.service.js +208 -0
  26. package/dist/services/consultation.service.js.map +1 -0
  27. package/dist/services/general-message.service.d.ts +85 -0
  28. package/dist/services/general-message.service.d.ts.map +1 -0
  29. package/dist/services/general-message.service.js +248 -0
  30. package/dist/services/general-message.service.js.map +1 -0
  31. package/dist/services/group-management.service.d.ts +220 -0
  32. package/dist/services/group-management.service.d.ts.map +1 -0
  33. package/dist/services/group-management.service.js +562 -0
  34. package/dist/services/group-management.service.js.map +1 -0
  35. package/dist/services/group-message.service.d.ts +102 -0
  36. package/dist/services/group-message.service.d.ts.map +1 -0
  37. package/dist/services/group-message.service.js +233 -0
  38. package/dist/services/group-message.service.js.map +1 -0
  39. package/dist/services/message-management.service.d.ts +135 -0
  40. package/dist/services/message-management.service.d.ts.map +1 -0
  41. package/dist/services/message-management.service.js +237 -0
  42. package/dist/services/message-management.service.js.map +1 -0
  43. package/dist/services/oa.service.d.ts +67 -0
  44. package/dist/services/oa.service.d.ts.map +1 -0
  45. package/dist/services/oa.service.js +223 -0
  46. package/dist/services/oa.service.js.map +1 -0
  47. package/dist/services/promotion.service.d.ts +114 -0
  48. package/dist/services/promotion.service.d.ts.map +1 -0
  49. package/dist/services/promotion.service.js +247 -0
  50. package/dist/services/promotion.service.js.map +1 -0
  51. package/dist/services/tag.service.d.ts +144 -0
  52. package/dist/services/tag.service.d.ts.map +1 -0
  53. package/dist/services/tag.service.js +184 -0
  54. package/dist/services/tag.service.js.map +1 -0
  55. package/dist/services/transaction.service.d.ts +110 -0
  56. package/dist/services/transaction.service.d.ts.map +1 -0
  57. package/dist/services/transaction.service.js +231 -0
  58. package/dist/services/transaction.service.js.map +1 -0
  59. package/dist/services/user-management.service.d.ts +117 -0
  60. package/dist/services/user-management.service.d.ts.map +1 -0
  61. package/dist/services/user-management.service.js +239 -0
  62. package/dist/services/user-management.service.js.map +1 -0
  63. package/dist/services/user.service.d.ts +84 -0
  64. package/dist/services/user.service.d.ts.map +1 -0
  65. package/dist/services/user.service.js +323 -0
  66. package/dist/services/user.service.js.map +1 -0
  67. package/dist/services/video-upload.service.d.ts +83 -0
  68. package/dist/services/video-upload.service.d.ts.map +1 -0
  69. package/dist/services/video-upload.service.js +267 -0
  70. package/dist/services/video-upload.service.js.map +1 -0
  71. package/dist/services/zns.service.d.ts +116 -0
  72. package/dist/services/zns.service.d.ts.map +1 -0
  73. package/dist/services/zns.service.js +234 -0
  74. package/dist/services/zns.service.js.map +1 -0
  75. package/dist/types/article.d.ts +352 -0
  76. package/dist/types/article.d.ts.map +1 -0
  77. package/dist/types/article.js +70 -0
  78. package/dist/types/article.js.map +1 -0
  79. package/dist/types/auth.d.ts +233 -0
  80. package/dist/types/auth.d.ts.map +1 -0
  81. package/dist/types/auth.js +39 -0
  82. package/dist/types/auth.js.map +1 -0
  83. package/dist/types/common.d.ts +237 -0
  84. package/dist/types/common.d.ts.map +1 -0
  85. package/dist/types/common.js +42 -0
  86. package/dist/types/common.js.map +1 -0
  87. package/dist/types/group.d.ts +523 -0
  88. package/dist/types/group.d.ts.map +1 -0
  89. package/dist/types/group.js +6 -0
  90. package/dist/types/group.js.map +1 -0
  91. package/dist/types/message.d.ts +333 -0
  92. package/dist/types/message.d.ts.map +1 -0
  93. package/dist/types/message.js +17 -0
  94. package/dist/types/message.js.map +1 -0
  95. package/dist/types/oa.d.ts +285 -0
  96. package/dist/types/oa.d.ts.map +1 -0
  97. package/dist/types/oa.js +25 -0
  98. package/dist/types/oa.js.map +1 -0
  99. package/dist/types/social.d.ts +427 -0
  100. package/dist/types/social.d.ts.map +1 -0
  101. package/dist/types/social.js +6 -0
  102. package/dist/types/social.js.map +1 -0
  103. package/dist/types/user-management.d.ts +280 -0
  104. package/dist/types/user-management.d.ts.map +1 -0
  105. package/dist/types/user-management.js +6 -0
  106. package/dist/types/user-management.js.map +1 -0
  107. package/dist/types/user.d.ts +365 -0
  108. package/dist/types/user.d.ts.map +1 -0
  109. package/dist/types/user.js +17 -0
  110. package/dist/types/user.js.map +1 -0
  111. package/dist/types/webhook.d.ts +1972 -0
  112. package/dist/types/webhook.d.ts.map +1 -0
  113. package/dist/types/webhook.js +419 -0
  114. package/dist/types/webhook.js.map +1 -0
  115. package/dist/types/zns.d.ts +277 -0
  116. package/dist/types/zns.d.ts.map +1 -0
  117. package/dist/types/zns.js +6 -0
  118. package/dist/types/zns.js.map +1 -0
  119. package/dist/zalo-sdk.d.ts +228 -0
  120. package/dist/zalo-sdk.d.ts.map +1 -0
  121. package/dist/zalo-sdk.js +307 -0
  122. package/dist/zalo-sdk.js.map +1 -0
  123. package/package.json +59 -0
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZNSService = void 0;
4
+ /**
5
+ * Service for Zalo Notification Service (ZNS)
6
+ *
7
+ * Requirements for using ZNS API:
8
+ * - Official Account must be approved and have ZNS sending permission
9
+ * - Valid Official Account access token
10
+ * - ZNS template must be approved before use
11
+ * - Recipient phone number must be in correct format and valid
12
+ * - Template data must match defined parameters
13
+ * - Comply with message quantity limits according to service package
14
+ *
15
+ * Reference: https://developers.zalo.me/docs/zalo-notification-service/
16
+ */
17
+ class ZNSService {
18
+ constructor(client) {
19
+ this.client = client;
20
+ this.znsApiUrl = "https://business.openapi.zalo.me/message";
21
+ this.templateApiUrl = "https://business.openapi.zalo.me/template";
22
+ }
23
+ /**
24
+ * Send ZNS message
25
+ * @param accessToken OA access token
26
+ * @param message ZNS message data
27
+ * @returns Send result
28
+ */
29
+ async sendMessage(accessToken, message) {
30
+ try {
31
+ const response = await this.client.apiPost(`${this.znsApiUrl}/template`, accessToken, message);
32
+ return response;
33
+ }
34
+ catch (error) {
35
+ throw this.handleZNSError(error, "Failed to send ZNS message");
36
+ }
37
+ }
38
+ /**
39
+ * Send ZNS message with phone hash
40
+ * @param accessToken OA access token
41
+ * @param message ZNS message with hashed phone
42
+ * @returns Send result
43
+ */
44
+ async sendHashPhoneMessage(accessToken, message) {
45
+ try {
46
+ const response = await this.client.apiPost(`${this.znsApiUrl}/template/hashphone`, accessToken, message);
47
+ return response;
48
+ }
49
+ catch (error) {
50
+ throw this.handleZNSError(error, "Failed to send ZNS hash phone message");
51
+ }
52
+ }
53
+ /**
54
+ * Send ZNS message in development mode
55
+ * @param accessToken OA access token
56
+ * @param message ZNS dev mode message
57
+ * @returns Send result
58
+ */
59
+ async sendDevModeMessage(accessToken, message) {
60
+ try {
61
+ const response = await this.client.apiPost(`${this.znsApiUrl}/template/dev`, accessToken, message);
62
+ return response;
63
+ }
64
+ catch (error) {
65
+ throw this.handleZNSError(error, "Failed to send ZNS dev mode message");
66
+ }
67
+ }
68
+ /**
69
+ * Send ZNS message with RSA encryption
70
+ * @param accessToken OA access token
71
+ * @param message ZNS RSA message
72
+ * @returns Send result
73
+ */
74
+ async sendRsaMessage(accessToken, message) {
75
+ try {
76
+ const response = await this.client.apiPost(`${this.znsApiUrl}/template/rsa`, accessToken, message);
77
+ return response;
78
+ }
79
+ catch (error) {
80
+ throw this.handleZNSError(error, "Failed to send ZNS RSA message");
81
+ }
82
+ }
83
+ /**
84
+ * Send ZNS journey message
85
+ * @param accessToken OA access token
86
+ * @param message ZNS journey message
87
+ * @returns Send result
88
+ */
89
+ async sendJourneyMessage(accessToken, message) {
90
+ try {
91
+ const response = await this.client.apiPost(`${this.znsApiUrl}/template/journey`, accessToken, message);
92
+ return response;
93
+ }
94
+ catch (error) {
95
+ throw this.handleZNSError(error, "Failed to send ZNS journey message");
96
+ }
97
+ }
98
+ /**
99
+ * Get ZNS message status
100
+ * @param accessToken OA access token
101
+ * @param messageId Message ID
102
+ * @returns Message status info
103
+ */
104
+ async getMessageStatus(accessToken, messageId) {
105
+ try {
106
+ const response = await this.client.apiGet(`${this.znsApiUrl}/status`, accessToken, {
107
+ message_id: messageId,
108
+ });
109
+ return response;
110
+ }
111
+ catch (error) {
112
+ throw this.handleZNSError(error, "Failed to get ZNS message status");
113
+ }
114
+ }
115
+ /**
116
+ * Get ZNS quota information
117
+ * @param accessToken OA access token
118
+ * @returns Quota information
119
+ */
120
+ async getQuotaInfo(accessToken) {
121
+ try {
122
+ const response = await this.client.apiGet(`${this.znsApiUrl}/quota`, accessToken);
123
+ return response;
124
+ }
125
+ catch (error) {
126
+ throw this.handleZNSError(error, "Failed to get ZNS quota info");
127
+ }
128
+ }
129
+ /**
130
+ * Get ZNS template list
131
+ * @param accessToken OA access token
132
+ * @param offset Offset for pagination
133
+ * @param limit Limit for pagination
134
+ * @returns Template list
135
+ */
136
+ async getTemplateList(accessToken, offset = 0, limit = 10) {
137
+ try {
138
+ const response = await this.client.apiGet(`${this.templateApiUrl}/all`, accessToken, {
139
+ offset,
140
+ limit,
141
+ });
142
+ return response;
143
+ }
144
+ catch (error) {
145
+ throw this.handleZNSError(error, "Failed to get ZNS template list");
146
+ }
147
+ }
148
+ /**
149
+ * Get ZNS template details
150
+ * @param accessToken OA access token
151
+ * @param templateId Template ID
152
+ * @returns Template details
153
+ */
154
+ async getTemplateDetails(accessToken, templateId) {
155
+ try {
156
+ const response = await this.client.apiGet(`${this.templateApiUrl}/info`, accessToken, {
157
+ template_id: templateId,
158
+ });
159
+ return response;
160
+ }
161
+ catch (error) {
162
+ throw this.handleZNSError(error, "Failed to get ZNS template details");
163
+ }
164
+ }
165
+ /**
166
+ * Create ZNS template
167
+ * @param accessToken OA access token
168
+ * @param templateData Template creation data
169
+ * @returns Created template
170
+ */
171
+ async createTemplate(accessToken, templateData) {
172
+ try {
173
+ const response = await this.client.apiPost(`${this.templateApiUrl}/create`, accessToken, templateData);
174
+ return response;
175
+ }
176
+ catch (error) {
177
+ throw this.handleZNSError(error, "Failed to create ZNS template");
178
+ }
179
+ }
180
+ /**
181
+ * Update ZNS template
182
+ * @param accessToken OA access token
183
+ * @param templateData Template update data
184
+ * @returns Updated template
185
+ */
186
+ async updateTemplate(accessToken, templateData) {
187
+ try {
188
+ const response = await this.client.apiPost(`${this.templateApiUrl}/update`, accessToken, templateData);
189
+ return response;
190
+ }
191
+ catch (error) {
192
+ throw this.handleZNSError(error, "Failed to update ZNS template");
193
+ }
194
+ }
195
+ /**
196
+ * Delete ZNS template
197
+ * @param accessToken OA access token
198
+ * @param templateId Template ID
199
+ * @returns Deletion result
200
+ */
201
+ async deleteTemplate(accessToken, templateId) {
202
+ try {
203
+ const response = await this.client.apiPost(`${this.templateApiUrl}/delete`, accessToken, { template_id: templateId });
204
+ return response;
205
+ }
206
+ catch (error) {
207
+ throw this.handleZNSError(error, "Failed to delete ZNS template");
208
+ }
209
+ }
210
+ /**
211
+ * Upload image for ZNS template
212
+ * @param accessToken OA access token
213
+ * @param imageFile Image file
214
+ * @returns Upload result
215
+ */
216
+ async uploadImage(accessToken, imageFile, filename = "image.jpg") {
217
+ try {
218
+ const response = await this.client.apiUploadFile(`${this.templateApiUrl}/upload_image`, accessToken, imageFile, filename);
219
+ return response;
220
+ }
221
+ catch (error) {
222
+ throw this.handleZNSError(error, "Failed to upload ZNS image");
223
+ }
224
+ }
225
+ handleZNSError(error, defaultMessage) {
226
+ if (error.response?.data) {
227
+ const errorData = error.response.data;
228
+ return new Error(`${defaultMessage}: ${errorData.message || errorData.error || "Unknown error"}`);
229
+ }
230
+ return new Error(`${defaultMessage}: ${error.message || "Unknown error"}`);
231
+ }
232
+ }
233
+ exports.ZNSService = ZNSService;
234
+ //# sourceMappingURL=zns.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zns.service.js","sourceRoot":"","sources":["../../src/services/zns.service.ts"],"names":[],"mappings":";;;AAiBA;;;;;;;;;;;;GAYG;AACH,MAAa,UAAU;IAIrB,YAA6B,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;QAH9B,cAAS,GAAG,0CAA0C,CAAC;QACvD,mBAAc,GAAG,2CAA2C,CAAC;IAE5B,CAAC;IAEnD;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CACf,WAAmB,EACnB,OAAmB;QAEnB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACxC,GAAG,IAAI,CAAC,SAAS,WAAW,EAC5B,WAAW,EACX,OAAO,CACR,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,oBAAoB,CACxB,WAAmB,EACnB,OAA4B;QAE5B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACxC,GAAG,IAAI,CAAC,SAAS,qBAAqB,EACtC,WAAW,EACX,OAAO,CACR,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,uCAAuC,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CACtB,WAAmB,EACnB,OAA0B;QAE1B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACxC,GAAG,IAAI,CAAC,SAAS,eAAe,EAChC,WAAW,EACX,OAAO,CACR,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,qCAAqC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAClB,WAAmB,EACnB,OAAsB;QAEtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACxC,GAAG,IAAI,CAAC,SAAS,eAAe,EAChC,WAAW,EACX,OAAO,CACR,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CACtB,WAAmB,EACnB,OAA0B;QAE1B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACxC,GAAG,IAAI,CAAC,SAAS,mBAAmB,EACpC,WAAW,EACX,OAAO,CACR,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,gBAAgB,CACpB,WAAmB,EACnB,SAAiB;QAEjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CACvC,GAAG,IAAI,CAAC,SAAS,SAAS,EAC1B,WAAW,EACX;gBACE,UAAU,EAAE,SAAS;aACtB,CACF,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,WAAmB;QACpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CACvC,GAAG,IAAI,CAAC,SAAS,QAAQ,EACzB,WAAW,CACZ,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,eAAe,CACnB,WAAmB,EACnB,SAAiB,CAAC,EAClB,QAAgB,EAAE;QAElB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CACvC,GAAG,IAAI,CAAC,cAAc,MAAM,EAC5B,WAAW,EACX;gBACE,MAAM;gBACN,KAAK;aACN,CACF,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CACtB,WAAmB,EACnB,UAAkB;QAElB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CACvC,GAAG,IAAI,CAAC,cAAc,OAAO,EAC7B,WAAW,EACX;gBACE,WAAW,EAAE,UAAU;aACxB,CACF,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAClB,WAAmB,EACnB,YAAsC;QAEtC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACxC,GAAG,IAAI,CAAC,cAAc,SAAS,EAC/B,WAAW,EACX,YAAY,CACb,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAClB,WAAmB,EACnB,YAAsC;QAEtC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACxC,GAAG,IAAI,CAAC,cAAc,SAAS,EAC/B,WAAW,EACX,YAAY,CACb,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAClB,WAAmB,EACnB,UAAkB;QAElB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACxC,GAAG,IAAI,CAAC,cAAc,SAAS,EAC/B,WAAW,EACX,EAAE,WAAW,EAAE,UAAU,EAAE,CAC5B,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CACf,WAAmB,EACnB,SAAyC,EACzC,WAAmB,WAAW;QAE9B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAC9C,GAAG,IAAI,CAAC,cAAc,eAAe,EACrC,WAAW,EACX,SAAS,EACT,QAAQ,CACT,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,KAAU,EAAE,cAAsB;QACvD,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtC,OAAO,IAAI,KAAK,CACd,GAAG,cAAc,KACf,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK,IAAI,eAC1C,EAAE,CACH,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,KAAK,CAAC,GAAG,cAAc,KAAK,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;IAC7E,CAAC;CACF;AAlUD,gCAkUC"}
@@ -0,0 +1,352 @@
1
+ /**
2
+ * Types for Zalo Official Account Article Management
3
+ * Based on Zalo Article API v2.0
4
+ */
5
+ import { ZaloApiResponse } from "./common";
6
+ /**
7
+ * Article cover configuration
8
+ */
9
+ export interface ArticleCover {
10
+ /** Cover type: photo or video */
11
+ cover_type: 'photo' | 'video';
12
+ /** Photo URL (required when cover_type is 'photo') */
13
+ photo_url?: string;
14
+ /** Video ID (required when cover_type is 'video') */
15
+ video_id?: string;
16
+ /** Cover view orientation for video */
17
+ cover_view?: 'horizontal' | 'vertical' | 'square';
18
+ /** Cover status */
19
+ status: 'show' | 'hide';
20
+ }
21
+ /**
22
+ * Article body content item
23
+ */
24
+ export interface ArticleBodyItem {
25
+ /** Content type */
26
+ type: 'text' | 'image' | 'video' | 'product';
27
+ /** Text content (for type: text) */
28
+ content?: string;
29
+ /** Image URL (for type: image) */
30
+ url?: string;
31
+ /** Video ID (for type: video) */
32
+ video_id?: string;
33
+ /** Product ID (for type: product) */
34
+ id?: string;
35
+ /** Additional properties for video */
36
+ width?: number;
37
+ height?: number;
38
+ thumbnail?: string;
39
+ }
40
+ /**
41
+ * Normal article creation request
42
+ */
43
+ export interface ArticleNormalRequest {
44
+ type: 'normal';
45
+ title: string;
46
+ author: string;
47
+ cover: ArticleCover;
48
+ description: string;
49
+ body: ArticleBodyItem[];
50
+ related_medias?: string[];
51
+ tracking_link?: string;
52
+ status?: 'show' | 'hide';
53
+ comment?: 'show' | 'hide';
54
+ }
55
+ /**
56
+ * Video article creation request
57
+ */
58
+ export interface ArticleVideoRequest {
59
+ type: 'video';
60
+ title: string;
61
+ description: string;
62
+ video_id: string;
63
+ avatar: string;
64
+ status?: 'show' | 'hide';
65
+ comment?: 'show' | 'hide';
66
+ }
67
+ /**
68
+ * Article creation request (union type)
69
+ */
70
+ export type ArticleRequest = ArticleNormalRequest | ArticleVideoRequest;
71
+ /**
72
+ * Article creation response
73
+ */
74
+ export interface ArticleResponse {
75
+ /** Token for tracking article creation progress */
76
+ token: string;
77
+ }
78
+ /**
79
+ * Article process check response
80
+ */
81
+ export interface ArticleProcessResponse {
82
+ /** Article ID if creation is successful */
83
+ article_id?: string;
84
+ /** Process status */
85
+ status: 'processing' | 'success' | 'failed';
86
+ /** Error message if failed */
87
+ error_message?: string;
88
+ /** Creation timestamp */
89
+ created_time: number;
90
+ /** Last update timestamp */
91
+ updated_time: number;
92
+ }
93
+ /**
94
+ * Article verification response
95
+ */
96
+ export interface ArticleVerifyResponse {
97
+ /** Article ID */
98
+ id: string;
99
+ }
100
+ /**
101
+ * Article cite information
102
+ */
103
+ export interface ArticleCite {
104
+ url: string;
105
+ description: string;
106
+ }
107
+ /**
108
+ * Article detail (normal type)
109
+ */
110
+ export interface ArticleDetailNormal {
111
+ id: string;
112
+ type: 'normal';
113
+ title: string;
114
+ author: string;
115
+ cover: ArticleCover;
116
+ description: string;
117
+ body: ArticleBodyItem[];
118
+ related_medias: string[];
119
+ tracking_link: string;
120
+ status: 'show' | 'hide';
121
+ comment: 'show' | 'hide';
122
+ cite?: ArticleCite;
123
+ link_view: string;
124
+ total_view: number;
125
+ total_share: number;
126
+ total_like: number;
127
+ total_comment: number;
128
+ }
129
+ /**
130
+ * Article detail (video type)
131
+ */
132
+ export interface ArticleDetailVideo {
133
+ id: string;
134
+ type: 'video';
135
+ title: string;
136
+ description: string;
137
+ video_id: string;
138
+ avatar: string;
139
+ status: 'show' | 'hide';
140
+ comment: 'show' | 'hide';
141
+ link_view: string;
142
+ total_view: number;
143
+ total_share: number;
144
+ total_like: number;
145
+ total_comment: number;
146
+ }
147
+ /**
148
+ * Article detail (union type)
149
+ */
150
+ export type ArticleDetail = ArticleDetailNormal | ArticleDetailVideo;
151
+ /**
152
+ * Article list request
153
+ */
154
+ export interface ArticleListRequest {
155
+ /** Starting position */
156
+ offset: number;
157
+ /** Number of articles to return (max 100) */
158
+ limit: number;
159
+ /** Article type filter */
160
+ type: 'normal' | 'video';
161
+ }
162
+ /**
163
+ * Article list item
164
+ */
165
+ export interface ArticleListItem {
166
+ id: string;
167
+ type: 'normal' | 'video';
168
+ title: string;
169
+ description: string;
170
+ status: 'show' | 'hide';
171
+ comment: 'show' | 'hide';
172
+ link_view: string;
173
+ total_view: number;
174
+ total_share: number;
175
+ total_like: number;
176
+ total_comment: number;
177
+ create_time: number;
178
+ update_time: number;
179
+ author?: string;
180
+ cover?: ArticleCover;
181
+ body?: ArticleBodyItem[];
182
+ related_medias?: string[];
183
+ tracking_link?: string;
184
+ cite?: ArticleCite;
185
+ video_id?: string;
186
+ avatar?: string;
187
+ }
188
+ /**
189
+ * Article list response data
190
+ */
191
+ export interface ArticleListData {
192
+ offset: number;
193
+ count: number;
194
+ total: number;
195
+ articles: ArticleListItem[];
196
+ }
197
+ /**
198
+ * Article list response
199
+ */
200
+ export type ArticleListResponse = ZaloApiResponse<ArticleListData>;
201
+ /**
202
+ * Normal article update request
203
+ */
204
+ export interface ArticleUpdateNormalRequest {
205
+ id: string;
206
+ type: 'normal';
207
+ title: string;
208
+ author: string;
209
+ cover: ArticleCover;
210
+ description: string;
211
+ body: ArticleBodyItem[];
212
+ related_medias?: string[];
213
+ tracking_link?: string;
214
+ status?: 'show' | 'hide';
215
+ comment?: 'show' | 'hide';
216
+ }
217
+ /**
218
+ * Video article update request
219
+ */
220
+ export interface ArticleUpdateVideoRequest {
221
+ id: string;
222
+ type: 'video';
223
+ title: string;
224
+ description: string;
225
+ video_id: string;
226
+ avatar: string;
227
+ status?: 'show' | 'hide';
228
+ comment?: 'show' | 'hide';
229
+ }
230
+ /**
231
+ * Article update request (union type)
232
+ */
233
+ export type ArticleUpdateRequest = ArticleUpdateNormalRequest | ArticleUpdateVideoRequest;
234
+ /**
235
+ * Article update response
236
+ */
237
+ export interface ArticleUpdateResponse {
238
+ /** Token for tracking article update progress */
239
+ token: string;
240
+ }
241
+ /**
242
+ * Article removal request
243
+ */
244
+ export interface ArticleRemoveRequest {
245
+ /** Article ID to remove */
246
+ id: string;
247
+ }
248
+ /**
249
+ * Article removal response
250
+ */
251
+ export interface ArticleRemoveResponse {
252
+ /** Success message */
253
+ message: string;
254
+ }
255
+ /**
256
+ * Video upload response
257
+ */
258
+ export interface VideoUploadResponse {
259
+ /** Token for tracking video upload progress */
260
+ token: string;
261
+ }
262
+ /**
263
+ * Video status response
264
+ */
265
+ export interface VideoStatusResponse {
266
+ /** Video ID (available when processing is complete) */
267
+ video_id?: string;
268
+ /** Video name */
269
+ video_name?: string;
270
+ /** Video size in bytes */
271
+ video_size?: number;
272
+ /** Processing status */
273
+ status: number;
274
+ /** Status message */
275
+ status_message: string;
276
+ /** Conversion progress percentage */
277
+ convert_percent: number;
278
+ /** Conversion error code */
279
+ convert_error_code: number;
280
+ }
281
+ /**
282
+ * Article validation error
283
+ */
284
+ export interface ArticleValidationError {
285
+ field: string;
286
+ message: string;
287
+ code: string;
288
+ }
289
+ /**
290
+ * Video file validation constraints
291
+ */
292
+ export interface VideoFileConstraints {
293
+ /** Maximum file size in bytes (50MB) */
294
+ maxSize: number;
295
+ /** Allowed file extensions */
296
+ allowedExtensions: string[];
297
+ /** Allowed MIME types */
298
+ allowedMimeTypes: string[];
299
+ }
300
+ /**
301
+ * Article validation constants
302
+ */
303
+ export declare const ARTICLE_CONSTRAINTS: {
304
+ readonly TITLE_MAX_LENGTH: 150;
305
+ readonly AUTHOR_MAX_LENGTH: 50;
306
+ readonly DESCRIPTION_MAX_LENGTH: 300;
307
+ readonly IMAGE_MAX_SIZE: number;
308
+ readonly VIDEO_MAX_SIZE: number;
309
+ readonly LIST_MAX_LIMIT: 100;
310
+ };
311
+ /**
312
+ * Video upload constraints
313
+ */
314
+ export declare const VIDEO_CONSTRAINTS: VideoFileConstraints;
315
+ /**
316
+ * Article status enum
317
+ */
318
+ export declare enum ArticleStatus {
319
+ SHOW = "show",
320
+ HIDE = "hide"
321
+ }
322
+ /**
323
+ * Comment status enum
324
+ */
325
+ export declare enum CommentStatus {
326
+ SHOW = "show",
327
+ HIDE = "hide"
328
+ }
329
+ /**
330
+ * Article type enum
331
+ */
332
+ export declare enum ArticleType {
333
+ NORMAL = "normal",
334
+ VIDEO = "video"
335
+ }
336
+ /**
337
+ * Cover type enum
338
+ */
339
+ export declare enum CoverType {
340
+ PHOTO = "photo",
341
+ VIDEO = "video"
342
+ }
343
+ /**
344
+ * Body item type enum
345
+ */
346
+ export declare enum BodyItemType {
347
+ TEXT = "text",
348
+ IMAGE = "image",
349
+ VIDEO = "video",
350
+ PRODUCT = "product"
351
+ }
352
+ //# sourceMappingURL=article.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"article.d.ts","sourceRoot":"","sources":["../../src/types/article.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ /**
3
+ * Types for Zalo Official Account Article Management
4
+ * Based on Zalo Article API v2.0
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.BodyItemType = exports.CoverType = exports.ArticleType = exports.CommentStatus = exports.ArticleStatus = exports.VIDEO_CONSTRAINTS = exports.ARTICLE_CONSTRAINTS = void 0;
8
+ // ==================== CONSTANTS ====================
9
+ /**
10
+ * Article validation constants
11
+ */
12
+ exports.ARTICLE_CONSTRAINTS = {
13
+ TITLE_MAX_LENGTH: 150,
14
+ AUTHOR_MAX_LENGTH: 50,
15
+ DESCRIPTION_MAX_LENGTH: 300,
16
+ IMAGE_MAX_SIZE: 1024 * 1024, // 1MB
17
+ VIDEO_MAX_SIZE: 50 * 1024 * 1024, // 50MB
18
+ LIST_MAX_LIMIT: 100,
19
+ };
20
+ /**
21
+ * Video upload constraints
22
+ */
23
+ exports.VIDEO_CONSTRAINTS = {
24
+ maxSize: 50 * 1024 * 1024, // 50MB
25
+ allowedExtensions: ['.mp4', '.avi'],
26
+ allowedMimeTypes: ['video/mp4', 'video/avi', 'video/x-msvideo'],
27
+ };
28
+ /**
29
+ * Article status enum
30
+ */
31
+ var ArticleStatus;
32
+ (function (ArticleStatus) {
33
+ ArticleStatus["SHOW"] = "show";
34
+ ArticleStatus["HIDE"] = "hide";
35
+ })(ArticleStatus || (exports.ArticleStatus = ArticleStatus = {}));
36
+ /**
37
+ * Comment status enum
38
+ */
39
+ var CommentStatus;
40
+ (function (CommentStatus) {
41
+ CommentStatus["SHOW"] = "show";
42
+ CommentStatus["HIDE"] = "hide";
43
+ })(CommentStatus || (exports.CommentStatus = CommentStatus = {}));
44
+ /**
45
+ * Article type enum
46
+ */
47
+ var ArticleType;
48
+ (function (ArticleType) {
49
+ ArticleType["NORMAL"] = "normal";
50
+ ArticleType["VIDEO"] = "video";
51
+ })(ArticleType || (exports.ArticleType = ArticleType = {}));
52
+ /**
53
+ * Cover type enum
54
+ */
55
+ var CoverType;
56
+ (function (CoverType) {
57
+ CoverType["PHOTO"] = "photo";
58
+ CoverType["VIDEO"] = "video";
59
+ })(CoverType || (exports.CoverType = CoverType = {}));
60
+ /**
61
+ * Body item type enum
62
+ */
63
+ var BodyItemType;
64
+ (function (BodyItemType) {
65
+ BodyItemType["TEXT"] = "text";
66
+ BodyItemType["IMAGE"] = "image";
67
+ BodyItemType["VIDEO"] = "video";
68
+ BodyItemType["PRODUCT"] = "product";
69
+ })(BodyItemType || (exports.BodyItemType = BodyItemType = {}));
70
+ //# sourceMappingURL=article.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"article.js","sourceRoot":"","sources":["../../src/types/article.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA4VH,sDAAsD;AAEtD;;GAEG;AACU,QAAA,mBAAmB,GAAG;IACjC,gBAAgB,EAAE,GAAG;IACrB,iBAAiB,EAAE,EAAE;IACrB,sBAAsB,EAAE,GAAG;IAC3B,cAAc,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM;IACnC,cAAc,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO;IACzC,cAAc,EAAE,GAAG;CACX,CAAC;AAEX;;GAEG;AACU,QAAA,iBAAiB,GAAyB;IACrD,OAAO,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO;IAClC,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACnC,gBAAgB,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,iBAAiB,CAAC;CACvD,CAAC;AAEX;;GAEG;AACH,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,8BAAa,CAAA;AACf,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB;AAED;;GAEG;AACH,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,8BAAa,CAAA;AACf,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB;AAED;;GAEG;AACH,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,8BAAe,CAAA;AACjB,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAED;;GAEG;AACH,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,4BAAe,CAAA;AACjB,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAED;;GAEG;AACH,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,+BAAe,CAAA;IACf,+BAAe,CAAA;IACf,mCAAmB,CAAA;AACrB,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB"}