{"openapi":"3.1.0","info":{"title":"Chatbot AI Server","description":"Backend server for Chatbot AI application","contact":{"name":"Developer Team","url":"https://chatbotnesia.id/","email":"developer@chatbotnesia.id"},"version":"1.0.0"},"servers":[{"url":"http://localhost:5002","description":"Local Development"},{"url":"https://api.chatbotnesia.id","description":"Production server"}],"paths":{"/billing/packages":{"get":{"tags":["Billing"],"summary":"Daftar paket billing","description":"Mengembalikan daftar paket CRM, AI Agent, dan AI Avatar yang tersedia.","operationId":"get_packages_billing_packages_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BillingPackage"},"type":"array","title":"Response Get Packages Billing Packages Get"}}}}}}},"/billing/expired":{"get":{"tags":["Billing"],"summary":"Daftar billing expired / akan expired","description":"Mengambil data billing yang sudah expired atau akan segera expired, lengkap dengan info client dan kontak user (email & WhatsApp).","operationId":"get_expired_billing_expired_get","parameters":[{"name":"days_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter type: 'h-3' (3 days before expiry), 'h-7' (7 days before expiry), 'h+60' (60 days after expiry)","title":"Days Type"},"description":"Filter type: 'h-3' (3 days before expiry), 'h-7' (7 days before expiry), 'h+60' (60 days after expiry)"},{"name":"x-api-key","in":"header","required":true,"schema":{"type":"string","description":"API Key untuk akses endpoint sensitif","title":"X-Api-Key"},"description":"API Key untuk akses endpoint sensitif"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingExpiredResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/broadcast/whatsapp/device/{client_key}":{"get":{"tags":["Platform: Whatsapp"],"summary":"Get Device","description":"Get device information such as link_scan_qr for connecting to whatsapp","operationId":"get_device_broadcast_whatsapp_device__client_key__get","parameters":[{"name":"client_key","in":"path","required":true,"schema":{"type":"string","title":"Client Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeviceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/broadcast/whatsapp/webhook/logs":{"get":{"tags":["Platform: Whatsapp"],"summary":"Get Webhook Logs","operationId":"get_webhook_logs_broadcast_whatsapp_webhook_logs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/broadcast/whatsapp/logs":{"get":{"tags":["Platform: Whatsapp"],"summary":"Get Broadcast List","operationId":"get_broadcast_list_broadcast_whatsapp_logs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/broadcast/whatsapp/send-message":{"post":{"tags":["Platform: Whatsapp"],"summary":"Send Message","operationId":"send_message_broadcast_whatsapp_send_message_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/broadcast/whatsapp/send-attachment":{"post":{"tags":["Platform: Whatsapp"],"summary":"Send Message Attachment","operationId":"send_message_attachment_broadcast_whatsapp_send_attachment_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendAttachmentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendAttachmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/broadcast/whatsapp/webhook/tracking":{"post":{"tags":["Platform: Whatsapp"],"summary":"WhatsApp Message Tracking Webhook","description":"Webhook yang dikirim ke client ketika ada update status pengiriman pesan WhatsApp.\n        \n        **Data yang dikirim:**\n        - message_id: ID pesan WhatsApp\n        - status: Status pengiriman pesan (sent, delivered, read, failed)\n\n        **Implementasi Client (PHP):**\n        ```php\n        $data = file_get_contents('php://input');\n        $data = json_decode($data, true);\n\n        if ($data['status'] == 'sent') {\n            // Pesan telah dikirim\n        } else if ($data['status'] == 'delivered') {\n            // Pesan telah diterima oleh penerima\n        } else if ($data['status'] == 'read') {\n            // Pesan telah dibaca oleh penerima\n        } else if ($data['status'] == 'failed') {\n            // Pesan gagal dikirim\n        }\n\n        // update status pesan di database based on $data['message_id']\n        ```","operationId":"webhook_tracking_broadcast_whatsapp_webhook_tracking_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppTrackingWebhook"}}},"required":true},"responses":{"200":{"description":"Webhook processed successfully","content":{"application/json":{"schema":{},"example":{"success":true}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/broadcast/whatsapp/webhook/incoming":{"post":{"tags":["Platform: Whatsapp"],"summary":"WhatsApp Incoming Message Webhook","description":"Webhook yang dikirim ke client ketika ada pesan masuk baru dari WhatsApp.\n\n        **Data yang dikirim:**\n        - log_id: ID pesan WhatsApp\n        - sender: Nomor pengirim\n        - message: Pesan yang dikirim\n        - message_type: Tipe pesan (text, image, audio, document)\n        - user_message_id: ID pesan WhatsApp, untuk update status pesan\n        - user_attachment: URL media yang dikirim\n        - user_attachment_type: Tipe media yang dikirim\n        - created_at: Waktu pengiriman pesan","operationId":"webhook_incoming_broadcast_whatsapp_webhook_incoming_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppIncomingWebhook"}}},"required":true},"responses":{"200":{"description":"Webhook processed successfully","content":{"application/json":{"schema":{},"example":{"success":true}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/broadcast/whatsapp-bs/send-template-text":{"post":{"tags":["Platform: Whatsapp Business API"],"summary":"Send Template Text","operationId":"send_template_text_broadcast_whatsapp_bs_send_template_text_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageTemplateTextRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/broadcast/whatsapp-bs/send-template-media":{"post":{"tags":["Platform: Whatsapp Business API"],"summary":"Send Message Template Media","operationId":"send_message_template_media_broadcast_whatsapp_bs_send_template_media_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageTemplateMediaRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/platform_whatsapp_bs/all":{"get":{"tags":["Platform: Whatsapp Business API"],"summary":"Get All Whatsapp Bs","description":"Get all WhatsApp Business accounts for a client","operationId":"get_all_whatsapp_bs_platform_whatsapp_bs_all_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/platform_whatsapp_bs/setting/webhook":{"put":{"tags":["Platform: Whatsapp Business API"],"summary":"Webhook Setting Update","description":"Update webhook setting","operationId":"webhook_setting_update_platform_whatsapp_bs_setting_webhook_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformWhatsappBsUpdateWebhook"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformWhatsappBsUpdateWebhookResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/platform_whatsapp_bs/access-token/{platform_whatsapp_bs_id}":{"get":{"tags":["Platform: Whatsapp Business API"],"summary":"Get Platform Access Token","description":"Get access token for specific WhatsApp Business platform","operationId":"get_platform_access_token_platform_whatsapp_bs_access_token__platform_whatsapp_bs_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"platform_whatsapp_bs_id","in":"path","required":true,"schema":{"type":"integer","title":"Platform Whatsapp Bs Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/platform_whatsapp_bs/templates/list":{"get":{"tags":["Platform: Whatsapp Business API"],"summary":"Get Whatsapp Templates","description":"Get list of WhatsApp Business message templates from Meta/Facebook","operationId":"get_whatsapp_templates_platform_whatsapp_bs_templates_list_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"platform_whatsapp_bs_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Platform Whatsapp Bs Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/platform_whatsapp_bs/templates/create":{"post":{"tags":["Platform: Whatsapp Business API"],"summary":"Create Message Template","description":"Create a new message template in Meta WhatsApp Business API\n\nBased on: https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates\n\nRequest body:\n{\n    \"platform_id\": int,  # WhatsApp Business platform ID\n    \"name\": str,  # Template name (lowercase alphanumeric and underscores only)\n    \"category\": str,  # MARKETING, UTILITY, or AUTHENTICATION\n    \"language\": str,  # Language code (e.g., \"id\", \"en_US\")\n    \"components\": list,  # Template components (header, body, footer, buttons)\n    \"allow_category_change\": bool  # Optional, default True\n}","operationId":"create_message_template_platform_whatsapp_bs_templates_create_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/platform_whatsapp_bs/exclude":{"get":{"tags":["Platform: Whatsapp Business API"],"summary":"Get Exclude","operationId":"get_exclude_platform_whatsapp_bs_exclude_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["Platform: Whatsapp Business API"],"summary":"Exclude","operationId":"exclude_platform_whatsapp_bs_exclude_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformWhatsappBsExcludeCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"delete":{"tags":["Platform: Whatsapp Business API"],"summary":"Delete Exclude","operationId":"delete_exclude_platform_whatsapp_bs_exclude_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/health/ping":{"get":{"tags":["Health Check"],"summary":"Ping","description":"Simple ping endpoint to check if service is running","operationId":"ping_health_ping_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/redis":{"get":{"tags":["Health Check"],"summary":"Redis Health","description":"Check Redis connectivity for Socket.IO","operationId":"redis_health_health_redis_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/db":{"get":{"tags":["Health Check"],"summary":"Database Health","description":"Check database connectivity\nThis also tests that we can get a connection from the pool","operationId":"database_health_health_db_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/db-pool":{"get":{"tags":["Health Check"],"summary":"Database Pool Status","description":"Monitor async database connection pool status\n\nIMPORTANT: Use this endpoint to monitor for connection leaks!\nIf 'checked_out' stays high or equals 'size + overflow', you have a leak.","operationId":"database_pool_status_health_db_pool_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/db-pool-sync":{"get":{"tags":["Health Check"],"summary":"Database Pool Status Sync","description":"Monitor sync database connection pool status (Langchain/Queue database)","operationId":"database_pool_status_sync_health_db_pool_sync_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/db-pool-all":{"get":{"tags":["Health Check"],"summary":"Database Pool Status All","description":"Get status of all database connection pools\nUseful for comprehensive monitoring","operationId":"database_pool_status_all_health_db_pool_all_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/db-pool-detailed":{"get":{"tags":["Health Check"],"summary":"Database Pool Detailed","description":"Detailed pool information (admin only)\nIncludes internal pool state for debugging","operationId":"database_pool_detailed_health_db_pool_detailed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/health/test-session-lifecycle":{"get":{"tags":["Health Check"],"summary":"Test Session Lifecycle","description":"Test endpoint to verify sessions are properly closed\nShould not leak connections","operationId":"test_session_lifecycle_health_test_session_lifecycle_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"tags":["Health Check"],"summary":"Cek status server","description":"Endpoint ini digunakan untuk memeriksa apakah server berjalan dengan baik. Mengembalikan status dan pesan.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckStatusResponse"}}}}}}}},"components":{"schemas":{"BillingExpiredItem":{"properties":{"billing_id":{"type":"integer","title":"Billing Id"},"client_id":{"type":"integer","title":"Client Id"},"client_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Name"},"package_name":{"type":"string","title":"Package Name"},"billing_type":{"type":"string","title":"Billing Type"},"subscription_period":{"type":"integer","title":"Subscription Period"},"expired_at":{"type":"string","format":"date-time","title":"Expired At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"total_response_limit":{"type":"integer","title":"Total Response Limit"},"total_response_used":{"type":"integer","title":"Total Response Used"},"total_broadcast_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Broadcast Limit"},"total_broadcast_used":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Broadcast Used"},"users":{"items":{"$ref":"#/components/schemas/BillingExpiredUser"},"type":"array","title":"Users"}},"type":"object","required":["billing_id","client_id","package_name","billing_type","subscription_period","expired_at","created_at","updated_at","total_response_limit","total_response_used","users"],"title":"BillingExpiredItem","description":"Detail billing yang akan/sudah expired beserta info client dan user."},"BillingExpiredResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"data":{"items":{"$ref":"#/components/schemas/BillingExpiredItem"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"},"filter":{"type":"string","title":"Filter"}},"type":"object","required":["success","data","count","filter"],"title":"BillingExpiredResponse","description":"Response wrapper untuk endpoint /billing/expired."},"BillingExpiredUser":{"properties":{"user_id":{"type":"integer","title":"User Id"},"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"whatsapp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Whatsapp"},"role":{"type":"string","title":"Role"}},"type":"object","required":["user_id","name","email","role"],"title":"BillingExpiredUser","description":"Informasi user yang terkait dengan client pada data billing expired."},"BillingPackage":{"properties":{"category":{"type":"string","title":"Category"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"price":{"type":"integer","title":"Price"},"features":{"additionalProperties":true,"type":"object","title":"Features"}},"type":"object","required":["category","id","name","type","price","features"],"title":"BillingPackage","description":"Representasi paket billing yang tersedia."},"CheckStatusResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"CheckStatusResponse"},"ComponentMediaModel":{"properties":{"type":{"type":"string","enum":["body","footer"],"title":"Type","default":"body"},"parameters":{"items":{"$ref":"#/components/schemas/ParameterModel"},"type":"array","title":"Parameters"}},"type":"object","required":["parameters"],"title":"ComponentMediaModel"},"ComponentTextModel":{"properties":{"type":{"type":"string","enum":["header","body","footer","buttons","button"],"title":"Type","default":"body"},"sub_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Type"},"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index"},"parameters":{"anyOf":[{"items":{"$ref":"#/components/schemas/ParameterModel"},"type":"array"},{"type":"null"}],"title":"Parameters"}},"type":"object","title":"ComponentTextModel"},"ContactModel":{"properties":{"input":{"type":"string","title":"Input"},"wa_id":{"type":"string","title":"Wa Id"}},"type":"object","required":["input","wa_id"],"title":"ContactModel"},"GetDeviceResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Status of the request, e.g. 'success' or 'failed'"},"data":{"additionalProperties":true,"type":"object","title":"Data","description":"Device data, including client_id, phone_number, provider, client_key, license_key, notes"},"settings":{"additionalProperties":true,"type":"object","title":"Settings","description":"Device settings, including link_scan_qr, webhook_url, webhook_settings"}},"type":"object","required":["status","data","settings"],"title":"GetDeviceResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"MessageModel":{"properties":{"id":{"type":"string","title":"Id"},"message_status":{"type":"string","title":"Message Status"}},"type":"object","required":["id","message_status"],"title":"MessageModel"},"ParameterModel":{"properties":{"type":{"type":"string","title":"Type"},"parameter_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parameter Name"},"text":{"type":"string","title":"Text"}},"type":"object","required":["type","text"],"title":"ParameterModel"},"PlatformWhatsappBsExcludeCreate":{"properties":{"sender":{"type":"string","title":"Sender"},"senderName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sendername"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["sender"],"title":"PlatformWhatsappBsExcludeCreate"},"PlatformWhatsappBsUpdateWebhook":{"properties":{"webhook_client_url":{"type":"string","title":"Webhook Client Url"},"webhook_client_settings":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Client Settings","default":"incoming,tracking"}},"type":"object","required":["webhook_client_url"],"title":"PlatformWhatsappBsUpdateWebhook"},"PlatformWhatsappBsUpdateWebhookResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"data":{"$ref":"#/components/schemas/PlatformWhatsappBsUpdateWebhook"}},"type":"object","required":["success","message","data"],"title":"PlatformWhatsappBsUpdateWebhookResponse"},"SendAttachmentRequest":{"properties":{"attachment":{"type":"string","title":"Attachment","description":"Attachment to send (img, doc, audio, video), can be url public or base64"},"message":{"type":"string","title":"Message","description":"Message to send"},"phone_number":{"type":"string","title":"Phone Number","description":"Phone number to send message to"},"scheduled_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scheduled At","description":"Scheduled time to send message, the format is YYYY-MM-DD HH:MM:SS (UTC+7)"}},"type":"object","required":["attachment","message","phone_number"],"title":"SendAttachmentRequest"},"SendAttachmentResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Status of the message, can be sent, failed, or pending"},"message_id":{"type":"string","title":"Message Id","description":"Message ID of the message, use this to check the status of the message in webhook tracking"}},"type":"object","required":["status","message_id"],"title":"SendAttachmentResponse"},"SendMessageRequest":{"properties":{"message":{"type":"string","title":"Message","description":"Message to send"},"phone_number":{"type":"string","title":"Phone Number","description":"Phone number to send message to"},"scheduled_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scheduled At","description":"Scheduled time to send message, the format is YYYY-MM-DD HH:MM:SS (UTC+7)"}},"type":"object","required":["message","phone_number"],"title":"SendMessageRequest"},"SendMessageResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Status of the message, can be sent, failed, or pending"},"message_id":{"type":"string","title":"Message Id","description":"Message ID of the message, use this to check the status of the message in webhook tracking"}},"type":"object","required":["status","message_id"],"title":"SendMessageResponse"},"SendMessageTemplateMediaRequest":{"properties":{"to":{"type":"string","title":"To"},"template_name":{"type":"string","title":"Template Name"},"template_language":{"type":"string","title":"Template Language","default":"id"},"media_url":{"type":"string","title":"Media Url"},"variables":{"items":{"$ref":"#/components/schemas/ComponentMediaModel"},"type":"array","title":"Variables"}},"type":"object","required":["to","template_name","media_url","variables"],"title":"SendMessageTemplateMediaRequest"},"SendMessageTemplateResponse":{"properties":{"error":{"type":"boolean","title":"Error","default":false},"error_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Error Code"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"messaging_product":{"type":"string","title":"Messaging Product"},"contacts":{"items":{"$ref":"#/components/schemas/ContactModel"},"type":"array","title":"Contacts"},"messages":{"items":{"$ref":"#/components/schemas/MessageModel"},"type":"array","title":"Messages"}},"type":"object","required":["messaging_product","contacts","messages"],"title":"SendMessageTemplateResponse"},"SendMessageTemplateTextRequest":{"properties":{"to":{"type":"string","title":"To"},"template_name":{"type":"string","title":"Template Name"},"template_language":{"type":"string","title":"Template Language","default":"id"},"variables":{"anyOf":[{"items":{"$ref":"#/components/schemas/ComponentTextModel"},"type":"array"},{"type":"null"}],"title":"Variables"}},"type":"object","required":["to","template_name"],"title":"SendMessageTemplateTextRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WhatsAppIncomingWebhook":{"properties":{"log_id":{"type":"integer","title":"Log Id"},"sender":{"type":"string","title":"Sender"},"message":{"type":"string","title":"Message"},"message_type":{"type":"string","title":"Message Type"},"user_attachment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Attachment"},"user_attachment_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Attachment Type"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["log_id","sender","message","message_type","created_at"],"title":"WhatsAppIncomingWebhook"},"WhatsAppTrackingWebhook":{"properties":{"message_id":{"type":"string","title":"Message Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["message_id","status"],"title":"WhatsAppTrackingWebhook"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"api/auth/login"}}},"HTTPBearer":{"type":"http","scheme":"bearer"}}}}