@warriorteam/redai-zalo-sdk 1.3.0 → 1.4.1

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 (76) hide show
  1. package/README.md +565 -550
  2. package/dist/index.d.ts +0 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +1 -5
  5. package/dist/index.js.map +1 -1
  6. package/dist/services/article.service.d.ts +1 -1
  7. package/dist/services/article.service.d.ts.map +1 -1
  8. package/dist/services/article.service.js +24 -16
  9. package/dist/services/article.service.js.map +1 -1
  10. package/dist/services/auth.service.d.ts +1 -0
  11. package/dist/services/auth.service.d.ts.map +1 -1
  12. package/dist/services/auth.service.js +23 -9
  13. package/dist/services/auth.service.js.map +1 -1
  14. package/dist/services/consultation.service.d.ts +63 -16
  15. package/dist/services/consultation.service.d.ts.map +1 -1
  16. package/dist/services/consultation.service.js +264 -49
  17. package/dist/services/consultation.service.js.map +1 -1
  18. package/dist/services/general-message.service.d.ts +2 -25
  19. package/dist/services/general-message.service.d.ts.map +1 -1
  20. package/dist/services/general-message.service.js +11 -112
  21. package/dist/services/general-message.service.js.map +1 -1
  22. package/dist/services/group-management.service.d.ts +1 -1
  23. package/dist/services/group-management.service.d.ts.map +1 -1
  24. package/dist/services/group-management.service.js +59 -27
  25. package/dist/services/group-management.service.js.map +1 -1
  26. package/dist/services/group-message.service.d.ts +1 -1
  27. package/dist/services/group-message.service.d.ts.map +1 -1
  28. package/dist/services/group-message.service.js +49 -23
  29. package/dist/services/group-message.service.js.map +1 -1
  30. package/dist/services/message-management.service.d.ts +21 -2
  31. package/dist/services/message-management.service.d.ts.map +1 -1
  32. package/dist/services/message-management.service.js +83 -7
  33. package/dist/services/message-management.service.js.map +1 -1
  34. package/dist/services/oa.service.d.ts +1 -0
  35. package/dist/services/oa.service.d.ts.map +1 -1
  36. package/dist/services/oa.service.js +23 -5
  37. package/dist/services/oa.service.js.map +1 -1
  38. package/dist/services/user.service.d.ts +108 -18
  39. package/dist/services/user.service.d.ts.map +1 -1
  40. package/dist/services/user.service.js +260 -59
  41. package/dist/services/user.service.js.map +1 -1
  42. package/dist/services/video-upload.service.d.ts +1 -1
  43. package/dist/services/video-upload.service.d.ts.map +1 -1
  44. package/dist/services/video-upload.service.js +11 -8
  45. package/dist/services/video-upload.service.js.map +1 -1
  46. package/dist/services/zns.service.d.ts +88 -21
  47. package/dist/services/zns.service.d.ts.map +1 -1
  48. package/dist/services/zns.service.js +157 -42
  49. package/dist/services/zns.service.js.map +1 -1
  50. package/dist/types/group.d.ts +5 -5
  51. package/dist/types/group.d.ts.map +1 -1
  52. package/dist/types/user.d.ts +155 -12
  53. package/dist/types/user.d.ts.map +1 -1
  54. package/dist/types/user.js.map +1 -1
  55. package/dist/types/webhook.d.ts +8 -0
  56. package/dist/types/webhook.d.ts.map +1 -1
  57. package/dist/types/webhook.js.map +1 -1
  58. package/dist/types/zns.d.ts +67 -33
  59. package/dist/types/zns.d.ts.map +1 -1
  60. package/dist/zalo-sdk.d.ts +3 -11
  61. package/dist/zalo-sdk.d.ts.map +1 -1
  62. package/dist/zalo-sdk.js +0 -10
  63. package/dist/zalo-sdk.js.map +1 -1
  64. package/docs/CONSULTATION_SERVICE.md +512 -330
  65. package/docs/GROUP_MANAGEMENT.md +2 -2
  66. package/docs/USER_MANAGEMENT.md +481 -1248
  67. package/docs/WEBHOOK_EVENTS.md +55 -3
  68. package/package.json +1 -1
  69. package/dist/services/tag.service.d.ts +0 -144
  70. package/dist/services/tag.service.d.ts.map +0 -1
  71. package/dist/services/tag.service.js +0 -184
  72. package/dist/services/tag.service.js.map +0 -1
  73. package/dist/services/user-management.service.d.ts +0 -117
  74. package/dist/services/user-management.service.d.ts.map +0 -1
  75. package/dist/services/user-management.service.js +0 -239
  76. package/dist/services/user-management.service.js.map +0 -1
@@ -1,5 +1,46 @@
1
1
  # Webhook Events Documentation
2
2
 
3
+ > Source of truth: The full, strongly-typed webhook definitions live in `src/types/webhook.ts`.
4
+ >
5
+ > • GitHub: https://github.com/warriorteam/redai-zalo-sdk/blob/main/src/types/webhook.ts
6
+
7
+ ## Table of Contents
8
+ - Overview
9
+ - Event Categories
10
+ - Types & Enums Summary
11
+ - Message Events (examples)
12
+ - User Action Events (examples)
13
+ - Shop Events (examples)
14
+ - OA Message Events (examples)
15
+ - User Interaction Events (examples)
16
+ - Consent Events (examples)
17
+ - Anonymous User Events (examples)
18
+ - Type Guards and Utilities
19
+ - Webhook Handler Setup
20
+ - Best Practices
21
+ - Migration from Legacy Types
22
+
23
+ ## Types & Enums Summary
24
+
25
+ - Union types
26
+ - `WebhookEvent` – Tập hợp tất cả event types
27
+ - `MessageWebhookEvent`, `UserActionWebhookEvent`, `ShopWebhookEvent`, `SystemWebhookEvent`, `AnonymousWebhookEvent`, `CallWebhookEvent`, `ZNSWebhookEvent`, `GroupWebhookEvent`, `WidgetWebhookEvent`
28
+ - Handler map
29
+ - `WebhookHandlers` – Bản đồ event_name -> handler function có type an toàn
30
+ - Enums
31
+ - `WebhookEventName` – Tên event chuẩn (string enum)
32
+ - `AttachmentType` – Loại attachment: image, file, audio, video, gif, link, location, sticker
33
+ - Type guards chính (đều export từ package)
34
+ - `isMessageEvent`, `isFollowEvent`, `isUserActionEvent`, `isShopEvent`, `isOAMessageEvent`, `isAnonymousEvent`, `isCallEvent`, `isTemplateEvent`, `isBusinessCardEvent`, `isFeedbackEvent`, `isZNSEvent`, `isGroupEvent`, `isJourneyEvent`, `isReactionEvent`, `isConsentEvent`, `isUpdateUserInfoEvent`, `hasAttachments`
35
+
36
+ - Message shape
37
+ - `message.msg_id: string` — ID của tin nhắn
38
+ - `message.text?: string` — Nội dung text (nếu là text)
39
+ - `message.attachments?: Attachment[]` — Có mặt khi là tin nhắn đa phương tiện (image, gif, video, file, link, location, sticker)
40
+ - `message.quote_msg_id?: string` — ID của tin nhắn gốc nếu đây là tin nhắn được gửi bằng thao tác “Trả lời” (reply)
41
+
42
+
43
+
3
44
  This document describes the webhook event types and DTOs for Zalo Official Account webhooks.
4
45
 
5
46
  ## Overview
@@ -39,6 +80,9 @@ const textEvent: UserSendTextEvent = {
39
80
  text: "Hello from user",
40
81
  },
41
82
  };
83
+ // Optional: reply to an existing message
84
+ quote_msg_id: "96d3cdf3af150460909",
85
+
42
86
  ```
43
87
 
44
88
  ### User Send Image Event
@@ -403,6 +447,8 @@ const oaTextEvent: OASendTextEvent = {
403
447
  message: {
404
448
  msg_id: "oa_message_123",
405
449
  text: "Hello from Official Account",
450
+ // Optional: reply to an existing message
451
+ quote_msg_id: "96d3cdf3af150460909",
406
452
  },
407
453
  };
408
454
  ```
@@ -641,6 +687,8 @@ const anonymousTextEvent: AnonymousSendTextEvent = {
641
687
  message: {
642
688
  msg_id: "message_123",
643
689
  text: "Anonymous message",
690
+ // Optional: reply to an existing message
691
+ quote_msg_id: "96d3cdf3af150460909",
644
692
  conversation_id: "conversation_123",
645
693
  },
646
694
  };
@@ -661,6 +709,8 @@ const anonymousImageEvent: AnonymousSendImageEvent = {
661
709
  message: {
662
710
  msg_id: "message_123",
663
711
  text: "Anonymous image",
712
+ // Optional: reply to an existing message
713
+ quote_msg_id: "96d3cdf3af150460909",
664
714
  conversation_id: "conversation_123",
665
715
  attachments: [
666
716
  {
@@ -689,6 +739,8 @@ const anonymousFileEvent: AnonymousSendFileEvent = {
689
739
  recipient: { id: "579745863508352884" },
690
740
  message: {
691
741
  msg_id: "message_123",
742
+ // Optional: reply to an existing message
743
+ quote_msg_id: "96d3cdf3af150460909",
692
744
  conversation_id: "conversation_123",
693
745
  attachments: [
694
746
  {
@@ -716,19 +768,19 @@ import {
716
768
  isFollowEvent,
717
769
  hasAttachments,
718
770
  WebhookEvent,
719
- } from "redai-zalo-sdk";
771
+ } from "@warriorteam/redai-zalo-sdk";
720
772
 
721
773
  function handleWebhook(event: WebhookEvent) {
722
774
  if (isMessageEvent(event)) {
723
775
  console.log("Message event:", event.event_name);
724
776
 
725
- if (hasAttachments(event.message)) {
777
+ if ("message" in event && hasAttachments(event.message)) {
726
778
  console.log("Has attachments:", event.message.attachments.length);
727
779
  }
728
780
  }
729
781
 
730
782
  if (isFollowEvent(event)) {
731
- console.log("New follower:", event.follower.id);
783
+ console.log("Follower event:", event.event_name);
732
784
  }
733
785
  }
734
786
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@warriorteam/redai-zalo-sdk",
3
- "version": "1.3.0",
3
+ "version": "1.4.1",
4
4
  "description": "Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account, ZNS, Consultation Service, Group Messaging, and Social APIs",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,144 +0,0 @@
1
- import { ZaloClient } from "../clients/zalo-client";
2
- /**
3
- * Service for managing Zalo OA user tags
4
- * Provides comprehensive tag management capabilities
5
- */
6
- export declare class TagService {
7
- private readonly client;
8
- private readonly apiUrl;
9
- constructor(client: ZaloClient);
10
- /**
11
- * Get all tags of the OA
12
- * @param accessToken OA access token
13
- * @returns List of all tags
14
- */
15
- getAllTags(accessToken: string): Promise<{
16
- error: number;
17
- message: string;
18
- data?: Array<{
19
- tag_name: string;
20
- tag_id?: string;
21
- user_count?: number;
22
- }>;
23
- }>;
24
- /**
25
- * Get tags of a specific user
26
- * @param accessToken OA access token
27
- * @param userId User ID
28
- * @returns User's tags
29
- */
30
- getUserTags(accessToken: string, userId: string): Promise<{
31
- error: number;
32
- message: string;
33
- data?: Array<{
34
- tag_name: string;
35
- tag_id?: string;
36
- }>;
37
- }>;
38
- /**
39
- * Create a new tag
40
- * @param accessToken OA access token
41
- * @param tagName Tag name
42
- * @returns Created tag information
43
- */
44
- createTag(accessToken: string, tagName: string): Promise<{
45
- error: number;
46
- message: string;
47
- data?: {
48
- tag_name: string;
49
- tag_id?: string;
50
- };
51
- }>;
52
- /**
53
- * Delete a tag
54
- * @param accessToken OA access token
55
- * @param tagName Tag name to delete
56
- * @returns Deletion result
57
- */
58
- deleteTag(accessToken: string, tagName: string): Promise<{
59
- error: number;
60
- message: string;
61
- }>;
62
- /**
63
- * Tag a user with specific tags
64
- * @param accessToken OA access token
65
- * @param userId User ID
66
- * @param tagNames Array of tag names
67
- * @returns Tagging result
68
- */
69
- tagUser(accessToken: string, userId: string, tagNames: string[]): Promise<{
70
- error: number;
71
- message: string;
72
- }>;
73
- /**
74
- * Remove tags from a user
75
- * @param accessToken OA access token
76
- * @param userId User ID
77
- * @param tagNames Array of tag names to remove
78
- * @returns Untagging result
79
- */
80
- untagUser(accessToken: string, userId: string, tagNames: string[]): Promise<{
81
- error: number;
82
- message: string;
83
- }>;
84
- /**
85
- * Get users by tag
86
- * @param accessToken OA access token
87
- * @param tagName Tag name
88
- * @param offset Offset for pagination
89
- * @param count Number of users to retrieve
90
- * @returns Users with the specified tag
91
- */
92
- getUsersByTag(accessToken: string, tagName: string, offset?: number, count?: number): Promise<{
93
- error: number;
94
- message: string;
95
- data?: {
96
- users: Array<{
97
- user_id: string;
98
- user_id_by_app?: string;
99
- display_name: string;
100
- avatar?: string;
101
- user_is_follower: boolean;
102
- }>;
103
- total: number;
104
- };
105
- }>;
106
- /**
107
- * Bulk tag multiple users
108
- * @param accessToken OA access token
109
- * @param userIds Array of user IDs
110
- * @param tagNames Array of tag names
111
- * @returns Bulk tagging result
112
- */
113
- bulkTagUsers(accessToken: string, userIds: string[], tagNames: string[]): Promise<{
114
- error: number;
115
- message: string;
116
- data?: {
117
- successful_users: string[];
118
- failed_users: Array<{
119
- user_id: string;
120
- error: string;
121
- }>;
122
- };
123
- }>;
124
- /**
125
- * Bulk untag multiple users
126
- * @param accessToken OA access token
127
- * @param userIds Array of user IDs
128
- * @param tagNames Array of tag names to remove
129
- * @returns Bulk untagging result
130
- */
131
- bulkUntagUsers(accessToken: string, userIds: string[], tagNames: string[]): Promise<{
132
- error: number;
133
- message: string;
134
- data?: {
135
- successful_users: string[];
136
- failed_users: Array<{
137
- user_id: string;
138
- error: string;
139
- }>;
140
- };
141
- }>;
142
- private handleTagError;
143
- }
144
- //# sourceMappingURL=tag.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tag.service.d.ts","sourceRoot":"","sources":["../../src/services/tag.service.ts"],"names":[],"mappings":"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"}
@@ -1,184 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TagService = void 0;
4
- /**
5
- * Service for managing Zalo OA user tags
6
- * Provides comprehensive tag management capabilities
7
- */
8
- class TagService {
9
- constructor(client) {
10
- this.client = client;
11
- this.apiUrl = "https://openapi.zalo.me/v3.0/oa";
12
- }
13
- /**
14
- * Get all tags of the OA
15
- * @param accessToken OA access token
16
- * @returns List of all tags
17
- */
18
- async getAllTags(accessToken) {
19
- try {
20
- const response = await this.client.apiGet(`${this.apiUrl}/tag/gettagsofoa`, accessToken);
21
- return response;
22
- }
23
- catch (error) {
24
- throw this.handleTagError(error, "Failed to get all tags");
25
- }
26
- }
27
- /**
28
- * Get tags of a specific user
29
- * @param accessToken OA access token
30
- * @param userId User ID
31
- * @returns User's tags
32
- */
33
- async getUserTags(accessToken, userId) {
34
- try {
35
- const response = await this.client.apiGet(`${this.apiUrl}/tag/gettagsofuser`, accessToken, {
36
- user_id: userId,
37
- });
38
- return response;
39
- }
40
- catch (error) {
41
- throw this.handleTagError(error, "Failed to get user tags");
42
- }
43
- }
44
- /**
45
- * Create a new tag
46
- * @param accessToken OA access token
47
- * @param tagName Tag name
48
- * @returns Created tag information
49
- */
50
- async createTag(accessToken, tagName) {
51
- try {
52
- const response = await this.client.apiPost(`${this.apiUrl}/tag/create`, accessToken, {
53
- tag_name: tagName,
54
- });
55
- return response;
56
- }
57
- catch (error) {
58
- throw this.handleTagError(error, "Failed to create tag");
59
- }
60
- }
61
- /**
62
- * Delete a tag
63
- * @param accessToken OA access token
64
- * @param tagName Tag name to delete
65
- * @returns Deletion result
66
- */
67
- async deleteTag(accessToken, tagName) {
68
- try {
69
- const response = await this.client.apiPost(`${this.apiUrl}/tag/delete`, accessToken, {
70
- tag_name: tagName,
71
- });
72
- return response;
73
- }
74
- catch (error) {
75
- throw this.handleTagError(error, "Failed to delete tag");
76
- }
77
- }
78
- /**
79
- * Tag a user with specific tags
80
- * @param accessToken OA access token
81
- * @param userId User ID
82
- * @param tagNames Array of tag names
83
- * @returns Tagging result
84
- */
85
- async tagUser(accessToken, userId, tagNames) {
86
- try {
87
- const response = await this.client.apiPost(`${this.apiUrl}/tag/taguser`, accessToken, {
88
- user_id: userId,
89
- tag_names: tagNames,
90
- });
91
- return response;
92
- }
93
- catch (error) {
94
- throw this.handleTagError(error, "Failed to tag user");
95
- }
96
- }
97
- /**
98
- * Remove tags from a user
99
- * @param accessToken OA access token
100
- * @param userId User ID
101
- * @param tagNames Array of tag names to remove
102
- * @returns Untagging result
103
- */
104
- async untagUser(accessToken, userId, tagNames) {
105
- try {
106
- const response = await this.client.apiPost(`${this.apiUrl}/tag/rmtaguser`, accessToken, {
107
- user_id: userId,
108
- tag_names: tagNames,
109
- });
110
- return response;
111
- }
112
- catch (error) {
113
- throw this.handleTagError(error, "Failed to untag user");
114
- }
115
- }
116
- /**
117
- * Get users by tag
118
- * @param accessToken OA access token
119
- * @param tagName Tag name
120
- * @param offset Offset for pagination
121
- * @param count Number of users to retrieve
122
- * @returns Users with the specified tag
123
- */
124
- async getUsersByTag(accessToken, tagName, offset = 0, count = 50) {
125
- try {
126
- const response = await this.client.apiGet(`${this.apiUrl}/tag/getusersoftag`, accessToken, {
127
- tag_name: tagName,
128
- offset,
129
- count,
130
- });
131
- return response;
132
- }
133
- catch (error) {
134
- throw this.handleTagError(error, "Failed to get users by tag");
135
- }
136
- }
137
- /**
138
- * Bulk tag multiple users
139
- * @param accessToken OA access token
140
- * @param userIds Array of user IDs
141
- * @param tagNames Array of tag names
142
- * @returns Bulk tagging result
143
- */
144
- async bulkTagUsers(accessToken, userIds, tagNames) {
145
- try {
146
- const response = await this.client.apiPost(`${this.apiUrl}/tag/bulktagusers`, accessToken, {
147
- user_ids: userIds,
148
- tag_names: tagNames,
149
- });
150
- return response;
151
- }
152
- catch (error) {
153
- throw this.handleTagError(error, "Failed to bulk tag users");
154
- }
155
- }
156
- /**
157
- * Bulk untag multiple users
158
- * @param accessToken OA access token
159
- * @param userIds Array of user IDs
160
- * @param tagNames Array of tag names to remove
161
- * @returns Bulk untagging result
162
- */
163
- async bulkUntagUsers(accessToken, userIds, tagNames) {
164
- try {
165
- const response = await this.client.apiPost(`${this.apiUrl}/tag/bulkuntagusers`, accessToken, {
166
- user_ids: userIds,
167
- tag_names: tagNames,
168
- });
169
- return response;
170
- }
171
- catch (error) {
172
- throw this.handleTagError(error, "Failed to bulk untag users");
173
- }
174
- }
175
- handleTagError(error, defaultMessage) {
176
- if (error.response?.data) {
177
- const errorData = error.response.data;
178
- return new Error(`${defaultMessage}: ${errorData.message || errorData.error || "Unknown error"}`);
179
- }
180
- return new Error(`${defaultMessage}: ${error.message || "Unknown error"}`);
181
- }
182
- }
183
- exports.TagService = TagService;
184
- //# sourceMappingURL=tag.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tag.service.js","sourceRoot":"","sources":["../../src/services/tag.service.ts"],"names":[],"mappings":"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"}
@@ -1,117 +0,0 @@
1
- import { ZaloClient } from "../clients/zalo-client";
2
- import { UserProfile, UserList, UserTag, UserTagList, UserNote, UserInteraction } from "../types/user-management";
3
- /**
4
- * Service for managing Zalo OA users
5
- * Provides comprehensive user management capabilities including:
6
- * - User profile management
7
- * - User tagging and segmentation
8
- * - User notes and interactions
9
- * - User analytics and insights
10
- */
11
- export declare class UserManagementService {
12
- private readonly client;
13
- private readonly apiUrl;
14
- constructor(client: ZaloClient);
15
- /**
16
- * Get user profile information
17
- * @param accessToken OA access token
18
- * @param userId User ID
19
- * @returns User profile
20
- */
21
- getUserProfile(accessToken: string, userId: string): Promise<UserProfile>;
22
- /**
23
- * Get list of users who follow the OA
24
- * @param accessToken OA access token
25
- * @param offset Offset for pagination
26
- * @param count Number of users to retrieve
27
- * @returns User list
28
- */
29
- getFollowersList(accessToken: string, offset?: number, count?: number): Promise<UserList>;
30
- /**
31
- * Search users by phone number
32
- * @param accessToken OA access token
33
- * @param phoneNumber Phone number to search
34
- * @returns User profile if found
35
- */
36
- searchUserByPhone(accessToken: string, phoneNumber: string): Promise<UserProfile | null>;
37
- /**
38
- * Get user tags
39
- * @param accessToken OA access token
40
- * @param userId User ID
41
- * @returns User tags
42
- */
43
- getUserTags(accessToken: string, userId: string): Promise<UserTag[]>;
44
- /**
45
- * Tag user with specific tags
46
- * @param accessToken OA access token
47
- * @param userId User ID
48
- * @param tagNames Array of tag names
49
- * @returns Tag result
50
- */
51
- tagUser(accessToken: string, userId: string, tagNames: string[]): Promise<{
52
- success: boolean;
53
- }>;
54
- /**
55
- * Remove tags from user
56
- * @param accessToken OA access token
57
- * @param userId User ID
58
- * @param tagNames Array of tag names to remove
59
- * @returns Untag result
60
- */
61
- untagUser(accessToken: string, userId: string, tagNames: string[]): Promise<{
62
- success: boolean;
63
- }>;
64
- /**
65
- * Get all available tags
66
- * @param accessToken OA access token
67
- * @returns List of all tags
68
- */
69
- getAllTags(accessToken: string): Promise<UserTagList>;
70
- /**
71
- * Create new tag
72
- * @param accessToken OA access token
73
- * @param tagName Tag name
74
- * @returns Created tag
75
- */
76
- createTag(accessToken: string, tagName: string): Promise<UserTag>;
77
- /**
78
- * Delete tag
79
- * @param accessToken OA access token
80
- * @param tagName Tag name to delete
81
- * @returns Deletion result
82
- */
83
- deleteTag(accessToken: string, tagName: string): Promise<{
84
- success: boolean;
85
- }>;
86
- /**
87
- * Add note to user
88
- * @param accessToken OA access token
89
- * @param userId User ID
90
- * @param note Note content
91
- * @returns Note result
92
- */
93
- addUserNote(accessToken: string, userId: string, note: string): Promise<{
94
- success: boolean;
95
- }>;
96
- /**
97
- * Get user notes
98
- * @param accessToken OA access token
99
- * @param userId User ID
100
- * @returns User notes
101
- */
102
- getUserNotes(accessToken: string, userId: string): Promise<UserNote[]>;
103
- /**
104
- * Get user interaction history
105
- * @param accessToken OA access token
106
- * @param userId User ID
107
- * @param offset Offset for pagination
108
- * @param count Number of interactions to retrieve
109
- * @returns User interactions
110
- */
111
- getUserInteractions(accessToken: string, userId: string, offset?: number, count?: number): Promise<{
112
- data: UserInteraction[];
113
- total: number;
114
- }>;
115
- private handleUserManagementError;
116
- }
117
- //# sourceMappingURL=user-management.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"user-management.service.d.ts","sourceRoot":"","sources":["../../src/services/user-management.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACL,WAAW,EACX,QAAQ,EACR,OAAO,EACP,WAAW,EACX,QAAQ,EACR,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;GAOG;AACH,qBAAa,qBAAqB;IAGpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;gBAE/B,MAAM,EAAE,UAAU;IAE/C;;;;;OAKG;IACG,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC;IAgBvB;;;;;;OAMG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,MAAU,EAClB,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,QAAQ,CAAC;IAiBpB;;;;;OAKG;IACG,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAgB9B;;;;;OAKG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAgB1E;;;;;;OAMG;IACG,OAAO,CACX,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAiBhC;;;;;;OAMG;IACG,SAAS,CACb,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAiBhC;;;;OAIG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAa3D;;;;;OAKG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBvE;;;;;OAKG;IACG,SAAS,CACb,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAgBhC;;;;;;OAMG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAiBhC;;;;;OAKG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAgB5E;;;;;;;OAOG;IACG,mBAAmB,CACvB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAU,EAClB,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC;QAAE,IAAI,EAAE,eAAe,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAwBtD,OAAO,CAAC,yBAAyB;CAWlC"}