UNPKG

@warriorteam/redai-zalo-sdk

Version:

Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account v3.0, ZNS with Full Type Safety, Consultation Service, Broadcast Service, Group Messaging with List APIs, Social APIs, Enhanced Article Management, Promotion Service v3.0 with Multip

616 lines 12.1 kB
/** * User management related types and interfaces */ /** * User information from Zalo API v3.0 */ export interface UserInfo { /** * User ID */ user_id: string; /** * User ID by app */ user_id_by_app: string; /** * External user ID in business system */ user_external_id: string; /** * Display name */ display_name: string; /** * User alias */ user_alias: string; /** * Whether user is under 18 */ is_sensitive: boolean; /** * Last interaction date (dd/MM/yyyy) */ user_last_interaction_date: string; /** * Whether user is following OA */ user_is_follower: boolean; /** * Avatar URL */ avatar: string; /** * Avatar URLs with different sizes */ avatars: { "120": string; "240": string; }; /** * Dynamic param from last access */ dynamic_param?: string; /** * Tags and notes information */ tags_and_notes_info: { notes: string[]; tag_names: string[]; }; /** * Shared information from user */ shared_info?: { address?: string; city?: string; district?: string; phone?: string; name?: string; user_dob?: string; }; } /** * User list request parameters */ export interface UserListRequest { /** * Offset for pagination */ offset: number; /** * Number of users to fetch (max 50) */ count: number; /** * Filter by tag name */ tag_name?: string; /** * Filter by last interaction period */ last_interaction_period?: "TODAY" | "YESTERDAY" | "L7D" | "L30D" | string; /** * Filter by follower status */ is_follower?: boolean; } /** * User list response */ export interface UserListResponse { /** * Total number of users */ total: number; /** * Number of users returned */ count: number; /** * Current offset */ offset: number; /** * List of user IDs */ users: Array<{ user_id: string; }>; } /** * User label/tag information */ export interface UserLabel { /** * Label ID */ label_id: string; /** * Label name */ label_name: string; /** * Label description */ description?: string; /** * Label color (hex) */ color?: string; /** * Creation time (Unix timestamp) */ created_time?: number; /** * Number of users with this label */ user_count?: number; } /** * Create label request */ export interface CreateLabelRequest { /** * Label name */ label_name: string; /** * Label description */ description?: string; /** * Label color (hex) */ color?: string; } /** * User label operation request (legacy - for label_id based operations) */ export interface UserLabelRequest { /** * User ID */ user_id: string; /** * Label ID */ label_id: string; } /** * Tag user request - for Zalo API v2.0/oa/tag/tagfollower */ export interface TagUserRequest { /** * User ID (long in API spec, but sent as string) */ user_id: string; /** * Tag name to assign to user * Note: If tag doesn't exist, API will create it automatically */ tag_name: string; } /** * Remove tag from user request - for Zalo API v2.0/oa/tag/rmfollowerfromtag */ export interface RemoveTagFromUserRequest { /** * User ID */ user_id: string; /** * Tag name to remove from user */ tag_name: string; } /** * Get tags list response - for Zalo API v2.0/oa/tag/gettagsofoa */ export interface GetTagsResponse { /** * Error code (0 = success) */ error: number; /** * Response message */ message: string; /** * Array of tag names */ data: string[]; } /** * Delete tag request - for Zalo API v2.0/oa/tag/rmtag */ export interface DeleteTagRequest { /** * Tag name to delete */ tag_name: string; } /** * Update user request - for Zalo API v3.0/oa/user/update */ export interface UpdateUserRequest { /** * User ID (required) */ user_id: string; /** * Shared information to update */ shared_info?: { /** * Display name */ name?: string; /** * Phone number */ phone?: string; /** * Address */ address?: string; /** * City ID (see Zalo documentation for city codes) */ city_id?: number; /** * District ID (see Zalo documentation for district codes) */ district_id?: number; /** * Date of birth (dd/MM/yyyy format, from 1/1/1970) */ user_dob?: string; }; /** * User alias name */ user_alias?: string; /** * External user ID in business system (unique per customer) */ user_external_id?: string; } /** * Delete user info request - for Zalo API v2.0/oa/deletefollowerinfo */ export interface DeleteUserInfoRequest { /** * User ID to delete info for */ user_id: string; } /** * Get user custom info request - for Zalo API v3.0/oa/user/detail/custominfo */ export interface GetUserCustomInfoRequest { /** * User ID to get custom info for */ user_id: string; /** * List of custom fields to export (optional) * If not specified, API returns all available custom info * For table type fields, only parent field is accepted */ fields_to_export?: string[]; } /** * User custom info response - for Zalo API v3.0/oa/user/detail/custominfo */ export interface UserCustomInfoResponse { /** * Error code (0 = success) */ error: number; /** * Response message */ message: string; /** * Custom info data */ data: { /** * User ID */ user_id: string; /** * Custom information fields * All values are returned as strings for consistency */ custom_info: Record<string, any>; }; } /** * Update user custom info request - for Zalo API v3.0/oa/user/update/custominfo */ export interface UpdateUserCustomInfoRequest { /** * User ID to update custom info for */ user_id: string; /** * Custom information to update * Structure depends on OA's custom field configuration */ custom_info: Record<string, any>; } /** * User custom information */ export interface UserCustomInfo { /** * User ID */ user_id: string; /** * Custom fields (key-value pairs) */ custom_fields: Record<string, any>; /** * Last updated timestamp */ last_updated?: number; } /** * Update custom info request */ export interface UpdateCustomInfoRequest { /** * User ID */ user_id: string; /** * Custom fields to update */ custom_fields: Record<string, any>; } /** * User info field types */ export declare enum UserInfoFieldType { TEXT = "text", NUMBER = "number", DATE = "date", SELECT = "select" } /** * Field option for select type */ export interface FieldOption { /** * Option value */ value: string; /** * Option label */ label: string; } /** * User info field definition */ export interface UserInfoField { /** * Field ID */ field_id: string; /** * Field name */ field_name: string; /** * Field type */ field_type: UserInfoFieldType; /** * Field description */ description?: string; /** * Whether field is required */ required?: boolean; /** * Options for select type */ options?: FieldOption[]; /** * Default value */ default_value?: string; /** * Display order */ display_order?: number; /** * Whether it's a system field */ is_system_field?: boolean; /** * Creation time */ created_time?: number; /** * Last update time */ updated_time?: number; } /** * Create user info field request */ export interface CreateUserInfoFieldRequest { /** * Field name */ field_name: string; /** * Field type */ field_type: UserInfoFieldType; /** * Field description */ description?: string; /** * Whether field is required */ required?: boolean; /** * Options for select type */ options?: FieldOption[]; /** * Default value */ default_value?: string; /** * Display order */ display_order?: number; } /** * Update user info field request */ export interface UpdateUserInfoFieldRequest { /** * Field name */ field_name?: string; /** * Field description */ description?: string; /** * Whether field is required */ required?: boolean; /** * Options for select type */ options?: FieldOption[]; /** * Default value */ default_value?: string; /** * Display order */ display_order?: number; } /** * Advanced filter options for getAllUsersWithAdvancedFilters * Dựa trên các trường trong UserInfo */ export interface AdvancedUserFilters { /** * Filter by specific user IDs (exact match) * Chỉ lấy những users có ID trong danh sách này */ userIds?: string[]; /** * Filter by tag name (existing from basic filters) */ tag_name?: string; /** * Filter by last interaction period (existing from basic filters) */ last_interaction_period?: "TODAY" | "YESTERDAY" | "L7D" | "L30D" | string; /** * Filter by follower status (existing from basic filters) */ is_follower?: boolean; /** * Filter by display name (contains search) */ display_name_contains?: string; /** * Filter by user alias (contains search) */ user_alias_contains?: string; /** * Filter by whether user is sensitive (under 18) */ is_sensitive?: boolean; /** * Filter by specific interaction date range */ last_interaction_date_range?: { from: string; to: string; }; /** * Filter by specific tags (multiple tags - OR operation) */ tag_names?: string[]; /** * Filter by tags (ALL tags must match - AND operation) */ require_all_tags?: string[]; /** * Filter by notes content (contains search) */ notes_contains?: string; /** * Filter by shared info - city */ city?: string; /** * Filter by shared info - district */ district?: string; /** * Filter by shared info - phone (contains search) */ phone_contains?: string; /** * Filter by shared info - name (contains search) */ name_contains?: string; /** * Filter by shared info - address (contains search) */ address_contains?: string; /** * Filter by date of birth range */ dob_range?: { from: string; to: string; }; /** * Filter by age range (calculated from dob) */ age_range?: { min: number; max: number; }; /** * Filter by external user ID (contains search) */ external_id_contains?: string; /** * Exclude users with specific tags */ exclude_tags?: string[]; /** * Filter by users who have shared info vs those who don't */ has_shared_info?: boolean; /** * Filter by users who have phone number */ has_phone?: boolean; /** * Filter by users who have address */ has_address?: boolean; } //# sourceMappingURL=user.d.ts.map