@warriorteam/redai-zalo-sdk
Version:
Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account, ZNS, Consultation Service, Group Messaging, and Social APIs
153 lines • 5.99 kB
TypeScript
import { ZaloClient } from "../clients/zalo-client";
import { ArticleRequest, ArticleNormalRequest, ArticleVideoRequest, ArticleResponse, ArticleProcessResponse, ArticleVerifyResponse, ArticleDetail, ArticleListRequest, ArticleListResponse, ArticleRemoveResponse, ArticleUpdateRequest, ArticleUpdateNormalRequest, ArticleUpdateVideoRequest, ArticleUpdateResponse, ArticleStatus, CommentStatus } from "../types/article";
/**
* Service for handling Zalo Official Account Article Management APIs
*
* CONDITIONS FOR USING ZALO ARTICLE MANAGEMENT:
*
* 1. GENERAL CONDITIONS:
* - OA must have permission to create articles
* - Access token must have "manage_article" scope
* - OA must have active status and be verified
*
* 2. ARTICLE CREATION:
* - Title: required, max 150 characters
* - Author: required for normal articles, max 50 characters
* - Description: required, max 300 characters
* - Image size: max 1MB per image
* - Status: 'show' (publish immediately) or 'hide' (draft)
* - Comment: 'show' (allow comments) or 'hide' (disable comments)
*
* 3. CONTENT VALIDATION:
* - Normal articles: must have cover, body content, and author
* - Video articles: must have video_id and avatar
* - Body items: support text, image, video, and product types
* - Tracking links: must be valid URLs
*
* 4. LIMITS AND CONSTRAINTS:
* - Article list: max 100 items per request
* - Processing time: use token to check progress
* - Update frequency: reasonable intervals recommended
*/
export declare class ArticleService {
private readonly client;
private readonly endpoints;
constructor(client: ZaloClient);
/**
* Create normal article with rich content
* @param accessToken OA access token
* @param request Normal article information
* @returns Token for tracking creation progress
*/
createNormalArticle(accessToken: string, request: ArticleNormalRequest): Promise<ArticleResponse>;
/**
* Create video article
* @param accessToken OA access token
* @param request Video article information
* @returns Token for tracking creation progress
*/
createVideoArticle(accessToken: string, request: ArticleVideoRequest): Promise<ArticleResponse>;
/**
* Create article (automatically detect type)
* @param accessToken OA access token
* @param request Article information
* @returns Token for tracking creation progress
*/
createArticle(accessToken: string, request: ArticleRequest): Promise<ArticleResponse>;
/**
* Check article creation progress
* @param accessToken OA access token
* @param token Token from article creation response
* @returns Progress information
*/
checkArticleProcess(accessToken: string, token: string): Promise<ArticleProcessResponse>;
/**
* Verify article and get article ID
* @param accessToken OA access token
* @param token Token from article creation or update response
* @returns Article ID
*/
verifyArticle(accessToken: string, token: string): Promise<ArticleVerifyResponse>;
/**
* Get article details
* @param accessToken OA access token
* @param articleId Article ID
* @returns Article details
*/
getArticleDetail(accessToken: string, articleId: string): Promise<ArticleDetail>;
/**
* Get article list
* @param accessToken OA access token
* @param request List parameters
* @returns Article list
*/
getArticleList(accessToken: string, request: ArticleListRequest): Promise<ArticleListResponse>;
/**
* Remove article
* @param accessToken OA access token
* @param articleId Article ID to remove
* @returns Removal result
*/
removeArticle(accessToken: string, articleId: string): Promise<ArticleRemoveResponse>;
private handleArticleError;
/**
* Update normal article
* @param accessToken OA access token
* @param request Update information
* @returns Token for tracking update progress
*/
updateNormalArticle(accessToken: string, request: ArticleUpdateNormalRequest): Promise<ArticleUpdateResponse>;
/**
* Update video article
* @param accessToken OA access token
* @param request Update information
* @returns Token for tracking update progress
*/
updateVideoArticle(accessToken: string, request: ArticleUpdateVideoRequest): Promise<ArticleUpdateResponse>;
/**
* Update article (automatically detect type)
* @param accessToken OA access token
* @param request Update information
* @returns Token for tracking update progress
*/
updateArticle(accessToken: string, request: ArticleUpdateRequest): Promise<ArticleUpdateResponse>;
/**
* Update article status only
* @param accessToken OA access token
* @param articleId Article ID to update
* @param status New status ('show' or 'hide')
* @param comment Optional comment status ('show' or 'hide')
* @returns Token for tracking update progress
*/
updateArticleStatus(accessToken: string, articleId: string, status: ArticleStatus, comment?: CommentStatus): Promise<ArticleUpdateResponse>;
/**
* Validate normal article creation request
*/
private validateNormalArticleRequest;
/**
* Validate video article creation request
*/
private validateVideoArticleRequest;
/**
* Validate article list request
*/
private validateArticleListRequest;
/**
* Validate normal article update request
*/
private validateUpdateNormalArticleRequest;
/**
* Validate video article update request
*/
private validateUpdateVideoArticleRequest;
/**
* Validate cover information
*/
private validateCover;
/**
* Validate body item
*/
private validateBodyItem;
private isValidTrackingLink;
}
//# sourceMappingURL=article.service.d.ts.map