@oficialapi/sdk 9.0.5 → 9.0.6
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.
- package/README.md +46 -3
- package/dist/index.d.mts +5 -3
- package/dist/index.d.ts +5 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1824,12 +1824,55 @@ await sdk.instagram.sendText({
|
|
|
1824
1824
|
#### Enviar Mídia
|
|
1825
1825
|
|
|
1826
1826
|
```typescript
|
|
1827
|
+
// Enviar imagem
|
|
1827
1828
|
await sdk.instagram.sendMedia({
|
|
1828
1829
|
channelToken: 'sk_live_...',
|
|
1829
1830
|
recipientId: 'user_id',
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1831
|
+
attachment: {
|
|
1832
|
+
type: 'image',
|
|
1833
|
+
url: 'https://example.com/image.jpg'
|
|
1834
|
+
}
|
|
1835
|
+
}, accessToken);
|
|
1836
|
+
|
|
1837
|
+
// Enviar vídeo
|
|
1838
|
+
await sdk.instagram.sendMedia({
|
|
1839
|
+
channelToken: 'sk_live_...',
|
|
1840
|
+
recipientId: 'user_id',
|
|
1841
|
+
attachment: {
|
|
1842
|
+
type: 'video',
|
|
1843
|
+
url: 'https://example.com/video.mp4'
|
|
1844
|
+
}
|
|
1845
|
+
}, accessToken);
|
|
1846
|
+
|
|
1847
|
+
// Enviar áudio
|
|
1848
|
+
await sdk.instagram.sendMedia({
|
|
1849
|
+
channelToken: 'sk_live_...',
|
|
1850
|
+
recipientId: 'user_id',
|
|
1851
|
+
attachment: {
|
|
1852
|
+
type: 'audio',
|
|
1853
|
+
url: 'https://example.com/audio.m4a'
|
|
1854
|
+
}
|
|
1855
|
+
}, accessToken);
|
|
1856
|
+
|
|
1857
|
+
// Enviar arquivo PDF
|
|
1858
|
+
await sdk.instagram.sendMedia({
|
|
1859
|
+
channelToken: 'sk_live_...',
|
|
1860
|
+
recipientId: 'user_id',
|
|
1861
|
+
attachment: {
|
|
1862
|
+
type: 'file',
|
|
1863
|
+
url: 'https://example.com/documento.pdf'
|
|
1864
|
+
}
|
|
1865
|
+
}, accessToken);
|
|
1866
|
+
|
|
1867
|
+
// Enviar imagem com tag HUMAN_AGENT
|
|
1868
|
+
await sdk.instagram.sendMedia({
|
|
1869
|
+
channelToken: 'sk_live_...',
|
|
1870
|
+
recipientId: 'user_id',
|
|
1871
|
+
attachment: {
|
|
1872
|
+
type: 'image',
|
|
1873
|
+
url: 'https://example.com/image.jpg'
|
|
1874
|
+
},
|
|
1875
|
+
tags: ['HUMAN_AGENT']
|
|
1833
1876
|
}, accessToken);
|
|
1834
1877
|
```
|
|
1835
1878
|
|
package/dist/index.d.mts
CHANGED
|
@@ -677,9 +677,11 @@ interface SendInstagramTextParams {
|
|
|
677
677
|
interface SendInstagramMediaParams {
|
|
678
678
|
channelToken: string;
|
|
679
679
|
recipientId: string;
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
680
|
+
attachment: {
|
|
681
|
+
type: 'image' | 'video' | 'audio' | 'file';
|
|
682
|
+
url: string;
|
|
683
|
+
};
|
|
684
|
+
tags?: string[];
|
|
683
685
|
}
|
|
684
686
|
interface SendInstagramImagesParams {
|
|
685
687
|
channelToken: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -677,9 +677,11 @@ interface SendInstagramTextParams {
|
|
|
677
677
|
interface SendInstagramMediaParams {
|
|
678
678
|
channelToken: string;
|
|
679
679
|
recipientId: string;
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
680
|
+
attachment: {
|
|
681
|
+
type: 'image' | 'video' | 'audio' | 'file';
|
|
682
|
+
url: string;
|
|
683
|
+
};
|
|
684
|
+
tags?: string[];
|
|
683
685
|
}
|
|
684
686
|
interface SendInstagramImagesParams {
|
|
685
687
|
channelToken: string;
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
* @version 1.0.0
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
|
-
var I="https://api.oficialapi.com.br",l=class{constructor(e){this.config={clientId:e.clientId,clientSecret:e.clientSecret,timeout:e.timeout||3e4,maxRetries:e.maxRetries||3,retryDelay:e.retryDelay||1e3,headers:e.headers||{}},this.axiosInstance=P__default.default.create({baseURL:I,timeout:this.config.timeout,headers:{"Content-Type":"application/json",...this.config.headers}}),this.setupInterceptors();}setupInterceptors(){this.axiosInstance.interceptors.request.use(e=>{if(e.url?.includes("/auth/token"))return e;let t=e;return t.accessToken&&e.headers&&(e.headers.Authorization=`Bearer ${t.accessToken}`),e},e=>Promise.reject(e)),this.axiosInstance.interceptors.response.use(e=>e,async e=>{let t=e.config;if(!t)return Promise.reject(this.formatError(e));if((!e.response||e.response.status>=500&&e.response.status<600)&&(!t._retryCount||t._retryCount<this.config.maxRetries)){t._retryCount=(t._retryCount||0)+1;let s=this.config.retryDelay*t._retryCount;return await new Promise(i=>setTimeout(i,s)),this.axiosInstance(t)}return Promise.reject(this.formatError(e))});}formatError(e){if(e.response){let t=e.response.data,n=t?.error?.message||t?.message||e.message,s=t?.error?.details||[],i=new Error(n);return i.status=e.response.status,i.data=e.response.data,i.details=s,i}return e.request?new Error("Erro de conex\xE3o com a API. Verifique sua conex\xE3o com a internet."):e}async get(e,t,n){let s={...n,accessToken:t};return (await this.axiosInstance.get(e,s)).data}async post(e,t,n,s){let i={...s,accessToken:n};return (await this.axiosInstance.post(e,t,i)).data}async put(e,t,n,s){let i={...s,accessToken:n};return (await this.axiosInstance.put(e,t,i)).data}async delete(e,t,n,s){let i={...s,accessToken:t,data:n};return (await this.axiosInstance.delete(e,i)).data}async upload(e,t,n,s="file",i){let o=new FormData;if(t instanceof Buffer){let y=new Blob([t]);o.append(s,y);}else o.append(s,t);i&&Object.entries(i).forEach(([y,r])=>{r!=null&&o.append(y,typeof r=="string"?r:JSON.stringify(r));});let C={headers:{"Content-Type":"multipart/form-data"},accessToken:n};return (await this.axiosInstance.post(e,o,C)).data}};var d=class{constructor(e){this.httpClient=e;}async getToken(e,t){let n=await this.httpClient.post("/api/v1/auth/token",{client_id:e,client_secret:t});if(!n.success||!n.data)throw new Error(n.error?.message||"Falha ao obter token");return n.data}};var c=class{constructor(e){this.httpClient=e;}async list(e){let t=await this.httpClient.get("/api/v1/channels",e);if(!t.success||!t.data)throw new Error(t.error?.message||"Falha ao listar canais");return Array.isArray(t.data)?t.data:[t.data]}};var h=class{constructor(e){this.httpClient=e;}async createWebhook(e,t){let n=await this.httpClient.post("/api/v1/integrations",{url:e.url,expiresInDays:e.expiresInDays},t);if(!n.success||!n.data)throw new Error(n.error?.message||"Falha ao criar webhook");return n.data}};var p=class{constructor(e){this.httpClient=e;}async sendText(e,t){return this.httpClient.post("/api/v1/whatsapp/send-message",{channelToken:e.channelToken,sender:e.sender,messageText:e.messageText},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/whatsapp/send-media",{channelToken:e.channelToken,sender:e.sender,fileUrl:e.fileUrl,type:e.type,caption:e.caption,...e.fileName&&{fileName:e.fileName}},t)}async sendTemplate(e,t){return this.httpClient.post("/api/v1/whatsapp/send-template",{channelToken:e.channelToken,sender:e.sender,templateName:e.templateName,languageCode:e.languageCode,components:e.components},t)}async sendButtons(e,t){return this.httpClient.post("/api/v1/whatsapp/send-buttons",{channelToken:e.channelToken,sender:e.sender,text:e.text,buttons:e.buttons,...e.media&&{media:e.media}},t)}async sendList(e,t){return this.httpClient.post("/api/v1/whatsapp/send-list",{channelToken:e.channelToken,sender:e.sender,headerText:e.headerText,bodyText:e.bodyText,buttonText:e.buttonText,sections:e.sections,...e.footerText&&{footerText:e.footerText}},t)}async replyMessage(e,t){return this.httpClient.post("/api/v1/whatsapp/reply-message",{channelToken:e.channelToken,sender:e.sender,messageText:e.messageText,...e.replyMessageId&&{replyMessageId:e.replyMessageId},...e.preview_url!==void 0&&{preview_url:e.preview_url}},t)}async reactMessage(e,t){return this.httpClient.post("/api/v1/whatsapp/react-message",{channelToken:e.channelToken,sender:e.sender,emoji:e.emoji,...e.message_id&&{message_id:e.message_id}},t)}async createTemplate(e,t){return this.httpClient.post("/api/v1/whatsapp/create-template",{channelToken:e.channelToken,name:e.name,language:e.language,category:e.category,components:e.components},t)}async listTemplates(e,t){return this.httpClient.get(`/api/v1/whatsapp/templates?channelToken=${encodeURIComponent(e)}`,t)}async getTemplate(e,t,n){return this.httpClient.get(`/api/v1/whatsapp/templates/${t}?channelToken=${encodeURIComponent(e)}`,n)}async uploadMedia(e,t){return this.httpClient.upload("/api/v1/whatsapp/upload-media",e.file,t,"file",{channelToken:e.channelToken,mediaType:e.mediaType,...e.filename&&{filename:e.filename}})}async sendOrderDetails(e,t){return this.httpClient.post("/api/v1/whatsapp/send-order-details",{channelToken:e.channelToken,sender:e.sender,...e.headerText&&{headerText:e.headerText},bodyText:e.bodyText,...e.footerText&&{footerText:e.footerText},reference_id:e.reference_id,type:e.type,currency:e.currency,total_amount:e.total_amount,order:e.order,...e.payment_settings&&{payment_settings:e.payment_settings}},t)}async sendOrderStatus(e,t){return this.httpClient.post("/api/v1/whatsapp/send-order-status",{channelToken:e.channelToken,sender:e.sender,bodyText:e.bodyText,...e.footerText&&{footerText:e.footerText},reference_id:e.reference_id,order_status:e.order_status,...e.status_description&&{status_description:e.status_description},...e.payment_status&&{payment_status:e.payment_status},...e.payment_timestamp!==void 0&&{payment_timestamp:e.payment_timestamp}},t)}async sendAudio(e,t){return this.httpClient.post("/api/v1/whatsapp/send-audio",{channelToken:e.channelToken,sender:e.sender,mediaId:e.mediaId,...e.voice!==void 0&&{voice:e.voice}},t)}async sendSticker(e,t){return this.httpClient.post("/api/v1/whatsapp/send-sticker",{channelToken:e.channelToken,sender:e.sender,mediaId:e.mediaId},t)}async sendVideo(e,t){return this.httpClient.post("/api/v1/whatsapp/send-video",{channelToken:e.channelToken,sender:e.sender,mediaId:e.mediaId,...e.caption&&{caption:e.caption}},t)}async sendDocument(e,t){return this.httpClient.post("/api/v1/whatsapp/send-document",{channelToken:e.channelToken,sender:e.sender,mediaId:e.mediaId,...e.filename&&{filename:e.filename},...e.caption&&{caption:e.caption}},t)}async sendContact(e,t){return this.httpClient.post("/api/v1/whatsapp/send-contact",{channelToken:e.channelToken,sender:e.sender,contacts:e.contacts},t)}async sendLocation(e,t){return this.httpClient.post("/api/v1/whatsapp/send-location",{channelToken:e.channelToken,sender:e.sender,latitude:e.latitude,longitude:e.longitude,name:e.name,address:e.address},t)}async sendLocationRequest(e,t){return this.httpClient.post("/api/v1/whatsapp/send-location-request",{channelToken:e.channelToken,sender:e.sender,bodyText:e.bodyText,...e.headerText&&{headerText:e.headerText},...e.footerText&&{footerText:e.footerText}},t)}async sendCtaUrl(e,t){return this.httpClient.post("/api/v1/whatsapp/send-cta-url",{channelToken:e.channelToken,sender:e.sender,bodyText:e.bodyText,buttonText:e.buttonText,url:e.url,...e.header&&{header:e.header},...e.footerText&&{footerText:e.footerText}},t)}async sendMediaCarousel(e,t){return this.httpClient.post("/api/v1/whatsapp/send-media-carousel",{channelToken:e.channelToken,sender:e.sender,bodyText:e.bodyText,cards:e.cards},t)}async downloadMedia(e,t){return this.httpClient.post("/api/v1/whatsapp/download-media",{channelToken:e.channelToken,url:e.url},t)}};var g=class{constructor(e){this.httpClient=e;}async sendMessage(e,t){return this.httpClient.post("/api/v1/telegram/send-message",{channelToken:e.channelToken,chatId:e.chatId,text:e.text,parseMode:e.parseMode,replyToMessageId:e.replyToMessageId,disableNotification:e.disableNotification},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/telegram/send-media",{channelToken:e.channelToken,chatId:e.chatId,fileUrl:e.fileUrl,type:e.type,caption:e.caption,parseMode:e.parseMode,replyToMessageId:e.replyToMessageId},t)}async sendButtons(e,t){return this.httpClient.post("/api/v1/telegram/send-buttons",{channelToken:e.channelToken,chatId:e.chatId,text:e.text,buttons:e.buttons,parseMode:e.parseMode},t)}async sendLocation(e,t){return this.httpClient.post("/api/v1/telegram/send-location",{channelToken:e.channelToken,chatId:e.chatId,latitude:e.latitude,longitude:e.longitude,livePeriod:e.livePeriod},t)}async sendContact(e,t){return this.httpClient.post("/api/v1/telegram/send-contact",{channelToken:e.channelToken,chatId:e.chatId,phoneNumber:e.phoneNumber,firstName:e.firstName,lastName:e.lastName,vcard:e.vcard},t)}async sendPoll(e,t){return this.httpClient.post("/api/v1/telegram/send-poll",{channelToken:e.channelToken,chatId:e.chatId,question:e.question,options:e.options,isAnonymous:e.isAnonymous,type:e.type,correctOptionId:e.correctOptionId},t)}async sendVenue(e,t){return this.httpClient.post("/api/v1/telegram/send-venue",{channelToken:e.channelToken,chatId:e.chatId,latitude:e.latitude,longitude:e.longitude,title:e.title,address:e.address,foursquareId:e.foursquareId},t)}async sendDice(e,t){return this.httpClient.post("/api/v1/telegram/send-dice",{channelToken:e.channelToken,chatId:e.chatId,emoji:e.emoji},t)}async sendSticker(e,t){return this.httpClient.post("/api/v1/telegram/send-sticker",{channelToken:e.channelToken,chatId:e.chatId,stickerUrl:e.stickerUrl},t)}async sendVoice(e,t){return this.httpClient.post("/api/v1/telegram/send-voice",{channelToken:e.channelToken,chatId:e.chatId,voiceUrl:e.voiceUrl,caption:e.caption,duration:e.duration},t)}async sendVideoNote(e,t){return this.httpClient.post("/api/v1/telegram/send-video-note",{channelToken:e.channelToken,chatId:e.chatId,videoNoteUrl:e.videoNoteUrl,duration:e.duration,length:e.length},t)}async sendMediaGroup(e,t){return this.httpClient.post("/api/v1/telegram/send-media-group",{channelToken:e.channelToken,chatId:e.chatId,media:e.media},t)}async sendReplyKeyboard(e,t){return this.httpClient.post("/api/v1/telegram/send-reply-keyboard",{channelToken:e.channelToken,chatId:e.chatId,text:e.text,keyboard:e.keyboard,resizeKeyboard:e.resizeKeyboard,oneTimeKeyboard:e.oneTimeKeyboard},t)}async editMessage(e,t){return this.httpClient.post("/api/v1/telegram/edit-message",{channelToken:e.channelToken,chatId:e.chatId,messageId:e.messageId,text:e.text,parseMode:e.parseMode},t)}async deleteMessage(e,t){return this.httpClient.post("/api/v1/telegram/delete-message",{channelToken:e.channelToken,chatId:e.chatId,messageId:e.messageId},t)}async downloadMedia(e,t){return this.httpClient.post("/api/v1/telegram/download-media",{channelToken:e.channelToken,fileId:e.fileId},t)}};var u=class{constructor(e){this.httpClient=e;}async sendText(e,t){return this.httpClient.post("/api/v1/webchat/send-text",{channelToken:e.channelToken,chatId:e.chatId,type:"text",content:{text:e.messageText,typingTime:e.typingTime},typing:e.typing},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/webchat/send-media",{channelToken:e.channelToken,chatId:e.chatId,type:e.type,content:{url:e.fileUrl,caption:e.caption,typingTime:e.typingTime},typing:e.typing},t)}async sendCarousel(e,t){return this.httpClient.post("/api/v1/webchat/send-carousel",{channelToken:e.channelToken,chatId:e.chatId,type:"carousel",content:{cards:e.cards.map(n=>({title:n.title,subtitle:n.subtitle,imageUrl:n.imageUrl,buttons:n.buttons?.map(s=>({id:s.id||`btn_${Date.now()}_${Math.random()}`,text:s.text,type:s.type,value:s.value,url:s.url}))})),typingTime:e.typingTime},typing:e.typing},t)}async sendForm(e,t){return this.httpClient.post("/api/v1/webchat/send-form",{channelToken:e.channelToken,chatId:e.chatId,type:"form",content:{id:e.id,title:e.title,submitText:e.submitButtonText,fields:e.fields.map(n=>({id:n.id||n.name,type:n.type,label:n.label,placeholder:n.placeholder,required:n.required,options:n.options})),typingTime:e.typingTime},typing:e.typing},t)}async sendQuickReplies(e,t){return this.httpClient.post("/api/v1/webchat/send-quick-replies",{channelToken:e.channelToken,chatId:e.chatId,type:"quickReplies",content:{text:e.messageText,quickReplies:e.quickReplies.map(n=>({id:n.id||`qr_${Date.now()}_${Math.random()}`,text:n.text,value:n.value})),typingTime:e.typingTime},typing:e.typing},t)}async sendCard(e,t){return this.httpClient.post("/api/v1/webchat/send-card",{channelToken:e.channelToken,chatId:e.chatId,type:"card",content:{title:e.title,subtitle:e.description,imageUrl:e.imageUrl,buttons:e.buttons?.map(n=>({id:n.id||`btn_${Date.now()}_${Math.random()}`,text:n.text,type:n.type,value:n.value,url:n.url})),typingTime:e.typingTime},typing:e.typing},t)}async sendButtons(e,t){return this.httpClient.post("/api/v1/webchat/send-buttons",{channelToken:e.channelToken,chatId:e.chatId,type:"buttons",content:{text:e.messageText,buttons:e.buttons.map(n=>({id:n.id||`btn_${Date.now()}_${Math.random()}`,text:n.text,type:n.type,value:n.value,url:n.url})),typingTime:e.typingTime},typing:e.typing},t)}};var m=class{constructor(e){this.httpClient=e;}async listPosts(e,t){return this.httpClient.post("/api/v1/facebook/list-posts",{channelToken:e.channelToken,pageId:e.pageId,limit:e.limit},t)}async listComments(e,t){return this.httpClient.post("/api/v1/facebook/list-comments",{channelToken:e.channelToken,postId:e.postId,limit:e.limit},t)}async createPost(e,t){return this.httpClient.post("/api/v1/facebook/create-post",{channelToken:e.channelToken,pageId:e.pageId,message:e.message,link:e.link},t)}async replyComment(e,t){return this.httpClient.post("/api/v1/facebook/reply-comment",{channelToken:e.channelToken,commentId:e.commentId,message:e.message},t)}async deleteComment(e,t){return this.httpClient.post("/api/v1/facebook/delete-comment",{channelToken:e.channelToken,commentId:e.commentId},t)}async sendText(e,t){return this.httpClient.post("/api/v1/facebook/send-text",{channelToken:e.channelToken,recipientId:e.recipientId,message:e.message},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/facebook/send-media",{channelToken:e.channelToken,recipientId:e.recipientId,fileUrl:e.fileUrl,type:e.type,caption:e.caption},t)}async sendButtons(e,t){return this.httpClient.post("/api/v1/facebook/send-buttons",{channelToken:e.channelToken,recipientId:e.recipientId,message:e.message,buttons:e.buttons},t)}async sendSticker(e,t){return this.httpClient.post("/api/v1/facebook/send-sticker",{channelToken:e.channelToken,recipientId:e.recipientId,stickerId:e.stickerId},t)}async replyMessage(e,t){return this.httpClient.post("/api/v1/facebook/reply-message",{channelToken:e.channelToken,messageId:e.messageId,message:e.message},t)}async replyMedia(e,t){return this.httpClient.post("/api/v1/facebook/reply-media",{channelToken:e.channelToken,messageId:e.messageId,fileUrl:e.fileUrl,type:e.type,caption:e.caption},t)}async sharePost(e,t){return this.httpClient.post("/api/v1/facebook/share-post",{channelToken:e.channelToken,mediaId:e.mediaId,recipientId:e.recipientId},t)}async getUserProfile(e,t){return this.httpClient.post("/api/v1/facebook/user-profile",{channelToken:e.channelToken,userId:e.userId},t)}async getPageProfile(e,t){return this.httpClient.post("/api/v1/facebook/page-profile",{channelToken:e.channelToken,pageId:e.pageId},t)}async downloadMedia(e,t){return this.httpClient.post("/api/v1/facebook/download-media",{channelToken:e.channelToken,url:e.url},t)}};var T=class{constructor(e){this.httpClient=e;}async sendPrivateReply(e,t){return this.httpClient.post("/api/v1/instagram/private-reply",{channelToken:e.channelToken,commentId:e.commentId,message:e.message},t)}async sendText(e,t){return this.httpClient.post("/api/v1/instagram/messages/text",{channelToken:e.channelToken,recipientId:e.recipientId,text:e.text,...e.tags&&{tags:e.tags}},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/instagram/messages/media",{channelToken:e.channelToken,recipientId:e.recipientId,fileUrl:e.fileUrl,type:e.type,caption:e.caption},t)}async sendImages(e,t){return this.httpClient.post("/api/v1/instagram/messages/images",{channelToken:e.channelToken,recipientId:e.recipientId,images:e.images},t)}async sendSticker(e,t){return this.httpClient.post("/api/v1/instagram/messages/sticker",{channelToken:e.channelToken,recipientId:e.recipientId,stickerType:e.stickerType},t)}async reactMessage(e,t){return this.httpClient.post("/api/v1/instagram/messages/reaction",{channelToken:e.channelToken,messageId:e.messageId,reactionType:e.reactionType},t)}async removeReaction(e,t){return this.httpClient.delete("/api/v1/instagram/messages/reaction",t,{channelToken:e.channelToken,recipientId:e.recipientId,messageId:e.messageId})}async sendQuickReplies(e,t){return this.httpClient.post("/api/v1/instagram/messages/quick-replies",{channelToken:e.channelToken,recipientId:e.recipientId,message:e.message,quickReplies:e.quickReplies},t)}async sendGenericTemplate(e,t){return this.httpClient.post("/api/v1/instagram/messages/generic-template",{channelToken:e.channelToken,recipientId:e.recipientId,elements:e.elements},t)}async sendButtonTemplate(e,t){return this.httpClient.post("/api/v1/instagram/messages/button-template",{channelToken:e.channelToken,recipientId:e.recipientId,text:e.text,buttons:e.buttons},t)}async sendSenderAction(e,t){return this.httpClient.post("/api/v1/instagram/messages/sender-action",{channelToken:e.channelToken,recipientId:e.recipientId,action:e.action},t)}async getUserProfile(e,t){return this.httpClient.post("/api/v1/instagram/user-profile",{channelToken:e.channelToken,userId:e.userId},t)}async listPosts(e,t){return this.httpClient.post("/api/v1/instagram/posts",{channelToken:e.channelToken,userId:e.userId,limit:e.limit},t)}async getBusinessProfile(e,t){return this.httpClient.post("/api/v1/instagram/business-profile",{channelToken:e.channelToken},t)}async downloadMedia(e,t){return this.httpClient.post("/api/v1/instagram/download-media",{channelToken:e.channelToken,url:e.url},t)}async createMediaContainer(e,t){return this.httpClient.post("/api/v1/instagram/media",{channelToken:e.channelToken,image_url:e.image_url,video_url:e.video_url,media_type:e.media_type,caption:e.caption,is_carousel_item:e.is_carousel_item,children:e.children,upload_type:e.upload_type,trial_params:e.trial_params,alt_text:e.alt_text,location_id:e.location_id,product_tags:e.product_tags,user_tags:e.user_tags},t)}async publishMedia(e,t){return this.httpClient.post("/api/v1/instagram/media_publish",{channelToken:e.channelToken,creation_id:e.creation_id},t)}async getContainerStatus(e,t){return this.httpClient.post(`/api/v1/instagram/media/${e.container_id}/status`,{channelToken:e.channelToken},t)}async getPublishingLimit(e,t){return this.httpClient.post("/api/v1/instagram/content_publishing_limit",{channelToken:e.channelToken},t)}async uploadVideo(e,t){return this.httpClient.post("/api/v1/instagram/upload",{channelToken:e.channelToken,container_id:e.container_id,file_url:e.file_url,offset:e.offset,file_size:e.file_size},t)}};var k=class{constructor(e){this.httpClient=new l(e),this.auth=new d(this.httpClient),this.channels=new c(this.httpClient),this.integrations=new h(this.httpClient),this.whatsapp=new p(this.httpClient),this.telegram=new g(this.httpClient),this.webchat=new u(this.httpClient),this.facebook=new m(this.httpClient),this.instagram=new T(this.httpClient);}},K=k;
|
|
6
|
+
var I="https://api.oficialapi.com.br",l=class{constructor(e){this.config={clientId:e.clientId,clientSecret:e.clientSecret,timeout:e.timeout||3e4,maxRetries:e.maxRetries||3,retryDelay:e.retryDelay||1e3,headers:e.headers||{}},this.axiosInstance=P__default.default.create({baseURL:I,timeout:this.config.timeout,headers:{"Content-Type":"application/json",...this.config.headers}}),this.setupInterceptors();}setupInterceptors(){this.axiosInstance.interceptors.request.use(e=>{if(e.url?.includes("/auth/token"))return e;let t=e;return t.accessToken&&e.headers&&(e.headers.Authorization=`Bearer ${t.accessToken}`),e},e=>Promise.reject(e)),this.axiosInstance.interceptors.response.use(e=>e,async e=>{let t=e.config;if(!t)return Promise.reject(this.formatError(e));if((!e.response||e.response.status>=500&&e.response.status<600)&&(!t._retryCount||t._retryCount<this.config.maxRetries)){t._retryCount=(t._retryCount||0)+1;let s=this.config.retryDelay*t._retryCount;return await new Promise(i=>setTimeout(i,s)),this.axiosInstance(t)}return Promise.reject(this.formatError(e))});}formatError(e){if(e.response){let t=e.response.data,n=t?.error?.message||t?.message||e.message,s=t?.error?.details||[],i=new Error(n);return i.status=e.response.status,i.data=e.response.data,i.details=s,i}return e.request?new Error("Erro de conex\xE3o com a API. Verifique sua conex\xE3o com a internet."):e}async get(e,t,n){let s={...n,accessToken:t};return (await this.axiosInstance.get(e,s)).data}async post(e,t,n,s){let i={...s,accessToken:n};return (await this.axiosInstance.post(e,t,i)).data}async put(e,t,n,s){let i={...s,accessToken:n};return (await this.axiosInstance.put(e,t,i)).data}async delete(e,t,n,s){let i={...s,accessToken:t,data:n};return (await this.axiosInstance.delete(e,i)).data}async upload(e,t,n,s="file",i){let o=new FormData;if(t instanceof Buffer){let y=new Blob([t]);o.append(s,y);}else o.append(s,t);i&&Object.entries(i).forEach(([y,r])=>{r!=null&&o.append(y,typeof r=="string"?r:JSON.stringify(r));});let C={headers:{"Content-Type":"multipart/form-data"},accessToken:n};return (await this.axiosInstance.post(e,o,C)).data}};var d=class{constructor(e){this.httpClient=e;}async getToken(e,t){let n=await this.httpClient.post("/api/v1/auth/token",{client_id:e,client_secret:t});if(!n.success||!n.data)throw new Error(n.error?.message||"Falha ao obter token");return n.data}};var c=class{constructor(e){this.httpClient=e;}async list(e){let t=await this.httpClient.get("/api/v1/channels",e);if(!t.success||!t.data)throw new Error(t.error?.message||"Falha ao listar canais");return Array.isArray(t.data)?t.data:[t.data]}};var h=class{constructor(e){this.httpClient=e;}async createWebhook(e,t){let n=await this.httpClient.post("/api/v1/integrations",{url:e.url,expiresInDays:e.expiresInDays},t);if(!n.success||!n.data)throw new Error(n.error?.message||"Falha ao criar webhook");return n.data}};var p=class{constructor(e){this.httpClient=e;}async sendText(e,t){return this.httpClient.post("/api/v1/whatsapp/send-message",{channelToken:e.channelToken,sender:e.sender,messageText:e.messageText},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/whatsapp/send-media",{channelToken:e.channelToken,sender:e.sender,fileUrl:e.fileUrl,type:e.type,caption:e.caption,...e.fileName&&{fileName:e.fileName}},t)}async sendTemplate(e,t){return this.httpClient.post("/api/v1/whatsapp/send-template",{channelToken:e.channelToken,sender:e.sender,templateName:e.templateName,languageCode:e.languageCode,components:e.components},t)}async sendButtons(e,t){return this.httpClient.post("/api/v1/whatsapp/send-buttons",{channelToken:e.channelToken,sender:e.sender,text:e.text,buttons:e.buttons,...e.media&&{media:e.media}},t)}async sendList(e,t){return this.httpClient.post("/api/v1/whatsapp/send-list",{channelToken:e.channelToken,sender:e.sender,headerText:e.headerText,bodyText:e.bodyText,buttonText:e.buttonText,sections:e.sections,...e.footerText&&{footerText:e.footerText}},t)}async replyMessage(e,t){return this.httpClient.post("/api/v1/whatsapp/reply-message",{channelToken:e.channelToken,sender:e.sender,messageText:e.messageText,...e.replyMessageId&&{replyMessageId:e.replyMessageId},...e.preview_url!==void 0&&{preview_url:e.preview_url}},t)}async reactMessage(e,t){return this.httpClient.post("/api/v1/whatsapp/react-message",{channelToken:e.channelToken,sender:e.sender,emoji:e.emoji,...e.message_id&&{message_id:e.message_id}},t)}async createTemplate(e,t){return this.httpClient.post("/api/v1/whatsapp/create-template",{channelToken:e.channelToken,name:e.name,language:e.language,category:e.category,components:e.components},t)}async listTemplates(e,t){return this.httpClient.get(`/api/v1/whatsapp/templates?channelToken=${encodeURIComponent(e)}`,t)}async getTemplate(e,t,n){return this.httpClient.get(`/api/v1/whatsapp/templates/${t}?channelToken=${encodeURIComponent(e)}`,n)}async uploadMedia(e,t){return this.httpClient.upload("/api/v1/whatsapp/upload-media",e.file,t,"file",{channelToken:e.channelToken,mediaType:e.mediaType,...e.filename&&{filename:e.filename}})}async sendOrderDetails(e,t){return this.httpClient.post("/api/v1/whatsapp/send-order-details",{channelToken:e.channelToken,sender:e.sender,...e.headerText&&{headerText:e.headerText},bodyText:e.bodyText,...e.footerText&&{footerText:e.footerText},reference_id:e.reference_id,type:e.type,currency:e.currency,total_amount:e.total_amount,order:e.order,...e.payment_settings&&{payment_settings:e.payment_settings}},t)}async sendOrderStatus(e,t){return this.httpClient.post("/api/v1/whatsapp/send-order-status",{channelToken:e.channelToken,sender:e.sender,bodyText:e.bodyText,...e.footerText&&{footerText:e.footerText},reference_id:e.reference_id,order_status:e.order_status,...e.status_description&&{status_description:e.status_description},...e.payment_status&&{payment_status:e.payment_status},...e.payment_timestamp!==void 0&&{payment_timestamp:e.payment_timestamp}},t)}async sendAudio(e,t){return this.httpClient.post("/api/v1/whatsapp/send-audio",{channelToken:e.channelToken,sender:e.sender,mediaId:e.mediaId,...e.voice!==void 0&&{voice:e.voice}},t)}async sendSticker(e,t){return this.httpClient.post("/api/v1/whatsapp/send-sticker",{channelToken:e.channelToken,sender:e.sender,mediaId:e.mediaId},t)}async sendVideo(e,t){return this.httpClient.post("/api/v1/whatsapp/send-video",{channelToken:e.channelToken,sender:e.sender,mediaId:e.mediaId,...e.caption&&{caption:e.caption}},t)}async sendDocument(e,t){return this.httpClient.post("/api/v1/whatsapp/send-document",{channelToken:e.channelToken,sender:e.sender,mediaId:e.mediaId,...e.filename&&{filename:e.filename},...e.caption&&{caption:e.caption}},t)}async sendContact(e,t){return this.httpClient.post("/api/v1/whatsapp/send-contact",{channelToken:e.channelToken,sender:e.sender,contacts:e.contacts},t)}async sendLocation(e,t){return this.httpClient.post("/api/v1/whatsapp/send-location",{channelToken:e.channelToken,sender:e.sender,latitude:e.latitude,longitude:e.longitude,name:e.name,address:e.address},t)}async sendLocationRequest(e,t){return this.httpClient.post("/api/v1/whatsapp/send-location-request",{channelToken:e.channelToken,sender:e.sender,bodyText:e.bodyText,...e.headerText&&{headerText:e.headerText},...e.footerText&&{footerText:e.footerText}},t)}async sendCtaUrl(e,t){return this.httpClient.post("/api/v1/whatsapp/send-cta-url",{channelToken:e.channelToken,sender:e.sender,bodyText:e.bodyText,buttonText:e.buttonText,url:e.url,...e.header&&{header:e.header},...e.footerText&&{footerText:e.footerText}},t)}async sendMediaCarousel(e,t){return this.httpClient.post("/api/v1/whatsapp/send-media-carousel",{channelToken:e.channelToken,sender:e.sender,bodyText:e.bodyText,cards:e.cards},t)}async downloadMedia(e,t){return this.httpClient.post("/api/v1/whatsapp/download-media",{channelToken:e.channelToken,url:e.url},t)}};var g=class{constructor(e){this.httpClient=e;}async sendMessage(e,t){return this.httpClient.post("/api/v1/telegram/send-message",{channelToken:e.channelToken,chatId:e.chatId,text:e.text,parseMode:e.parseMode,replyToMessageId:e.replyToMessageId,disableNotification:e.disableNotification},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/telegram/send-media",{channelToken:e.channelToken,chatId:e.chatId,fileUrl:e.fileUrl,type:e.type,caption:e.caption,parseMode:e.parseMode,replyToMessageId:e.replyToMessageId},t)}async sendButtons(e,t){return this.httpClient.post("/api/v1/telegram/send-buttons",{channelToken:e.channelToken,chatId:e.chatId,text:e.text,buttons:e.buttons,parseMode:e.parseMode},t)}async sendLocation(e,t){return this.httpClient.post("/api/v1/telegram/send-location",{channelToken:e.channelToken,chatId:e.chatId,latitude:e.latitude,longitude:e.longitude,livePeriod:e.livePeriod},t)}async sendContact(e,t){return this.httpClient.post("/api/v1/telegram/send-contact",{channelToken:e.channelToken,chatId:e.chatId,phoneNumber:e.phoneNumber,firstName:e.firstName,lastName:e.lastName,vcard:e.vcard},t)}async sendPoll(e,t){return this.httpClient.post("/api/v1/telegram/send-poll",{channelToken:e.channelToken,chatId:e.chatId,question:e.question,options:e.options,isAnonymous:e.isAnonymous,type:e.type,correctOptionId:e.correctOptionId},t)}async sendVenue(e,t){return this.httpClient.post("/api/v1/telegram/send-venue",{channelToken:e.channelToken,chatId:e.chatId,latitude:e.latitude,longitude:e.longitude,title:e.title,address:e.address,foursquareId:e.foursquareId},t)}async sendDice(e,t){return this.httpClient.post("/api/v1/telegram/send-dice",{channelToken:e.channelToken,chatId:e.chatId,emoji:e.emoji},t)}async sendSticker(e,t){return this.httpClient.post("/api/v1/telegram/send-sticker",{channelToken:e.channelToken,chatId:e.chatId,stickerUrl:e.stickerUrl},t)}async sendVoice(e,t){return this.httpClient.post("/api/v1/telegram/send-voice",{channelToken:e.channelToken,chatId:e.chatId,voiceUrl:e.voiceUrl,caption:e.caption,duration:e.duration},t)}async sendVideoNote(e,t){return this.httpClient.post("/api/v1/telegram/send-video-note",{channelToken:e.channelToken,chatId:e.chatId,videoNoteUrl:e.videoNoteUrl,duration:e.duration,length:e.length},t)}async sendMediaGroup(e,t){return this.httpClient.post("/api/v1/telegram/send-media-group",{channelToken:e.channelToken,chatId:e.chatId,media:e.media},t)}async sendReplyKeyboard(e,t){return this.httpClient.post("/api/v1/telegram/send-reply-keyboard",{channelToken:e.channelToken,chatId:e.chatId,text:e.text,keyboard:e.keyboard,resizeKeyboard:e.resizeKeyboard,oneTimeKeyboard:e.oneTimeKeyboard},t)}async editMessage(e,t){return this.httpClient.post("/api/v1/telegram/edit-message",{channelToken:e.channelToken,chatId:e.chatId,messageId:e.messageId,text:e.text,parseMode:e.parseMode},t)}async deleteMessage(e,t){return this.httpClient.post("/api/v1/telegram/delete-message",{channelToken:e.channelToken,chatId:e.chatId,messageId:e.messageId},t)}async downloadMedia(e,t){return this.httpClient.post("/api/v1/telegram/download-media",{channelToken:e.channelToken,fileId:e.fileId},t)}};var u=class{constructor(e){this.httpClient=e;}async sendText(e,t){return this.httpClient.post("/api/v1/webchat/send-text",{channelToken:e.channelToken,chatId:e.chatId,type:"text",content:{text:e.messageText,typingTime:e.typingTime},typing:e.typing},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/webchat/send-media",{channelToken:e.channelToken,chatId:e.chatId,type:e.type,content:{url:e.fileUrl,caption:e.caption,typingTime:e.typingTime},typing:e.typing},t)}async sendCarousel(e,t){return this.httpClient.post("/api/v1/webchat/send-carousel",{channelToken:e.channelToken,chatId:e.chatId,type:"carousel",content:{cards:e.cards.map(n=>({title:n.title,subtitle:n.subtitle,imageUrl:n.imageUrl,buttons:n.buttons?.map(s=>({id:s.id||`btn_${Date.now()}_${Math.random()}`,text:s.text,type:s.type,value:s.value,url:s.url}))})),typingTime:e.typingTime},typing:e.typing},t)}async sendForm(e,t){return this.httpClient.post("/api/v1/webchat/send-form",{channelToken:e.channelToken,chatId:e.chatId,type:"form",content:{id:e.id,title:e.title,submitText:e.submitButtonText,fields:e.fields.map(n=>({id:n.id||n.name,type:n.type,label:n.label,placeholder:n.placeholder,required:n.required,options:n.options})),typingTime:e.typingTime},typing:e.typing},t)}async sendQuickReplies(e,t){return this.httpClient.post("/api/v1/webchat/send-quick-replies",{channelToken:e.channelToken,chatId:e.chatId,type:"quickReplies",content:{text:e.messageText,quickReplies:e.quickReplies.map(n=>({id:n.id||`qr_${Date.now()}_${Math.random()}`,text:n.text,value:n.value})),typingTime:e.typingTime},typing:e.typing},t)}async sendCard(e,t){return this.httpClient.post("/api/v1/webchat/send-card",{channelToken:e.channelToken,chatId:e.chatId,type:"card",content:{title:e.title,subtitle:e.description,imageUrl:e.imageUrl,buttons:e.buttons?.map(n=>({id:n.id||`btn_${Date.now()}_${Math.random()}`,text:n.text,type:n.type,value:n.value,url:n.url})),typingTime:e.typingTime},typing:e.typing},t)}async sendButtons(e,t){return this.httpClient.post("/api/v1/webchat/send-buttons",{channelToken:e.channelToken,chatId:e.chatId,type:"buttons",content:{text:e.messageText,buttons:e.buttons.map(n=>({id:n.id||`btn_${Date.now()}_${Math.random()}`,text:n.text,type:n.type,value:n.value,url:n.url})),typingTime:e.typingTime},typing:e.typing},t)}};var m=class{constructor(e){this.httpClient=e;}async listPosts(e,t){return this.httpClient.post("/api/v1/facebook/list-posts",{channelToken:e.channelToken,pageId:e.pageId,limit:e.limit},t)}async listComments(e,t){return this.httpClient.post("/api/v1/facebook/list-comments",{channelToken:e.channelToken,postId:e.postId,limit:e.limit},t)}async createPost(e,t){return this.httpClient.post("/api/v1/facebook/create-post",{channelToken:e.channelToken,pageId:e.pageId,message:e.message,link:e.link},t)}async replyComment(e,t){return this.httpClient.post("/api/v1/facebook/reply-comment",{channelToken:e.channelToken,commentId:e.commentId,message:e.message},t)}async deleteComment(e,t){return this.httpClient.post("/api/v1/facebook/delete-comment",{channelToken:e.channelToken,commentId:e.commentId},t)}async sendText(e,t){return this.httpClient.post("/api/v1/facebook/send-text",{channelToken:e.channelToken,recipientId:e.recipientId,message:e.message},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/facebook/send-media",{channelToken:e.channelToken,recipientId:e.recipientId,fileUrl:e.fileUrl,type:e.type,caption:e.caption},t)}async sendButtons(e,t){return this.httpClient.post("/api/v1/facebook/send-buttons",{channelToken:e.channelToken,recipientId:e.recipientId,message:e.message,buttons:e.buttons},t)}async sendSticker(e,t){return this.httpClient.post("/api/v1/facebook/send-sticker",{channelToken:e.channelToken,recipientId:e.recipientId,stickerId:e.stickerId},t)}async replyMessage(e,t){return this.httpClient.post("/api/v1/facebook/reply-message",{channelToken:e.channelToken,messageId:e.messageId,message:e.message},t)}async replyMedia(e,t){return this.httpClient.post("/api/v1/facebook/reply-media",{channelToken:e.channelToken,messageId:e.messageId,fileUrl:e.fileUrl,type:e.type,caption:e.caption},t)}async sharePost(e,t){return this.httpClient.post("/api/v1/facebook/share-post",{channelToken:e.channelToken,mediaId:e.mediaId,recipientId:e.recipientId},t)}async getUserProfile(e,t){return this.httpClient.post("/api/v1/facebook/user-profile",{channelToken:e.channelToken,userId:e.userId},t)}async getPageProfile(e,t){return this.httpClient.post("/api/v1/facebook/page-profile",{channelToken:e.channelToken,pageId:e.pageId},t)}async downloadMedia(e,t){return this.httpClient.post("/api/v1/facebook/download-media",{channelToken:e.channelToken,url:e.url},t)}};var T=class{constructor(e){this.httpClient=e;}async sendPrivateReply(e,t){return this.httpClient.post("/api/v1/instagram/private-reply",{channelToken:e.channelToken,commentId:e.commentId,message:e.message},t)}async sendText(e,t){return this.httpClient.post("/api/v1/instagram/messages/text",{channelToken:e.channelToken,recipientId:e.recipientId,text:e.text,...e.tags&&{tags:e.tags}},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/instagram/messages/media",{channelToken:e.channelToken,recipientId:e.recipientId,attachment:e.attachment,...e.tags&&{tags:e.tags}},t)}async sendImages(e,t){return this.httpClient.post("/api/v1/instagram/messages/images",{channelToken:e.channelToken,recipientId:e.recipientId,images:e.images},t)}async sendSticker(e,t){return this.httpClient.post("/api/v1/instagram/messages/sticker",{channelToken:e.channelToken,recipientId:e.recipientId,stickerType:e.stickerType},t)}async reactMessage(e,t){return this.httpClient.post("/api/v1/instagram/messages/reaction",{channelToken:e.channelToken,messageId:e.messageId,reactionType:e.reactionType},t)}async removeReaction(e,t){return this.httpClient.delete("/api/v1/instagram/messages/reaction",t,{channelToken:e.channelToken,recipientId:e.recipientId,messageId:e.messageId})}async sendQuickReplies(e,t){return this.httpClient.post("/api/v1/instagram/messages/quick-replies",{channelToken:e.channelToken,recipientId:e.recipientId,message:e.message,quickReplies:e.quickReplies},t)}async sendGenericTemplate(e,t){return this.httpClient.post("/api/v1/instagram/messages/generic-template",{channelToken:e.channelToken,recipientId:e.recipientId,elements:e.elements},t)}async sendButtonTemplate(e,t){return this.httpClient.post("/api/v1/instagram/messages/button-template",{channelToken:e.channelToken,recipientId:e.recipientId,text:e.text,buttons:e.buttons},t)}async sendSenderAction(e,t){return this.httpClient.post("/api/v1/instagram/messages/sender-action",{channelToken:e.channelToken,recipientId:e.recipientId,action:e.action},t)}async getUserProfile(e,t){return this.httpClient.post("/api/v1/instagram/user-profile",{channelToken:e.channelToken,userId:e.userId},t)}async listPosts(e,t){return this.httpClient.post("/api/v1/instagram/posts",{channelToken:e.channelToken,userId:e.userId,limit:e.limit},t)}async getBusinessProfile(e,t){return this.httpClient.post("/api/v1/instagram/business-profile",{channelToken:e.channelToken},t)}async downloadMedia(e,t){return this.httpClient.post("/api/v1/instagram/download-media",{channelToken:e.channelToken,url:e.url},t)}async createMediaContainer(e,t){return this.httpClient.post("/api/v1/instagram/media",{channelToken:e.channelToken,image_url:e.image_url,video_url:e.video_url,media_type:e.media_type,caption:e.caption,is_carousel_item:e.is_carousel_item,children:e.children,upload_type:e.upload_type,trial_params:e.trial_params,alt_text:e.alt_text,location_id:e.location_id,product_tags:e.product_tags,user_tags:e.user_tags},t)}async publishMedia(e,t){return this.httpClient.post("/api/v1/instagram/media_publish",{channelToken:e.channelToken,creation_id:e.creation_id},t)}async getContainerStatus(e,t){return this.httpClient.post(`/api/v1/instagram/media/${e.container_id}/status`,{channelToken:e.channelToken},t)}async getPublishingLimit(e,t){return this.httpClient.post("/api/v1/instagram/content_publishing_limit",{channelToken:e.channelToken},t)}async uploadVideo(e,t){return this.httpClient.post("/api/v1/instagram/upload",{channelToken:e.channelToken,container_id:e.container_id,file_url:e.file_url,offset:e.offset,file_size:e.file_size},t)}};var k=class{constructor(e){this.httpClient=new l(e),this.auth=new d(this.httpClient),this.channels=new c(this.httpClient),this.integrations=new h(this.httpClient),this.whatsapp=new p(this.httpClient),this.telegram=new g(this.httpClient),this.webchat=new u(this.httpClient),this.facebook=new m(this.httpClient),this.instagram=new T(this.httpClient);}},K=k;
|
|
7
7
|
exports.OficialAPISDK=k;exports.default=K;//# sourceMappingURL=index.js.map
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client/http-client.ts","../src/modules/auth.ts","../src/modules/channels.ts","../src/modules/integrations.ts","../src/modules/whatsapp.ts","../src/modules/telegram.ts","../src/modules/webchat.ts","../src/modules/facebook.ts","../src/modules/instagram.ts","../src/index.ts"],"names":["API_BASE_URL","HttpClient","config","axios","requestConfig","error","response","delay","resolve","data","message","errorDetails","formattedError","url","accessToken","file","fieldName","additionalData","formData","blob","key","value","AuthModule","httpClient","clientId","clientSecret","ChannelsModule","IntegrationsModule","params","WhatsAppModule","channelToken","templateId","TelegramModule","WebChatModule","card","btn","field","qr","FacebookModule","InstagramModule","OficialAPISDK","index_default"],"mappings":"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","file":"index.js","sourcesContent":["import axios, { AxiosInstance, AxiosError, AxiosRequestConfig } from 'axios';\r\nimport { SDKConfig, ApiResponse } from '../types';\r\n\r\n/**\r\n * URL base da API OficialAPI (fixa)\r\n */\r\nconst API_BASE_URL = 'https://api.oficialapi.com.br';\r\n\r\n/**\r\n * Configuração estendida para requisições com token\r\n */\r\ninterface RequestConfigWithToken extends AxiosRequestConfig {\r\n accessToken?: string;\r\n}\r\n\r\n/**\r\n * Cliente HTTP robusto com retry automático e tratamento de erros\r\n * Cada requisição deve receber o accessToken como parâmetro\r\n */\r\nexport class HttpClient {\r\n private axiosInstance: AxiosInstance;\r\n private config: {\r\n clientId: string;\r\n clientSecret: string;\r\n timeout: number;\r\n maxRetries: number;\r\n retryDelay: number;\r\n headers: Record<string, string>;\r\n };\r\n\r\n constructor(config: SDKConfig) {\r\n this.config = {\r\n clientId: config.clientId,\r\n clientSecret: config.clientSecret,\r\n timeout: config.timeout || 30000,\r\n maxRetries: config.maxRetries || 3,\r\n retryDelay: config.retryDelay || 1000,\r\n headers: config.headers || {},\r\n };\r\n\r\n this.axiosInstance = axios.create({\r\n baseURL: API_BASE_URL,\r\n timeout: this.config.timeout,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...this.config.headers,\r\n },\r\n });\r\n\r\n this.setupInterceptors();\r\n }\r\n\r\n private setupInterceptors() {\r\n // Request interceptor - adiciona token de autenticação se fornecido\r\n this.axiosInstance.interceptors.request.use(\r\n (config) => {\r\n // Não adiciona token para endpoint de autenticação\r\n if (config.url?.includes('/auth/token')) {\r\n return config;\r\n }\r\n\r\n // Adiciona token se foi fornecido na configuração da requisição\r\n const requestConfig = config as RequestConfigWithToken;\r\n if (requestConfig.accessToken && config.headers) {\r\n config.headers.Authorization = `Bearer ${requestConfig.accessToken}`;\r\n }\r\n\r\n return config;\r\n },\r\n (error) => Promise.reject(error)\r\n );\r\n\r\n // Response interceptor - trata erros e retry\r\n this.axiosInstance.interceptors.response.use(\r\n (response) => response,\r\n async (error: AxiosError) => {\r\n const config = error.config as AxiosRequestConfig & { _retry?: boolean; _retryCount?: number };\r\n\r\n // Se não tiver config, não faz retry\r\n if (!config) {\r\n return Promise.reject(this.formatError(error));\r\n }\r\n\r\n // Retry para erros de rede ou 5xx\r\n const shouldRetry =\r\n (!error.response || (error.response.status >= 500 && error.response.status < 600)) &&\r\n (!config._retryCount || config._retryCount < this.config.maxRetries);\r\n\r\n if (shouldRetry) {\r\n config._retryCount = (config._retryCount || 0) + 1;\r\n const delay = this.config.retryDelay * config._retryCount;\r\n\r\n await new Promise((resolve) => setTimeout(resolve, delay));\r\n return this.axiosInstance(config);\r\n }\r\n\r\n return Promise.reject(this.formatError(error));\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Formata erros da API\r\n */\r\n private formatError(error: AxiosError): Error {\r\n if (error.response) {\r\n const data = error.response.data as ApiResponse;\r\n const message = data?.error?.message || data?.message || error.message;\r\n const errorDetails = data?.error?.details || [];\r\n\r\n const formattedError = new Error(message);\r\n (formattedError as any).status = error.response.status;\r\n (formattedError as any).data = error.response.data;\r\n (formattedError as any).details = errorDetails;\r\n\r\n return formattedError;\r\n }\r\n\r\n if (error.request) {\r\n return new Error('Erro de conexão com a API. Verifique sua conexão com a internet.');\r\n }\r\n\r\n return error;\r\n }\r\n\r\n /**\r\n * Faz uma requisição GET\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n */\r\n async get<T = any>(url: string, accessToken?: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const requestConfig: RequestConfigWithToken = {\r\n ...config,\r\n accessToken,\r\n };\r\n const response = await this.axiosInstance.get<ApiResponse<T>>(url, requestConfig);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição POST\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n */\r\n async post<T = any>(url: string, data?: any, accessToken?: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const requestConfig: RequestConfigWithToken = {\r\n ...config,\r\n accessToken,\r\n };\r\n const response = await this.axiosInstance.post<ApiResponse<T>>(url, data, requestConfig);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição PUT\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n */\r\n async put<T = any>(url: string, data?: any, accessToken?: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const requestConfig: RequestConfigWithToken = {\r\n ...config,\r\n accessToken,\r\n };\r\n const response = await this.axiosInstance.put<ApiResponse<T>>(url, data, requestConfig);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição DELETE\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n * @param data Dados a serem enviados no body (opcional)\r\n */\r\n async delete<T = any>(url: string, accessToken?: string, data?: any, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const requestConfig: RequestConfigWithToken = {\r\n ...config,\r\n accessToken,\r\n data, // Axios aceita data em DELETE através do config\r\n };\r\n const response = await this.axiosInstance.delete<ApiResponse<T>>(url, requestConfig);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz upload de arquivo\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n */\r\n async upload<T = any>(\r\n url: string,\r\n file: File | Blob | Buffer,\r\n accessToken?: string,\r\n fieldName: string = 'file',\r\n additionalData?: Record<string, any>\r\n ): Promise<ApiResponse<T>> {\r\n const formData = new FormData();\r\n\r\n if (file instanceof Buffer) {\r\n const blob = new Blob([file]);\r\n formData.append(fieldName, blob);\r\n } else {\r\n formData.append(fieldName, file);\r\n }\r\n\r\n if (additionalData) {\r\n Object.entries(additionalData).forEach(([key, value]) => {\r\n if (value !== undefined && value !== null) {\r\n formData.append(key, typeof value === 'string' ? value : JSON.stringify(value));\r\n }\r\n });\r\n }\r\n\r\n const requestConfig: RequestConfigWithToken = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n accessToken,\r\n };\r\n\r\n const response = await this.axiosInstance.post<ApiResponse<T>>(url, formData, requestConfig);\r\n\r\n return response.data;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { TokenResponse } from '../types';\r\n\r\n/**\r\n * Módulo de Autenticação\r\n */\r\nexport class AuthModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Gera um novo token de acesso\r\n */\r\n async getToken(clientId: string, clientSecret: string): Promise<TokenResponse> {\r\n const response = await this.httpClient.post<TokenResponse>('/api/v1/auth/token', {\r\n client_id: clientId,\r\n client_secret: clientSecret,\r\n });\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao obter token');\r\n }\r\n\r\n return response.data;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { Channel } from '../types';\r\n\r\n/**\r\n * Módulo de Canais\r\n */\r\nexport class ChannelsModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Lista todos os canais do usuário\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async list(accessToken: string): Promise<Channel[]> {\r\n const response = await this.httpClient.get<Channel[]>('/api/v1/channels', accessToken);\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao listar canais');\r\n }\r\n\r\n return Array.isArray(response.data) ? response.data : [response.data];\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { CreateWebhookParams, Webhook } from '../types';\r\n\r\n/**\r\n * Módulo de Integrações\r\n */\r\nexport class IntegrationsModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Cria um novo webhook\r\n * @param params Parâmetros do webhook\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async createWebhook(params: CreateWebhookParams, accessToken: string): Promise<Webhook> {\r\n const response = await this.httpClient.post<Webhook>(\r\n '/api/v1/integrations',\r\n {\r\n url: params.url,\r\n expiresInDays: params.expiresInDays,\r\n },\r\n accessToken\r\n );\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao criar webhook');\r\n }\r\n\r\n return response.data;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\nimport {\n SendWhatsAppTextParams,\n SendWhatsAppMediaParams,\n SendWhatsAppTemplateParams,\n SendWhatsAppButtonsParams,\n SendWhatsAppListParams,\n ReplyWhatsAppParams,\n ReactWhatsAppParams,\n CreateTemplateParams,\n UploadMediaParams,\n SendOrderDetailsParams,\n SendOrderStatusParams,\n SendWhatsAppAudioParams,\n SendWhatsAppStickerParams,\n SendWhatsAppVideoParams,\n SendWhatsAppDocumentParams,\n SendWhatsAppContactParams,\n SendWhatsAppLocationParams,\n SendWhatsAppLocationRequestParams,\n SendWhatsAppCtaUrlParams,\n SendWhatsAppMediaCarouselParams,\n DownloadWhatsAppMediaParams,\n} from '../types';\n\n/**\n * Módulo WhatsApp - Envio de mensagens e gerenciamento de templates\n */\nexport class WhatsAppModule {\n constructor(private httpClient: HttpClient) {}\n\n /**\n * Envia mensagem de texto\n * @param params Parâmetros da mensagem\n * @param accessToken Token de acesso do usuário\n */\n async sendText(params: SendWhatsAppTextParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-message', {\n channelToken: params.channelToken,\n sender: params.sender,\n messageText: params.messageText,\n }, accessToken);\n }\n\n /**\n * Envia mídia (imagem, vídeo, áudio, documento)\n * @param params Parâmetros da mídia\n * @param accessToken Token de acesso do usuário\n */\n async sendMedia(params: SendWhatsAppMediaParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-media', {\n channelToken: params.channelToken,\n sender: params.sender,\n fileUrl: params.fileUrl,\n type: params.type,\n caption: params.caption,\n ...(params.fileName && { fileName: params.fileName }),\n }, accessToken);\n }\n\n /**\n * Envia template\n * @param params Parâmetros do template\n * @param accessToken Token de acesso do usuário\n */\n async sendTemplate(params: SendWhatsAppTemplateParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-template', {\n channelToken: params.channelToken,\n sender: params.sender,\n templateName: params.templateName,\n languageCode: params.languageCode,\n components: params.components,\n }, accessToken);\n }\n\n /**\n * Envia mensagem com botões\n * @param params Parâmetros dos botões\n * @param accessToken Token de acesso do usuário\n */\n async sendButtons(params: SendWhatsAppButtonsParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-buttons', {\n channelToken: params.channelToken,\n sender: params.sender,\n text: params.text,\n buttons: params.buttons,\n ...(params.media && { media: params.media }),\n }, accessToken);\n }\n\n /**\n * Envia lista interativa\n * @param params Parâmetros da lista\n * @param accessToken Token de acesso do usuário\n */\n async sendList(params: SendWhatsAppListParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-list', {\n channelToken: params.channelToken,\n sender: params.sender,\n headerText: params.headerText,\n bodyText: params.bodyText,\n buttonText: params.buttonText,\n sections: params.sections,\n ...(params.footerText && { footerText: params.footerText }),\n }, accessToken);\n }\n\n /**\n * Responde a uma mensagem\n * @param params Parâmetros da resposta\n * @param accessToken Token de acesso do usuário\n */\n async replyMessage(params: ReplyWhatsAppParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/reply-message', {\n channelToken: params.channelToken,\n sender: params.sender,\n messageText: params.messageText,\n ...(params.replyMessageId && { replyMessageId: params.replyMessageId }),\n ...(params.preview_url !== undefined && { preview_url: params.preview_url }),\n }, accessToken);\n }\n\n /**\n * Reage a uma mensagem\n * @param params Parâmetros da reação\n * @param accessToken Token de acesso do usuário\n */\n async reactMessage(params: ReactWhatsAppParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/react-message', {\n channelToken: params.channelToken,\n sender: params.sender,\n emoji: params.emoji,\n ...(params.message_id && { message_id: params.message_id }),\n }, accessToken);\n }\n\n /**\n * Cria um template\n * @param params Parâmetros do template\n * @param accessToken Token de acesso do usuário\n */\n async createTemplate(params: CreateTemplateParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/create-template', {\n channelToken: params.channelToken,\n name: params.name,\n language: params.language,\n category: params.category,\n components: params.components,\n }, accessToken);\n }\n\n /**\n * Lista templates\n * @param token Token do canal\n * @param accessToken Token de acesso do usuário\n */\n async listTemplates(channelToken: string, accessToken: string) {\n return this.httpClient.get(`/api/v1/whatsapp/templates?channelToken=${encodeURIComponent(channelToken)}`, accessToken);\n }\n\n /**\n * Obtém detalhes de um template\n * @param channelToken Token do canal\n * @param templateId ID do template\n * @param accessToken Token de acesso do usuário\n */\n async getTemplate(channelToken: string, templateId: string, accessToken: string) {\n return this.httpClient.get(`/api/v1/whatsapp/templates/${templateId}?channelToken=${encodeURIComponent(channelToken)}`, accessToken);\n }\n\n /**\n * Faz upload de mídia para templates\n * @param params Parâmetros do upload\n * @param accessToken Token de acesso do usuário\n */\n async uploadMedia(params: UploadMediaParams, accessToken: string) {\n return this.httpClient.upload('/api/v1/whatsapp/upload-media', params.file, accessToken, 'file', {\n channelToken: params.channelToken,\n mediaType: params.mediaType,\n ...(params.filename && { filename: params.filename }),\n });\n }\n\n /**\n * Envia detalhes do pedido com opções de pagamento\n * @param params Parâmetros do pedido\n * @param accessToken Token de acesso do usuário\n */\n async sendOrderDetails(params: SendOrderDetailsParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-order-details', {\n channelToken: params.channelToken,\n sender: params.sender,\n ...(params.headerText && { headerText: params.headerText }),\n bodyText: params.bodyText,\n ...(params.footerText && { footerText: params.footerText }),\n reference_id: params.reference_id,\n type: params.type,\n currency: params.currency,\n total_amount: params.total_amount,\n order: params.order,\n ...(params.payment_settings && { payment_settings: params.payment_settings }),\n }, accessToken);\n }\n\n /**\n * Atualiza status do pedido\n * @param params Parâmetros do status\n * @param accessToken Token de acesso do usuário\n */\n async sendOrderStatus(params: SendOrderStatusParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-order-status', {\n channelToken: params.channelToken,\n sender: params.sender,\n bodyText: params.bodyText,\n ...(params.footerText && { footerText: params.footerText }),\n reference_id: params.reference_id,\n order_status: params.order_status,\n ...(params.status_description && { status_description: params.status_description }),\n ...(params.payment_status && { payment_status: params.payment_status }),\n ...(params.payment_timestamp !== undefined && { payment_timestamp: params.payment_timestamp }),\n }, accessToken);\n }\n\n /**\n * Envia áudio\n * @param params Parâmetros do áudio\n * @param accessToken Token de acesso do usuário\n */\n async sendAudio(params: SendWhatsAppAudioParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-audio', {\n channelToken: params.channelToken,\n sender: params.sender,\n mediaId: params.mediaId,\n ...(params.voice !== undefined && { voice: params.voice }),\n }, accessToken);\n }\n\n /**\n * Envia sticker\n * @param params Parâmetros do sticker\n * @param accessToken Token de acesso do usuário\n */\n async sendSticker(params: SendWhatsAppStickerParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-sticker', {\n channelToken: params.channelToken,\n sender: params.sender,\n mediaId: params.mediaId,\n }, accessToken);\n }\n\n /**\n * Envia vídeo\n * @param params Parâmetros do vídeo\n * @param accessToken Token de acesso do usuário\n */\n async sendVideo(params: SendWhatsAppVideoParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-video', {\n channelToken: params.channelToken,\n sender: params.sender,\n mediaId: params.mediaId,\n ...(params.caption && { caption: params.caption }),\n }, accessToken);\n }\n\n /**\n * Envia documento\n * @param params Parâmetros do documento\n * @param accessToken Token de acesso do usuário\n */\n async sendDocument(params: SendWhatsAppDocumentParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-document', {\n channelToken: params.channelToken,\n sender: params.sender,\n mediaId: params.mediaId,\n ...(params.filename && { filename: params.filename }),\n ...(params.caption && { caption: params.caption }),\n }, accessToken);\n }\n\n /**\n * Envia contato\n * @param params Parâmetros do contato\n * @param accessToken Token de acesso do usuário\n */\n async sendContact(params: SendWhatsAppContactParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-contact', {\n channelToken: params.channelToken,\n sender: params.sender,\n contacts: params.contacts,\n }, accessToken);\n }\n\n /**\n * Envia localização\n * @param params Parâmetros da localização\n * @param accessToken Token de acesso do usuário\n */\n async sendLocation(params: SendWhatsAppLocationParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-location', {\n channelToken: params.channelToken,\n sender: params.sender,\n latitude: params.latitude,\n longitude: params.longitude,\n name: params.name,\n address: params.address,\n }, accessToken);\n }\n\n /**\n * Solicita localização\n * @param params Parâmetros da solicitação\n * @param accessToken Token de acesso do usuário\n */\n async sendLocationRequest(params: SendWhatsAppLocationRequestParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-location-request', {\n channelToken: params.channelToken,\n sender: params.sender,\n bodyText: params.bodyText,\n ...(params.headerText && { headerText: params.headerText }),\n ...(params.footerText && { footerText: params.footerText }),\n }, accessToken);\n }\n\n /**\n * Envia mensagem com botão CTA URL\n * @param params Parâmetros do CTA\n * @param accessToken Token de acesso do usuário\n */\n async sendCtaUrl(params: SendWhatsAppCtaUrlParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-cta-url', {\n channelToken: params.channelToken,\n sender: params.sender,\n bodyText: params.bodyText,\n buttonText: params.buttonText,\n url: params.url,\n ...(params.header && { header: params.header }),\n ...(params.footerText && { footerText: params.footerText }),\n }, accessToken);\n }\n\n /**\n * Envia carrossel de mídia\n * @param params Parâmetros do carrossel\n * @param accessToken Token de acesso do usuário\n */\n async sendMediaCarousel(params: SendWhatsAppMediaCarouselParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-media-carousel', {\n channelToken: params.channelToken,\n sender: params.sender,\n bodyText: params.bodyText,\n cards: params.cards,\n }, accessToken);\n }\n\n /**\n * Baixa uma mídia descriptografada do WhatsApp usando a URL\n * @param params Parâmetros do download\n * @param accessToken Token de acesso do usuário\n */\n async downloadMedia(params: DownloadWhatsAppMediaParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/download-media', {\n channelToken: params.channelToken,\n url: params.url,\n }, accessToken);\n }\n}\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendTelegramTextParams,\r\n SendTelegramMediaParams,\r\n SendTelegramButtonsParams,\r\n SendTelegramLocationParams,\r\n SendTelegramContactParams,\r\n SendTelegramPollParams,\r\n SendTelegramVenueParams,\r\n SendTelegramDiceParams,\r\n SendTelegramStickerParams,\r\n SendTelegramVoiceParams,\r\n SendTelegramVideoNoteParams,\r\n SendTelegramMediaGroupParams,\r\n SendTelegramReplyKeyboardParams,\r\n EditTelegramMessageParams,\r\n DeleteTelegramMessageParams,\r\n DownloadTelegramMediaParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Telegram - Envio de mensagens e gerenciamento\r\n */\r\nexport class TelegramModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia mensagem de texto\r\n * @param params Parâmetros da mensagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMessage(params: SendTelegramTextParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-message', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n text: params.text,\r\n parseMode: params.parseMode,\r\n replyToMessageId: params.replyToMessageId,\r\n disableNotification: params.disableNotification,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n * @param params Parâmetros da mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMedia(params: SendTelegramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-media', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n parseMode: params.parseMode,\r\n replyToMessageId: params.replyToMessageId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem com botões\r\n * @param params Parâmetros dos botões\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendButtons(params: SendTelegramButtonsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-buttons', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n text: params.text,\r\n buttons: params.buttons,\r\n parseMode: params.parseMode,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia localização\r\n * @param params Parâmetros da localização\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendLocation(params: SendTelegramLocationParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-location', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n latitude: params.latitude,\r\n longitude: params.longitude,\r\n livePeriod: params.livePeriod,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia contato\r\n * @param params Parâmetros do contato\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendContact(params: SendTelegramContactParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-contact', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n phoneNumber: params.phoneNumber,\r\n firstName: params.firstName,\r\n lastName: params.lastName,\r\n vcard: params.vcard,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia enquete\r\n * @param params Parâmetros da enquete\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendPoll(params: SendTelegramPollParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-poll', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n question: params.question,\r\n options: params.options,\r\n isAnonymous: params.isAnonymous,\r\n type: params.type,\r\n correctOptionId: params.correctOptionId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia venue (local)\r\n * @param params Parâmetros do venue\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendVenue(params: SendTelegramVenueParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-venue', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n latitude: params.latitude,\r\n longitude: params.longitude,\r\n title: params.title,\r\n address: params.address,\r\n foursquareId: params.foursquareId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia dado/emoji animado\r\n * @param params Parâmetros do dado\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendDice(params: SendTelegramDiceParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-dice', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n emoji: params.emoji,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia sticker\r\n * @param params Parâmetros do sticker\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendSticker(params: SendTelegramStickerParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-sticker', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n stickerUrl: params.stickerUrl,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem de voz\r\n * @param params Parâmetros da voz\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendVoice(params: SendTelegramVoiceParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-voice', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n voiceUrl: params.voiceUrl,\r\n caption: params.caption,\r\n duration: params.duration,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia video note\r\n * @param params Parâmetros do video note\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendVideoNote(params: SendTelegramVideoNoteParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-video-note', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n videoNoteUrl: params.videoNoteUrl,\r\n duration: params.duration,\r\n length: params.length,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia grupo de mídia\r\n * @param params Parâmetros do grupo de mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMediaGroup(params: SendTelegramMediaGroupParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-media-group', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n media: params.media,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia teclado de resposta\r\n * @param params Parâmetros do teclado\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendReplyKeyboard(params: SendTelegramReplyKeyboardParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-reply-keyboard', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n text: params.text,\r\n keyboard: params.keyboard,\r\n resizeKeyboard: params.resizeKeyboard,\r\n oneTimeKeyboard: params.oneTimeKeyboard,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Edita mensagem\r\n * @param params Parâmetros da edição\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async editMessage(params: EditTelegramMessageParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/edit-message', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n messageId: params.messageId,\r\n text: params.text,\r\n parseMode: params.parseMode,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Deleta mensagem\r\n * @param params Parâmetros da deleção\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async deleteMessage(params: DeleteTelegramMessageParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/delete-message', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n messageId: params.messageId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Baixa uma mídia descriptografada do Telegram usando o file_id\r\n * @param params Parâmetros do download\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async downloadMedia(params: DownloadTelegramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/download-media', {\r\n channelToken: params.channelToken,\r\n fileId: params.fileId,\r\n }, accessToken);\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendWebChatTextParams,\r\n SendWebChatMediaParams,\r\n SendWebChatCarouselParams,\r\n SendWebChatFormParams,\r\n SendWebChatQuickRepliesParams,\r\n SendWebChatCardParams,\r\n SendWebChatButtonsParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo WebChat - Envio de mensagens via WebChat\r\n */\r\nexport class WebChatModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia mensagem de texto\r\n * @param params Parâmetros da mensagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendText(params: SendWebChatTextParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-text', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'text',\r\n content: {\r\n text: params.messageText,\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n * @param params Parâmetros da mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMedia(params: SendWebChatMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-media', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: params.type,\r\n content: {\r\n url: params.fileUrl,\r\n caption: params.caption,\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia carousel\r\n * @param params Parâmetros do carousel\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendCarousel(params: SendWebChatCarouselParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-carousel', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'carousel',\r\n content: {\r\n cards: params.cards.map(card => ({\r\n title: card.title,\r\n subtitle: card.subtitle,\r\n imageUrl: card.imageUrl,\r\n buttons: card.buttons?.map(btn => ({\r\n id: btn.id || `btn_${Date.now()}_${Math.random()}`,\r\n text: btn.text,\r\n type: btn.type,\r\n value: btn.value,\r\n url: btn.url,\r\n })),\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia formulário\r\n * @param params Parâmetros do formulário\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendForm(params: SendWebChatFormParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-form', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'form',\r\n content: {\r\n id: params.id,\r\n title: params.title,\r\n submitText: params.submitButtonText,\r\n fields: params.fields.map(field => ({\r\n id: field.id || field.name,\r\n type: field.type,\r\n label: field.label,\r\n placeholder: field.placeholder,\r\n required: field.required,\r\n options: field.options,\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia quick replies\r\n * @param params Parâmetros dos quick replies\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendQuickReplies(params: SendWebChatQuickRepliesParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-quick-replies', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'quickReplies',\r\n content: {\r\n text: params.messageText,\r\n quickReplies: params.quickReplies.map(qr => ({\r\n id: qr.id || `qr_${Date.now()}_${Math.random()}`,\r\n text: qr.text,\r\n value: qr.value,\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia card\r\n * @param params Parâmetros do card\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendCard(params: SendWebChatCardParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-card', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'card',\r\n content: {\r\n title: params.title,\r\n subtitle: params.description,\r\n imageUrl: params.imageUrl,\r\n buttons: params.buttons?.map(btn => ({\r\n id: btn.id || `btn_${Date.now()}_${Math.random()}`,\r\n text: btn.text,\r\n type: btn.type,\r\n value: btn.value,\r\n url: btn.url,\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia botões\r\n * @param params Parâmetros dos botões\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendButtons(params: SendWebChatButtonsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-buttons', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'buttons',\r\n content: {\r\n text: params.messageText,\r\n buttons: params.buttons.map(btn => ({\r\n id: btn.id || `btn_${Date.now()}_${Math.random()}`,\r\n text: btn.text,\r\n type: btn.type,\r\n value: btn.value,\r\n url: btn.url,\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n ListPostsParams,\r\n ListCommentsParams,\r\n CreatePostParams,\r\n ReplyCommentParams,\r\n DeleteCommentParams,\r\n SendFacebookTextParams,\r\n SendFacebookMediaParams,\r\n SendFacebookButtonsParams,\r\n SendFacebookStickerParams,\r\n ReplyFacebookMessageParams,\r\n ReplyFacebookMediaParams,\r\n SharePostParams,\r\n GetFacebookUserProfileParams,\r\n GetFacebookPageProfileParams,\r\n DownloadFacebookMediaParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Facebook - Gerenciamento de posts e mensagens\r\n */\r\nexport class FacebookModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Lista posts de uma página\r\n * @param params Parâmetros da listagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async listPosts(params: ListPostsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/list-posts', {\r\n channelToken: params.channelToken,\r\n pageId: params.pageId,\r\n limit: params.limit,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Lista comentários de um post\r\n * @param params Parâmetros da listagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async listComments(params: ListCommentsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/list-comments', {\r\n channelToken: params.channelToken,\r\n postId: params.postId,\r\n limit: params.limit,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Cria um post\r\n * @param params Parâmetros do post\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async createPost(params: CreatePostParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/create-post', {\r\n channelToken: params.channelToken,\r\n pageId: params.pageId,\r\n message: params.message,\r\n link: params.link,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Responde um comentário\r\n * @param params Parâmetros da resposta\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async replyComment(params: ReplyCommentParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/reply-comment', {\r\n channelToken: params.channelToken,\r\n commentId: params.commentId,\r\n message: params.message,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Deleta um comentário\r\n * @param params Parâmetros da deleção\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async deleteComment(params: DeleteCommentParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/delete-comment', {\r\n channelToken: params.channelToken,\r\n commentId: params.commentId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem de texto\r\n * @param params Parâmetros da mensagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendText(params: SendFacebookTextParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/send-text', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n * @param params Parâmetros da mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMedia(params: SendFacebookMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/send-media', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem com botões\r\n * @param params Parâmetros dos botões\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendButtons(params: SendFacebookButtonsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/send-buttons', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n buttons: params.buttons,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia sticker\r\n * @param params Parâmetros do sticker\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendSticker(params: SendFacebookStickerParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/send-sticker', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n stickerId: params.stickerId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Responde uma mensagem\r\n * @param params Parâmetros da resposta\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async replyMessage(params: ReplyFacebookMessageParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/reply-message', {\r\n channelToken: params.channelToken,\r\n messageId: params.messageId,\r\n message: params.message,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Responde com mídia\r\n * @param params Parâmetros da resposta\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async replyMedia(params: ReplyFacebookMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/reply-media', {\r\n channelToken: params.channelToken,\r\n messageId: params.messageId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Compartilha um post do Instagram\r\n * @param params Parâmetros do compartilhamento\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sharePost(params: SharePostParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/share-post', {\r\n channelToken: params.channelToken,\r\n mediaId: params.mediaId,\r\n recipientId: params.recipientId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Obtém perfil de um usuário do Facebook\r\n * @param params Parâmetros do perfil\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getUserProfile(params: GetFacebookUserProfileParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/user-profile', {\r\n channelToken: params.channelToken,\r\n userId: params.userId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Obtém informações de uma página do Facebook\r\n * @param params Parâmetros da página\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getPageProfile(params: GetFacebookPageProfileParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/page-profile', {\r\n channelToken: params.channelToken,\r\n pageId: params.pageId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Baixa uma mídia descriptografada do Facebook/Instagram usando a URL\r\n * @param params Parâmetros do download\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async downloadMedia(params: DownloadFacebookMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/download-media', {\r\n channelToken: params.channelToken,\r\n url: params.url,\r\n }, accessToken);\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendInstagramPrivateReplyParams,\r\n SendInstagramTextParams,\r\n SendInstagramMediaParams,\r\n SendInstagramImagesParams,\r\n SendInstagramStickerParams,\r\n ReactInstagramMessageParams,\r\n RemoveInstagramReactionParams,\r\n SendInstagramQuickRepliesParams,\r\n SendInstagramGenericTemplateParams,\r\n SendInstagramButtonTemplateParams,\r\n SendInstagramSenderActionParams,\r\n GetInstagramUserProfileParams,\r\n GetInstagramBusinessProfileParams,\r\n ListInstagramPostsParams,\r\n DownloadInstagramMediaParams,\r\n CreateInstagramMediaContainerParams,\r\n PublishInstagramMediaParams,\r\n GetInstagramContainerStatusParams,\r\n GetInstagramPublishingLimitParams,\r\n UploadInstagramVideoParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Instagram - Envio de mensagens e gerenciamento\r\n */\r\nexport class InstagramModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia resposta privada a comentário\r\n * @param params Parâmetros da resposta\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendPrivateReply(params: SendInstagramPrivateReplyParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/private-reply', {\r\n channelToken: params.channelToken,\r\n commentId: params.commentId,\r\n message: params.message,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem de texto\r\n * @param params Parâmetros da mensagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendText(params: SendInstagramTextParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/text', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n text: params.text,\r\n ...(params.tags && { tags: params.tags }),\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n * @param params Parâmetros da mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMedia(params: SendInstagramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/media', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia múltiplas imagens (carrossel)\r\n * @param params Parâmetros das imagens\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendImages(params: SendInstagramImagesParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/images', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n images: params.images,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia sticker (like/heart)\r\n * @param params Parâmetros do sticker\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendSticker(params: SendInstagramStickerParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/sticker', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n stickerType: params.stickerType,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Reage a uma mensagem\r\n * @param params Parâmetros da reação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async reactMessage(params: ReactInstagramMessageParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/reaction', {\r\n channelToken: params.channelToken,\r\n messageId: params.messageId,\r\n reactionType: params.reactionType,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Remove reação de uma mensagem\r\n * @param params Parâmetros da remoção\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async removeReaction(params: RemoveInstagramReactionParams, accessToken: string) {\r\n return this.httpClient.delete('/api/v1/instagram/messages/reaction', accessToken, {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n messageId: params.messageId,\r\n });\r\n }\r\n\r\n /**\r\n * Envia quick replies\r\n * @param params Parâmetros dos quick replies\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendQuickReplies(params: SendInstagramQuickRepliesParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/quick-replies', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n quickReplies: params.quickReplies,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia template genérico (carrossel)\r\n * @param params Parâmetros do template\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendGenericTemplate(params: SendInstagramGenericTemplateParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/generic-template', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n elements: params.elements,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia template de botões\r\n * @param params Parâmetros do template\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendButtonTemplate(params: SendInstagramButtonTemplateParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/button-template', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n text: params.text,\r\n buttons: params.buttons,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia ação do remetente (typing, seen)\r\n * @param params Parâmetros da ação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendSenderAction(params: SendInstagramSenderActionParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/sender-action', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n action: params.action,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Obtém perfil de um usuário do Instagram\r\n * \r\n * Obtém informações de perfil de um usuário do Instagram.\r\n * \r\n * Campos retornados:\r\n * - id: ID do usuário\r\n * - name: Nome do usuário (pode ser nulo)\r\n * - username: Nome de usuário do Instagram\r\n * \r\n * ⚠️ Nota: A API do Instagram Graph API para usuários regulares (tipo User) \r\n * retorna apenas campos básicos. Campos como foto de perfil, número de seguidores \r\n * e status de verificação não estão disponíveis para usuários regulares.\r\n * \r\n * ⚠️ O usuário deve ter enviado mensagem direta para sua conta. \r\n * Não é possível obter perfil de quem apenas comentou.\r\n * \r\n * @param params Parâmetros do perfil\r\n * @param params.token Token do canal\r\n * @param params.userId ID do usuário (IGSID)\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getUserProfile(params: GetInstagramUserProfileParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/user-profile', {\r\n channelToken: params.channelToken,\r\n userId: params.userId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Lista publicações do Instagram\r\n * @param params Parâmetros da listagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async listPosts(params: ListInstagramPostsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/posts', {\r\n channelToken: params.channelToken,\r\n userId: params.userId,\r\n limit: params.limit,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Obtém perfil da conta comercial do Instagram\r\n * @param params Parâmetros do perfil\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getBusinessProfile(params: GetInstagramBusinessProfileParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/business-profile', {\r\n channelToken: params.channelToken,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Baixa uma mídia descriptografada do Instagram usando a URL\r\n * @param params Parâmetros do download\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async downloadMedia(params: DownloadInstagramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/download-media', {\r\n channelToken: params.channelToken,\r\n url: params.url,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Cria um contêiner de mídia para publicação no Instagram\r\n * @param params Parâmetros do contêiner\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async createMediaContainer(params: CreateInstagramMediaContainerParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/media', {\r\n channelToken: params.channelToken,\r\n image_url: params.image_url,\r\n video_url: params.video_url,\r\n media_type: params.media_type,\r\n caption: params.caption,\r\n is_carousel_item: params.is_carousel_item,\r\n children: params.children,\r\n upload_type: params.upload_type,\r\n trial_params: params.trial_params,\r\n alt_text: params.alt_text,\r\n location_id: params.location_id,\r\n product_tags: params.product_tags,\r\n user_tags: params.user_tags,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Publica uma mídia no Instagram usando o ID do contêiner\r\n * @param params Parâmetros da publicação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async publishMedia(params: PublishInstagramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/media_publish', {\r\n channelToken: params.channelToken,\r\n creation_id: params.creation_id,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Verifica o status de um contêiner de mídia\r\n * @param params Parâmetros da verificação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getContainerStatus(params: GetInstagramContainerStatusParams, accessToken: string) {\r\n return this.httpClient.post(`/api/v1/instagram/media/${params.container_id}/status`, {\r\n channelToken: params.channelToken,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Verifica o limite de publicação atual\r\n * @param params Parâmetros da verificação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getPublishingLimit(params: GetInstagramPublishingLimitParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/content_publishing_limit', {\r\n channelToken: params.channelToken,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Faz upload de vídeo para sessão retomável\r\n * @param params Parâmetros do upload\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async uploadVideo(params: UploadInstagramVideoParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/upload', {\r\n channelToken: params.channelToken,\r\n container_id: params.container_id,\r\n file_url: params.file_url,\r\n offset: params.offset,\r\n file_size: params.file_size,\r\n }, accessToken);\r\n }\r\n}\r\n","import { HttpClient } from './client/http-client';\r\nimport { AuthModule } from './modules/auth';\r\nimport { ChannelsModule } from './modules/channels';\r\nimport { IntegrationsModule } from './modules/integrations';\r\nimport { WhatsAppModule } from './modules/whatsapp';\r\nimport { TelegramModule } from './modules/telegram';\r\nimport { WebChatModule } from './modules/webchat';\r\nimport { FacebookModule } from './modules/facebook';\r\nimport { InstagramModule } from './modules/instagram';\r\nimport { SDKConfig } from './types';\r\n\r\n/**\r\n * SDK OficialAPI - Cliente principal\r\n * \r\n * @example\r\n * ```typescript\r\n * import { OficialAPISDK } from '@oficialapi/sdk';\r\n * \r\n * const sdk = new OficialAPISDK({\r\n * clientId: 'your-client-id',\r\n * clientSecret: 'your-client-secret'\r\n * });\r\n * \r\n * // Enviar mensagem WhatsApp\r\n * const result = await sdk.whatsapp.sendText({\r\n * channelToken: 'sk_live_...',\r\n * sender: '5511999999999',\r\n * messageText: 'Olá!'\r\n * });\r\n * ```\r\n */\r\nexport class OficialAPISDK {\r\n private httpClient: HttpClient;\r\n\r\n public readonly auth: AuthModule;\r\n public readonly channels: ChannelsModule;\r\n public readonly integrations: IntegrationsModule;\r\n public readonly whatsapp: WhatsAppModule;\r\n public readonly telegram: TelegramModule;\r\n public readonly webchat: WebChatModule;\r\n public readonly facebook: FacebookModule;\r\n public readonly instagram: InstagramModule;\r\n\r\n constructor(config: SDKConfig) {\r\n this.httpClient = new HttpClient(config);\r\n\r\n // Inicializa módulos\r\n this.auth = new AuthModule(this.httpClient);\r\n this.channels = new ChannelsModule(this.httpClient);\r\n this.integrations = new IntegrationsModule(this.httpClient);\r\n this.whatsapp = new WhatsAppModule(this.httpClient);\r\n this.telegram = new TelegramModule(this.httpClient);\r\n this.webchat = new WebChatModule(this.httpClient);\r\n this.facebook = new FacebookModule(this.httpClient);\r\n this.instagram = new InstagramModule(this.httpClient);\r\n }\r\n\r\n}\r\n\r\n// Exporta tipos\r\nexport * from './types';\r\n\r\n// Exporta também como default para compatibilidade\r\nexport default OficialAPISDK;\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/client/http-client.ts","../src/modules/auth.ts","../src/modules/channels.ts","../src/modules/integrations.ts","../src/modules/whatsapp.ts","../src/modules/telegram.ts","../src/modules/webchat.ts","../src/modules/facebook.ts","../src/modules/instagram.ts","../src/index.ts"],"names":["API_BASE_URL","HttpClient","config","axios","requestConfig","error","response","delay","resolve","data","message","errorDetails","formattedError","url","accessToken","file","fieldName","additionalData","formData","blob","key","value","AuthModule","httpClient","clientId","clientSecret","ChannelsModule","IntegrationsModule","params","WhatsAppModule","channelToken","templateId","TelegramModule","WebChatModule","card","btn","field","qr","FacebookModule","InstagramModule","OficialAPISDK","index_default"],"mappings":"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","file":"index.js","sourcesContent":["import axios, { AxiosInstance, AxiosError, AxiosRequestConfig } from 'axios';\r\nimport { SDKConfig, ApiResponse } from '../types';\r\n\r\n/**\r\n * URL base da API OficialAPI (fixa)\r\n */\r\nconst API_BASE_URL = 'https://api.oficialapi.com.br';\r\n\r\n/**\r\n * Configuração estendida para requisições com token\r\n */\r\ninterface RequestConfigWithToken extends AxiosRequestConfig {\r\n accessToken?: string;\r\n}\r\n\r\n/**\r\n * Cliente HTTP robusto com retry automático e tratamento de erros\r\n * Cada requisição deve receber o accessToken como parâmetro\r\n */\r\nexport class HttpClient {\r\n private axiosInstance: AxiosInstance;\r\n private config: {\r\n clientId: string;\r\n clientSecret: string;\r\n timeout: number;\r\n maxRetries: number;\r\n retryDelay: number;\r\n headers: Record<string, string>;\r\n };\r\n\r\n constructor(config: SDKConfig) {\r\n this.config = {\r\n clientId: config.clientId,\r\n clientSecret: config.clientSecret,\r\n timeout: config.timeout || 30000,\r\n maxRetries: config.maxRetries || 3,\r\n retryDelay: config.retryDelay || 1000,\r\n headers: config.headers || {},\r\n };\r\n\r\n this.axiosInstance = axios.create({\r\n baseURL: API_BASE_URL,\r\n timeout: this.config.timeout,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...this.config.headers,\r\n },\r\n });\r\n\r\n this.setupInterceptors();\r\n }\r\n\r\n private setupInterceptors() {\r\n // Request interceptor - adiciona token de autenticação se fornecido\r\n this.axiosInstance.interceptors.request.use(\r\n (config) => {\r\n // Não adiciona token para endpoint de autenticação\r\n if (config.url?.includes('/auth/token')) {\r\n return config;\r\n }\r\n\r\n // Adiciona token se foi fornecido na configuração da requisição\r\n const requestConfig = config as RequestConfigWithToken;\r\n if (requestConfig.accessToken && config.headers) {\r\n config.headers.Authorization = `Bearer ${requestConfig.accessToken}`;\r\n }\r\n\r\n return config;\r\n },\r\n (error) => Promise.reject(error)\r\n );\r\n\r\n // Response interceptor - trata erros e retry\r\n this.axiosInstance.interceptors.response.use(\r\n (response) => response,\r\n async (error: AxiosError) => {\r\n const config = error.config as AxiosRequestConfig & { _retry?: boolean; _retryCount?: number };\r\n\r\n // Se não tiver config, não faz retry\r\n if (!config) {\r\n return Promise.reject(this.formatError(error));\r\n }\r\n\r\n // Retry para erros de rede ou 5xx\r\n const shouldRetry =\r\n (!error.response || (error.response.status >= 500 && error.response.status < 600)) &&\r\n (!config._retryCount || config._retryCount < this.config.maxRetries);\r\n\r\n if (shouldRetry) {\r\n config._retryCount = (config._retryCount || 0) + 1;\r\n const delay = this.config.retryDelay * config._retryCount;\r\n\r\n await new Promise((resolve) => setTimeout(resolve, delay));\r\n return this.axiosInstance(config);\r\n }\r\n\r\n return Promise.reject(this.formatError(error));\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Formata erros da API\r\n */\r\n private formatError(error: AxiosError): Error {\r\n if (error.response) {\r\n const data = error.response.data as ApiResponse;\r\n const message = data?.error?.message || data?.message || error.message;\r\n const errorDetails = data?.error?.details || [];\r\n\r\n const formattedError = new Error(message);\r\n (formattedError as any).status = error.response.status;\r\n (formattedError as any).data = error.response.data;\r\n (formattedError as any).details = errorDetails;\r\n\r\n return formattedError;\r\n }\r\n\r\n if (error.request) {\r\n return new Error('Erro de conexão com a API. Verifique sua conexão com a internet.');\r\n }\r\n\r\n return error;\r\n }\r\n\r\n /**\r\n * Faz uma requisição GET\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n */\r\n async get<T = any>(url: string, accessToken?: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const requestConfig: RequestConfigWithToken = {\r\n ...config,\r\n accessToken,\r\n };\r\n const response = await this.axiosInstance.get<ApiResponse<T>>(url, requestConfig);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição POST\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n */\r\n async post<T = any>(url: string, data?: any, accessToken?: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const requestConfig: RequestConfigWithToken = {\r\n ...config,\r\n accessToken,\r\n };\r\n const response = await this.axiosInstance.post<ApiResponse<T>>(url, data, requestConfig);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição PUT\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n */\r\n async put<T = any>(url: string, data?: any, accessToken?: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const requestConfig: RequestConfigWithToken = {\r\n ...config,\r\n accessToken,\r\n };\r\n const response = await this.axiosInstance.put<ApiResponse<T>>(url, data, requestConfig);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição DELETE\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n * @param data Dados a serem enviados no body (opcional)\r\n */\r\n async delete<T = any>(url: string, accessToken?: string, data?: any, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const requestConfig: RequestConfigWithToken = {\r\n ...config,\r\n accessToken,\r\n data, // Axios aceita data em DELETE através do config\r\n };\r\n const response = await this.axiosInstance.delete<ApiResponse<T>>(url, requestConfig);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz upload de arquivo\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n */\r\n async upload<T = any>(\r\n url: string,\r\n file: File | Blob | Buffer,\r\n accessToken?: string,\r\n fieldName: string = 'file',\r\n additionalData?: Record<string, any>\r\n ): Promise<ApiResponse<T>> {\r\n const formData = new FormData();\r\n\r\n if (file instanceof Buffer) {\r\n const blob = new Blob([file]);\r\n formData.append(fieldName, blob);\r\n } else {\r\n formData.append(fieldName, file);\r\n }\r\n\r\n if (additionalData) {\r\n Object.entries(additionalData).forEach(([key, value]) => {\r\n if (value !== undefined && value !== null) {\r\n formData.append(key, typeof value === 'string' ? value : JSON.stringify(value));\r\n }\r\n });\r\n }\r\n\r\n const requestConfig: RequestConfigWithToken = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n accessToken,\r\n };\r\n\r\n const response = await this.axiosInstance.post<ApiResponse<T>>(url, formData, requestConfig);\r\n\r\n return response.data;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { TokenResponse } from '../types';\r\n\r\n/**\r\n * Módulo de Autenticação\r\n */\r\nexport class AuthModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Gera um novo token de acesso\r\n */\r\n async getToken(clientId: string, clientSecret: string): Promise<TokenResponse> {\r\n const response = await this.httpClient.post<TokenResponse>('/api/v1/auth/token', {\r\n client_id: clientId,\r\n client_secret: clientSecret,\r\n });\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao obter token');\r\n }\r\n\r\n return response.data;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { Channel } from '../types';\r\n\r\n/**\r\n * Módulo de Canais\r\n */\r\nexport class ChannelsModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Lista todos os canais do usuário\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async list(accessToken: string): Promise<Channel[]> {\r\n const response = await this.httpClient.get<Channel[]>('/api/v1/channels', accessToken);\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao listar canais');\r\n }\r\n\r\n return Array.isArray(response.data) ? response.data : [response.data];\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { CreateWebhookParams, Webhook } from '../types';\r\n\r\n/**\r\n * Módulo de Integrações\r\n */\r\nexport class IntegrationsModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Cria um novo webhook\r\n * @param params Parâmetros do webhook\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async createWebhook(params: CreateWebhookParams, accessToken: string): Promise<Webhook> {\r\n const response = await this.httpClient.post<Webhook>(\r\n '/api/v1/integrations',\r\n {\r\n url: params.url,\r\n expiresInDays: params.expiresInDays,\r\n },\r\n accessToken\r\n );\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao criar webhook');\r\n }\r\n\r\n return response.data;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\nimport {\n SendWhatsAppTextParams,\n SendWhatsAppMediaParams,\n SendWhatsAppTemplateParams,\n SendWhatsAppButtonsParams,\n SendWhatsAppListParams,\n ReplyWhatsAppParams,\n ReactWhatsAppParams,\n CreateTemplateParams,\n UploadMediaParams,\n SendOrderDetailsParams,\n SendOrderStatusParams,\n SendWhatsAppAudioParams,\n SendWhatsAppStickerParams,\n SendWhatsAppVideoParams,\n SendWhatsAppDocumentParams,\n SendWhatsAppContactParams,\n SendWhatsAppLocationParams,\n SendWhatsAppLocationRequestParams,\n SendWhatsAppCtaUrlParams,\n SendWhatsAppMediaCarouselParams,\n DownloadWhatsAppMediaParams,\n} from '../types';\n\n/**\n * Módulo WhatsApp - Envio de mensagens e gerenciamento de templates\n */\nexport class WhatsAppModule {\n constructor(private httpClient: HttpClient) {}\n\n /**\n * Envia mensagem de texto\n * @param params Parâmetros da mensagem\n * @param accessToken Token de acesso do usuário\n */\n async sendText(params: SendWhatsAppTextParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-message', {\n channelToken: params.channelToken,\n sender: params.sender,\n messageText: params.messageText,\n }, accessToken);\n }\n\n /**\n * Envia mídia (imagem, vídeo, áudio, documento)\n * @param params Parâmetros da mídia\n * @param accessToken Token de acesso do usuário\n */\n async sendMedia(params: SendWhatsAppMediaParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-media', {\n channelToken: params.channelToken,\n sender: params.sender,\n fileUrl: params.fileUrl,\n type: params.type,\n caption: params.caption,\n ...(params.fileName && { fileName: params.fileName }),\n }, accessToken);\n }\n\n /**\n * Envia template\n * @param params Parâmetros do template\n * @param accessToken Token de acesso do usuário\n */\n async sendTemplate(params: SendWhatsAppTemplateParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-template', {\n channelToken: params.channelToken,\n sender: params.sender,\n templateName: params.templateName,\n languageCode: params.languageCode,\n components: params.components,\n }, accessToken);\n }\n\n /**\n * Envia mensagem com botões\n * @param params Parâmetros dos botões\n * @param accessToken Token de acesso do usuário\n */\n async sendButtons(params: SendWhatsAppButtonsParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-buttons', {\n channelToken: params.channelToken,\n sender: params.sender,\n text: params.text,\n buttons: params.buttons,\n ...(params.media && { media: params.media }),\n }, accessToken);\n }\n\n /**\n * Envia lista interativa\n * @param params Parâmetros da lista\n * @param accessToken Token de acesso do usuário\n */\n async sendList(params: SendWhatsAppListParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-list', {\n channelToken: params.channelToken,\n sender: params.sender,\n headerText: params.headerText,\n bodyText: params.bodyText,\n buttonText: params.buttonText,\n sections: params.sections,\n ...(params.footerText && { footerText: params.footerText }),\n }, accessToken);\n }\n\n /**\n * Responde a uma mensagem\n * @param params Parâmetros da resposta\n * @param accessToken Token de acesso do usuário\n */\n async replyMessage(params: ReplyWhatsAppParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/reply-message', {\n channelToken: params.channelToken,\n sender: params.sender,\n messageText: params.messageText,\n ...(params.replyMessageId && { replyMessageId: params.replyMessageId }),\n ...(params.preview_url !== undefined && { preview_url: params.preview_url }),\n }, accessToken);\n }\n\n /**\n * Reage a uma mensagem\n * @param params Parâmetros da reação\n * @param accessToken Token de acesso do usuário\n */\n async reactMessage(params: ReactWhatsAppParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/react-message', {\n channelToken: params.channelToken,\n sender: params.sender,\n emoji: params.emoji,\n ...(params.message_id && { message_id: params.message_id }),\n }, accessToken);\n }\n\n /**\n * Cria um template\n * @param params Parâmetros do template\n * @param accessToken Token de acesso do usuário\n */\n async createTemplate(params: CreateTemplateParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/create-template', {\n channelToken: params.channelToken,\n name: params.name,\n language: params.language,\n category: params.category,\n components: params.components,\n }, accessToken);\n }\n\n /**\n * Lista templates\n * @param token Token do canal\n * @param accessToken Token de acesso do usuário\n */\n async listTemplates(channelToken: string, accessToken: string) {\n return this.httpClient.get(`/api/v1/whatsapp/templates?channelToken=${encodeURIComponent(channelToken)}`, accessToken);\n }\n\n /**\n * Obtém detalhes de um template\n * @param channelToken Token do canal\n * @param templateId ID do template\n * @param accessToken Token de acesso do usuário\n */\n async getTemplate(channelToken: string, templateId: string, accessToken: string) {\n return this.httpClient.get(`/api/v1/whatsapp/templates/${templateId}?channelToken=${encodeURIComponent(channelToken)}`, accessToken);\n }\n\n /**\n * Faz upload de mídia para templates\n * @param params Parâmetros do upload\n * @param accessToken Token de acesso do usuário\n */\n async uploadMedia(params: UploadMediaParams, accessToken: string) {\n return this.httpClient.upload('/api/v1/whatsapp/upload-media', params.file, accessToken, 'file', {\n channelToken: params.channelToken,\n mediaType: params.mediaType,\n ...(params.filename && { filename: params.filename }),\n });\n }\n\n /**\n * Envia detalhes do pedido com opções de pagamento\n * @param params Parâmetros do pedido\n * @param accessToken Token de acesso do usuário\n */\n async sendOrderDetails(params: SendOrderDetailsParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-order-details', {\n channelToken: params.channelToken,\n sender: params.sender,\n ...(params.headerText && { headerText: params.headerText }),\n bodyText: params.bodyText,\n ...(params.footerText && { footerText: params.footerText }),\n reference_id: params.reference_id,\n type: params.type,\n currency: params.currency,\n total_amount: params.total_amount,\n order: params.order,\n ...(params.payment_settings && { payment_settings: params.payment_settings }),\n }, accessToken);\n }\n\n /**\n * Atualiza status do pedido\n * @param params Parâmetros do status\n * @param accessToken Token de acesso do usuário\n */\n async sendOrderStatus(params: SendOrderStatusParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-order-status', {\n channelToken: params.channelToken,\n sender: params.sender,\n bodyText: params.bodyText,\n ...(params.footerText && { footerText: params.footerText }),\n reference_id: params.reference_id,\n order_status: params.order_status,\n ...(params.status_description && { status_description: params.status_description }),\n ...(params.payment_status && { payment_status: params.payment_status }),\n ...(params.payment_timestamp !== undefined && { payment_timestamp: params.payment_timestamp }),\n }, accessToken);\n }\n\n /**\n * Envia áudio\n * @param params Parâmetros do áudio\n * @param accessToken Token de acesso do usuário\n */\n async sendAudio(params: SendWhatsAppAudioParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-audio', {\n channelToken: params.channelToken,\n sender: params.sender,\n mediaId: params.mediaId,\n ...(params.voice !== undefined && { voice: params.voice }),\n }, accessToken);\n }\n\n /**\n * Envia sticker\n * @param params Parâmetros do sticker\n * @param accessToken Token de acesso do usuário\n */\n async sendSticker(params: SendWhatsAppStickerParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-sticker', {\n channelToken: params.channelToken,\n sender: params.sender,\n mediaId: params.mediaId,\n }, accessToken);\n }\n\n /**\n * Envia vídeo\n * @param params Parâmetros do vídeo\n * @param accessToken Token de acesso do usuário\n */\n async sendVideo(params: SendWhatsAppVideoParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-video', {\n channelToken: params.channelToken,\n sender: params.sender,\n mediaId: params.mediaId,\n ...(params.caption && { caption: params.caption }),\n }, accessToken);\n }\n\n /**\n * Envia documento\n * @param params Parâmetros do documento\n * @param accessToken Token de acesso do usuário\n */\n async sendDocument(params: SendWhatsAppDocumentParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-document', {\n channelToken: params.channelToken,\n sender: params.sender,\n mediaId: params.mediaId,\n ...(params.filename && { filename: params.filename }),\n ...(params.caption && { caption: params.caption }),\n }, accessToken);\n }\n\n /**\n * Envia contato\n * @param params Parâmetros do contato\n * @param accessToken Token de acesso do usuário\n */\n async sendContact(params: SendWhatsAppContactParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-contact', {\n channelToken: params.channelToken,\n sender: params.sender,\n contacts: params.contacts,\n }, accessToken);\n }\n\n /**\n * Envia localização\n * @param params Parâmetros da localização\n * @param accessToken Token de acesso do usuário\n */\n async sendLocation(params: SendWhatsAppLocationParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-location', {\n channelToken: params.channelToken,\n sender: params.sender,\n latitude: params.latitude,\n longitude: params.longitude,\n name: params.name,\n address: params.address,\n }, accessToken);\n }\n\n /**\n * Solicita localização\n * @param params Parâmetros da solicitação\n * @param accessToken Token de acesso do usuário\n */\n async sendLocationRequest(params: SendWhatsAppLocationRequestParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-location-request', {\n channelToken: params.channelToken,\n sender: params.sender,\n bodyText: params.bodyText,\n ...(params.headerText && { headerText: params.headerText }),\n ...(params.footerText && { footerText: params.footerText }),\n }, accessToken);\n }\n\n /**\n * Envia mensagem com botão CTA URL\n * @param params Parâmetros do CTA\n * @param accessToken Token de acesso do usuário\n */\n async sendCtaUrl(params: SendWhatsAppCtaUrlParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-cta-url', {\n channelToken: params.channelToken,\n sender: params.sender,\n bodyText: params.bodyText,\n buttonText: params.buttonText,\n url: params.url,\n ...(params.header && { header: params.header }),\n ...(params.footerText && { footerText: params.footerText }),\n }, accessToken);\n }\n\n /**\n * Envia carrossel de mídia\n * @param params Parâmetros do carrossel\n * @param accessToken Token de acesso do usuário\n */\n async sendMediaCarousel(params: SendWhatsAppMediaCarouselParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-media-carousel', {\n channelToken: params.channelToken,\n sender: params.sender,\n bodyText: params.bodyText,\n cards: params.cards,\n }, accessToken);\n }\n\n /**\n * Baixa uma mídia descriptografada do WhatsApp usando a URL\n * @param params Parâmetros do download\n * @param accessToken Token de acesso do usuário\n */\n async downloadMedia(params: DownloadWhatsAppMediaParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/download-media', {\n channelToken: params.channelToken,\n url: params.url,\n }, accessToken);\n }\n}\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendTelegramTextParams,\r\n SendTelegramMediaParams,\r\n SendTelegramButtonsParams,\r\n SendTelegramLocationParams,\r\n SendTelegramContactParams,\r\n SendTelegramPollParams,\r\n SendTelegramVenueParams,\r\n SendTelegramDiceParams,\r\n SendTelegramStickerParams,\r\n SendTelegramVoiceParams,\r\n SendTelegramVideoNoteParams,\r\n SendTelegramMediaGroupParams,\r\n SendTelegramReplyKeyboardParams,\r\n EditTelegramMessageParams,\r\n DeleteTelegramMessageParams,\r\n DownloadTelegramMediaParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Telegram - Envio de mensagens e gerenciamento\r\n */\r\nexport class TelegramModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia mensagem de texto\r\n * @param params Parâmetros da mensagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMessage(params: SendTelegramTextParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-message', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n text: params.text,\r\n parseMode: params.parseMode,\r\n replyToMessageId: params.replyToMessageId,\r\n disableNotification: params.disableNotification,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n * @param params Parâmetros da mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMedia(params: SendTelegramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-media', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n parseMode: params.parseMode,\r\n replyToMessageId: params.replyToMessageId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem com botões\r\n * @param params Parâmetros dos botões\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendButtons(params: SendTelegramButtonsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-buttons', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n text: params.text,\r\n buttons: params.buttons,\r\n parseMode: params.parseMode,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia localização\r\n * @param params Parâmetros da localização\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendLocation(params: SendTelegramLocationParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-location', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n latitude: params.latitude,\r\n longitude: params.longitude,\r\n livePeriod: params.livePeriod,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia contato\r\n * @param params Parâmetros do contato\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendContact(params: SendTelegramContactParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-contact', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n phoneNumber: params.phoneNumber,\r\n firstName: params.firstName,\r\n lastName: params.lastName,\r\n vcard: params.vcard,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia enquete\r\n * @param params Parâmetros da enquete\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendPoll(params: SendTelegramPollParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-poll', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n question: params.question,\r\n options: params.options,\r\n isAnonymous: params.isAnonymous,\r\n type: params.type,\r\n correctOptionId: params.correctOptionId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia venue (local)\r\n * @param params Parâmetros do venue\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendVenue(params: SendTelegramVenueParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-venue', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n latitude: params.latitude,\r\n longitude: params.longitude,\r\n title: params.title,\r\n address: params.address,\r\n foursquareId: params.foursquareId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia dado/emoji animado\r\n * @param params Parâmetros do dado\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendDice(params: SendTelegramDiceParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-dice', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n emoji: params.emoji,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia sticker\r\n * @param params Parâmetros do sticker\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendSticker(params: SendTelegramStickerParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-sticker', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n stickerUrl: params.stickerUrl,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem de voz\r\n * @param params Parâmetros da voz\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendVoice(params: SendTelegramVoiceParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-voice', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n voiceUrl: params.voiceUrl,\r\n caption: params.caption,\r\n duration: params.duration,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia video note\r\n * @param params Parâmetros do video note\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendVideoNote(params: SendTelegramVideoNoteParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-video-note', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n videoNoteUrl: params.videoNoteUrl,\r\n duration: params.duration,\r\n length: params.length,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia grupo de mídia\r\n * @param params Parâmetros do grupo de mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMediaGroup(params: SendTelegramMediaGroupParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-media-group', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n media: params.media,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia teclado de resposta\r\n * @param params Parâmetros do teclado\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendReplyKeyboard(params: SendTelegramReplyKeyboardParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-reply-keyboard', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n text: params.text,\r\n keyboard: params.keyboard,\r\n resizeKeyboard: params.resizeKeyboard,\r\n oneTimeKeyboard: params.oneTimeKeyboard,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Edita mensagem\r\n * @param params Parâmetros da edição\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async editMessage(params: EditTelegramMessageParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/edit-message', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n messageId: params.messageId,\r\n text: params.text,\r\n parseMode: params.parseMode,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Deleta mensagem\r\n * @param params Parâmetros da deleção\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async deleteMessage(params: DeleteTelegramMessageParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/delete-message', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n messageId: params.messageId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Baixa uma mídia descriptografada do Telegram usando o file_id\r\n * @param params Parâmetros do download\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async downloadMedia(params: DownloadTelegramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/download-media', {\r\n channelToken: params.channelToken,\r\n fileId: params.fileId,\r\n }, accessToken);\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendWebChatTextParams,\r\n SendWebChatMediaParams,\r\n SendWebChatCarouselParams,\r\n SendWebChatFormParams,\r\n SendWebChatQuickRepliesParams,\r\n SendWebChatCardParams,\r\n SendWebChatButtonsParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo WebChat - Envio de mensagens via WebChat\r\n */\r\nexport class WebChatModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia mensagem de texto\r\n * @param params Parâmetros da mensagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendText(params: SendWebChatTextParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-text', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'text',\r\n content: {\r\n text: params.messageText,\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n * @param params Parâmetros da mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMedia(params: SendWebChatMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-media', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: params.type,\r\n content: {\r\n url: params.fileUrl,\r\n caption: params.caption,\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia carousel\r\n * @param params Parâmetros do carousel\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendCarousel(params: SendWebChatCarouselParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-carousel', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'carousel',\r\n content: {\r\n cards: params.cards.map(card => ({\r\n title: card.title,\r\n subtitle: card.subtitle,\r\n imageUrl: card.imageUrl,\r\n buttons: card.buttons?.map(btn => ({\r\n id: btn.id || `btn_${Date.now()}_${Math.random()}`,\r\n text: btn.text,\r\n type: btn.type,\r\n value: btn.value,\r\n url: btn.url,\r\n })),\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia formulário\r\n * @param params Parâmetros do formulário\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendForm(params: SendWebChatFormParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-form', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'form',\r\n content: {\r\n id: params.id,\r\n title: params.title,\r\n submitText: params.submitButtonText,\r\n fields: params.fields.map(field => ({\r\n id: field.id || field.name,\r\n type: field.type,\r\n label: field.label,\r\n placeholder: field.placeholder,\r\n required: field.required,\r\n options: field.options,\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia quick replies\r\n * @param params Parâmetros dos quick replies\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendQuickReplies(params: SendWebChatQuickRepliesParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-quick-replies', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'quickReplies',\r\n content: {\r\n text: params.messageText,\r\n quickReplies: params.quickReplies.map(qr => ({\r\n id: qr.id || `qr_${Date.now()}_${Math.random()}`,\r\n text: qr.text,\r\n value: qr.value,\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia card\r\n * @param params Parâmetros do card\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendCard(params: SendWebChatCardParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-card', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'card',\r\n content: {\r\n title: params.title,\r\n subtitle: params.description,\r\n imageUrl: params.imageUrl,\r\n buttons: params.buttons?.map(btn => ({\r\n id: btn.id || `btn_${Date.now()}_${Math.random()}`,\r\n text: btn.text,\r\n type: btn.type,\r\n value: btn.value,\r\n url: btn.url,\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia botões\r\n * @param params Parâmetros dos botões\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendButtons(params: SendWebChatButtonsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-buttons', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'buttons',\r\n content: {\r\n text: params.messageText,\r\n buttons: params.buttons.map(btn => ({\r\n id: btn.id || `btn_${Date.now()}_${Math.random()}`,\r\n text: btn.text,\r\n type: btn.type,\r\n value: btn.value,\r\n url: btn.url,\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n ListPostsParams,\r\n ListCommentsParams,\r\n CreatePostParams,\r\n ReplyCommentParams,\r\n DeleteCommentParams,\r\n SendFacebookTextParams,\r\n SendFacebookMediaParams,\r\n SendFacebookButtonsParams,\r\n SendFacebookStickerParams,\r\n ReplyFacebookMessageParams,\r\n ReplyFacebookMediaParams,\r\n SharePostParams,\r\n GetFacebookUserProfileParams,\r\n GetFacebookPageProfileParams,\r\n DownloadFacebookMediaParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Facebook - Gerenciamento de posts e mensagens\r\n */\r\nexport class FacebookModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Lista posts de uma página\r\n * @param params Parâmetros da listagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async listPosts(params: ListPostsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/list-posts', {\r\n channelToken: params.channelToken,\r\n pageId: params.pageId,\r\n limit: params.limit,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Lista comentários de um post\r\n * @param params Parâmetros da listagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async listComments(params: ListCommentsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/list-comments', {\r\n channelToken: params.channelToken,\r\n postId: params.postId,\r\n limit: params.limit,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Cria um post\r\n * @param params Parâmetros do post\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async createPost(params: CreatePostParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/create-post', {\r\n channelToken: params.channelToken,\r\n pageId: params.pageId,\r\n message: params.message,\r\n link: params.link,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Responde um comentário\r\n * @param params Parâmetros da resposta\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async replyComment(params: ReplyCommentParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/reply-comment', {\r\n channelToken: params.channelToken,\r\n commentId: params.commentId,\r\n message: params.message,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Deleta um comentário\r\n * @param params Parâmetros da deleção\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async deleteComment(params: DeleteCommentParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/delete-comment', {\r\n channelToken: params.channelToken,\r\n commentId: params.commentId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem de texto\r\n * @param params Parâmetros da mensagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendText(params: SendFacebookTextParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/send-text', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n * @param params Parâmetros da mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMedia(params: SendFacebookMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/send-media', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem com botões\r\n * @param params Parâmetros dos botões\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendButtons(params: SendFacebookButtonsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/send-buttons', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n buttons: params.buttons,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia sticker\r\n * @param params Parâmetros do sticker\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendSticker(params: SendFacebookStickerParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/send-sticker', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n stickerId: params.stickerId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Responde uma mensagem\r\n * @param params Parâmetros da resposta\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async replyMessage(params: ReplyFacebookMessageParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/reply-message', {\r\n channelToken: params.channelToken,\r\n messageId: params.messageId,\r\n message: params.message,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Responde com mídia\r\n * @param params Parâmetros da resposta\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async replyMedia(params: ReplyFacebookMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/reply-media', {\r\n channelToken: params.channelToken,\r\n messageId: params.messageId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Compartilha um post do Instagram\r\n * @param params Parâmetros do compartilhamento\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sharePost(params: SharePostParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/share-post', {\r\n channelToken: params.channelToken,\r\n mediaId: params.mediaId,\r\n recipientId: params.recipientId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Obtém perfil de um usuário do Facebook\r\n * @param params Parâmetros do perfil\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getUserProfile(params: GetFacebookUserProfileParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/user-profile', {\r\n channelToken: params.channelToken,\r\n userId: params.userId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Obtém informações de uma página do Facebook\r\n * @param params Parâmetros da página\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getPageProfile(params: GetFacebookPageProfileParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/page-profile', {\r\n channelToken: params.channelToken,\r\n pageId: params.pageId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Baixa uma mídia descriptografada do Facebook/Instagram usando a URL\r\n * @param params Parâmetros do download\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async downloadMedia(params: DownloadFacebookMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/download-media', {\r\n channelToken: params.channelToken,\r\n url: params.url,\r\n }, accessToken);\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendInstagramPrivateReplyParams,\r\n SendInstagramTextParams,\r\n SendInstagramMediaParams,\r\n SendInstagramImagesParams,\r\n SendInstagramStickerParams,\r\n ReactInstagramMessageParams,\r\n RemoveInstagramReactionParams,\r\n SendInstagramQuickRepliesParams,\r\n SendInstagramGenericTemplateParams,\r\n SendInstagramButtonTemplateParams,\r\n SendInstagramSenderActionParams,\r\n GetInstagramUserProfileParams,\r\n GetInstagramBusinessProfileParams,\r\n ListInstagramPostsParams,\r\n DownloadInstagramMediaParams,\r\n CreateInstagramMediaContainerParams,\r\n PublishInstagramMediaParams,\r\n GetInstagramContainerStatusParams,\r\n GetInstagramPublishingLimitParams,\r\n UploadInstagramVideoParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Instagram - Envio de mensagens e gerenciamento\r\n */\r\nexport class InstagramModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia resposta privada a comentário\r\n * @param params Parâmetros da resposta\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendPrivateReply(params: SendInstagramPrivateReplyParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/private-reply', {\r\n channelToken: params.channelToken,\r\n commentId: params.commentId,\r\n message: params.message,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem de texto\r\n * @param params Parâmetros da mensagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendText(params: SendInstagramTextParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/text', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n text: params.text,\r\n ...(params.tags && { tags: params.tags }),\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n * @param params Parâmetros da mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMedia(params: SendInstagramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/media', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n attachment: params.attachment,\r\n ...(params.tags && { tags: params.tags }),\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia múltiplas imagens (carrossel)\r\n * @param params Parâmetros das imagens\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendImages(params: SendInstagramImagesParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/images', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n images: params.images,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia sticker (like/heart)\r\n * @param params Parâmetros do sticker\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendSticker(params: SendInstagramStickerParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/sticker', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n stickerType: params.stickerType,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Reage a uma mensagem\r\n * @param params Parâmetros da reação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async reactMessage(params: ReactInstagramMessageParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/reaction', {\r\n channelToken: params.channelToken,\r\n messageId: params.messageId,\r\n reactionType: params.reactionType,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Remove reação de uma mensagem\r\n * @param params Parâmetros da remoção\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async removeReaction(params: RemoveInstagramReactionParams, accessToken: string) {\r\n return this.httpClient.delete('/api/v1/instagram/messages/reaction', accessToken, {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n messageId: params.messageId,\r\n });\r\n }\r\n\r\n /**\r\n * Envia quick replies\r\n * @param params Parâmetros dos quick replies\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendQuickReplies(params: SendInstagramQuickRepliesParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/quick-replies', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n quickReplies: params.quickReplies,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia template genérico (carrossel)\r\n * @param params Parâmetros do template\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendGenericTemplate(params: SendInstagramGenericTemplateParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/generic-template', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n elements: params.elements,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia template de botões\r\n * @param params Parâmetros do template\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendButtonTemplate(params: SendInstagramButtonTemplateParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/button-template', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n text: params.text,\r\n buttons: params.buttons,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia ação do remetente (typing, seen)\r\n * @param params Parâmetros da ação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendSenderAction(params: SendInstagramSenderActionParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/sender-action', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n action: params.action,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Obtém perfil de um usuário do Instagram\r\n * \r\n * Obtém informações de perfil de um usuário do Instagram.\r\n * \r\n * Campos retornados:\r\n * - id: ID do usuário\r\n * - name: Nome do usuário (pode ser nulo)\r\n * - username: Nome de usuário do Instagram\r\n * \r\n * ⚠️ Nota: A API do Instagram Graph API para usuários regulares (tipo User) \r\n * retorna apenas campos básicos. Campos como foto de perfil, número de seguidores \r\n * e status de verificação não estão disponíveis para usuários regulares.\r\n * \r\n * ⚠️ O usuário deve ter enviado mensagem direta para sua conta. \r\n * Não é possível obter perfil de quem apenas comentou.\r\n * \r\n * @param params Parâmetros do perfil\r\n * @param params.token Token do canal\r\n * @param params.userId ID do usuário (IGSID)\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getUserProfile(params: GetInstagramUserProfileParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/user-profile', {\r\n channelToken: params.channelToken,\r\n userId: params.userId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Lista publicações do Instagram\r\n * @param params Parâmetros da listagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async listPosts(params: ListInstagramPostsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/posts', {\r\n channelToken: params.channelToken,\r\n userId: params.userId,\r\n limit: params.limit,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Obtém perfil da conta comercial do Instagram\r\n * @param params Parâmetros do perfil\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getBusinessProfile(params: GetInstagramBusinessProfileParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/business-profile', {\r\n channelToken: params.channelToken,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Baixa uma mídia descriptografada do Instagram usando a URL\r\n * @param params Parâmetros do download\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async downloadMedia(params: DownloadInstagramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/download-media', {\r\n channelToken: params.channelToken,\r\n url: params.url,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Cria um contêiner de mídia para publicação no Instagram\r\n * @param params Parâmetros do contêiner\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async createMediaContainer(params: CreateInstagramMediaContainerParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/media', {\r\n channelToken: params.channelToken,\r\n image_url: params.image_url,\r\n video_url: params.video_url,\r\n media_type: params.media_type,\r\n caption: params.caption,\r\n is_carousel_item: params.is_carousel_item,\r\n children: params.children,\r\n upload_type: params.upload_type,\r\n trial_params: params.trial_params,\r\n alt_text: params.alt_text,\r\n location_id: params.location_id,\r\n product_tags: params.product_tags,\r\n user_tags: params.user_tags,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Publica uma mídia no Instagram usando o ID do contêiner\r\n * @param params Parâmetros da publicação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async publishMedia(params: PublishInstagramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/media_publish', {\r\n channelToken: params.channelToken,\r\n creation_id: params.creation_id,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Verifica o status de um contêiner de mídia\r\n * @param params Parâmetros da verificação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getContainerStatus(params: GetInstagramContainerStatusParams, accessToken: string) {\r\n return this.httpClient.post(`/api/v1/instagram/media/${params.container_id}/status`, {\r\n channelToken: params.channelToken,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Verifica o limite de publicação atual\r\n * @param params Parâmetros da verificação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getPublishingLimit(params: GetInstagramPublishingLimitParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/content_publishing_limit', {\r\n channelToken: params.channelToken,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Faz upload de vídeo para sessão retomável\r\n * @param params Parâmetros do upload\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async uploadVideo(params: UploadInstagramVideoParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/upload', {\r\n channelToken: params.channelToken,\r\n container_id: params.container_id,\r\n file_url: params.file_url,\r\n offset: params.offset,\r\n file_size: params.file_size,\r\n }, accessToken);\r\n }\r\n}\r\n","import { HttpClient } from './client/http-client';\r\nimport { AuthModule } from './modules/auth';\r\nimport { ChannelsModule } from './modules/channels';\r\nimport { IntegrationsModule } from './modules/integrations';\r\nimport { WhatsAppModule } from './modules/whatsapp';\r\nimport { TelegramModule } from './modules/telegram';\r\nimport { WebChatModule } from './modules/webchat';\r\nimport { FacebookModule } from './modules/facebook';\r\nimport { InstagramModule } from './modules/instagram';\r\nimport { SDKConfig } from './types';\r\n\r\n/**\r\n * SDK OficialAPI - Cliente principal\r\n * \r\n * @example\r\n * ```typescript\r\n * import { OficialAPISDK } from '@oficialapi/sdk';\r\n * \r\n * const sdk = new OficialAPISDK({\r\n * clientId: 'your-client-id',\r\n * clientSecret: 'your-client-secret'\r\n * });\r\n * \r\n * // Enviar mensagem WhatsApp\r\n * const result = await sdk.whatsapp.sendText({\r\n * channelToken: 'sk_live_...',\r\n * sender: '5511999999999',\r\n * messageText: 'Olá!'\r\n * });\r\n * ```\r\n */\r\nexport class OficialAPISDK {\r\n private httpClient: HttpClient;\r\n\r\n public readonly auth: AuthModule;\r\n public readonly channels: ChannelsModule;\r\n public readonly integrations: IntegrationsModule;\r\n public readonly whatsapp: WhatsAppModule;\r\n public readonly telegram: TelegramModule;\r\n public readonly webchat: WebChatModule;\r\n public readonly facebook: FacebookModule;\r\n public readonly instagram: InstagramModule;\r\n\r\n constructor(config: SDKConfig) {\r\n this.httpClient = new HttpClient(config);\r\n\r\n // Inicializa módulos\r\n this.auth = new AuthModule(this.httpClient);\r\n this.channels = new ChannelsModule(this.httpClient);\r\n this.integrations = new IntegrationsModule(this.httpClient);\r\n this.whatsapp = new WhatsAppModule(this.httpClient);\r\n this.telegram = new TelegramModule(this.httpClient);\r\n this.webchat = new WebChatModule(this.httpClient);\r\n this.facebook = new FacebookModule(this.httpClient);\r\n this.instagram = new InstagramModule(this.httpClient);\r\n }\r\n\r\n}\r\n\r\n// Exporta tipos\r\nexport * from './types';\r\n\r\n// Exporta também como default para compatibilidade\r\nexport default OficialAPISDK;\r\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -3,6 +3,6 @@ import P from'axios';/**
|
|
|
3
3
|
* @version 1.0.0
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
|
-
var I="https://api.oficialapi.com.br",l=class{constructor(e){this.config={clientId:e.clientId,clientSecret:e.clientSecret,timeout:e.timeout||3e4,maxRetries:e.maxRetries||3,retryDelay:e.retryDelay||1e3,headers:e.headers||{}},this.axiosInstance=P.create({baseURL:I,timeout:this.config.timeout,headers:{"Content-Type":"application/json",...this.config.headers}}),this.setupInterceptors();}setupInterceptors(){this.axiosInstance.interceptors.request.use(e=>{if(e.url?.includes("/auth/token"))return e;let t=e;return t.accessToken&&e.headers&&(e.headers.Authorization=`Bearer ${t.accessToken}`),e},e=>Promise.reject(e)),this.axiosInstance.interceptors.response.use(e=>e,async e=>{let t=e.config;if(!t)return Promise.reject(this.formatError(e));if((!e.response||e.response.status>=500&&e.response.status<600)&&(!t._retryCount||t._retryCount<this.config.maxRetries)){t._retryCount=(t._retryCount||0)+1;let s=this.config.retryDelay*t._retryCount;return await new Promise(i=>setTimeout(i,s)),this.axiosInstance(t)}return Promise.reject(this.formatError(e))});}formatError(e){if(e.response){let t=e.response.data,n=t?.error?.message||t?.message||e.message,s=t?.error?.details||[],i=new Error(n);return i.status=e.response.status,i.data=e.response.data,i.details=s,i}return e.request?new Error("Erro de conex\xE3o com a API. Verifique sua conex\xE3o com a internet."):e}async get(e,t,n){let s={...n,accessToken:t};return (await this.axiosInstance.get(e,s)).data}async post(e,t,n,s){let i={...s,accessToken:n};return (await this.axiosInstance.post(e,t,i)).data}async put(e,t,n,s){let i={...s,accessToken:n};return (await this.axiosInstance.put(e,t,i)).data}async delete(e,t,n,s){let i={...s,accessToken:t,data:n};return (await this.axiosInstance.delete(e,i)).data}async upload(e,t,n,s="file",i){let o=new FormData;if(t instanceof Buffer){let y=new Blob([t]);o.append(s,y);}else o.append(s,t);i&&Object.entries(i).forEach(([y,r])=>{r!=null&&o.append(y,typeof r=="string"?r:JSON.stringify(r));});let C={headers:{"Content-Type":"multipart/form-data"},accessToken:n};return (await this.axiosInstance.post(e,o,C)).data}};var d=class{constructor(e){this.httpClient=e;}async getToken(e,t){let n=await this.httpClient.post("/api/v1/auth/token",{client_id:e,client_secret:t});if(!n.success||!n.data)throw new Error(n.error?.message||"Falha ao obter token");return n.data}};var c=class{constructor(e){this.httpClient=e;}async list(e){let t=await this.httpClient.get("/api/v1/channels",e);if(!t.success||!t.data)throw new Error(t.error?.message||"Falha ao listar canais");return Array.isArray(t.data)?t.data:[t.data]}};var h=class{constructor(e){this.httpClient=e;}async createWebhook(e,t){let n=await this.httpClient.post("/api/v1/integrations",{url:e.url,expiresInDays:e.expiresInDays},t);if(!n.success||!n.data)throw new Error(n.error?.message||"Falha ao criar webhook");return n.data}};var p=class{constructor(e){this.httpClient=e;}async sendText(e,t){return this.httpClient.post("/api/v1/whatsapp/send-message",{channelToken:e.channelToken,sender:e.sender,messageText:e.messageText},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/whatsapp/send-media",{channelToken:e.channelToken,sender:e.sender,fileUrl:e.fileUrl,type:e.type,caption:e.caption,...e.fileName&&{fileName:e.fileName}},t)}async sendTemplate(e,t){return this.httpClient.post("/api/v1/whatsapp/send-template",{channelToken:e.channelToken,sender:e.sender,templateName:e.templateName,languageCode:e.languageCode,components:e.components},t)}async sendButtons(e,t){return this.httpClient.post("/api/v1/whatsapp/send-buttons",{channelToken:e.channelToken,sender:e.sender,text:e.text,buttons:e.buttons,...e.media&&{media:e.media}},t)}async sendList(e,t){return this.httpClient.post("/api/v1/whatsapp/send-list",{channelToken:e.channelToken,sender:e.sender,headerText:e.headerText,bodyText:e.bodyText,buttonText:e.buttonText,sections:e.sections,...e.footerText&&{footerText:e.footerText}},t)}async replyMessage(e,t){return this.httpClient.post("/api/v1/whatsapp/reply-message",{channelToken:e.channelToken,sender:e.sender,messageText:e.messageText,...e.replyMessageId&&{replyMessageId:e.replyMessageId},...e.preview_url!==void 0&&{preview_url:e.preview_url}},t)}async reactMessage(e,t){return this.httpClient.post("/api/v1/whatsapp/react-message",{channelToken:e.channelToken,sender:e.sender,emoji:e.emoji,...e.message_id&&{message_id:e.message_id}},t)}async createTemplate(e,t){return this.httpClient.post("/api/v1/whatsapp/create-template",{channelToken:e.channelToken,name:e.name,language:e.language,category:e.category,components:e.components},t)}async listTemplates(e,t){return this.httpClient.get(`/api/v1/whatsapp/templates?channelToken=${encodeURIComponent(e)}`,t)}async getTemplate(e,t,n){return this.httpClient.get(`/api/v1/whatsapp/templates/${t}?channelToken=${encodeURIComponent(e)}`,n)}async uploadMedia(e,t){return this.httpClient.upload("/api/v1/whatsapp/upload-media",e.file,t,"file",{channelToken:e.channelToken,mediaType:e.mediaType,...e.filename&&{filename:e.filename}})}async sendOrderDetails(e,t){return this.httpClient.post("/api/v1/whatsapp/send-order-details",{channelToken:e.channelToken,sender:e.sender,...e.headerText&&{headerText:e.headerText},bodyText:e.bodyText,...e.footerText&&{footerText:e.footerText},reference_id:e.reference_id,type:e.type,currency:e.currency,total_amount:e.total_amount,order:e.order,...e.payment_settings&&{payment_settings:e.payment_settings}},t)}async sendOrderStatus(e,t){return this.httpClient.post("/api/v1/whatsapp/send-order-status",{channelToken:e.channelToken,sender:e.sender,bodyText:e.bodyText,...e.footerText&&{footerText:e.footerText},reference_id:e.reference_id,order_status:e.order_status,...e.status_description&&{status_description:e.status_description},...e.payment_status&&{payment_status:e.payment_status},...e.payment_timestamp!==void 0&&{payment_timestamp:e.payment_timestamp}},t)}async sendAudio(e,t){return this.httpClient.post("/api/v1/whatsapp/send-audio",{channelToken:e.channelToken,sender:e.sender,mediaId:e.mediaId,...e.voice!==void 0&&{voice:e.voice}},t)}async sendSticker(e,t){return this.httpClient.post("/api/v1/whatsapp/send-sticker",{channelToken:e.channelToken,sender:e.sender,mediaId:e.mediaId},t)}async sendVideo(e,t){return this.httpClient.post("/api/v1/whatsapp/send-video",{channelToken:e.channelToken,sender:e.sender,mediaId:e.mediaId,...e.caption&&{caption:e.caption}},t)}async sendDocument(e,t){return this.httpClient.post("/api/v1/whatsapp/send-document",{channelToken:e.channelToken,sender:e.sender,mediaId:e.mediaId,...e.filename&&{filename:e.filename},...e.caption&&{caption:e.caption}},t)}async sendContact(e,t){return this.httpClient.post("/api/v1/whatsapp/send-contact",{channelToken:e.channelToken,sender:e.sender,contacts:e.contacts},t)}async sendLocation(e,t){return this.httpClient.post("/api/v1/whatsapp/send-location",{channelToken:e.channelToken,sender:e.sender,latitude:e.latitude,longitude:e.longitude,name:e.name,address:e.address},t)}async sendLocationRequest(e,t){return this.httpClient.post("/api/v1/whatsapp/send-location-request",{channelToken:e.channelToken,sender:e.sender,bodyText:e.bodyText,...e.headerText&&{headerText:e.headerText},...e.footerText&&{footerText:e.footerText}},t)}async sendCtaUrl(e,t){return this.httpClient.post("/api/v1/whatsapp/send-cta-url",{channelToken:e.channelToken,sender:e.sender,bodyText:e.bodyText,buttonText:e.buttonText,url:e.url,...e.header&&{header:e.header},...e.footerText&&{footerText:e.footerText}},t)}async sendMediaCarousel(e,t){return this.httpClient.post("/api/v1/whatsapp/send-media-carousel",{channelToken:e.channelToken,sender:e.sender,bodyText:e.bodyText,cards:e.cards},t)}async downloadMedia(e,t){return this.httpClient.post("/api/v1/whatsapp/download-media",{channelToken:e.channelToken,url:e.url},t)}};var g=class{constructor(e){this.httpClient=e;}async sendMessage(e,t){return this.httpClient.post("/api/v1/telegram/send-message",{channelToken:e.channelToken,chatId:e.chatId,text:e.text,parseMode:e.parseMode,replyToMessageId:e.replyToMessageId,disableNotification:e.disableNotification},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/telegram/send-media",{channelToken:e.channelToken,chatId:e.chatId,fileUrl:e.fileUrl,type:e.type,caption:e.caption,parseMode:e.parseMode,replyToMessageId:e.replyToMessageId},t)}async sendButtons(e,t){return this.httpClient.post("/api/v1/telegram/send-buttons",{channelToken:e.channelToken,chatId:e.chatId,text:e.text,buttons:e.buttons,parseMode:e.parseMode},t)}async sendLocation(e,t){return this.httpClient.post("/api/v1/telegram/send-location",{channelToken:e.channelToken,chatId:e.chatId,latitude:e.latitude,longitude:e.longitude,livePeriod:e.livePeriod},t)}async sendContact(e,t){return this.httpClient.post("/api/v1/telegram/send-contact",{channelToken:e.channelToken,chatId:e.chatId,phoneNumber:e.phoneNumber,firstName:e.firstName,lastName:e.lastName,vcard:e.vcard},t)}async sendPoll(e,t){return this.httpClient.post("/api/v1/telegram/send-poll",{channelToken:e.channelToken,chatId:e.chatId,question:e.question,options:e.options,isAnonymous:e.isAnonymous,type:e.type,correctOptionId:e.correctOptionId},t)}async sendVenue(e,t){return this.httpClient.post("/api/v1/telegram/send-venue",{channelToken:e.channelToken,chatId:e.chatId,latitude:e.latitude,longitude:e.longitude,title:e.title,address:e.address,foursquareId:e.foursquareId},t)}async sendDice(e,t){return this.httpClient.post("/api/v1/telegram/send-dice",{channelToken:e.channelToken,chatId:e.chatId,emoji:e.emoji},t)}async sendSticker(e,t){return this.httpClient.post("/api/v1/telegram/send-sticker",{channelToken:e.channelToken,chatId:e.chatId,stickerUrl:e.stickerUrl},t)}async sendVoice(e,t){return this.httpClient.post("/api/v1/telegram/send-voice",{channelToken:e.channelToken,chatId:e.chatId,voiceUrl:e.voiceUrl,caption:e.caption,duration:e.duration},t)}async sendVideoNote(e,t){return this.httpClient.post("/api/v1/telegram/send-video-note",{channelToken:e.channelToken,chatId:e.chatId,videoNoteUrl:e.videoNoteUrl,duration:e.duration,length:e.length},t)}async sendMediaGroup(e,t){return this.httpClient.post("/api/v1/telegram/send-media-group",{channelToken:e.channelToken,chatId:e.chatId,media:e.media},t)}async sendReplyKeyboard(e,t){return this.httpClient.post("/api/v1/telegram/send-reply-keyboard",{channelToken:e.channelToken,chatId:e.chatId,text:e.text,keyboard:e.keyboard,resizeKeyboard:e.resizeKeyboard,oneTimeKeyboard:e.oneTimeKeyboard},t)}async editMessage(e,t){return this.httpClient.post("/api/v1/telegram/edit-message",{channelToken:e.channelToken,chatId:e.chatId,messageId:e.messageId,text:e.text,parseMode:e.parseMode},t)}async deleteMessage(e,t){return this.httpClient.post("/api/v1/telegram/delete-message",{channelToken:e.channelToken,chatId:e.chatId,messageId:e.messageId},t)}async downloadMedia(e,t){return this.httpClient.post("/api/v1/telegram/download-media",{channelToken:e.channelToken,fileId:e.fileId},t)}};var u=class{constructor(e){this.httpClient=e;}async sendText(e,t){return this.httpClient.post("/api/v1/webchat/send-text",{channelToken:e.channelToken,chatId:e.chatId,type:"text",content:{text:e.messageText,typingTime:e.typingTime},typing:e.typing},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/webchat/send-media",{channelToken:e.channelToken,chatId:e.chatId,type:e.type,content:{url:e.fileUrl,caption:e.caption,typingTime:e.typingTime},typing:e.typing},t)}async sendCarousel(e,t){return this.httpClient.post("/api/v1/webchat/send-carousel",{channelToken:e.channelToken,chatId:e.chatId,type:"carousel",content:{cards:e.cards.map(n=>({title:n.title,subtitle:n.subtitle,imageUrl:n.imageUrl,buttons:n.buttons?.map(s=>({id:s.id||`btn_${Date.now()}_${Math.random()}`,text:s.text,type:s.type,value:s.value,url:s.url}))})),typingTime:e.typingTime},typing:e.typing},t)}async sendForm(e,t){return this.httpClient.post("/api/v1/webchat/send-form",{channelToken:e.channelToken,chatId:e.chatId,type:"form",content:{id:e.id,title:e.title,submitText:e.submitButtonText,fields:e.fields.map(n=>({id:n.id||n.name,type:n.type,label:n.label,placeholder:n.placeholder,required:n.required,options:n.options})),typingTime:e.typingTime},typing:e.typing},t)}async sendQuickReplies(e,t){return this.httpClient.post("/api/v1/webchat/send-quick-replies",{channelToken:e.channelToken,chatId:e.chatId,type:"quickReplies",content:{text:e.messageText,quickReplies:e.quickReplies.map(n=>({id:n.id||`qr_${Date.now()}_${Math.random()}`,text:n.text,value:n.value})),typingTime:e.typingTime},typing:e.typing},t)}async sendCard(e,t){return this.httpClient.post("/api/v1/webchat/send-card",{channelToken:e.channelToken,chatId:e.chatId,type:"card",content:{title:e.title,subtitle:e.description,imageUrl:e.imageUrl,buttons:e.buttons?.map(n=>({id:n.id||`btn_${Date.now()}_${Math.random()}`,text:n.text,type:n.type,value:n.value,url:n.url})),typingTime:e.typingTime},typing:e.typing},t)}async sendButtons(e,t){return this.httpClient.post("/api/v1/webchat/send-buttons",{channelToken:e.channelToken,chatId:e.chatId,type:"buttons",content:{text:e.messageText,buttons:e.buttons.map(n=>({id:n.id||`btn_${Date.now()}_${Math.random()}`,text:n.text,type:n.type,value:n.value,url:n.url})),typingTime:e.typingTime},typing:e.typing},t)}};var m=class{constructor(e){this.httpClient=e;}async listPosts(e,t){return this.httpClient.post("/api/v1/facebook/list-posts",{channelToken:e.channelToken,pageId:e.pageId,limit:e.limit},t)}async listComments(e,t){return this.httpClient.post("/api/v1/facebook/list-comments",{channelToken:e.channelToken,postId:e.postId,limit:e.limit},t)}async createPost(e,t){return this.httpClient.post("/api/v1/facebook/create-post",{channelToken:e.channelToken,pageId:e.pageId,message:e.message,link:e.link},t)}async replyComment(e,t){return this.httpClient.post("/api/v1/facebook/reply-comment",{channelToken:e.channelToken,commentId:e.commentId,message:e.message},t)}async deleteComment(e,t){return this.httpClient.post("/api/v1/facebook/delete-comment",{channelToken:e.channelToken,commentId:e.commentId},t)}async sendText(e,t){return this.httpClient.post("/api/v1/facebook/send-text",{channelToken:e.channelToken,recipientId:e.recipientId,message:e.message},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/facebook/send-media",{channelToken:e.channelToken,recipientId:e.recipientId,fileUrl:e.fileUrl,type:e.type,caption:e.caption},t)}async sendButtons(e,t){return this.httpClient.post("/api/v1/facebook/send-buttons",{channelToken:e.channelToken,recipientId:e.recipientId,message:e.message,buttons:e.buttons},t)}async sendSticker(e,t){return this.httpClient.post("/api/v1/facebook/send-sticker",{channelToken:e.channelToken,recipientId:e.recipientId,stickerId:e.stickerId},t)}async replyMessage(e,t){return this.httpClient.post("/api/v1/facebook/reply-message",{channelToken:e.channelToken,messageId:e.messageId,message:e.message},t)}async replyMedia(e,t){return this.httpClient.post("/api/v1/facebook/reply-media",{channelToken:e.channelToken,messageId:e.messageId,fileUrl:e.fileUrl,type:e.type,caption:e.caption},t)}async sharePost(e,t){return this.httpClient.post("/api/v1/facebook/share-post",{channelToken:e.channelToken,mediaId:e.mediaId,recipientId:e.recipientId},t)}async getUserProfile(e,t){return this.httpClient.post("/api/v1/facebook/user-profile",{channelToken:e.channelToken,userId:e.userId},t)}async getPageProfile(e,t){return this.httpClient.post("/api/v1/facebook/page-profile",{channelToken:e.channelToken,pageId:e.pageId},t)}async downloadMedia(e,t){return this.httpClient.post("/api/v1/facebook/download-media",{channelToken:e.channelToken,url:e.url},t)}};var T=class{constructor(e){this.httpClient=e;}async sendPrivateReply(e,t){return this.httpClient.post("/api/v1/instagram/private-reply",{channelToken:e.channelToken,commentId:e.commentId,message:e.message},t)}async sendText(e,t){return this.httpClient.post("/api/v1/instagram/messages/text",{channelToken:e.channelToken,recipientId:e.recipientId,text:e.text,...e.tags&&{tags:e.tags}},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/instagram/messages/media",{channelToken:e.channelToken,recipientId:e.recipientId,fileUrl:e.fileUrl,type:e.type,caption:e.caption},t)}async sendImages(e,t){return this.httpClient.post("/api/v1/instagram/messages/images",{channelToken:e.channelToken,recipientId:e.recipientId,images:e.images},t)}async sendSticker(e,t){return this.httpClient.post("/api/v1/instagram/messages/sticker",{channelToken:e.channelToken,recipientId:e.recipientId,stickerType:e.stickerType},t)}async reactMessage(e,t){return this.httpClient.post("/api/v1/instagram/messages/reaction",{channelToken:e.channelToken,messageId:e.messageId,reactionType:e.reactionType},t)}async removeReaction(e,t){return this.httpClient.delete("/api/v1/instagram/messages/reaction",t,{channelToken:e.channelToken,recipientId:e.recipientId,messageId:e.messageId})}async sendQuickReplies(e,t){return this.httpClient.post("/api/v1/instagram/messages/quick-replies",{channelToken:e.channelToken,recipientId:e.recipientId,message:e.message,quickReplies:e.quickReplies},t)}async sendGenericTemplate(e,t){return this.httpClient.post("/api/v1/instagram/messages/generic-template",{channelToken:e.channelToken,recipientId:e.recipientId,elements:e.elements},t)}async sendButtonTemplate(e,t){return this.httpClient.post("/api/v1/instagram/messages/button-template",{channelToken:e.channelToken,recipientId:e.recipientId,text:e.text,buttons:e.buttons},t)}async sendSenderAction(e,t){return this.httpClient.post("/api/v1/instagram/messages/sender-action",{channelToken:e.channelToken,recipientId:e.recipientId,action:e.action},t)}async getUserProfile(e,t){return this.httpClient.post("/api/v1/instagram/user-profile",{channelToken:e.channelToken,userId:e.userId},t)}async listPosts(e,t){return this.httpClient.post("/api/v1/instagram/posts",{channelToken:e.channelToken,userId:e.userId,limit:e.limit},t)}async getBusinessProfile(e,t){return this.httpClient.post("/api/v1/instagram/business-profile",{channelToken:e.channelToken},t)}async downloadMedia(e,t){return this.httpClient.post("/api/v1/instagram/download-media",{channelToken:e.channelToken,url:e.url},t)}async createMediaContainer(e,t){return this.httpClient.post("/api/v1/instagram/media",{channelToken:e.channelToken,image_url:e.image_url,video_url:e.video_url,media_type:e.media_type,caption:e.caption,is_carousel_item:e.is_carousel_item,children:e.children,upload_type:e.upload_type,trial_params:e.trial_params,alt_text:e.alt_text,location_id:e.location_id,product_tags:e.product_tags,user_tags:e.user_tags},t)}async publishMedia(e,t){return this.httpClient.post("/api/v1/instagram/media_publish",{channelToken:e.channelToken,creation_id:e.creation_id},t)}async getContainerStatus(e,t){return this.httpClient.post(`/api/v1/instagram/media/${e.container_id}/status`,{channelToken:e.channelToken},t)}async getPublishingLimit(e,t){return this.httpClient.post("/api/v1/instagram/content_publishing_limit",{channelToken:e.channelToken},t)}async uploadVideo(e,t){return this.httpClient.post("/api/v1/instagram/upload",{channelToken:e.channelToken,container_id:e.container_id,file_url:e.file_url,offset:e.offset,file_size:e.file_size},t)}};var k=class{constructor(e){this.httpClient=new l(e),this.auth=new d(this.httpClient),this.channels=new c(this.httpClient),this.integrations=new h(this.httpClient),this.whatsapp=new p(this.httpClient),this.telegram=new g(this.httpClient),this.webchat=new u(this.httpClient),this.facebook=new m(this.httpClient),this.instagram=new T(this.httpClient);}},K=k;
|
|
6
|
+
var I="https://api.oficialapi.com.br",l=class{constructor(e){this.config={clientId:e.clientId,clientSecret:e.clientSecret,timeout:e.timeout||3e4,maxRetries:e.maxRetries||3,retryDelay:e.retryDelay||1e3,headers:e.headers||{}},this.axiosInstance=P.create({baseURL:I,timeout:this.config.timeout,headers:{"Content-Type":"application/json",...this.config.headers}}),this.setupInterceptors();}setupInterceptors(){this.axiosInstance.interceptors.request.use(e=>{if(e.url?.includes("/auth/token"))return e;let t=e;return t.accessToken&&e.headers&&(e.headers.Authorization=`Bearer ${t.accessToken}`),e},e=>Promise.reject(e)),this.axiosInstance.interceptors.response.use(e=>e,async e=>{let t=e.config;if(!t)return Promise.reject(this.formatError(e));if((!e.response||e.response.status>=500&&e.response.status<600)&&(!t._retryCount||t._retryCount<this.config.maxRetries)){t._retryCount=(t._retryCount||0)+1;let s=this.config.retryDelay*t._retryCount;return await new Promise(i=>setTimeout(i,s)),this.axiosInstance(t)}return Promise.reject(this.formatError(e))});}formatError(e){if(e.response){let t=e.response.data,n=t?.error?.message||t?.message||e.message,s=t?.error?.details||[],i=new Error(n);return i.status=e.response.status,i.data=e.response.data,i.details=s,i}return e.request?new Error("Erro de conex\xE3o com a API. Verifique sua conex\xE3o com a internet."):e}async get(e,t,n){let s={...n,accessToken:t};return (await this.axiosInstance.get(e,s)).data}async post(e,t,n,s){let i={...s,accessToken:n};return (await this.axiosInstance.post(e,t,i)).data}async put(e,t,n,s){let i={...s,accessToken:n};return (await this.axiosInstance.put(e,t,i)).data}async delete(e,t,n,s){let i={...s,accessToken:t,data:n};return (await this.axiosInstance.delete(e,i)).data}async upload(e,t,n,s="file",i){let o=new FormData;if(t instanceof Buffer){let y=new Blob([t]);o.append(s,y);}else o.append(s,t);i&&Object.entries(i).forEach(([y,r])=>{r!=null&&o.append(y,typeof r=="string"?r:JSON.stringify(r));});let C={headers:{"Content-Type":"multipart/form-data"},accessToken:n};return (await this.axiosInstance.post(e,o,C)).data}};var d=class{constructor(e){this.httpClient=e;}async getToken(e,t){let n=await this.httpClient.post("/api/v1/auth/token",{client_id:e,client_secret:t});if(!n.success||!n.data)throw new Error(n.error?.message||"Falha ao obter token");return n.data}};var c=class{constructor(e){this.httpClient=e;}async list(e){let t=await this.httpClient.get("/api/v1/channels",e);if(!t.success||!t.data)throw new Error(t.error?.message||"Falha ao listar canais");return Array.isArray(t.data)?t.data:[t.data]}};var h=class{constructor(e){this.httpClient=e;}async createWebhook(e,t){let n=await this.httpClient.post("/api/v1/integrations",{url:e.url,expiresInDays:e.expiresInDays},t);if(!n.success||!n.data)throw new Error(n.error?.message||"Falha ao criar webhook");return n.data}};var p=class{constructor(e){this.httpClient=e;}async sendText(e,t){return this.httpClient.post("/api/v1/whatsapp/send-message",{channelToken:e.channelToken,sender:e.sender,messageText:e.messageText},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/whatsapp/send-media",{channelToken:e.channelToken,sender:e.sender,fileUrl:e.fileUrl,type:e.type,caption:e.caption,...e.fileName&&{fileName:e.fileName}},t)}async sendTemplate(e,t){return this.httpClient.post("/api/v1/whatsapp/send-template",{channelToken:e.channelToken,sender:e.sender,templateName:e.templateName,languageCode:e.languageCode,components:e.components},t)}async sendButtons(e,t){return this.httpClient.post("/api/v1/whatsapp/send-buttons",{channelToken:e.channelToken,sender:e.sender,text:e.text,buttons:e.buttons,...e.media&&{media:e.media}},t)}async sendList(e,t){return this.httpClient.post("/api/v1/whatsapp/send-list",{channelToken:e.channelToken,sender:e.sender,headerText:e.headerText,bodyText:e.bodyText,buttonText:e.buttonText,sections:e.sections,...e.footerText&&{footerText:e.footerText}},t)}async replyMessage(e,t){return this.httpClient.post("/api/v1/whatsapp/reply-message",{channelToken:e.channelToken,sender:e.sender,messageText:e.messageText,...e.replyMessageId&&{replyMessageId:e.replyMessageId},...e.preview_url!==void 0&&{preview_url:e.preview_url}},t)}async reactMessage(e,t){return this.httpClient.post("/api/v1/whatsapp/react-message",{channelToken:e.channelToken,sender:e.sender,emoji:e.emoji,...e.message_id&&{message_id:e.message_id}},t)}async createTemplate(e,t){return this.httpClient.post("/api/v1/whatsapp/create-template",{channelToken:e.channelToken,name:e.name,language:e.language,category:e.category,components:e.components},t)}async listTemplates(e,t){return this.httpClient.get(`/api/v1/whatsapp/templates?channelToken=${encodeURIComponent(e)}`,t)}async getTemplate(e,t,n){return this.httpClient.get(`/api/v1/whatsapp/templates/${t}?channelToken=${encodeURIComponent(e)}`,n)}async uploadMedia(e,t){return this.httpClient.upload("/api/v1/whatsapp/upload-media",e.file,t,"file",{channelToken:e.channelToken,mediaType:e.mediaType,...e.filename&&{filename:e.filename}})}async sendOrderDetails(e,t){return this.httpClient.post("/api/v1/whatsapp/send-order-details",{channelToken:e.channelToken,sender:e.sender,...e.headerText&&{headerText:e.headerText},bodyText:e.bodyText,...e.footerText&&{footerText:e.footerText},reference_id:e.reference_id,type:e.type,currency:e.currency,total_amount:e.total_amount,order:e.order,...e.payment_settings&&{payment_settings:e.payment_settings}},t)}async sendOrderStatus(e,t){return this.httpClient.post("/api/v1/whatsapp/send-order-status",{channelToken:e.channelToken,sender:e.sender,bodyText:e.bodyText,...e.footerText&&{footerText:e.footerText},reference_id:e.reference_id,order_status:e.order_status,...e.status_description&&{status_description:e.status_description},...e.payment_status&&{payment_status:e.payment_status},...e.payment_timestamp!==void 0&&{payment_timestamp:e.payment_timestamp}},t)}async sendAudio(e,t){return this.httpClient.post("/api/v1/whatsapp/send-audio",{channelToken:e.channelToken,sender:e.sender,mediaId:e.mediaId,...e.voice!==void 0&&{voice:e.voice}},t)}async sendSticker(e,t){return this.httpClient.post("/api/v1/whatsapp/send-sticker",{channelToken:e.channelToken,sender:e.sender,mediaId:e.mediaId},t)}async sendVideo(e,t){return this.httpClient.post("/api/v1/whatsapp/send-video",{channelToken:e.channelToken,sender:e.sender,mediaId:e.mediaId,...e.caption&&{caption:e.caption}},t)}async sendDocument(e,t){return this.httpClient.post("/api/v1/whatsapp/send-document",{channelToken:e.channelToken,sender:e.sender,mediaId:e.mediaId,...e.filename&&{filename:e.filename},...e.caption&&{caption:e.caption}},t)}async sendContact(e,t){return this.httpClient.post("/api/v1/whatsapp/send-contact",{channelToken:e.channelToken,sender:e.sender,contacts:e.contacts},t)}async sendLocation(e,t){return this.httpClient.post("/api/v1/whatsapp/send-location",{channelToken:e.channelToken,sender:e.sender,latitude:e.latitude,longitude:e.longitude,name:e.name,address:e.address},t)}async sendLocationRequest(e,t){return this.httpClient.post("/api/v1/whatsapp/send-location-request",{channelToken:e.channelToken,sender:e.sender,bodyText:e.bodyText,...e.headerText&&{headerText:e.headerText},...e.footerText&&{footerText:e.footerText}},t)}async sendCtaUrl(e,t){return this.httpClient.post("/api/v1/whatsapp/send-cta-url",{channelToken:e.channelToken,sender:e.sender,bodyText:e.bodyText,buttonText:e.buttonText,url:e.url,...e.header&&{header:e.header},...e.footerText&&{footerText:e.footerText}},t)}async sendMediaCarousel(e,t){return this.httpClient.post("/api/v1/whatsapp/send-media-carousel",{channelToken:e.channelToken,sender:e.sender,bodyText:e.bodyText,cards:e.cards},t)}async downloadMedia(e,t){return this.httpClient.post("/api/v1/whatsapp/download-media",{channelToken:e.channelToken,url:e.url},t)}};var g=class{constructor(e){this.httpClient=e;}async sendMessage(e,t){return this.httpClient.post("/api/v1/telegram/send-message",{channelToken:e.channelToken,chatId:e.chatId,text:e.text,parseMode:e.parseMode,replyToMessageId:e.replyToMessageId,disableNotification:e.disableNotification},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/telegram/send-media",{channelToken:e.channelToken,chatId:e.chatId,fileUrl:e.fileUrl,type:e.type,caption:e.caption,parseMode:e.parseMode,replyToMessageId:e.replyToMessageId},t)}async sendButtons(e,t){return this.httpClient.post("/api/v1/telegram/send-buttons",{channelToken:e.channelToken,chatId:e.chatId,text:e.text,buttons:e.buttons,parseMode:e.parseMode},t)}async sendLocation(e,t){return this.httpClient.post("/api/v1/telegram/send-location",{channelToken:e.channelToken,chatId:e.chatId,latitude:e.latitude,longitude:e.longitude,livePeriod:e.livePeriod},t)}async sendContact(e,t){return this.httpClient.post("/api/v1/telegram/send-contact",{channelToken:e.channelToken,chatId:e.chatId,phoneNumber:e.phoneNumber,firstName:e.firstName,lastName:e.lastName,vcard:e.vcard},t)}async sendPoll(e,t){return this.httpClient.post("/api/v1/telegram/send-poll",{channelToken:e.channelToken,chatId:e.chatId,question:e.question,options:e.options,isAnonymous:e.isAnonymous,type:e.type,correctOptionId:e.correctOptionId},t)}async sendVenue(e,t){return this.httpClient.post("/api/v1/telegram/send-venue",{channelToken:e.channelToken,chatId:e.chatId,latitude:e.latitude,longitude:e.longitude,title:e.title,address:e.address,foursquareId:e.foursquareId},t)}async sendDice(e,t){return this.httpClient.post("/api/v1/telegram/send-dice",{channelToken:e.channelToken,chatId:e.chatId,emoji:e.emoji},t)}async sendSticker(e,t){return this.httpClient.post("/api/v1/telegram/send-sticker",{channelToken:e.channelToken,chatId:e.chatId,stickerUrl:e.stickerUrl},t)}async sendVoice(e,t){return this.httpClient.post("/api/v1/telegram/send-voice",{channelToken:e.channelToken,chatId:e.chatId,voiceUrl:e.voiceUrl,caption:e.caption,duration:e.duration},t)}async sendVideoNote(e,t){return this.httpClient.post("/api/v1/telegram/send-video-note",{channelToken:e.channelToken,chatId:e.chatId,videoNoteUrl:e.videoNoteUrl,duration:e.duration,length:e.length},t)}async sendMediaGroup(e,t){return this.httpClient.post("/api/v1/telegram/send-media-group",{channelToken:e.channelToken,chatId:e.chatId,media:e.media},t)}async sendReplyKeyboard(e,t){return this.httpClient.post("/api/v1/telegram/send-reply-keyboard",{channelToken:e.channelToken,chatId:e.chatId,text:e.text,keyboard:e.keyboard,resizeKeyboard:e.resizeKeyboard,oneTimeKeyboard:e.oneTimeKeyboard},t)}async editMessage(e,t){return this.httpClient.post("/api/v1/telegram/edit-message",{channelToken:e.channelToken,chatId:e.chatId,messageId:e.messageId,text:e.text,parseMode:e.parseMode},t)}async deleteMessage(e,t){return this.httpClient.post("/api/v1/telegram/delete-message",{channelToken:e.channelToken,chatId:e.chatId,messageId:e.messageId},t)}async downloadMedia(e,t){return this.httpClient.post("/api/v1/telegram/download-media",{channelToken:e.channelToken,fileId:e.fileId},t)}};var u=class{constructor(e){this.httpClient=e;}async sendText(e,t){return this.httpClient.post("/api/v1/webchat/send-text",{channelToken:e.channelToken,chatId:e.chatId,type:"text",content:{text:e.messageText,typingTime:e.typingTime},typing:e.typing},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/webchat/send-media",{channelToken:e.channelToken,chatId:e.chatId,type:e.type,content:{url:e.fileUrl,caption:e.caption,typingTime:e.typingTime},typing:e.typing},t)}async sendCarousel(e,t){return this.httpClient.post("/api/v1/webchat/send-carousel",{channelToken:e.channelToken,chatId:e.chatId,type:"carousel",content:{cards:e.cards.map(n=>({title:n.title,subtitle:n.subtitle,imageUrl:n.imageUrl,buttons:n.buttons?.map(s=>({id:s.id||`btn_${Date.now()}_${Math.random()}`,text:s.text,type:s.type,value:s.value,url:s.url}))})),typingTime:e.typingTime},typing:e.typing},t)}async sendForm(e,t){return this.httpClient.post("/api/v1/webchat/send-form",{channelToken:e.channelToken,chatId:e.chatId,type:"form",content:{id:e.id,title:e.title,submitText:e.submitButtonText,fields:e.fields.map(n=>({id:n.id||n.name,type:n.type,label:n.label,placeholder:n.placeholder,required:n.required,options:n.options})),typingTime:e.typingTime},typing:e.typing},t)}async sendQuickReplies(e,t){return this.httpClient.post("/api/v1/webchat/send-quick-replies",{channelToken:e.channelToken,chatId:e.chatId,type:"quickReplies",content:{text:e.messageText,quickReplies:e.quickReplies.map(n=>({id:n.id||`qr_${Date.now()}_${Math.random()}`,text:n.text,value:n.value})),typingTime:e.typingTime},typing:e.typing},t)}async sendCard(e,t){return this.httpClient.post("/api/v1/webchat/send-card",{channelToken:e.channelToken,chatId:e.chatId,type:"card",content:{title:e.title,subtitle:e.description,imageUrl:e.imageUrl,buttons:e.buttons?.map(n=>({id:n.id||`btn_${Date.now()}_${Math.random()}`,text:n.text,type:n.type,value:n.value,url:n.url})),typingTime:e.typingTime},typing:e.typing},t)}async sendButtons(e,t){return this.httpClient.post("/api/v1/webchat/send-buttons",{channelToken:e.channelToken,chatId:e.chatId,type:"buttons",content:{text:e.messageText,buttons:e.buttons.map(n=>({id:n.id||`btn_${Date.now()}_${Math.random()}`,text:n.text,type:n.type,value:n.value,url:n.url})),typingTime:e.typingTime},typing:e.typing},t)}};var m=class{constructor(e){this.httpClient=e;}async listPosts(e,t){return this.httpClient.post("/api/v1/facebook/list-posts",{channelToken:e.channelToken,pageId:e.pageId,limit:e.limit},t)}async listComments(e,t){return this.httpClient.post("/api/v1/facebook/list-comments",{channelToken:e.channelToken,postId:e.postId,limit:e.limit},t)}async createPost(e,t){return this.httpClient.post("/api/v1/facebook/create-post",{channelToken:e.channelToken,pageId:e.pageId,message:e.message,link:e.link},t)}async replyComment(e,t){return this.httpClient.post("/api/v1/facebook/reply-comment",{channelToken:e.channelToken,commentId:e.commentId,message:e.message},t)}async deleteComment(e,t){return this.httpClient.post("/api/v1/facebook/delete-comment",{channelToken:e.channelToken,commentId:e.commentId},t)}async sendText(e,t){return this.httpClient.post("/api/v1/facebook/send-text",{channelToken:e.channelToken,recipientId:e.recipientId,message:e.message},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/facebook/send-media",{channelToken:e.channelToken,recipientId:e.recipientId,fileUrl:e.fileUrl,type:e.type,caption:e.caption},t)}async sendButtons(e,t){return this.httpClient.post("/api/v1/facebook/send-buttons",{channelToken:e.channelToken,recipientId:e.recipientId,message:e.message,buttons:e.buttons},t)}async sendSticker(e,t){return this.httpClient.post("/api/v1/facebook/send-sticker",{channelToken:e.channelToken,recipientId:e.recipientId,stickerId:e.stickerId},t)}async replyMessage(e,t){return this.httpClient.post("/api/v1/facebook/reply-message",{channelToken:e.channelToken,messageId:e.messageId,message:e.message},t)}async replyMedia(e,t){return this.httpClient.post("/api/v1/facebook/reply-media",{channelToken:e.channelToken,messageId:e.messageId,fileUrl:e.fileUrl,type:e.type,caption:e.caption},t)}async sharePost(e,t){return this.httpClient.post("/api/v1/facebook/share-post",{channelToken:e.channelToken,mediaId:e.mediaId,recipientId:e.recipientId},t)}async getUserProfile(e,t){return this.httpClient.post("/api/v1/facebook/user-profile",{channelToken:e.channelToken,userId:e.userId},t)}async getPageProfile(e,t){return this.httpClient.post("/api/v1/facebook/page-profile",{channelToken:e.channelToken,pageId:e.pageId},t)}async downloadMedia(e,t){return this.httpClient.post("/api/v1/facebook/download-media",{channelToken:e.channelToken,url:e.url},t)}};var T=class{constructor(e){this.httpClient=e;}async sendPrivateReply(e,t){return this.httpClient.post("/api/v1/instagram/private-reply",{channelToken:e.channelToken,commentId:e.commentId,message:e.message},t)}async sendText(e,t){return this.httpClient.post("/api/v1/instagram/messages/text",{channelToken:e.channelToken,recipientId:e.recipientId,text:e.text,...e.tags&&{tags:e.tags}},t)}async sendMedia(e,t){return this.httpClient.post("/api/v1/instagram/messages/media",{channelToken:e.channelToken,recipientId:e.recipientId,attachment:e.attachment,...e.tags&&{tags:e.tags}},t)}async sendImages(e,t){return this.httpClient.post("/api/v1/instagram/messages/images",{channelToken:e.channelToken,recipientId:e.recipientId,images:e.images},t)}async sendSticker(e,t){return this.httpClient.post("/api/v1/instagram/messages/sticker",{channelToken:e.channelToken,recipientId:e.recipientId,stickerType:e.stickerType},t)}async reactMessage(e,t){return this.httpClient.post("/api/v1/instagram/messages/reaction",{channelToken:e.channelToken,messageId:e.messageId,reactionType:e.reactionType},t)}async removeReaction(e,t){return this.httpClient.delete("/api/v1/instagram/messages/reaction",t,{channelToken:e.channelToken,recipientId:e.recipientId,messageId:e.messageId})}async sendQuickReplies(e,t){return this.httpClient.post("/api/v1/instagram/messages/quick-replies",{channelToken:e.channelToken,recipientId:e.recipientId,message:e.message,quickReplies:e.quickReplies},t)}async sendGenericTemplate(e,t){return this.httpClient.post("/api/v1/instagram/messages/generic-template",{channelToken:e.channelToken,recipientId:e.recipientId,elements:e.elements},t)}async sendButtonTemplate(e,t){return this.httpClient.post("/api/v1/instagram/messages/button-template",{channelToken:e.channelToken,recipientId:e.recipientId,text:e.text,buttons:e.buttons},t)}async sendSenderAction(e,t){return this.httpClient.post("/api/v1/instagram/messages/sender-action",{channelToken:e.channelToken,recipientId:e.recipientId,action:e.action},t)}async getUserProfile(e,t){return this.httpClient.post("/api/v1/instagram/user-profile",{channelToken:e.channelToken,userId:e.userId},t)}async listPosts(e,t){return this.httpClient.post("/api/v1/instagram/posts",{channelToken:e.channelToken,userId:e.userId,limit:e.limit},t)}async getBusinessProfile(e,t){return this.httpClient.post("/api/v1/instagram/business-profile",{channelToken:e.channelToken},t)}async downloadMedia(e,t){return this.httpClient.post("/api/v1/instagram/download-media",{channelToken:e.channelToken,url:e.url},t)}async createMediaContainer(e,t){return this.httpClient.post("/api/v1/instagram/media",{channelToken:e.channelToken,image_url:e.image_url,video_url:e.video_url,media_type:e.media_type,caption:e.caption,is_carousel_item:e.is_carousel_item,children:e.children,upload_type:e.upload_type,trial_params:e.trial_params,alt_text:e.alt_text,location_id:e.location_id,product_tags:e.product_tags,user_tags:e.user_tags},t)}async publishMedia(e,t){return this.httpClient.post("/api/v1/instagram/media_publish",{channelToken:e.channelToken,creation_id:e.creation_id},t)}async getContainerStatus(e,t){return this.httpClient.post(`/api/v1/instagram/media/${e.container_id}/status`,{channelToken:e.channelToken},t)}async getPublishingLimit(e,t){return this.httpClient.post("/api/v1/instagram/content_publishing_limit",{channelToken:e.channelToken},t)}async uploadVideo(e,t){return this.httpClient.post("/api/v1/instagram/upload",{channelToken:e.channelToken,container_id:e.container_id,file_url:e.file_url,offset:e.offset,file_size:e.file_size},t)}};var k=class{constructor(e){this.httpClient=new l(e),this.auth=new d(this.httpClient),this.channels=new c(this.httpClient),this.integrations=new h(this.httpClient),this.whatsapp=new p(this.httpClient),this.telegram=new g(this.httpClient),this.webchat=new u(this.httpClient),this.facebook=new m(this.httpClient),this.instagram=new T(this.httpClient);}},K=k;
|
|
7
7
|
export{k as OficialAPISDK,K as default};//# sourceMappingURL=index.mjs.map
|
|
8
8
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client/http-client.ts","../src/modules/auth.ts","../src/modules/channels.ts","../src/modules/integrations.ts","../src/modules/whatsapp.ts","../src/modules/telegram.ts","../src/modules/webchat.ts","../src/modules/facebook.ts","../src/modules/instagram.ts","../src/index.ts"],"names":["API_BASE_URL","HttpClient","config","axios","requestConfig","error","response","delay","resolve","data","message","errorDetails","formattedError","url","accessToken","file","fieldName","additionalData","formData","blob","key","value","AuthModule","httpClient","clientId","clientSecret","ChannelsModule","IntegrationsModule","params","WhatsAppModule","channelToken","templateId","TelegramModule","WebChatModule","card","btn","field","qr","FacebookModule","InstagramModule","OficialAPISDK","index_default"],"mappings":"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","file":"index.mjs","sourcesContent":["import axios, { AxiosInstance, AxiosError, AxiosRequestConfig } from 'axios';\r\nimport { SDKConfig, ApiResponse } from '../types';\r\n\r\n/**\r\n * URL base da API OficialAPI (fixa)\r\n */\r\nconst API_BASE_URL = 'https://api.oficialapi.com.br';\r\n\r\n/**\r\n * Configuração estendida para requisições com token\r\n */\r\ninterface RequestConfigWithToken extends AxiosRequestConfig {\r\n accessToken?: string;\r\n}\r\n\r\n/**\r\n * Cliente HTTP robusto com retry automático e tratamento de erros\r\n * Cada requisição deve receber o accessToken como parâmetro\r\n */\r\nexport class HttpClient {\r\n private axiosInstance: AxiosInstance;\r\n private config: {\r\n clientId: string;\r\n clientSecret: string;\r\n timeout: number;\r\n maxRetries: number;\r\n retryDelay: number;\r\n headers: Record<string, string>;\r\n };\r\n\r\n constructor(config: SDKConfig) {\r\n this.config = {\r\n clientId: config.clientId,\r\n clientSecret: config.clientSecret,\r\n timeout: config.timeout || 30000,\r\n maxRetries: config.maxRetries || 3,\r\n retryDelay: config.retryDelay || 1000,\r\n headers: config.headers || {},\r\n };\r\n\r\n this.axiosInstance = axios.create({\r\n baseURL: API_BASE_URL,\r\n timeout: this.config.timeout,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...this.config.headers,\r\n },\r\n });\r\n\r\n this.setupInterceptors();\r\n }\r\n\r\n private setupInterceptors() {\r\n // Request interceptor - adiciona token de autenticação se fornecido\r\n this.axiosInstance.interceptors.request.use(\r\n (config) => {\r\n // Não adiciona token para endpoint de autenticação\r\n if (config.url?.includes('/auth/token')) {\r\n return config;\r\n }\r\n\r\n // Adiciona token se foi fornecido na configuração da requisição\r\n const requestConfig = config as RequestConfigWithToken;\r\n if (requestConfig.accessToken && config.headers) {\r\n config.headers.Authorization = `Bearer ${requestConfig.accessToken}`;\r\n }\r\n\r\n return config;\r\n },\r\n (error) => Promise.reject(error)\r\n );\r\n\r\n // Response interceptor - trata erros e retry\r\n this.axiosInstance.interceptors.response.use(\r\n (response) => response,\r\n async (error: AxiosError) => {\r\n const config = error.config as AxiosRequestConfig & { _retry?: boolean; _retryCount?: number };\r\n\r\n // Se não tiver config, não faz retry\r\n if (!config) {\r\n return Promise.reject(this.formatError(error));\r\n }\r\n\r\n // Retry para erros de rede ou 5xx\r\n const shouldRetry =\r\n (!error.response || (error.response.status >= 500 && error.response.status < 600)) &&\r\n (!config._retryCount || config._retryCount < this.config.maxRetries);\r\n\r\n if (shouldRetry) {\r\n config._retryCount = (config._retryCount || 0) + 1;\r\n const delay = this.config.retryDelay * config._retryCount;\r\n\r\n await new Promise((resolve) => setTimeout(resolve, delay));\r\n return this.axiosInstance(config);\r\n }\r\n\r\n return Promise.reject(this.formatError(error));\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Formata erros da API\r\n */\r\n private formatError(error: AxiosError): Error {\r\n if (error.response) {\r\n const data = error.response.data as ApiResponse;\r\n const message = data?.error?.message || data?.message || error.message;\r\n const errorDetails = data?.error?.details || [];\r\n\r\n const formattedError = new Error(message);\r\n (formattedError as any).status = error.response.status;\r\n (formattedError as any).data = error.response.data;\r\n (formattedError as any).details = errorDetails;\r\n\r\n return formattedError;\r\n }\r\n\r\n if (error.request) {\r\n return new Error('Erro de conexão com a API. Verifique sua conexão com a internet.');\r\n }\r\n\r\n return error;\r\n }\r\n\r\n /**\r\n * Faz uma requisição GET\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n */\r\n async get<T = any>(url: string, accessToken?: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const requestConfig: RequestConfigWithToken = {\r\n ...config,\r\n accessToken,\r\n };\r\n const response = await this.axiosInstance.get<ApiResponse<T>>(url, requestConfig);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição POST\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n */\r\n async post<T = any>(url: string, data?: any, accessToken?: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const requestConfig: RequestConfigWithToken = {\r\n ...config,\r\n accessToken,\r\n };\r\n const response = await this.axiosInstance.post<ApiResponse<T>>(url, data, requestConfig);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição PUT\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n */\r\n async put<T = any>(url: string, data?: any, accessToken?: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const requestConfig: RequestConfigWithToken = {\r\n ...config,\r\n accessToken,\r\n };\r\n const response = await this.axiosInstance.put<ApiResponse<T>>(url, data, requestConfig);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição DELETE\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n * @param data Dados a serem enviados no body (opcional)\r\n */\r\n async delete<T = any>(url: string, accessToken?: string, data?: any, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const requestConfig: RequestConfigWithToken = {\r\n ...config,\r\n accessToken,\r\n data, // Axios aceita data em DELETE através do config\r\n };\r\n const response = await this.axiosInstance.delete<ApiResponse<T>>(url, requestConfig);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz upload de arquivo\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n */\r\n async upload<T = any>(\r\n url: string,\r\n file: File | Blob | Buffer,\r\n accessToken?: string,\r\n fieldName: string = 'file',\r\n additionalData?: Record<string, any>\r\n ): Promise<ApiResponse<T>> {\r\n const formData = new FormData();\r\n\r\n if (file instanceof Buffer) {\r\n const blob = new Blob([file]);\r\n formData.append(fieldName, blob);\r\n } else {\r\n formData.append(fieldName, file);\r\n }\r\n\r\n if (additionalData) {\r\n Object.entries(additionalData).forEach(([key, value]) => {\r\n if (value !== undefined && value !== null) {\r\n formData.append(key, typeof value === 'string' ? value : JSON.stringify(value));\r\n }\r\n });\r\n }\r\n\r\n const requestConfig: RequestConfigWithToken = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n accessToken,\r\n };\r\n\r\n const response = await this.axiosInstance.post<ApiResponse<T>>(url, formData, requestConfig);\r\n\r\n return response.data;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { TokenResponse } from '../types';\r\n\r\n/**\r\n * Módulo de Autenticação\r\n */\r\nexport class AuthModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Gera um novo token de acesso\r\n */\r\n async getToken(clientId: string, clientSecret: string): Promise<TokenResponse> {\r\n const response = await this.httpClient.post<TokenResponse>('/api/v1/auth/token', {\r\n client_id: clientId,\r\n client_secret: clientSecret,\r\n });\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao obter token');\r\n }\r\n\r\n return response.data;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { Channel } from '../types';\r\n\r\n/**\r\n * Módulo de Canais\r\n */\r\nexport class ChannelsModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Lista todos os canais do usuário\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async list(accessToken: string): Promise<Channel[]> {\r\n const response = await this.httpClient.get<Channel[]>('/api/v1/channels', accessToken);\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao listar canais');\r\n }\r\n\r\n return Array.isArray(response.data) ? response.data : [response.data];\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { CreateWebhookParams, Webhook } from '../types';\r\n\r\n/**\r\n * Módulo de Integrações\r\n */\r\nexport class IntegrationsModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Cria um novo webhook\r\n * @param params Parâmetros do webhook\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async createWebhook(params: CreateWebhookParams, accessToken: string): Promise<Webhook> {\r\n const response = await this.httpClient.post<Webhook>(\r\n '/api/v1/integrations',\r\n {\r\n url: params.url,\r\n expiresInDays: params.expiresInDays,\r\n },\r\n accessToken\r\n );\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao criar webhook');\r\n }\r\n\r\n return response.data;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\nimport {\n SendWhatsAppTextParams,\n SendWhatsAppMediaParams,\n SendWhatsAppTemplateParams,\n SendWhatsAppButtonsParams,\n SendWhatsAppListParams,\n ReplyWhatsAppParams,\n ReactWhatsAppParams,\n CreateTemplateParams,\n UploadMediaParams,\n SendOrderDetailsParams,\n SendOrderStatusParams,\n SendWhatsAppAudioParams,\n SendWhatsAppStickerParams,\n SendWhatsAppVideoParams,\n SendWhatsAppDocumentParams,\n SendWhatsAppContactParams,\n SendWhatsAppLocationParams,\n SendWhatsAppLocationRequestParams,\n SendWhatsAppCtaUrlParams,\n SendWhatsAppMediaCarouselParams,\n DownloadWhatsAppMediaParams,\n} from '../types';\n\n/**\n * Módulo WhatsApp - Envio de mensagens e gerenciamento de templates\n */\nexport class WhatsAppModule {\n constructor(private httpClient: HttpClient) {}\n\n /**\n * Envia mensagem de texto\n * @param params Parâmetros da mensagem\n * @param accessToken Token de acesso do usuário\n */\n async sendText(params: SendWhatsAppTextParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-message', {\n channelToken: params.channelToken,\n sender: params.sender,\n messageText: params.messageText,\n }, accessToken);\n }\n\n /**\n * Envia mídia (imagem, vídeo, áudio, documento)\n * @param params Parâmetros da mídia\n * @param accessToken Token de acesso do usuário\n */\n async sendMedia(params: SendWhatsAppMediaParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-media', {\n channelToken: params.channelToken,\n sender: params.sender,\n fileUrl: params.fileUrl,\n type: params.type,\n caption: params.caption,\n ...(params.fileName && { fileName: params.fileName }),\n }, accessToken);\n }\n\n /**\n * Envia template\n * @param params Parâmetros do template\n * @param accessToken Token de acesso do usuário\n */\n async sendTemplate(params: SendWhatsAppTemplateParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-template', {\n channelToken: params.channelToken,\n sender: params.sender,\n templateName: params.templateName,\n languageCode: params.languageCode,\n components: params.components,\n }, accessToken);\n }\n\n /**\n * Envia mensagem com botões\n * @param params Parâmetros dos botões\n * @param accessToken Token de acesso do usuário\n */\n async sendButtons(params: SendWhatsAppButtonsParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-buttons', {\n channelToken: params.channelToken,\n sender: params.sender,\n text: params.text,\n buttons: params.buttons,\n ...(params.media && { media: params.media }),\n }, accessToken);\n }\n\n /**\n * Envia lista interativa\n * @param params Parâmetros da lista\n * @param accessToken Token de acesso do usuário\n */\n async sendList(params: SendWhatsAppListParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-list', {\n channelToken: params.channelToken,\n sender: params.sender,\n headerText: params.headerText,\n bodyText: params.bodyText,\n buttonText: params.buttonText,\n sections: params.sections,\n ...(params.footerText && { footerText: params.footerText }),\n }, accessToken);\n }\n\n /**\n * Responde a uma mensagem\n * @param params Parâmetros da resposta\n * @param accessToken Token de acesso do usuário\n */\n async replyMessage(params: ReplyWhatsAppParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/reply-message', {\n channelToken: params.channelToken,\n sender: params.sender,\n messageText: params.messageText,\n ...(params.replyMessageId && { replyMessageId: params.replyMessageId }),\n ...(params.preview_url !== undefined && { preview_url: params.preview_url }),\n }, accessToken);\n }\n\n /**\n * Reage a uma mensagem\n * @param params Parâmetros da reação\n * @param accessToken Token de acesso do usuário\n */\n async reactMessage(params: ReactWhatsAppParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/react-message', {\n channelToken: params.channelToken,\n sender: params.sender,\n emoji: params.emoji,\n ...(params.message_id && { message_id: params.message_id }),\n }, accessToken);\n }\n\n /**\n * Cria um template\n * @param params Parâmetros do template\n * @param accessToken Token de acesso do usuário\n */\n async createTemplate(params: CreateTemplateParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/create-template', {\n channelToken: params.channelToken,\n name: params.name,\n language: params.language,\n category: params.category,\n components: params.components,\n }, accessToken);\n }\n\n /**\n * Lista templates\n * @param token Token do canal\n * @param accessToken Token de acesso do usuário\n */\n async listTemplates(channelToken: string, accessToken: string) {\n return this.httpClient.get(`/api/v1/whatsapp/templates?channelToken=${encodeURIComponent(channelToken)}`, accessToken);\n }\n\n /**\n * Obtém detalhes de um template\n * @param channelToken Token do canal\n * @param templateId ID do template\n * @param accessToken Token de acesso do usuário\n */\n async getTemplate(channelToken: string, templateId: string, accessToken: string) {\n return this.httpClient.get(`/api/v1/whatsapp/templates/${templateId}?channelToken=${encodeURIComponent(channelToken)}`, accessToken);\n }\n\n /**\n * Faz upload de mídia para templates\n * @param params Parâmetros do upload\n * @param accessToken Token de acesso do usuário\n */\n async uploadMedia(params: UploadMediaParams, accessToken: string) {\n return this.httpClient.upload('/api/v1/whatsapp/upload-media', params.file, accessToken, 'file', {\n channelToken: params.channelToken,\n mediaType: params.mediaType,\n ...(params.filename && { filename: params.filename }),\n });\n }\n\n /**\n * Envia detalhes do pedido com opções de pagamento\n * @param params Parâmetros do pedido\n * @param accessToken Token de acesso do usuário\n */\n async sendOrderDetails(params: SendOrderDetailsParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-order-details', {\n channelToken: params.channelToken,\n sender: params.sender,\n ...(params.headerText && { headerText: params.headerText }),\n bodyText: params.bodyText,\n ...(params.footerText && { footerText: params.footerText }),\n reference_id: params.reference_id,\n type: params.type,\n currency: params.currency,\n total_amount: params.total_amount,\n order: params.order,\n ...(params.payment_settings && { payment_settings: params.payment_settings }),\n }, accessToken);\n }\n\n /**\n * Atualiza status do pedido\n * @param params Parâmetros do status\n * @param accessToken Token de acesso do usuário\n */\n async sendOrderStatus(params: SendOrderStatusParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-order-status', {\n channelToken: params.channelToken,\n sender: params.sender,\n bodyText: params.bodyText,\n ...(params.footerText && { footerText: params.footerText }),\n reference_id: params.reference_id,\n order_status: params.order_status,\n ...(params.status_description && { status_description: params.status_description }),\n ...(params.payment_status && { payment_status: params.payment_status }),\n ...(params.payment_timestamp !== undefined && { payment_timestamp: params.payment_timestamp }),\n }, accessToken);\n }\n\n /**\n * Envia áudio\n * @param params Parâmetros do áudio\n * @param accessToken Token de acesso do usuário\n */\n async sendAudio(params: SendWhatsAppAudioParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-audio', {\n channelToken: params.channelToken,\n sender: params.sender,\n mediaId: params.mediaId,\n ...(params.voice !== undefined && { voice: params.voice }),\n }, accessToken);\n }\n\n /**\n * Envia sticker\n * @param params Parâmetros do sticker\n * @param accessToken Token de acesso do usuário\n */\n async sendSticker(params: SendWhatsAppStickerParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-sticker', {\n channelToken: params.channelToken,\n sender: params.sender,\n mediaId: params.mediaId,\n }, accessToken);\n }\n\n /**\n * Envia vídeo\n * @param params Parâmetros do vídeo\n * @param accessToken Token de acesso do usuário\n */\n async sendVideo(params: SendWhatsAppVideoParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-video', {\n channelToken: params.channelToken,\n sender: params.sender,\n mediaId: params.mediaId,\n ...(params.caption && { caption: params.caption }),\n }, accessToken);\n }\n\n /**\n * Envia documento\n * @param params Parâmetros do documento\n * @param accessToken Token de acesso do usuário\n */\n async sendDocument(params: SendWhatsAppDocumentParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-document', {\n channelToken: params.channelToken,\n sender: params.sender,\n mediaId: params.mediaId,\n ...(params.filename && { filename: params.filename }),\n ...(params.caption && { caption: params.caption }),\n }, accessToken);\n }\n\n /**\n * Envia contato\n * @param params Parâmetros do contato\n * @param accessToken Token de acesso do usuário\n */\n async sendContact(params: SendWhatsAppContactParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-contact', {\n channelToken: params.channelToken,\n sender: params.sender,\n contacts: params.contacts,\n }, accessToken);\n }\n\n /**\n * Envia localização\n * @param params Parâmetros da localização\n * @param accessToken Token de acesso do usuário\n */\n async sendLocation(params: SendWhatsAppLocationParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-location', {\n channelToken: params.channelToken,\n sender: params.sender,\n latitude: params.latitude,\n longitude: params.longitude,\n name: params.name,\n address: params.address,\n }, accessToken);\n }\n\n /**\n * Solicita localização\n * @param params Parâmetros da solicitação\n * @param accessToken Token de acesso do usuário\n */\n async sendLocationRequest(params: SendWhatsAppLocationRequestParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-location-request', {\n channelToken: params.channelToken,\n sender: params.sender,\n bodyText: params.bodyText,\n ...(params.headerText && { headerText: params.headerText }),\n ...(params.footerText && { footerText: params.footerText }),\n }, accessToken);\n }\n\n /**\n * Envia mensagem com botão CTA URL\n * @param params Parâmetros do CTA\n * @param accessToken Token de acesso do usuário\n */\n async sendCtaUrl(params: SendWhatsAppCtaUrlParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-cta-url', {\n channelToken: params.channelToken,\n sender: params.sender,\n bodyText: params.bodyText,\n buttonText: params.buttonText,\n url: params.url,\n ...(params.header && { header: params.header }),\n ...(params.footerText && { footerText: params.footerText }),\n }, accessToken);\n }\n\n /**\n * Envia carrossel de mídia\n * @param params Parâmetros do carrossel\n * @param accessToken Token de acesso do usuário\n */\n async sendMediaCarousel(params: SendWhatsAppMediaCarouselParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-media-carousel', {\n channelToken: params.channelToken,\n sender: params.sender,\n bodyText: params.bodyText,\n cards: params.cards,\n }, accessToken);\n }\n\n /**\n * Baixa uma mídia descriptografada do WhatsApp usando a URL\n * @param params Parâmetros do download\n * @param accessToken Token de acesso do usuário\n */\n async downloadMedia(params: DownloadWhatsAppMediaParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/download-media', {\n channelToken: params.channelToken,\n url: params.url,\n }, accessToken);\n }\n}\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendTelegramTextParams,\r\n SendTelegramMediaParams,\r\n SendTelegramButtonsParams,\r\n SendTelegramLocationParams,\r\n SendTelegramContactParams,\r\n SendTelegramPollParams,\r\n SendTelegramVenueParams,\r\n SendTelegramDiceParams,\r\n SendTelegramStickerParams,\r\n SendTelegramVoiceParams,\r\n SendTelegramVideoNoteParams,\r\n SendTelegramMediaGroupParams,\r\n SendTelegramReplyKeyboardParams,\r\n EditTelegramMessageParams,\r\n DeleteTelegramMessageParams,\r\n DownloadTelegramMediaParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Telegram - Envio de mensagens e gerenciamento\r\n */\r\nexport class TelegramModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia mensagem de texto\r\n * @param params Parâmetros da mensagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMessage(params: SendTelegramTextParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-message', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n text: params.text,\r\n parseMode: params.parseMode,\r\n replyToMessageId: params.replyToMessageId,\r\n disableNotification: params.disableNotification,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n * @param params Parâmetros da mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMedia(params: SendTelegramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-media', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n parseMode: params.parseMode,\r\n replyToMessageId: params.replyToMessageId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem com botões\r\n * @param params Parâmetros dos botões\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendButtons(params: SendTelegramButtonsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-buttons', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n text: params.text,\r\n buttons: params.buttons,\r\n parseMode: params.parseMode,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia localização\r\n * @param params Parâmetros da localização\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendLocation(params: SendTelegramLocationParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-location', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n latitude: params.latitude,\r\n longitude: params.longitude,\r\n livePeriod: params.livePeriod,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia contato\r\n * @param params Parâmetros do contato\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendContact(params: SendTelegramContactParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-contact', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n phoneNumber: params.phoneNumber,\r\n firstName: params.firstName,\r\n lastName: params.lastName,\r\n vcard: params.vcard,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia enquete\r\n * @param params Parâmetros da enquete\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendPoll(params: SendTelegramPollParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-poll', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n question: params.question,\r\n options: params.options,\r\n isAnonymous: params.isAnonymous,\r\n type: params.type,\r\n correctOptionId: params.correctOptionId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia venue (local)\r\n * @param params Parâmetros do venue\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendVenue(params: SendTelegramVenueParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-venue', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n latitude: params.latitude,\r\n longitude: params.longitude,\r\n title: params.title,\r\n address: params.address,\r\n foursquareId: params.foursquareId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia dado/emoji animado\r\n * @param params Parâmetros do dado\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendDice(params: SendTelegramDiceParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-dice', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n emoji: params.emoji,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia sticker\r\n * @param params Parâmetros do sticker\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendSticker(params: SendTelegramStickerParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-sticker', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n stickerUrl: params.stickerUrl,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem de voz\r\n * @param params Parâmetros da voz\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendVoice(params: SendTelegramVoiceParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-voice', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n voiceUrl: params.voiceUrl,\r\n caption: params.caption,\r\n duration: params.duration,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia video note\r\n * @param params Parâmetros do video note\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendVideoNote(params: SendTelegramVideoNoteParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-video-note', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n videoNoteUrl: params.videoNoteUrl,\r\n duration: params.duration,\r\n length: params.length,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia grupo de mídia\r\n * @param params Parâmetros do grupo de mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMediaGroup(params: SendTelegramMediaGroupParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-media-group', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n media: params.media,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia teclado de resposta\r\n * @param params Parâmetros do teclado\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendReplyKeyboard(params: SendTelegramReplyKeyboardParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-reply-keyboard', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n text: params.text,\r\n keyboard: params.keyboard,\r\n resizeKeyboard: params.resizeKeyboard,\r\n oneTimeKeyboard: params.oneTimeKeyboard,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Edita mensagem\r\n * @param params Parâmetros da edição\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async editMessage(params: EditTelegramMessageParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/edit-message', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n messageId: params.messageId,\r\n text: params.text,\r\n parseMode: params.parseMode,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Deleta mensagem\r\n * @param params Parâmetros da deleção\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async deleteMessage(params: DeleteTelegramMessageParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/delete-message', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n messageId: params.messageId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Baixa uma mídia descriptografada do Telegram usando o file_id\r\n * @param params Parâmetros do download\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async downloadMedia(params: DownloadTelegramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/download-media', {\r\n channelToken: params.channelToken,\r\n fileId: params.fileId,\r\n }, accessToken);\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendWebChatTextParams,\r\n SendWebChatMediaParams,\r\n SendWebChatCarouselParams,\r\n SendWebChatFormParams,\r\n SendWebChatQuickRepliesParams,\r\n SendWebChatCardParams,\r\n SendWebChatButtonsParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo WebChat - Envio de mensagens via WebChat\r\n */\r\nexport class WebChatModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia mensagem de texto\r\n * @param params Parâmetros da mensagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendText(params: SendWebChatTextParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-text', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'text',\r\n content: {\r\n text: params.messageText,\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n * @param params Parâmetros da mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMedia(params: SendWebChatMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-media', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: params.type,\r\n content: {\r\n url: params.fileUrl,\r\n caption: params.caption,\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia carousel\r\n * @param params Parâmetros do carousel\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendCarousel(params: SendWebChatCarouselParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-carousel', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'carousel',\r\n content: {\r\n cards: params.cards.map(card => ({\r\n title: card.title,\r\n subtitle: card.subtitle,\r\n imageUrl: card.imageUrl,\r\n buttons: card.buttons?.map(btn => ({\r\n id: btn.id || `btn_${Date.now()}_${Math.random()}`,\r\n text: btn.text,\r\n type: btn.type,\r\n value: btn.value,\r\n url: btn.url,\r\n })),\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia formulário\r\n * @param params Parâmetros do formulário\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendForm(params: SendWebChatFormParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-form', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'form',\r\n content: {\r\n id: params.id,\r\n title: params.title,\r\n submitText: params.submitButtonText,\r\n fields: params.fields.map(field => ({\r\n id: field.id || field.name,\r\n type: field.type,\r\n label: field.label,\r\n placeholder: field.placeholder,\r\n required: field.required,\r\n options: field.options,\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia quick replies\r\n * @param params Parâmetros dos quick replies\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendQuickReplies(params: SendWebChatQuickRepliesParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-quick-replies', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'quickReplies',\r\n content: {\r\n text: params.messageText,\r\n quickReplies: params.quickReplies.map(qr => ({\r\n id: qr.id || `qr_${Date.now()}_${Math.random()}`,\r\n text: qr.text,\r\n value: qr.value,\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia card\r\n * @param params Parâmetros do card\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendCard(params: SendWebChatCardParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-card', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'card',\r\n content: {\r\n title: params.title,\r\n subtitle: params.description,\r\n imageUrl: params.imageUrl,\r\n buttons: params.buttons?.map(btn => ({\r\n id: btn.id || `btn_${Date.now()}_${Math.random()}`,\r\n text: btn.text,\r\n type: btn.type,\r\n value: btn.value,\r\n url: btn.url,\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia botões\r\n * @param params Parâmetros dos botões\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendButtons(params: SendWebChatButtonsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-buttons', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'buttons',\r\n content: {\r\n text: params.messageText,\r\n buttons: params.buttons.map(btn => ({\r\n id: btn.id || `btn_${Date.now()}_${Math.random()}`,\r\n text: btn.text,\r\n type: btn.type,\r\n value: btn.value,\r\n url: btn.url,\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n ListPostsParams,\r\n ListCommentsParams,\r\n CreatePostParams,\r\n ReplyCommentParams,\r\n DeleteCommentParams,\r\n SendFacebookTextParams,\r\n SendFacebookMediaParams,\r\n SendFacebookButtonsParams,\r\n SendFacebookStickerParams,\r\n ReplyFacebookMessageParams,\r\n ReplyFacebookMediaParams,\r\n SharePostParams,\r\n GetFacebookUserProfileParams,\r\n GetFacebookPageProfileParams,\r\n DownloadFacebookMediaParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Facebook - Gerenciamento de posts e mensagens\r\n */\r\nexport class FacebookModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Lista posts de uma página\r\n * @param params Parâmetros da listagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async listPosts(params: ListPostsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/list-posts', {\r\n channelToken: params.channelToken,\r\n pageId: params.pageId,\r\n limit: params.limit,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Lista comentários de um post\r\n * @param params Parâmetros da listagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async listComments(params: ListCommentsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/list-comments', {\r\n channelToken: params.channelToken,\r\n postId: params.postId,\r\n limit: params.limit,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Cria um post\r\n * @param params Parâmetros do post\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async createPost(params: CreatePostParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/create-post', {\r\n channelToken: params.channelToken,\r\n pageId: params.pageId,\r\n message: params.message,\r\n link: params.link,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Responde um comentário\r\n * @param params Parâmetros da resposta\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async replyComment(params: ReplyCommentParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/reply-comment', {\r\n channelToken: params.channelToken,\r\n commentId: params.commentId,\r\n message: params.message,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Deleta um comentário\r\n * @param params Parâmetros da deleção\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async deleteComment(params: DeleteCommentParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/delete-comment', {\r\n channelToken: params.channelToken,\r\n commentId: params.commentId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem de texto\r\n * @param params Parâmetros da mensagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendText(params: SendFacebookTextParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/send-text', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n * @param params Parâmetros da mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMedia(params: SendFacebookMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/send-media', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem com botões\r\n * @param params Parâmetros dos botões\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendButtons(params: SendFacebookButtonsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/send-buttons', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n buttons: params.buttons,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia sticker\r\n * @param params Parâmetros do sticker\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendSticker(params: SendFacebookStickerParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/send-sticker', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n stickerId: params.stickerId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Responde uma mensagem\r\n * @param params Parâmetros da resposta\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async replyMessage(params: ReplyFacebookMessageParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/reply-message', {\r\n channelToken: params.channelToken,\r\n messageId: params.messageId,\r\n message: params.message,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Responde com mídia\r\n * @param params Parâmetros da resposta\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async replyMedia(params: ReplyFacebookMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/reply-media', {\r\n channelToken: params.channelToken,\r\n messageId: params.messageId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Compartilha um post do Instagram\r\n * @param params Parâmetros do compartilhamento\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sharePost(params: SharePostParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/share-post', {\r\n channelToken: params.channelToken,\r\n mediaId: params.mediaId,\r\n recipientId: params.recipientId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Obtém perfil de um usuário do Facebook\r\n * @param params Parâmetros do perfil\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getUserProfile(params: GetFacebookUserProfileParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/user-profile', {\r\n channelToken: params.channelToken,\r\n userId: params.userId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Obtém informações de uma página do Facebook\r\n * @param params Parâmetros da página\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getPageProfile(params: GetFacebookPageProfileParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/page-profile', {\r\n channelToken: params.channelToken,\r\n pageId: params.pageId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Baixa uma mídia descriptografada do Facebook/Instagram usando a URL\r\n * @param params Parâmetros do download\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async downloadMedia(params: DownloadFacebookMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/download-media', {\r\n channelToken: params.channelToken,\r\n url: params.url,\r\n }, accessToken);\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendInstagramPrivateReplyParams,\r\n SendInstagramTextParams,\r\n SendInstagramMediaParams,\r\n SendInstagramImagesParams,\r\n SendInstagramStickerParams,\r\n ReactInstagramMessageParams,\r\n RemoveInstagramReactionParams,\r\n SendInstagramQuickRepliesParams,\r\n SendInstagramGenericTemplateParams,\r\n SendInstagramButtonTemplateParams,\r\n SendInstagramSenderActionParams,\r\n GetInstagramUserProfileParams,\r\n GetInstagramBusinessProfileParams,\r\n ListInstagramPostsParams,\r\n DownloadInstagramMediaParams,\r\n CreateInstagramMediaContainerParams,\r\n PublishInstagramMediaParams,\r\n GetInstagramContainerStatusParams,\r\n GetInstagramPublishingLimitParams,\r\n UploadInstagramVideoParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Instagram - Envio de mensagens e gerenciamento\r\n */\r\nexport class InstagramModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia resposta privada a comentário\r\n * @param params Parâmetros da resposta\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendPrivateReply(params: SendInstagramPrivateReplyParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/private-reply', {\r\n channelToken: params.channelToken,\r\n commentId: params.commentId,\r\n message: params.message,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem de texto\r\n * @param params Parâmetros da mensagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendText(params: SendInstagramTextParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/text', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n text: params.text,\r\n ...(params.tags && { tags: params.tags }),\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n * @param params Parâmetros da mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMedia(params: SendInstagramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/media', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia múltiplas imagens (carrossel)\r\n * @param params Parâmetros das imagens\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendImages(params: SendInstagramImagesParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/images', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n images: params.images,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia sticker (like/heart)\r\n * @param params Parâmetros do sticker\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendSticker(params: SendInstagramStickerParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/sticker', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n stickerType: params.stickerType,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Reage a uma mensagem\r\n * @param params Parâmetros da reação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async reactMessage(params: ReactInstagramMessageParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/reaction', {\r\n channelToken: params.channelToken,\r\n messageId: params.messageId,\r\n reactionType: params.reactionType,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Remove reação de uma mensagem\r\n * @param params Parâmetros da remoção\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async removeReaction(params: RemoveInstagramReactionParams, accessToken: string) {\r\n return this.httpClient.delete('/api/v1/instagram/messages/reaction', accessToken, {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n messageId: params.messageId,\r\n });\r\n }\r\n\r\n /**\r\n * Envia quick replies\r\n * @param params Parâmetros dos quick replies\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendQuickReplies(params: SendInstagramQuickRepliesParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/quick-replies', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n quickReplies: params.quickReplies,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia template genérico (carrossel)\r\n * @param params Parâmetros do template\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendGenericTemplate(params: SendInstagramGenericTemplateParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/generic-template', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n elements: params.elements,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia template de botões\r\n * @param params Parâmetros do template\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendButtonTemplate(params: SendInstagramButtonTemplateParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/button-template', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n text: params.text,\r\n buttons: params.buttons,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia ação do remetente (typing, seen)\r\n * @param params Parâmetros da ação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendSenderAction(params: SendInstagramSenderActionParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/sender-action', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n action: params.action,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Obtém perfil de um usuário do Instagram\r\n * \r\n * Obtém informações de perfil de um usuário do Instagram.\r\n * \r\n * Campos retornados:\r\n * - id: ID do usuário\r\n * - name: Nome do usuário (pode ser nulo)\r\n * - username: Nome de usuário do Instagram\r\n * \r\n * ⚠️ Nota: A API do Instagram Graph API para usuários regulares (tipo User) \r\n * retorna apenas campos básicos. Campos como foto de perfil, número de seguidores \r\n * e status de verificação não estão disponíveis para usuários regulares.\r\n * \r\n * ⚠️ O usuário deve ter enviado mensagem direta para sua conta. \r\n * Não é possível obter perfil de quem apenas comentou.\r\n * \r\n * @param params Parâmetros do perfil\r\n * @param params.token Token do canal\r\n * @param params.userId ID do usuário (IGSID)\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getUserProfile(params: GetInstagramUserProfileParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/user-profile', {\r\n channelToken: params.channelToken,\r\n userId: params.userId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Lista publicações do Instagram\r\n * @param params Parâmetros da listagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async listPosts(params: ListInstagramPostsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/posts', {\r\n channelToken: params.channelToken,\r\n userId: params.userId,\r\n limit: params.limit,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Obtém perfil da conta comercial do Instagram\r\n * @param params Parâmetros do perfil\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getBusinessProfile(params: GetInstagramBusinessProfileParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/business-profile', {\r\n channelToken: params.channelToken,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Baixa uma mídia descriptografada do Instagram usando a URL\r\n * @param params Parâmetros do download\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async downloadMedia(params: DownloadInstagramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/download-media', {\r\n channelToken: params.channelToken,\r\n url: params.url,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Cria um contêiner de mídia para publicação no Instagram\r\n * @param params Parâmetros do contêiner\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async createMediaContainer(params: CreateInstagramMediaContainerParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/media', {\r\n channelToken: params.channelToken,\r\n image_url: params.image_url,\r\n video_url: params.video_url,\r\n media_type: params.media_type,\r\n caption: params.caption,\r\n is_carousel_item: params.is_carousel_item,\r\n children: params.children,\r\n upload_type: params.upload_type,\r\n trial_params: params.trial_params,\r\n alt_text: params.alt_text,\r\n location_id: params.location_id,\r\n product_tags: params.product_tags,\r\n user_tags: params.user_tags,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Publica uma mídia no Instagram usando o ID do contêiner\r\n * @param params Parâmetros da publicação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async publishMedia(params: PublishInstagramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/media_publish', {\r\n channelToken: params.channelToken,\r\n creation_id: params.creation_id,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Verifica o status de um contêiner de mídia\r\n * @param params Parâmetros da verificação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getContainerStatus(params: GetInstagramContainerStatusParams, accessToken: string) {\r\n return this.httpClient.post(`/api/v1/instagram/media/${params.container_id}/status`, {\r\n channelToken: params.channelToken,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Verifica o limite de publicação atual\r\n * @param params Parâmetros da verificação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getPublishingLimit(params: GetInstagramPublishingLimitParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/content_publishing_limit', {\r\n channelToken: params.channelToken,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Faz upload de vídeo para sessão retomável\r\n * @param params Parâmetros do upload\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async uploadVideo(params: UploadInstagramVideoParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/upload', {\r\n channelToken: params.channelToken,\r\n container_id: params.container_id,\r\n file_url: params.file_url,\r\n offset: params.offset,\r\n file_size: params.file_size,\r\n }, accessToken);\r\n }\r\n}\r\n","import { HttpClient } from './client/http-client';\r\nimport { AuthModule } from './modules/auth';\r\nimport { ChannelsModule } from './modules/channels';\r\nimport { IntegrationsModule } from './modules/integrations';\r\nimport { WhatsAppModule } from './modules/whatsapp';\r\nimport { TelegramModule } from './modules/telegram';\r\nimport { WebChatModule } from './modules/webchat';\r\nimport { FacebookModule } from './modules/facebook';\r\nimport { InstagramModule } from './modules/instagram';\r\nimport { SDKConfig } from './types';\r\n\r\n/**\r\n * SDK OficialAPI - Cliente principal\r\n * \r\n * @example\r\n * ```typescript\r\n * import { OficialAPISDK } from '@oficialapi/sdk';\r\n * \r\n * const sdk = new OficialAPISDK({\r\n * clientId: 'your-client-id',\r\n * clientSecret: 'your-client-secret'\r\n * });\r\n * \r\n * // Enviar mensagem WhatsApp\r\n * const result = await sdk.whatsapp.sendText({\r\n * channelToken: 'sk_live_...',\r\n * sender: '5511999999999',\r\n * messageText: 'Olá!'\r\n * });\r\n * ```\r\n */\r\nexport class OficialAPISDK {\r\n private httpClient: HttpClient;\r\n\r\n public readonly auth: AuthModule;\r\n public readonly channels: ChannelsModule;\r\n public readonly integrations: IntegrationsModule;\r\n public readonly whatsapp: WhatsAppModule;\r\n public readonly telegram: TelegramModule;\r\n public readonly webchat: WebChatModule;\r\n public readonly facebook: FacebookModule;\r\n public readonly instagram: InstagramModule;\r\n\r\n constructor(config: SDKConfig) {\r\n this.httpClient = new HttpClient(config);\r\n\r\n // Inicializa módulos\r\n this.auth = new AuthModule(this.httpClient);\r\n this.channels = new ChannelsModule(this.httpClient);\r\n this.integrations = new IntegrationsModule(this.httpClient);\r\n this.whatsapp = new WhatsAppModule(this.httpClient);\r\n this.telegram = new TelegramModule(this.httpClient);\r\n this.webchat = new WebChatModule(this.httpClient);\r\n this.facebook = new FacebookModule(this.httpClient);\r\n this.instagram = new InstagramModule(this.httpClient);\r\n }\r\n\r\n}\r\n\r\n// Exporta tipos\r\nexport * from './types';\r\n\r\n// Exporta também como default para compatibilidade\r\nexport default OficialAPISDK;\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/client/http-client.ts","../src/modules/auth.ts","../src/modules/channels.ts","../src/modules/integrations.ts","../src/modules/whatsapp.ts","../src/modules/telegram.ts","../src/modules/webchat.ts","../src/modules/facebook.ts","../src/modules/instagram.ts","../src/index.ts"],"names":["API_BASE_URL","HttpClient","config","axios","requestConfig","error","response","delay","resolve","data","message","errorDetails","formattedError","url","accessToken","file","fieldName","additionalData","formData","blob","key","value","AuthModule","httpClient","clientId","clientSecret","ChannelsModule","IntegrationsModule","params","WhatsAppModule","channelToken","templateId","TelegramModule","WebChatModule","card","btn","field","qr","FacebookModule","InstagramModule","OficialAPISDK","index_default"],"mappings":"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","file":"index.mjs","sourcesContent":["import axios, { AxiosInstance, AxiosError, AxiosRequestConfig } from 'axios';\r\nimport { SDKConfig, ApiResponse } from '../types';\r\n\r\n/**\r\n * URL base da API OficialAPI (fixa)\r\n */\r\nconst API_BASE_URL = 'https://api.oficialapi.com.br';\r\n\r\n/**\r\n * Configuração estendida para requisições com token\r\n */\r\ninterface RequestConfigWithToken extends AxiosRequestConfig {\r\n accessToken?: string;\r\n}\r\n\r\n/**\r\n * Cliente HTTP robusto com retry automático e tratamento de erros\r\n * Cada requisição deve receber o accessToken como parâmetro\r\n */\r\nexport class HttpClient {\r\n private axiosInstance: AxiosInstance;\r\n private config: {\r\n clientId: string;\r\n clientSecret: string;\r\n timeout: number;\r\n maxRetries: number;\r\n retryDelay: number;\r\n headers: Record<string, string>;\r\n };\r\n\r\n constructor(config: SDKConfig) {\r\n this.config = {\r\n clientId: config.clientId,\r\n clientSecret: config.clientSecret,\r\n timeout: config.timeout || 30000,\r\n maxRetries: config.maxRetries || 3,\r\n retryDelay: config.retryDelay || 1000,\r\n headers: config.headers || {},\r\n };\r\n\r\n this.axiosInstance = axios.create({\r\n baseURL: API_BASE_URL,\r\n timeout: this.config.timeout,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...this.config.headers,\r\n },\r\n });\r\n\r\n this.setupInterceptors();\r\n }\r\n\r\n private setupInterceptors() {\r\n // Request interceptor - adiciona token de autenticação se fornecido\r\n this.axiosInstance.interceptors.request.use(\r\n (config) => {\r\n // Não adiciona token para endpoint de autenticação\r\n if (config.url?.includes('/auth/token')) {\r\n return config;\r\n }\r\n\r\n // Adiciona token se foi fornecido na configuração da requisição\r\n const requestConfig = config as RequestConfigWithToken;\r\n if (requestConfig.accessToken && config.headers) {\r\n config.headers.Authorization = `Bearer ${requestConfig.accessToken}`;\r\n }\r\n\r\n return config;\r\n },\r\n (error) => Promise.reject(error)\r\n );\r\n\r\n // Response interceptor - trata erros e retry\r\n this.axiosInstance.interceptors.response.use(\r\n (response) => response,\r\n async (error: AxiosError) => {\r\n const config = error.config as AxiosRequestConfig & { _retry?: boolean; _retryCount?: number };\r\n\r\n // Se não tiver config, não faz retry\r\n if (!config) {\r\n return Promise.reject(this.formatError(error));\r\n }\r\n\r\n // Retry para erros de rede ou 5xx\r\n const shouldRetry =\r\n (!error.response || (error.response.status >= 500 && error.response.status < 600)) &&\r\n (!config._retryCount || config._retryCount < this.config.maxRetries);\r\n\r\n if (shouldRetry) {\r\n config._retryCount = (config._retryCount || 0) + 1;\r\n const delay = this.config.retryDelay * config._retryCount;\r\n\r\n await new Promise((resolve) => setTimeout(resolve, delay));\r\n return this.axiosInstance(config);\r\n }\r\n\r\n return Promise.reject(this.formatError(error));\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Formata erros da API\r\n */\r\n private formatError(error: AxiosError): Error {\r\n if (error.response) {\r\n const data = error.response.data as ApiResponse;\r\n const message = data?.error?.message || data?.message || error.message;\r\n const errorDetails = data?.error?.details || [];\r\n\r\n const formattedError = new Error(message);\r\n (formattedError as any).status = error.response.status;\r\n (formattedError as any).data = error.response.data;\r\n (formattedError as any).details = errorDetails;\r\n\r\n return formattedError;\r\n }\r\n\r\n if (error.request) {\r\n return new Error('Erro de conexão com a API. Verifique sua conexão com a internet.');\r\n }\r\n\r\n return error;\r\n }\r\n\r\n /**\r\n * Faz uma requisição GET\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n */\r\n async get<T = any>(url: string, accessToken?: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const requestConfig: RequestConfigWithToken = {\r\n ...config,\r\n accessToken,\r\n };\r\n const response = await this.axiosInstance.get<ApiResponse<T>>(url, requestConfig);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição POST\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n */\r\n async post<T = any>(url: string, data?: any, accessToken?: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const requestConfig: RequestConfigWithToken = {\r\n ...config,\r\n accessToken,\r\n };\r\n const response = await this.axiosInstance.post<ApiResponse<T>>(url, data, requestConfig);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição PUT\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n */\r\n async put<T = any>(url: string, data?: any, accessToken?: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const requestConfig: RequestConfigWithToken = {\r\n ...config,\r\n accessToken,\r\n };\r\n const response = await this.axiosInstance.put<ApiResponse<T>>(url, data, requestConfig);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz uma requisição DELETE\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n * @param data Dados a serem enviados no body (opcional)\r\n */\r\n async delete<T = any>(url: string, accessToken?: string, data?: any, config?: AxiosRequestConfig): Promise<ApiResponse<T>> {\r\n const requestConfig: RequestConfigWithToken = {\r\n ...config,\r\n accessToken,\r\n data, // Axios aceita data em DELETE através do config\r\n };\r\n const response = await this.axiosInstance.delete<ApiResponse<T>>(url, requestConfig);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Faz upload de arquivo\r\n * @param accessToken Token de acesso (obrigatório para endpoints autenticados)\r\n */\r\n async upload<T = any>(\r\n url: string,\r\n file: File | Blob | Buffer,\r\n accessToken?: string,\r\n fieldName: string = 'file',\r\n additionalData?: Record<string, any>\r\n ): Promise<ApiResponse<T>> {\r\n const formData = new FormData();\r\n\r\n if (file instanceof Buffer) {\r\n const blob = new Blob([file]);\r\n formData.append(fieldName, blob);\r\n } else {\r\n formData.append(fieldName, file);\r\n }\r\n\r\n if (additionalData) {\r\n Object.entries(additionalData).forEach(([key, value]) => {\r\n if (value !== undefined && value !== null) {\r\n formData.append(key, typeof value === 'string' ? value : JSON.stringify(value));\r\n }\r\n });\r\n }\r\n\r\n const requestConfig: RequestConfigWithToken = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n accessToken,\r\n };\r\n\r\n const response = await this.axiosInstance.post<ApiResponse<T>>(url, formData, requestConfig);\r\n\r\n return response.data;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { TokenResponse } from '../types';\r\n\r\n/**\r\n * Módulo de Autenticação\r\n */\r\nexport class AuthModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Gera um novo token de acesso\r\n */\r\n async getToken(clientId: string, clientSecret: string): Promise<TokenResponse> {\r\n const response = await this.httpClient.post<TokenResponse>('/api/v1/auth/token', {\r\n client_id: clientId,\r\n client_secret: clientSecret,\r\n });\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao obter token');\r\n }\r\n\r\n return response.data;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { Channel } from '../types';\r\n\r\n/**\r\n * Módulo de Canais\r\n */\r\nexport class ChannelsModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Lista todos os canais do usuário\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async list(accessToken: string): Promise<Channel[]> {\r\n const response = await this.httpClient.get<Channel[]>('/api/v1/channels', accessToken);\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao listar canais');\r\n }\r\n\r\n return Array.isArray(response.data) ? response.data : [response.data];\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport { CreateWebhookParams, Webhook } from '../types';\r\n\r\n/**\r\n * Módulo de Integrações\r\n */\r\nexport class IntegrationsModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Cria um novo webhook\r\n * @param params Parâmetros do webhook\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async createWebhook(params: CreateWebhookParams, accessToken: string): Promise<Webhook> {\r\n const response = await this.httpClient.post<Webhook>(\r\n '/api/v1/integrations',\r\n {\r\n url: params.url,\r\n expiresInDays: params.expiresInDays,\r\n },\r\n accessToken\r\n );\r\n\r\n if (!response.success || !response.data) {\r\n throw new Error(response.error?.message || 'Falha ao criar webhook');\r\n }\r\n\r\n return response.data;\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\nimport {\n SendWhatsAppTextParams,\n SendWhatsAppMediaParams,\n SendWhatsAppTemplateParams,\n SendWhatsAppButtonsParams,\n SendWhatsAppListParams,\n ReplyWhatsAppParams,\n ReactWhatsAppParams,\n CreateTemplateParams,\n UploadMediaParams,\n SendOrderDetailsParams,\n SendOrderStatusParams,\n SendWhatsAppAudioParams,\n SendWhatsAppStickerParams,\n SendWhatsAppVideoParams,\n SendWhatsAppDocumentParams,\n SendWhatsAppContactParams,\n SendWhatsAppLocationParams,\n SendWhatsAppLocationRequestParams,\n SendWhatsAppCtaUrlParams,\n SendWhatsAppMediaCarouselParams,\n DownloadWhatsAppMediaParams,\n} from '../types';\n\n/**\n * Módulo WhatsApp - Envio de mensagens e gerenciamento de templates\n */\nexport class WhatsAppModule {\n constructor(private httpClient: HttpClient) {}\n\n /**\n * Envia mensagem de texto\n * @param params Parâmetros da mensagem\n * @param accessToken Token de acesso do usuário\n */\n async sendText(params: SendWhatsAppTextParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-message', {\n channelToken: params.channelToken,\n sender: params.sender,\n messageText: params.messageText,\n }, accessToken);\n }\n\n /**\n * Envia mídia (imagem, vídeo, áudio, documento)\n * @param params Parâmetros da mídia\n * @param accessToken Token de acesso do usuário\n */\n async sendMedia(params: SendWhatsAppMediaParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-media', {\n channelToken: params.channelToken,\n sender: params.sender,\n fileUrl: params.fileUrl,\n type: params.type,\n caption: params.caption,\n ...(params.fileName && { fileName: params.fileName }),\n }, accessToken);\n }\n\n /**\n * Envia template\n * @param params Parâmetros do template\n * @param accessToken Token de acesso do usuário\n */\n async sendTemplate(params: SendWhatsAppTemplateParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-template', {\n channelToken: params.channelToken,\n sender: params.sender,\n templateName: params.templateName,\n languageCode: params.languageCode,\n components: params.components,\n }, accessToken);\n }\n\n /**\n * Envia mensagem com botões\n * @param params Parâmetros dos botões\n * @param accessToken Token de acesso do usuário\n */\n async sendButtons(params: SendWhatsAppButtonsParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-buttons', {\n channelToken: params.channelToken,\n sender: params.sender,\n text: params.text,\n buttons: params.buttons,\n ...(params.media && { media: params.media }),\n }, accessToken);\n }\n\n /**\n * Envia lista interativa\n * @param params Parâmetros da lista\n * @param accessToken Token de acesso do usuário\n */\n async sendList(params: SendWhatsAppListParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-list', {\n channelToken: params.channelToken,\n sender: params.sender,\n headerText: params.headerText,\n bodyText: params.bodyText,\n buttonText: params.buttonText,\n sections: params.sections,\n ...(params.footerText && { footerText: params.footerText }),\n }, accessToken);\n }\n\n /**\n * Responde a uma mensagem\n * @param params Parâmetros da resposta\n * @param accessToken Token de acesso do usuário\n */\n async replyMessage(params: ReplyWhatsAppParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/reply-message', {\n channelToken: params.channelToken,\n sender: params.sender,\n messageText: params.messageText,\n ...(params.replyMessageId && { replyMessageId: params.replyMessageId }),\n ...(params.preview_url !== undefined && { preview_url: params.preview_url }),\n }, accessToken);\n }\n\n /**\n * Reage a uma mensagem\n * @param params Parâmetros da reação\n * @param accessToken Token de acesso do usuário\n */\n async reactMessage(params: ReactWhatsAppParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/react-message', {\n channelToken: params.channelToken,\n sender: params.sender,\n emoji: params.emoji,\n ...(params.message_id && { message_id: params.message_id }),\n }, accessToken);\n }\n\n /**\n * Cria um template\n * @param params Parâmetros do template\n * @param accessToken Token de acesso do usuário\n */\n async createTemplate(params: CreateTemplateParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/create-template', {\n channelToken: params.channelToken,\n name: params.name,\n language: params.language,\n category: params.category,\n components: params.components,\n }, accessToken);\n }\n\n /**\n * Lista templates\n * @param token Token do canal\n * @param accessToken Token de acesso do usuário\n */\n async listTemplates(channelToken: string, accessToken: string) {\n return this.httpClient.get(`/api/v1/whatsapp/templates?channelToken=${encodeURIComponent(channelToken)}`, accessToken);\n }\n\n /**\n * Obtém detalhes de um template\n * @param channelToken Token do canal\n * @param templateId ID do template\n * @param accessToken Token de acesso do usuário\n */\n async getTemplate(channelToken: string, templateId: string, accessToken: string) {\n return this.httpClient.get(`/api/v1/whatsapp/templates/${templateId}?channelToken=${encodeURIComponent(channelToken)}`, accessToken);\n }\n\n /**\n * Faz upload de mídia para templates\n * @param params Parâmetros do upload\n * @param accessToken Token de acesso do usuário\n */\n async uploadMedia(params: UploadMediaParams, accessToken: string) {\n return this.httpClient.upload('/api/v1/whatsapp/upload-media', params.file, accessToken, 'file', {\n channelToken: params.channelToken,\n mediaType: params.mediaType,\n ...(params.filename && { filename: params.filename }),\n });\n }\n\n /**\n * Envia detalhes do pedido com opções de pagamento\n * @param params Parâmetros do pedido\n * @param accessToken Token de acesso do usuário\n */\n async sendOrderDetails(params: SendOrderDetailsParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-order-details', {\n channelToken: params.channelToken,\n sender: params.sender,\n ...(params.headerText && { headerText: params.headerText }),\n bodyText: params.bodyText,\n ...(params.footerText && { footerText: params.footerText }),\n reference_id: params.reference_id,\n type: params.type,\n currency: params.currency,\n total_amount: params.total_amount,\n order: params.order,\n ...(params.payment_settings && { payment_settings: params.payment_settings }),\n }, accessToken);\n }\n\n /**\n * Atualiza status do pedido\n * @param params Parâmetros do status\n * @param accessToken Token de acesso do usuário\n */\n async sendOrderStatus(params: SendOrderStatusParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-order-status', {\n channelToken: params.channelToken,\n sender: params.sender,\n bodyText: params.bodyText,\n ...(params.footerText && { footerText: params.footerText }),\n reference_id: params.reference_id,\n order_status: params.order_status,\n ...(params.status_description && { status_description: params.status_description }),\n ...(params.payment_status && { payment_status: params.payment_status }),\n ...(params.payment_timestamp !== undefined && { payment_timestamp: params.payment_timestamp }),\n }, accessToken);\n }\n\n /**\n * Envia áudio\n * @param params Parâmetros do áudio\n * @param accessToken Token de acesso do usuário\n */\n async sendAudio(params: SendWhatsAppAudioParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-audio', {\n channelToken: params.channelToken,\n sender: params.sender,\n mediaId: params.mediaId,\n ...(params.voice !== undefined && { voice: params.voice }),\n }, accessToken);\n }\n\n /**\n * Envia sticker\n * @param params Parâmetros do sticker\n * @param accessToken Token de acesso do usuário\n */\n async sendSticker(params: SendWhatsAppStickerParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-sticker', {\n channelToken: params.channelToken,\n sender: params.sender,\n mediaId: params.mediaId,\n }, accessToken);\n }\n\n /**\n * Envia vídeo\n * @param params Parâmetros do vídeo\n * @param accessToken Token de acesso do usuário\n */\n async sendVideo(params: SendWhatsAppVideoParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-video', {\n channelToken: params.channelToken,\n sender: params.sender,\n mediaId: params.mediaId,\n ...(params.caption && { caption: params.caption }),\n }, accessToken);\n }\n\n /**\n * Envia documento\n * @param params Parâmetros do documento\n * @param accessToken Token de acesso do usuário\n */\n async sendDocument(params: SendWhatsAppDocumentParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-document', {\n channelToken: params.channelToken,\n sender: params.sender,\n mediaId: params.mediaId,\n ...(params.filename && { filename: params.filename }),\n ...(params.caption && { caption: params.caption }),\n }, accessToken);\n }\n\n /**\n * Envia contato\n * @param params Parâmetros do contato\n * @param accessToken Token de acesso do usuário\n */\n async sendContact(params: SendWhatsAppContactParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-contact', {\n channelToken: params.channelToken,\n sender: params.sender,\n contacts: params.contacts,\n }, accessToken);\n }\n\n /**\n * Envia localização\n * @param params Parâmetros da localização\n * @param accessToken Token de acesso do usuário\n */\n async sendLocation(params: SendWhatsAppLocationParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-location', {\n channelToken: params.channelToken,\n sender: params.sender,\n latitude: params.latitude,\n longitude: params.longitude,\n name: params.name,\n address: params.address,\n }, accessToken);\n }\n\n /**\n * Solicita localização\n * @param params Parâmetros da solicitação\n * @param accessToken Token de acesso do usuário\n */\n async sendLocationRequest(params: SendWhatsAppLocationRequestParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-location-request', {\n channelToken: params.channelToken,\n sender: params.sender,\n bodyText: params.bodyText,\n ...(params.headerText && { headerText: params.headerText }),\n ...(params.footerText && { footerText: params.footerText }),\n }, accessToken);\n }\n\n /**\n * Envia mensagem com botão CTA URL\n * @param params Parâmetros do CTA\n * @param accessToken Token de acesso do usuário\n */\n async sendCtaUrl(params: SendWhatsAppCtaUrlParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-cta-url', {\n channelToken: params.channelToken,\n sender: params.sender,\n bodyText: params.bodyText,\n buttonText: params.buttonText,\n url: params.url,\n ...(params.header && { header: params.header }),\n ...(params.footerText && { footerText: params.footerText }),\n }, accessToken);\n }\n\n /**\n * Envia carrossel de mídia\n * @param params Parâmetros do carrossel\n * @param accessToken Token de acesso do usuário\n */\n async sendMediaCarousel(params: SendWhatsAppMediaCarouselParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/send-media-carousel', {\n channelToken: params.channelToken,\n sender: params.sender,\n bodyText: params.bodyText,\n cards: params.cards,\n }, accessToken);\n }\n\n /**\n * Baixa uma mídia descriptografada do WhatsApp usando a URL\n * @param params Parâmetros do download\n * @param accessToken Token de acesso do usuário\n */\n async downloadMedia(params: DownloadWhatsAppMediaParams, accessToken: string) {\n return this.httpClient.post('/api/v1/whatsapp/download-media', {\n channelToken: params.channelToken,\n url: params.url,\n }, accessToken);\n }\n}\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendTelegramTextParams,\r\n SendTelegramMediaParams,\r\n SendTelegramButtonsParams,\r\n SendTelegramLocationParams,\r\n SendTelegramContactParams,\r\n SendTelegramPollParams,\r\n SendTelegramVenueParams,\r\n SendTelegramDiceParams,\r\n SendTelegramStickerParams,\r\n SendTelegramVoiceParams,\r\n SendTelegramVideoNoteParams,\r\n SendTelegramMediaGroupParams,\r\n SendTelegramReplyKeyboardParams,\r\n EditTelegramMessageParams,\r\n DeleteTelegramMessageParams,\r\n DownloadTelegramMediaParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Telegram - Envio de mensagens e gerenciamento\r\n */\r\nexport class TelegramModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia mensagem de texto\r\n * @param params Parâmetros da mensagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMessage(params: SendTelegramTextParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-message', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n text: params.text,\r\n parseMode: params.parseMode,\r\n replyToMessageId: params.replyToMessageId,\r\n disableNotification: params.disableNotification,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n * @param params Parâmetros da mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMedia(params: SendTelegramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-media', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n parseMode: params.parseMode,\r\n replyToMessageId: params.replyToMessageId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem com botões\r\n * @param params Parâmetros dos botões\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendButtons(params: SendTelegramButtonsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-buttons', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n text: params.text,\r\n buttons: params.buttons,\r\n parseMode: params.parseMode,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia localização\r\n * @param params Parâmetros da localização\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendLocation(params: SendTelegramLocationParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-location', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n latitude: params.latitude,\r\n longitude: params.longitude,\r\n livePeriod: params.livePeriod,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia contato\r\n * @param params Parâmetros do contato\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendContact(params: SendTelegramContactParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-contact', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n phoneNumber: params.phoneNumber,\r\n firstName: params.firstName,\r\n lastName: params.lastName,\r\n vcard: params.vcard,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia enquete\r\n * @param params Parâmetros da enquete\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendPoll(params: SendTelegramPollParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-poll', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n question: params.question,\r\n options: params.options,\r\n isAnonymous: params.isAnonymous,\r\n type: params.type,\r\n correctOptionId: params.correctOptionId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia venue (local)\r\n * @param params Parâmetros do venue\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendVenue(params: SendTelegramVenueParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-venue', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n latitude: params.latitude,\r\n longitude: params.longitude,\r\n title: params.title,\r\n address: params.address,\r\n foursquareId: params.foursquareId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia dado/emoji animado\r\n * @param params Parâmetros do dado\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendDice(params: SendTelegramDiceParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-dice', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n emoji: params.emoji,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia sticker\r\n * @param params Parâmetros do sticker\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendSticker(params: SendTelegramStickerParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-sticker', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n stickerUrl: params.stickerUrl,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem de voz\r\n * @param params Parâmetros da voz\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendVoice(params: SendTelegramVoiceParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-voice', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n voiceUrl: params.voiceUrl,\r\n caption: params.caption,\r\n duration: params.duration,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia video note\r\n * @param params Parâmetros do video note\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendVideoNote(params: SendTelegramVideoNoteParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-video-note', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n videoNoteUrl: params.videoNoteUrl,\r\n duration: params.duration,\r\n length: params.length,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia grupo de mídia\r\n * @param params Parâmetros do grupo de mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMediaGroup(params: SendTelegramMediaGroupParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-media-group', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n media: params.media,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia teclado de resposta\r\n * @param params Parâmetros do teclado\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendReplyKeyboard(params: SendTelegramReplyKeyboardParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/send-reply-keyboard', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n text: params.text,\r\n keyboard: params.keyboard,\r\n resizeKeyboard: params.resizeKeyboard,\r\n oneTimeKeyboard: params.oneTimeKeyboard,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Edita mensagem\r\n * @param params Parâmetros da edição\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async editMessage(params: EditTelegramMessageParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/edit-message', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n messageId: params.messageId,\r\n text: params.text,\r\n parseMode: params.parseMode,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Deleta mensagem\r\n * @param params Parâmetros da deleção\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async deleteMessage(params: DeleteTelegramMessageParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/delete-message', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n messageId: params.messageId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Baixa uma mídia descriptografada do Telegram usando o file_id\r\n * @param params Parâmetros do download\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async downloadMedia(params: DownloadTelegramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/telegram/download-media', {\r\n channelToken: params.channelToken,\r\n fileId: params.fileId,\r\n }, accessToken);\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendWebChatTextParams,\r\n SendWebChatMediaParams,\r\n SendWebChatCarouselParams,\r\n SendWebChatFormParams,\r\n SendWebChatQuickRepliesParams,\r\n SendWebChatCardParams,\r\n SendWebChatButtonsParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo WebChat - Envio de mensagens via WebChat\r\n */\r\nexport class WebChatModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia mensagem de texto\r\n * @param params Parâmetros da mensagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendText(params: SendWebChatTextParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-text', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'text',\r\n content: {\r\n text: params.messageText,\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n * @param params Parâmetros da mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMedia(params: SendWebChatMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-media', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: params.type,\r\n content: {\r\n url: params.fileUrl,\r\n caption: params.caption,\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia carousel\r\n * @param params Parâmetros do carousel\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendCarousel(params: SendWebChatCarouselParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-carousel', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'carousel',\r\n content: {\r\n cards: params.cards.map(card => ({\r\n title: card.title,\r\n subtitle: card.subtitle,\r\n imageUrl: card.imageUrl,\r\n buttons: card.buttons?.map(btn => ({\r\n id: btn.id || `btn_${Date.now()}_${Math.random()}`,\r\n text: btn.text,\r\n type: btn.type,\r\n value: btn.value,\r\n url: btn.url,\r\n })),\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia formulário\r\n * @param params Parâmetros do formulário\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendForm(params: SendWebChatFormParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-form', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'form',\r\n content: {\r\n id: params.id,\r\n title: params.title,\r\n submitText: params.submitButtonText,\r\n fields: params.fields.map(field => ({\r\n id: field.id || field.name,\r\n type: field.type,\r\n label: field.label,\r\n placeholder: field.placeholder,\r\n required: field.required,\r\n options: field.options,\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia quick replies\r\n * @param params Parâmetros dos quick replies\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendQuickReplies(params: SendWebChatQuickRepliesParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-quick-replies', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'quickReplies',\r\n content: {\r\n text: params.messageText,\r\n quickReplies: params.quickReplies.map(qr => ({\r\n id: qr.id || `qr_${Date.now()}_${Math.random()}`,\r\n text: qr.text,\r\n value: qr.value,\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia card\r\n * @param params Parâmetros do card\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendCard(params: SendWebChatCardParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-card', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'card',\r\n content: {\r\n title: params.title,\r\n subtitle: params.description,\r\n imageUrl: params.imageUrl,\r\n buttons: params.buttons?.map(btn => ({\r\n id: btn.id || `btn_${Date.now()}_${Math.random()}`,\r\n text: btn.text,\r\n type: btn.type,\r\n value: btn.value,\r\n url: btn.url,\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia botões\r\n * @param params Parâmetros dos botões\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendButtons(params: SendWebChatButtonsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/webchat/send-buttons', {\r\n channelToken: params.channelToken,\r\n chatId: params.chatId,\r\n type: 'buttons',\r\n content: {\r\n text: params.messageText,\r\n buttons: params.buttons.map(btn => ({\r\n id: btn.id || `btn_${Date.now()}_${Math.random()}`,\r\n text: btn.text,\r\n type: btn.type,\r\n value: btn.value,\r\n url: btn.url,\r\n })),\r\n typingTime: params.typingTime,\r\n },\r\n typing: params.typing,\r\n }, accessToken);\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n ListPostsParams,\r\n ListCommentsParams,\r\n CreatePostParams,\r\n ReplyCommentParams,\r\n DeleteCommentParams,\r\n SendFacebookTextParams,\r\n SendFacebookMediaParams,\r\n SendFacebookButtonsParams,\r\n SendFacebookStickerParams,\r\n ReplyFacebookMessageParams,\r\n ReplyFacebookMediaParams,\r\n SharePostParams,\r\n GetFacebookUserProfileParams,\r\n GetFacebookPageProfileParams,\r\n DownloadFacebookMediaParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Facebook - Gerenciamento de posts e mensagens\r\n */\r\nexport class FacebookModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Lista posts de uma página\r\n * @param params Parâmetros da listagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async listPosts(params: ListPostsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/list-posts', {\r\n channelToken: params.channelToken,\r\n pageId: params.pageId,\r\n limit: params.limit,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Lista comentários de um post\r\n * @param params Parâmetros da listagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async listComments(params: ListCommentsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/list-comments', {\r\n channelToken: params.channelToken,\r\n postId: params.postId,\r\n limit: params.limit,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Cria um post\r\n * @param params Parâmetros do post\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async createPost(params: CreatePostParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/create-post', {\r\n channelToken: params.channelToken,\r\n pageId: params.pageId,\r\n message: params.message,\r\n link: params.link,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Responde um comentário\r\n * @param params Parâmetros da resposta\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async replyComment(params: ReplyCommentParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/reply-comment', {\r\n channelToken: params.channelToken,\r\n commentId: params.commentId,\r\n message: params.message,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Deleta um comentário\r\n * @param params Parâmetros da deleção\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async deleteComment(params: DeleteCommentParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/delete-comment', {\r\n channelToken: params.channelToken,\r\n commentId: params.commentId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem de texto\r\n * @param params Parâmetros da mensagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendText(params: SendFacebookTextParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/send-text', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n * @param params Parâmetros da mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMedia(params: SendFacebookMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/send-media', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem com botões\r\n * @param params Parâmetros dos botões\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendButtons(params: SendFacebookButtonsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/send-buttons', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n buttons: params.buttons,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia sticker\r\n * @param params Parâmetros do sticker\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendSticker(params: SendFacebookStickerParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/send-sticker', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n stickerId: params.stickerId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Responde uma mensagem\r\n * @param params Parâmetros da resposta\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async replyMessage(params: ReplyFacebookMessageParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/reply-message', {\r\n channelToken: params.channelToken,\r\n messageId: params.messageId,\r\n message: params.message,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Responde com mídia\r\n * @param params Parâmetros da resposta\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async replyMedia(params: ReplyFacebookMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/reply-media', {\r\n channelToken: params.channelToken,\r\n messageId: params.messageId,\r\n fileUrl: params.fileUrl,\r\n type: params.type,\r\n caption: params.caption,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Compartilha um post do Instagram\r\n * @param params Parâmetros do compartilhamento\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sharePost(params: SharePostParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/share-post', {\r\n channelToken: params.channelToken,\r\n mediaId: params.mediaId,\r\n recipientId: params.recipientId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Obtém perfil de um usuário do Facebook\r\n * @param params Parâmetros do perfil\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getUserProfile(params: GetFacebookUserProfileParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/user-profile', {\r\n channelToken: params.channelToken,\r\n userId: params.userId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Obtém informações de uma página do Facebook\r\n * @param params Parâmetros da página\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getPageProfile(params: GetFacebookPageProfileParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/page-profile', {\r\n channelToken: params.channelToken,\r\n pageId: params.pageId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Baixa uma mídia descriptografada do Facebook/Instagram usando a URL\r\n * @param params Parâmetros do download\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async downloadMedia(params: DownloadFacebookMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/facebook/download-media', {\r\n channelToken: params.channelToken,\r\n url: params.url,\r\n }, accessToken);\r\n }\r\n}\r\n","import { HttpClient } from '../client/http-client';\r\nimport {\r\n SendInstagramPrivateReplyParams,\r\n SendInstagramTextParams,\r\n SendInstagramMediaParams,\r\n SendInstagramImagesParams,\r\n SendInstagramStickerParams,\r\n ReactInstagramMessageParams,\r\n RemoveInstagramReactionParams,\r\n SendInstagramQuickRepliesParams,\r\n SendInstagramGenericTemplateParams,\r\n SendInstagramButtonTemplateParams,\r\n SendInstagramSenderActionParams,\r\n GetInstagramUserProfileParams,\r\n GetInstagramBusinessProfileParams,\r\n ListInstagramPostsParams,\r\n DownloadInstagramMediaParams,\r\n CreateInstagramMediaContainerParams,\r\n PublishInstagramMediaParams,\r\n GetInstagramContainerStatusParams,\r\n GetInstagramPublishingLimitParams,\r\n UploadInstagramVideoParams,\r\n} from '../types';\r\n\r\n/**\r\n * Módulo Instagram - Envio de mensagens e gerenciamento\r\n */\r\nexport class InstagramModule {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n /**\r\n * Envia resposta privada a comentário\r\n * @param params Parâmetros da resposta\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendPrivateReply(params: SendInstagramPrivateReplyParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/private-reply', {\r\n channelToken: params.channelToken,\r\n commentId: params.commentId,\r\n message: params.message,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mensagem de texto\r\n * @param params Parâmetros da mensagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendText(params: SendInstagramTextParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/text', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n text: params.text,\r\n ...(params.tags && { tags: params.tags }),\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia mídia\r\n * @param params Parâmetros da mídia\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendMedia(params: SendInstagramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/media', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n attachment: params.attachment,\r\n ...(params.tags && { tags: params.tags }),\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia múltiplas imagens (carrossel)\r\n * @param params Parâmetros das imagens\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendImages(params: SendInstagramImagesParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/images', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n images: params.images,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia sticker (like/heart)\r\n * @param params Parâmetros do sticker\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendSticker(params: SendInstagramStickerParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/sticker', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n stickerType: params.stickerType,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Reage a uma mensagem\r\n * @param params Parâmetros da reação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async reactMessage(params: ReactInstagramMessageParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/reaction', {\r\n channelToken: params.channelToken,\r\n messageId: params.messageId,\r\n reactionType: params.reactionType,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Remove reação de uma mensagem\r\n * @param params Parâmetros da remoção\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async removeReaction(params: RemoveInstagramReactionParams, accessToken: string) {\r\n return this.httpClient.delete('/api/v1/instagram/messages/reaction', accessToken, {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n messageId: params.messageId,\r\n });\r\n }\r\n\r\n /**\r\n * Envia quick replies\r\n * @param params Parâmetros dos quick replies\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendQuickReplies(params: SendInstagramQuickRepliesParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/quick-replies', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n message: params.message,\r\n quickReplies: params.quickReplies,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia template genérico (carrossel)\r\n * @param params Parâmetros do template\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendGenericTemplate(params: SendInstagramGenericTemplateParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/generic-template', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n elements: params.elements,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia template de botões\r\n * @param params Parâmetros do template\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendButtonTemplate(params: SendInstagramButtonTemplateParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/button-template', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n text: params.text,\r\n buttons: params.buttons,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Envia ação do remetente (typing, seen)\r\n * @param params Parâmetros da ação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async sendSenderAction(params: SendInstagramSenderActionParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/messages/sender-action', {\r\n channelToken: params.channelToken,\r\n recipientId: params.recipientId,\r\n action: params.action,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Obtém perfil de um usuário do Instagram\r\n * \r\n * Obtém informações de perfil de um usuário do Instagram.\r\n * \r\n * Campos retornados:\r\n * - id: ID do usuário\r\n * - name: Nome do usuário (pode ser nulo)\r\n * - username: Nome de usuário do Instagram\r\n * \r\n * ⚠️ Nota: A API do Instagram Graph API para usuários regulares (tipo User) \r\n * retorna apenas campos básicos. Campos como foto de perfil, número de seguidores \r\n * e status de verificação não estão disponíveis para usuários regulares.\r\n * \r\n * ⚠️ O usuário deve ter enviado mensagem direta para sua conta. \r\n * Não é possível obter perfil de quem apenas comentou.\r\n * \r\n * @param params Parâmetros do perfil\r\n * @param params.token Token do canal\r\n * @param params.userId ID do usuário (IGSID)\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getUserProfile(params: GetInstagramUserProfileParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/user-profile', {\r\n channelToken: params.channelToken,\r\n userId: params.userId,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Lista publicações do Instagram\r\n * @param params Parâmetros da listagem\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async listPosts(params: ListInstagramPostsParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/posts', {\r\n channelToken: params.channelToken,\r\n userId: params.userId,\r\n limit: params.limit,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Obtém perfil da conta comercial do Instagram\r\n * @param params Parâmetros do perfil\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getBusinessProfile(params: GetInstagramBusinessProfileParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/business-profile', {\r\n channelToken: params.channelToken,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Baixa uma mídia descriptografada do Instagram usando a URL\r\n * @param params Parâmetros do download\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async downloadMedia(params: DownloadInstagramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/download-media', {\r\n channelToken: params.channelToken,\r\n url: params.url,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Cria um contêiner de mídia para publicação no Instagram\r\n * @param params Parâmetros do contêiner\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async createMediaContainer(params: CreateInstagramMediaContainerParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/media', {\r\n channelToken: params.channelToken,\r\n image_url: params.image_url,\r\n video_url: params.video_url,\r\n media_type: params.media_type,\r\n caption: params.caption,\r\n is_carousel_item: params.is_carousel_item,\r\n children: params.children,\r\n upload_type: params.upload_type,\r\n trial_params: params.trial_params,\r\n alt_text: params.alt_text,\r\n location_id: params.location_id,\r\n product_tags: params.product_tags,\r\n user_tags: params.user_tags,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Publica uma mídia no Instagram usando o ID do contêiner\r\n * @param params Parâmetros da publicação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async publishMedia(params: PublishInstagramMediaParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/media_publish', {\r\n channelToken: params.channelToken,\r\n creation_id: params.creation_id,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Verifica o status de um contêiner de mídia\r\n * @param params Parâmetros da verificação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getContainerStatus(params: GetInstagramContainerStatusParams, accessToken: string) {\r\n return this.httpClient.post(`/api/v1/instagram/media/${params.container_id}/status`, {\r\n channelToken: params.channelToken,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Verifica o limite de publicação atual\r\n * @param params Parâmetros da verificação\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async getPublishingLimit(params: GetInstagramPublishingLimitParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/content_publishing_limit', {\r\n channelToken: params.channelToken,\r\n }, accessToken);\r\n }\r\n\r\n /**\r\n * Faz upload de vídeo para sessão retomável\r\n * @param params Parâmetros do upload\r\n * @param accessToken Token de acesso do usuário\r\n */\r\n async uploadVideo(params: UploadInstagramVideoParams, accessToken: string) {\r\n return this.httpClient.post('/api/v1/instagram/upload', {\r\n channelToken: params.channelToken,\r\n container_id: params.container_id,\r\n file_url: params.file_url,\r\n offset: params.offset,\r\n file_size: params.file_size,\r\n }, accessToken);\r\n }\r\n}\r\n","import { HttpClient } from './client/http-client';\r\nimport { AuthModule } from './modules/auth';\r\nimport { ChannelsModule } from './modules/channels';\r\nimport { IntegrationsModule } from './modules/integrations';\r\nimport { WhatsAppModule } from './modules/whatsapp';\r\nimport { TelegramModule } from './modules/telegram';\r\nimport { WebChatModule } from './modules/webchat';\r\nimport { FacebookModule } from './modules/facebook';\r\nimport { InstagramModule } from './modules/instagram';\r\nimport { SDKConfig } from './types';\r\n\r\n/**\r\n * SDK OficialAPI - Cliente principal\r\n * \r\n * @example\r\n * ```typescript\r\n * import { OficialAPISDK } from '@oficialapi/sdk';\r\n * \r\n * const sdk = new OficialAPISDK({\r\n * clientId: 'your-client-id',\r\n * clientSecret: 'your-client-secret'\r\n * });\r\n * \r\n * // Enviar mensagem WhatsApp\r\n * const result = await sdk.whatsapp.sendText({\r\n * channelToken: 'sk_live_...',\r\n * sender: '5511999999999',\r\n * messageText: 'Olá!'\r\n * });\r\n * ```\r\n */\r\nexport class OficialAPISDK {\r\n private httpClient: HttpClient;\r\n\r\n public readonly auth: AuthModule;\r\n public readonly channels: ChannelsModule;\r\n public readonly integrations: IntegrationsModule;\r\n public readonly whatsapp: WhatsAppModule;\r\n public readonly telegram: TelegramModule;\r\n public readonly webchat: WebChatModule;\r\n public readonly facebook: FacebookModule;\r\n public readonly instagram: InstagramModule;\r\n\r\n constructor(config: SDKConfig) {\r\n this.httpClient = new HttpClient(config);\r\n\r\n // Inicializa módulos\r\n this.auth = new AuthModule(this.httpClient);\r\n this.channels = new ChannelsModule(this.httpClient);\r\n this.integrations = new IntegrationsModule(this.httpClient);\r\n this.whatsapp = new WhatsAppModule(this.httpClient);\r\n this.telegram = new TelegramModule(this.httpClient);\r\n this.webchat = new WebChatModule(this.httpClient);\r\n this.facebook = new FacebookModule(this.httpClient);\r\n this.instagram = new InstagramModule(this.httpClient);\r\n }\r\n\r\n}\r\n\r\n// Exporta tipos\r\nexport * from './types';\r\n\r\n// Exporta também como default para compatibilidade\r\nexport default OficialAPISDK;\r\n"]}
|
package/package.json
CHANGED