@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
TypeScript
/**
* 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