{"openapi":"3.0.3","info":{"title":"QueryGen WhatsApp Business API","version":"1.0.0","description":"API for sending WhatsApp messages and managing Meta message templates through QueryGen.\n\nAll phone numbers must include their country code. Non-template messages require an inbound customer message within the preceding 24 hours.\n\nIn Authorize, enter the complete value `Basic qg_...`, not only the API key."},"servers":[{"url":"/","description":"Current QueryGen deployment"}],"tags":[{"name":"Messages","description":"Durably queue outbound WhatsApp messages."},{"name":"Templates","description":"List, create, and upload samples for Meta templates."},{"name":"Webhooks","description":"Configure durable delivery-status callbacks."},{"name":"WebEngage","description":"WebEngage Private WSP ingestion and DSN configuration."}],"paths":{"/v1/public/message":{"post":{"security":[{"ApiKey":[]}],"parameters":[{"$ref":"#/components/parameters/OrganizationId"},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":500},"description":"Stable client-generated key. Requests without this header are not deduplicated."}],"responses":{"201":{"description":"Message durably queued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueuedResponse"}}}},"400":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"409":{"description":"Idempotency key was reused with a different body","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}}},"tags":["Messages"],"summary":"Queue a WhatsApp message","description":"Requires Editor or Admin access. Returns HTTP 201 after the request is durably queued. Reuse an Idempotency-Key only for an identical request body. Final status is delivered to the configured webhook.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageRequest"},"examples":{"text":{"summary":"Text session message","value":{"fullPhoneNumber":"919876543210","callbackData":"order-42","type":"Text","data":{"message":"Hello from QueryGen"}}},"media":{"summary":"Image message","value":{"fullPhoneNumber":"919876543210","callbackData":"image-42","type":"Image","data":{"mediaUrl":"https://example.com/product.jpg","message":"Your product"}}},"buttons":{"summary":"Interactive reply buttons","value":{"fullPhoneNumber":"919876543210","callbackData":"confirm-42","type":"InteractiveButton","data":{"message":{"type":"button","body":{"text":"Confirm your order?"},"action":{"buttons":[{"type":"reply","reply":{"id":"confirm","title":"Confirm"}},{"type":"reply","reply":{"id":"cancel","title":"Cancel"}}]}}}}},"template":{"summary":"Approved template","value":{"fullPhoneNumber":"919876543210","callbackData":"order-42","type":"Template","template":{"name":"order_update","languageCode":"en","headerValues":["Satya"],"bodyValues":["42","shipped"],"buttonValues":{"1":["tracking-42"]}}}}}}}}}},"/v1/public/track/organization/templates":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"$ref":"#/components/parameters/OrganizationId"},{"$ref":"#/components/parameters/SenderPhone"},{"name":"template_name","in":"query","schema":{"type":"string"}},{"name":"approval_status","in":"query","schema":{"type":"string","enum":["ALL","APPROVED","PENDING","REJECTED"]}},{"name":"language","in":"query","schema":{"type":"string","example":"en"}},{"name":"variable_present","in":"query","schema":{"type":"string","enum":["Yes","No","Yes/No"]}},{"name":"autosubmitted_for","in":"query","schema":{"type":"string","enum":["all"]}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Matching templates, up to 100 from the requested offset","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateListResponse"}}}},"400":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"502":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}}},"tags":["Templates"],"summary":"List message templates","description":"Requires Editor or Admin access."}},"/v1/public/track/templates":{"post":{"security":[{"ApiKey":[]}],"parameters":[{"$ref":"#/components/parameters/OrganizationId"}],"responses":{"200":{"description":"Template submitted to Meta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateCreateResponse"}}}},"400":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"502":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}}},"tags":["Templates"],"summary":"Create a message template","description":"Requires Admin access. Creates a Meta template for review. Run the media upload operation first for IMAGE, VIDEO, or DOCUMENT headers.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateCreateRequest"},"examples":{"text":{"value":{"display_name":"Order Update","language":"English","category":"Utility","header_format":"TEXT","header":"Hi {{1}}","header_text":["Satya"],"body":"Order {{1}} is now {{2}}","body_text":["42","ready"],"footer":"Thank you","buttons":[{"type":"QUICK_REPLY","text":"Okay"}]}},"image":{"value":{"display_name":"Image Offer","language":"en","category":"Marketing","header_format":"IMAGE","header_handle":["meta-upload-handle"],"header_handle_file_url":"https://example.com/offer.jpg","header_handle_file_name":"offer.jpg","body":"See this week's offer"}},"carousel":{"value":{"display_name":"New Arrivals","language":"en","category":"Marketing","header_format":"IMAGE","body":"Hi {{1}}, new this week","body_text":["Satya"],"carousel_cards":[{"header_handle":["meta-upload-handle-1"],"body":"Shoes","buttons":[{"type":"URL","text":"Shop","url":"https://shop.example.com/{{1}}","example":"shoes"}]},{"header_handle":["meta-upload-handle-2"],"body":"Bags","buttons":[{"type":"URL","text":"Shop","url":"https://shop.example.com/{{1}}","example":"bags"}]}]}}}}}}}},"/v1/public/track/files/upload_to_fb":{"post":{"security":[{"ApiKey":[]}],"parameters":[{"$ref":"#/components/parameters/OrganizationId"},{"$ref":"#/components/parameters/SenderPhone"},{"name":"fileCategory","in":"query","required":true,"schema":{"type":"string","enum":["message_template_media"]}}],"responses":{"200":{"description":"Media sample uploaded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaUploadResponse"}}}},"400":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"502":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}}},"tags":["Templates"],"summary":"Upload a template media sample","description":"Requires Admin access. Upload the returned file_handle when creating an IMAGE, VIDEO, or DOCUMENT header template.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["uploadFile"],"properties":{"uploadFile":{"type":"string","format":"binary","description":"Maximum 16 MB"}}}}}}}},"/v1/public/webhook":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"$ref":"#/components/parameters/OrganizationId"}],"responses":{"200":{"description":"Current configuration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"400":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}}},"tags":["Webhooks"],"summary":"Get delivery webhook configuration","description":"Requires Admin access."},"put":{"security":[{"ApiKey":[]}],"parameters":[{"$ref":"#/components/parameters/OrganizationId"}],"responses":{"200":{"description":"Configuration saved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"400":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}}},"tags":["Webhooks"],"summary":"Configure delivery webhook","description":"Requires Admin access. The URL must resolve to a public HTTP(S) destination. QueryGen retries failed deliveries and sends a stable X-QueryGen-Delivery-Id header.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRequest"}}}},"callbacks":{"deliveryStatus":{"{$request.body#/url}":{"post":{"summary":"WhatsApp message status","parameters":[{"name":"X-QueryGen-Delivery-Id","in":"header","required":true,"schema":{"type":"string","example":"wcbd_64ac13ce-80f8-48ac-b6cc-12afe492a543"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeliveryStatus"}}}},"responses":{"200":{"description":"Callback accepted"}}}}}}}},"/v1/public/webengage/private-wsp":{"post":{"security":[{"ApiKey":[]}],"parameters":[{"$ref":"#/components/parameters/OrganizationId"}],"responses":{"200":{"description":"Request durably queued; validation and sending follow asynchronously","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["whatsapp_accepted"]},"statusCode":{"type":"integer","enum":[0]}}}}}},"400":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}}},"tags":["WebEngage"],"summary":"Accept a WebEngage Private WSP message","description":"The API Gateway endpoint acknowledges durable SQS receipt before authentication and message validation. The app then requires Editor or Admin access, supports personalization-variable and entire-message requests with plain E.164 recipients, and deduplicates by metadata.messageId.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebengageMessage"}}}}}},"/v1/public/webengage/config":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"$ref":"#/components/parameters/OrganizationId"}],"responses":{"400":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}}},"tags":["WebEngage"],"summary":"Get WebEngage DSN configuration","description":"Requires Admin access. The stored bearer token is never returned."},"put":{"security":[{"ApiKey":[]}],"parameters":[{"$ref":"#/components/parameters/OrganizationId"}],"responses":{"400":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"boolean","example":false},"message":{"type":"string"},"error":{"type":"string"}}}}}}},"tags":["WebEngage"],"summary":"Configure WebEngage DSN reporting","description":"Requires Admin access. dsnToken is required initially and optional on later updates.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["dsnUrl"],"properties":{"dsnUrl":{"type":"string","format":"uri"},"dsnToken":{"type":"string","writeOnly":true},"isEnabled":{"type":"boolean","default":true}}}}}}}}},"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","in":"header","name":"Authorization","description":"Enter the complete authorization value: `Basic qg_...`"}},"parameters":{"OrganizationId":{"name":"X-Organization-Id","in":"header","required":false,"description":"Required for legacy unscoped keys. Organization-scoped keys infer this value.","schema":{"type":"string","format":"uuid"}},"SenderPhone":{"name":"senderPhone","in":"query","required":false,"description":"Connected sender number selector. Required only when the organization has multiple WhatsApp Business senders.","schema":{"type":"string","example":"919999999999"}}},"schemas":{"MessageRequest":{"type":"object","required":["type"],"description":"Provide fullPhoneNumber, or countryCode and phoneNumber. data is required for session messages; template is required when type is Template.","properties":{"countryCode":{"type":"string","example":"+91"},"phoneNumber":{"type":"string","example":"9876543210"},"fullPhoneNumber":{"type":"string","example":"919876543210"},"callbackData":{"type":"string","maxLength":2000},"type":{"type":"string","enum":["Text","Image","Video","Audio","Document","InteractiveButton","Template"]},"data":{"type":"object","additionalProperties":true},"template":{"type":"object","required":["name","languageCode"],"properties":{"name":{"type":"string"},"languageCode":{"type":"string"},"headerValues":{"type":"array","items":{"type":"string"},"description":"Text header values, or a media header link. Leave out for a media header to send the media approved with the template."},"bodyValues":{"type":"array","items":{"type":"string"}},"buttonValues":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"carouselCards":{"type":"array","maxItems":10,"description":"Carousel templates only, one entry per card in order. headerValues[0] replaces the card's approved image or video.","items":{"type":"object","properties":{"headerValues":{"type":"array","items":{"type":"string"}},"bodyValues":{"type":"array","items":{"type":"string"}},"buttonValues":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}},"senderPhone":{"type":"string","description":"Optional multi-sender selector."}}},"QueuedResponse":{"type":"object","required":["result","message","id","campaignId"],"properties":{"result":{"type":"boolean","example":true},"message":{"type":"string"},"id":{"type":"string","format":"uuid"},"campaignId":{"type":"string","description":"The WhatsApp Business Platform API campaign that tracks this request."}}},"TemplateCreateRequest":{"type":"object","required":["display_name","language","category","body"],"properties":{"display_name":{"type":"string"},"language":{"type":"string","description":"ISO code or English language name."},"category":{"type":"string","enum":["Utility","Marketing","UTILITY","MARKETING"]},"header_format":{"type":"string","enum":["NONE","TEXT","IMAGE","VIDEO","DOCUMENT"]},"header":{"type":"string"},"header_text":{"type":"array","items":{"type":"string"}},"header_handle":{"type":"array","items":{"type":"string"}},"header_handle_file_url":{"type":"string","format":"uri"},"header_handle_file_name":{"type":"string"},"body":{"type":"string","maxLength":1024},"body_text":{"type":"array","items":{"type":"string"}},"footer":{"type":"string","maxLength":60},"buttons":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/TemplateButton"}},"carousel_cards":{"type":"array","minItems":2,"maxItems":10,"description":"Makes a carousel template (Marketing only). header_format (IMAGE or VIDEO) applies to every card; header, footer and buttons are not used. Card body is optional but must be on every card or none (max 160). Each card has 0-2 QUICK_REPLY, URL or PHONE_NUMBER buttons, the same types in the same order on every card; a URL variable must be {{1}} at the end.","items":{"type":"object","required":["header_handle"],"properties":{"header_handle":{"type":"array","items":{"type":"string"}},"body":{"type":"string","maxLength":160},"body_text":{"type":"array","items":{"type":"string"}},"buttons":{"type":"array","maxItems":2,"items":{"$ref":"#/components/schemas/TemplateButton"}}}}},"senderPhone":{"type":"string"}}},"TemplateButton":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["QUICK_REPLY","URL","PHONE_NUMBER","VOICE_CALL","COPY_CODE"]},"text":{"type":"string","maxLength":25},"url":{"type":"string","format":"uri"},"phone_number":{"type":"string"},"example":{"type":"string"}}},"Template":{"type":"object","properties":{"id":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"display_name":{"type":"string","nullable":true},"language":{"type":"string","nullable":true},"category":{"type":"string","nullable":true},"approval_status":{"type":"string","nullable":true},"header_format":{"type":"string","nullable":true},"header":{"type":"string","nullable":true},"body":{"type":"string","nullable":true},"footer":{"type":"string","nullable":true},"buttons":{"type":"string","description":"JSON-encoded button array."},"variable_present":{"type":"string","enum":["Yes","No"]},"wa_template_id":{"type":"string","nullable":true}}},"TemplateListResponse":{"type":"object","properties":{"count":{"type":"integer"},"has_next":{"type":"boolean"},"results":{"type":"object","properties":{"templates":{"type":"array","items":{"$ref":"#/components/schemas/Template"}}}}}},"TemplateCreateResponse":{"type":"object","properties":{"result":{"type":"boolean","example":true},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/Template"}}},"MediaUploadResponse":{"type":"object","properties":{"result":{"type":"boolean","example":true},"message":{"type":"string"},"data":{"type":"object","properties":{"file_url":{"type":"string","format":"uri","nullable":true},"file_handle":{"type":"string"},"file_name":{"type":"string"}}}}},"WebhookRequest":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri"},"headers":{"type":"object","maxProperties":20,"additionalProperties":{"type":"string","maxLength":8192}},"isEnabled":{"type":"boolean","default":true}}},"WebhookResponse":{"type":"object","properties":{"result":{"type":"boolean","example":true},"data":{"type":"object","nullable":true,"additionalProperties":true}}},"DeliveryStatus":{"type":"object","required":["type","deliveryId","id","phoneNumber","status","timestamp","errors","data"],"description":"Status fields are repeated under data for compatibility with consumers that expect a nested webhook envelope.","properties":{"type":{"type":"string","enum":["message_status"]},"deliveryId":{"type":"string"},"id":{"type":"string","format":"uuid"},"messageId":{"type":"string","nullable":true},"callbackData":{"type":"string","nullable":true},"phoneNumber":{"type":"string"},"status":{"type":"string","example":"delivered"},"timestamp":{"type":"string","format":"date-time"},"errors":{"type":"array","items":{}},"data":{"type":"object","additionalProperties":true}}},"WebengageMessage":{"type":"object","required":["version","whatsAppData","metadata"],"properties":{"version":{"type":"string","enum":["1.0"]},"whatsAppData":{"type":"object","required":["toNumber","fromNumber","templateData"],"properties":{"toNumber":{"type":"string","example":"+919876543210","description":"Plain E.164 number; hashing is not enabled."},"fromNumber":{"type":"string"},"templateData":{"type":"object","required":["templateName","language","type"],"properties":{"templateName":{"type":"string"},"language":{"type":"string","example":"en"},"type":{"type":"string","enum":["TEXT","IMAGE","VIDEO","DOCUMENT"]},"templateVariables":{"type":"array","items":{"type":"string"},"description":"Ordered values for Send Personalization Variables mode."},"message":{"type":"string","description":"Rendered template body for Send Entire Message mode."},"header":{"type":"string","description":"Rendered text header for Send Entire Message mode."},"footer":{"type":"string"},"mediaUrl":{"type":"string","format":"uri"},"fileName":{"type":"string"},"buttonUrlParam":{"type":"string"},"buttonUrlDynamicParam":{"type":"string"}},"additionalProperties":true},"customData":{"type":"object","additionalProperties":true}}},"metadata":{"type":"object","required":["campaignType","timestamp","messageId"],"additionalProperties":true}}}}}}