{"openapi":"3.0.0","info":{"title":"RCS API","description":"# Rich Communication Business Messaging API\n\n## Overview\nThe RCS API provides comprehensive functionality for managing Rich Business Messaging (RCS) agents, sending messages, and handling webhook subscriptions for real-time event notifications.\n\n## Authentication\nAll API endpoints require authentication using API keys in the Authorization header:\n```\nAuthorization: Bearer your-api-key\n```\n\n## Webhook Events\nThe API supports webhook subscriptions to receive real-time notifications for various RCS events using CloudEvents 1.0 specification.\n\n## Rate Limiting\nAPI requests are subject to rate limiting to ensure fair usage and system stability.\n\n## Support\nFor API support and documentation, visit our developer portal or contact our support team.","version":"1.0.0"},"tags":[{"name":"Agents","description":"Agent management endpoints"},{"name":"Messages","description":"Message sending endpoints"},{"name":"Webhooks","description":"# Webhook Management\n\nWebhooks allow you to receive real-time notifications when events occur in your RCS conversations. This is essential for building interactive and responsive RCS experiences.\n\n## Event Types (CloudEvents 1.0.2)\n\nThe RCS API supports the following CloudEvents 1.0.2 compatible event types:\n\n### Server Events (from Google RCS)\n- **rcs.server.message_ttl.revoked**: Message TTL expiration was revoked\n- **rcs.server.message_ttl.revoked.failed**: Failed to revoke message TTL expiration\n\n### User Events (from Google RCS)  \n- **rcs.user.message.delivered**: Message was delivered to the user's device\n- **rcs.user.typing**: User is typing a response\n- **rcs.user.subscription.removed**: User opted out of messages (STOP/UNSUBSCRIBE)\n- **rcs.user.subscription.added**: User opted into messages (START/SUBSCRIBE)\n\n### Custom Events (first-party)\n- **rcs.user.message.sent**: User sent a text message\n- **rcs.user.file.sent**: User sent a file attachment\n- **rcs.user.suggestion.clicked**: User tapped on a suggestion chip\n- **rcs.user.action.clicked**: User tapped on an action button\n\n## Webhook Payload Format (CloudEvents 1.0.2)\n\nAll webhook events are delivered as HTTP POST requests using the CloudEvents 1.0.2 specification.\n\n📋 **Complete Schema**: The full CloudEvents 1.0.2 JSON Schema is available at [/schemas/cloudevents.json](/schemas/cloudevents.json)\n\n```json\n{\n  \"specversion\": \"1.0.2\",\n  \"id\": \"unique-event-id\",\n  \"type\": \"rcs.user.message.delivered\",\n  \"source\": \"/partners/123/agents/abc\",\n  \"subject\": \"+1234567890\",\n  \"time\": \"2024-01-01T12:00:00Z\",\n  \"datacontenttype\": \"application/json\",\n  \"data\": {\n    \"msisdn\": \"+1234567890\",\n    \"messageId\": \"message-123\",\n    \"deliveredAt\": \"2024-01-01T12:00:00Z\"\n  }\n}\n```\n\n### CloudEvents Envelope Fields\n- **specversion**: Always \"1.0.2\" (CloudEvents specification version)\n- **id**: Unique event identifier\n- **type**: Event type in snake_case format (e.g., \"rcs.user.message.delivered\")\n- **source**: URI identifying the event emitter\n- **subject**: Optional sub-identifier (phone number, message path)\n- **time**: ISO 8601 timestamp\n- **datacontenttype**: Always \"application/json\"\n- **data**: Event-specific payload\n\n### Example Event Payloads\n\n#### User Message Event\n```json\n{\n  \"specversion\": \"1.0.2\",\n  \"id\": \"msg-456\",\n  \"type\": \"rcs.user.message.sent\",\n  \"source\": \"/agents/your-agent-id\",\n  \"subject\": \"+1234567890\",\n  \"time\": \"2024-01-01T12:00:00Z\",\n  \"datacontenttype\": \"application/json\",\n  \"data\": {\n    \"msisdn\": \"+1234567890\",\n    \"messageId\": \"message-123\",\n    \"text\": \"Hello, I need help!\",\n    \"sentAt\": \"2024-01-01T12:00:00Z\"\n  }\n}\n```\n\n#### Server Event\n```json\n{\n  \"specversion\": \"1.0.2\",\n  \"id\": \"srv-789\",\n  \"type\": \"rcs.server.message_ttl.revoked\",\n  \"source\": \"/rcs/platform\",\n  \"subject\": \"message-123\",\n  \"time\": \"2024-01-01T12:00:00Z\",\n  \"datacontenttype\": \"application/json\",\n  \"data\": {\n    \"msisdn\": \"+1234567890\",\n    \"messageId\": \"message-123\",\n    \"revokedAt\": \"2024-01-01T12:00:00Z\"\n  }\n}\n```\n\n## Authentication\n\nWebhook requests include authentication via the `authToken` you specify when creating the webhook subscription. This token is sent in the request headers or body (depending on your webhook implementation).\n\n## Security\n\n- Always validate the authenticity of webhook requests using the provided authentication token\n- Use HTTPS endpoints for your webhook URLs\n- Implement proper error handling and return appropriate HTTP status codes\n- Consider implementing idempotency to handle duplicate webhook deliveries\n\n## Best Practices\n\n1. **Respond Quickly**: Return a 200 status code within 10 seconds\n2. **Handle Retries**: Implement idempotency as webhooks may be retried\n3. **Validate Payloads**: Always validate the webhook payload structure\n4. **Use HTTPS**: Secure your webhook endpoints with SSL/TLS\n5. **Log Events**: Keep logs of webhook events for debugging and monitoring\n6. **Filter Events**: Use event filtering to only receive events you need\n\n## Testing Webhooks\n\nFor testing webhook integrations, consider using tools like:\n- **ngrok**: Create secure tunnels to your local development server\n- **webhook.site**: Online webhook testing service\n- **Postman**: API testing with webhook simulation\n\n## Troubleshooting\n\nCommon webhook issues and solutions:\n\n- **Timeouts**: Ensure your webhook endpoint responds within 10 seconds\n- **Authentication Errors**: Verify your authToken is correctly configured\n- **Payload Errors**: Check that your webhook can handle the expected JSON structure\n- **SSL Errors**: Ensure your webhook URL uses a valid SSL certificate"}],"components":{"schemas":{},"parameters":{}},"paths":{"/":{"get":{"summary":"API Information","description":"Returns information about the RCS API","responses":{"200":{"description":"API information retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"description":{"type":"string"},"documentation":{"type":"string"},"health":{"type":"string"},"versions":{"type":"string"},"endpoints":{"type":"object","properties":{"documentation":{"type":"string"},"health":{"type":"string"},"versions":{"type":"string"},"schema":{"type":"string"}},"required":["documentation","health","versions","schema"]},"features":{"type":"array","items":{"type":"string"}},"authentication":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"}},"required":["type","description"]}},"required":["name","version","description","documentation","health","versions","endpoints","features","authentication"]}}}}}}},"/healthz":{"get":{"summary":"Health check","description":"Returns the health status of the API","responses":{"200":{"description":"Health check successful","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ok"]},"timestamp":{"type":"string"}},"required":["status","timestamp"]}}}}}}},"/healthz/redis":{"get":{"summary":"Redis connection health check","description":"Returns detailed Redis connection status and Fluid Compute pooling metrics","responses":{"200":{"description":"Redis health check response","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["healthy","degraded"]},"timestamp":{"type":"string"},"connection":{"type":"object","properties":{"hasConnection":{"type":"boolean"},"isConnecting":{"type":"boolean"},"connectionAttempts":{"type":"number"},"lastHealthCheck":{"type":"number"},"timeSinceLastHealthCheck":{"type":"number"}},"required":["hasConnection","isConnecting","connectionAttempts","lastHealthCheck","timeSinceLastHealthCheck"]},"fluidCompute":{"type":"object","properties":{"instanceReuse":{"type":"boolean"},"connectionPooling":{"type":"boolean"},"globalVariableState":{"type":"string"}},"required":["instanceReuse","connectionPooling","globalVariableState"]},"performance":{"type":"object","properties":{"pingLatency":{"type":"number"},"connectionAge":{"type":"number"}},"required":["pingLatency","connectionAge"]}},"required":["status","timestamp","connection","fluidCompute","performance"]},{"type":"object","properties":{"status":{"type":"string","enum":["unhealthy"]},"timestamp":{"type":"string"},"error":{"type":"string"},"connection":{"type":"object","properties":{"hasConnection":{"type":"boolean"},"isConnecting":{"type":"boolean"},"connectionAttempts":{"type":"number"},"lastHealthCheck":{"type":"number"},"timeSinceLastHealthCheck":{"type":"number"}},"required":["hasConnection","isConnecting","connectionAttempts","lastHealthCheck","timeSinceLastHealthCheck"]}},"required":["status","timestamp","error","connection"]}]}}}}}}},"/versions":{"get":{"summary":"Get supported API versions","description":"Returns the supported API versions","responses":{"200":{"description":"Supported versions retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"supported":{"type":"array","items":{"type":"string"}},"current":{"type":"string"}},"required":["supported","current"]}}}}}}},"/schemas/cloudevents.json":{"get":{"summary":"Get CloudEvents 1.0 JSON Schema","description":"Returns the complete CloudEvents 1.0 JSON Schema specification for RCS webhook events","responses":{"200":{"description":"CloudEvents schema retrieved successfully","content":{"application/json":{"schema":{"nullable":true}}}},"404":{"description":"Schema not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/v1/rcs-agents":{"get":{"tags":["Agents"],"summary":"List agents","description":"Returns a paginated list of agents for the authenticated organization","parameters":[{"schema":{"type":"string","description":"Base64 encoded cursor for pagination, combination of id and createdAtDate of the last item in the previous page","title":"Cursor","example":"123"},"required":false,"description":"Base64 encoded cursor for pagination, combination of id and createdAtDate of the last item in the previous page","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":10,"description":"Number of items per page (min 1, max 100)","title":"Limit","example":10},"required":false,"description":"Number of items per page (min 1, max 100)","name":"limit","in":"query"},{"schema":{"type":"string","enum":["forward","backward"],"default":"forward","description":"Pagination direction","title":"Direction","example":"forward"},"required":false,"description":"Pagination direction","name":"direction","in":"query"}],"responses":{"200":{"description":"Agents retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"rcsAgent":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","nullable":true,"format":"date"},"updatedAt":{"type":"string","nullable":true,"format":"date"},"brandId":{"type":"string"},"googleAgentId":{"type":"string","nullable":true},"displayName":{"type":"string"},"description":{"type":"string","nullable":true},"logoUrl":{"type":"string","nullable":true},"heroUrl":{"type":"string","nullable":true},"privacyPolicyUrl":{"type":"string","nullable":true},"termsUrl":{"type":"string","nullable":true},"colorHex":{"type":"string","nullable":true},"useCase":{"type":"string","nullable":true},"billingCategory":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"status":{"type":"string"},"phoneNumbers":{"nullable":true},"contactEmail":{"type":"string","nullable":true},"contactEmailLabel":{"type":"string","nullable":true},"contactWebsite":{"type":"string","nullable":true},"contactWebsiteLabel":{"type":"string","nullable":true},"privacyPolicyLabel":{"type":"string","nullable":true},"termsLabel":{"type":"string","nullable":true}},"required":["id","createdAt","updatedAt","brandId","googleAgentId","displayName","description","logoUrl","heroUrl","privacyPolicyUrl","termsUrl","colorHex","useCase","billingCategory","region","status","contactEmail","contactEmailLabel","contactWebsite","contactWebsiteLabel","privacyPolicyLabel","termsLabel"]},"rcsBrand":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","nullable":true,"format":"date"},"updatedAt":{"type":"string","nullable":true,"format":"date"},"organizationId":{"type":"string"},"googleBrandId":{"type":"string","nullable":true},"displayName":{"type":"string"},"verificationStatus":{"type":"string","nullable":true},"website":{"type":"string","nullable":true}},"required":["id","createdAt","updatedAt","organizationId","googleBrandId","displayName","verificationStatus","website"]}},"required":["rcsAgent","rcsBrand"]},"title":"Data","description":"The data of the paginated result","example":[]},"nextCursor":{"type":"string","title":"Next Cursor","description":"The next cursor for pagination","example":"123"},"prevCursor":{"type":"string","title":"Previous Cursor","description":"The previous cursor for pagination","example":"123"},"hasMore":{"type":"boolean","title":"Has More","description":"Whether there are more items to fetch","example":true}},"required":["data","hasMore"]},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}}}}},"/v1/rcs-agents/{rcsAgentId}":{"get":{"tags":["Agents"],"summary":"Get agent by ID","description":"Returns an agent by its ID","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"}],"responses":{"200":{"description":"Agent retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","nullable":true,"format":"date"},"updatedAt":{"type":"string","nullable":true,"format":"date"},"brandId":{"type":"string"},"googleAgentId":{"type":"string","nullable":true},"displayName":{"type":"string"},"description":{"type":"string","nullable":true},"logoUrl":{"type":"string","nullable":true},"heroUrl":{"type":"string","nullable":true},"privacyPolicyUrl":{"type":"string","nullable":true},"termsUrl":{"type":"string","nullable":true},"colorHex":{"type":"string","nullable":true},"useCase":{"type":"string","nullable":true},"billingCategory":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"status":{"type":"string"},"phoneNumbers":{"nullable":true},"contactEmail":{"type":"string","nullable":true},"contactEmailLabel":{"type":"string","nullable":true},"contactWebsite":{"type":"string","nullable":true},"contactWebsiteLabel":{"type":"string","nullable":true},"privacyPolicyLabel":{"type":"string","nullable":true},"termsLabel":{"type":"string","nullable":true}},"required":["id","createdAt","updatedAt","brandId","googleAgentId","displayName","description","logoUrl","heroUrl","privacyPolicyUrl","termsUrl","colorHex","useCase","billingCategory","region","status","contactEmail","contactEmailLabel","contactWebsite","contactWebsiteLabel","privacyPolicyLabel","termsLabel"]},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}}}}},"/v1/rcs-agents/{rcsAgentId}/messages/text":{"post":{"tags":["RCS Message"],"summary":"Send an RCS text message from an agent","description":"Send an RCS text message from an agent using the new API schema","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"baseVariables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}},"recipient":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"Single RCS recipient"},"idempotencyKey":{"type":"string","maxLength":255,"description":"Idempotency key to prevent duplicate sends","example":"rcs-campaign-001"},"debugEmailAddress":{"type":"string","format":"email","description":"Debug email address to receive a copy of the message. Subject will be the MSISDN, message content will include the message payload.","example":"debug@example.com"},"type":{"type":"string","enum":["RCS_TEXT"],"description":"Message type identifier"},"payload":{"type":"object","properties":{"messageText":{"type":"string","minLength":1,"maxLength":3072,"description":"Text content of the message (up to 3072 characters)"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"reply":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggestion chip label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when suggestion is tapped (string, length up to 2048)","example":"click_me"}},"required":["text","postbackData"]}},"required":["reply"],"additionalProperties":false},{"type":"object","properties":{"action":{"anyOf":[{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"openUrlAction":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri","description":"URL to open in browser (must be a valid URL)","example":"https://www.google.com"},"application":{"type":"string","enum":["OPEN_URL_APPLICATION_UNSPECIFIED","BROWSER","WEBVIEW"],"description":"Type of application to open the URL"},"webviewViewMode":{"type":"string","enum":["WEBVIEW_VIEW_MODE_UNSPECIFIED","FULL","HALF","TALL"],"description":"Type of webview display mode"},"description":{"type":"string"}},"required":["url"],"example":{"url":"https://www.google.com","application":"WEBVIEW","webviewViewMode":"FULL"}}},"required":["text","postbackData","openUrlAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"viewLocationAction":{"type":"object","properties":{"latLong":{"type":"object","properties":{"latitude":{"type":"number","nullable":true,"minimum":-90,"maximum":90},"longitude":{"type":"number","nullable":true,"minimum":-180,"maximum":180}},"example":{"latitude":37.7749,"longitude":-122.4194},"description":"Optional latitude/longitude of the specified place"},"label":{"type":"string","nullable":true,"description":"Optional label for the marker placed at latLong"},"query":{"type":"string","nullable":true,"description":"Optional search string (Android Messages only). When provided instead of latLong, tapping opens a location search in the default maps app."}},"description":"Action to view location","example":{"label":"Store Location","latLong":{"latitude":37.7749,"longitude":-122.4194},"query":"Coffee shop near me"}}},"required":["text","postbackData","viewLocationAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"dialAction":{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"Phone number to dial on tap (E.164 format)","example":"+1234567890"}},"required":["phoneNumber"],"example":{"phoneNumber":"+1234567890"}}},"required":["text","postbackData","dialAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"shareLocationAction":{"type":"object","properties":{},"description":"Triggers the RCS app location picker","example":{}}},"required":["text","postbackData","shareLocationAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"createCalendarEventAction":{"type":"object","properties":{"description":{"type":"string","nullable":true},"endTime":{"type":"string","nullable":true,"format":"date-time"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"title":{"type":"string","nullable":true}},"example":{"title":"Team Meeting","description":"Weekly team sync","startTime":"2023-12-01T10:00:00Z","endTime":"2023-12-01T11:00:00Z"}}},"required":["text","postbackData","createCalendarEventAction"],"additionalProperties":false}],"example":{"text":"Visit website","postbackData":"visit_website_action","openUrlAction":{"url":"https://www.google.com"}}}},"required":["action"],"additionalProperties":false}],"description":"Suggestion chip (either a reply or an action)","example":{"reply":{"text":"Click me","postbackData":"click_me"}}},"description":"Suggestion chips for basic messages (either 1 action OR up to 11 replies, cannot mix)"},"timeToLive":{"type":"string","pattern":"^\\d+[smhd]$/i","description":"Time-to-live before message expires, e.g. \"10s\" (max 15 days)"},"expireTime":{"type":"string","format":"date-time","example":"2025-07-07T10:00:00Z"}},"additionalProperties":false,"description":"RCS text message payload using Google RCS message parameters"}},"required":["recipient","type","payload"],"description":"Send RCS text message request"}}}},"responses":{"200":{"description":"RCS text message queued successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","description":"UUID identifier","example":"550e8400-e29b-41d4-a716-446655440000"},"status":{"type":"string","enum":["QUEUED","SENT","DELIVERED","READ","BOUNCED","FAILED","CANCELED"]},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 datetime string","example":"2025-08-08T12:30:00Z"}},"required":["requestId","status","createdAt"],"description":"Message response"},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}},"400":{"description":"Invalid request data","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"402":{"description":"Payment required - insufficient credits or billing issue","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"403":{"description":"Unauthorized access to RCS agent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}}}}},"/v1/rcs-agents/{rcsAgentId}/messages/rich-card":{"post":{"tags":["RCS Message"],"summary":"Send an RCS rich card message from an agent","description":"Send an RCS rich card message from an agent using the new API schema","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"baseVariables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}},"recipient":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"Single RCS recipient"},"idempotencyKey":{"type":"string","maxLength":255,"description":"Idempotency key to prevent duplicate sends","example":"rcs-campaign-001"},"debugEmailAddress":{"type":"string","format":"email","description":"Debug email address to receive a copy of the message. Subject will be the MSISDN, message content will include the message payload.","example":"debug@example.com"},"type":{"type":"string","enum":["RCS_RICH_CARD"],"description":"Message type identifier"},"payload":{"type":"object","properties":{"messageText":{"type":"string","maxLength":200,"description":"Optional title text for the rich card (up to 200 chars)"},"messageDescription":{"type":"string","maxLength":2000,"description":"Optional description text for the rich card (up to 2000 chars)"},"imageUrl":{"type":"string","maxLength":2048,"format":"uri","description":"URL of image to display in card (should be a public HTTPS URL)"},"height":{"type":"string","enum":["SHORT","MEDIUM","TALL"],"description":"Image height for rich card: SHORT, MEDIUM, or TALL"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"reply":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggestion chip label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when suggestion is tapped (string, length up to 2048)","example":"click_me"}},"required":["text","postbackData"]}},"required":["reply"],"additionalProperties":false},{"type":"object","properties":{"action":{"anyOf":[{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"openUrlAction":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri","description":"URL to open in browser (must be a valid URL)","example":"https://www.google.com"},"application":{"type":"string","enum":["OPEN_URL_APPLICATION_UNSPECIFIED","BROWSER","WEBVIEW"],"description":"Type of application to open the URL"},"webviewViewMode":{"type":"string","enum":["WEBVIEW_VIEW_MODE_UNSPECIFIED","FULL","HALF","TALL"],"description":"Type of webview display mode"},"description":{"type":"string"}},"required":["url"],"example":{"url":"https://www.google.com","application":"WEBVIEW","webviewViewMode":"FULL"}}},"required":["text","postbackData","openUrlAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"viewLocationAction":{"type":"object","properties":{"latLong":{"type":"object","properties":{"latitude":{"type":"number","nullable":true,"minimum":-90,"maximum":90},"longitude":{"type":"number","nullable":true,"minimum":-180,"maximum":180}},"example":{"latitude":37.7749,"longitude":-122.4194},"description":"Optional latitude/longitude of the specified place"},"label":{"type":"string","nullable":true,"description":"Optional label for the marker placed at latLong"},"query":{"type":"string","nullable":true,"description":"Optional search string (Android Messages only). When provided instead of latLong, tapping opens a location search in the default maps app."}},"description":"Action to view location","example":{"label":"Store Location","latLong":{"latitude":37.7749,"longitude":-122.4194},"query":"Coffee shop near me"}}},"required":["text","postbackData","viewLocationAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"dialAction":{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"Phone number to dial on tap (E.164 format)","example":"+1234567890"}},"required":["phoneNumber"],"example":{"phoneNumber":"+1234567890"}}},"required":["text","postbackData","dialAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"shareLocationAction":{"type":"object","properties":{},"description":"Triggers the RCS app location picker","example":{}}},"required":["text","postbackData","shareLocationAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"createCalendarEventAction":{"type":"object","properties":{"description":{"type":"string","nullable":true},"endTime":{"type":"string","nullable":true,"format":"date-time"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"title":{"type":"string","nullable":true}},"example":{"title":"Team Meeting","description":"Weekly team sync","startTime":"2023-12-01T10:00:00Z","endTime":"2023-12-01T11:00:00Z"}}},"required":["text","postbackData","createCalendarEventAction"],"additionalProperties":false}],"example":{"text":"Visit website","postbackData":"visit_website_action","openUrlAction":{"url":"https://www.google.com"}}}},"required":["action"],"additionalProperties":false}],"description":"Suggestion chip (either a reply or an action)","example":{"reply":{"text":"Click me","postbackData":"click_me"}}},"description":"Suggestion chips: either 1 action OR up to 4 replies (cannot mix)"}},"required":["imageUrl","height"],"additionalProperties":false,"description":"RCS rich card payload using Google RCS rich card parameters"}},"required":["recipient","type","payload"],"description":"Send RCS rich card message request"}}}},"responses":{"200":{"description":"RCS rich card message queued successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","description":"UUID identifier","example":"550e8400-e29b-41d4-a716-446655440000"},"status":{"type":"string","enum":["QUEUED","SENT","DELIVERED","READ","BOUNCED","FAILED","CANCELED"]},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 datetime string","example":"2025-08-08T12:30:00Z"}},"required":["requestId","status","createdAt"],"description":"Message response"},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}},"400":{"description":"Invalid request data","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"402":{"description":"Payment required - insufficient credits or billing issue","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"403":{"description":"Unauthorized access to RCS agent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}}}}},"/v1/rcs-agents/{rcsAgentId}/messages/carousel":{"post":{"tags":["RCS Message"],"summary":"Send an RCS carousel message from an agent","description":"Send an RCS carousel message from an agent using the new API schema","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"baseVariables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}},"recipient":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"Single RCS recipient"},"idempotencyKey":{"type":"string","maxLength":255,"description":"Idempotency key to prevent duplicate sends","example":"rcs-campaign-001"},"debugEmailAddress":{"type":"string","format":"email","description":"Debug email address to receive a copy of the message. Subject will be the MSISDN, message content will include the message payload.","example":"debug@example.com"},"type":{"type":"string","enum":["RCS_CAROUSEL"],"description":"Message type identifier"},"payload":{"type":"object","properties":{"cardWidth":{"type":"string","enum":["SMALL","MEDIUM"],"description":"Card width setting for carousel (SMALL or MEDIUM)"},"cardContents":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","maxLength":200,"description":"Optional title text for the card (up to 200 chars)"},"description":{"type":"string","maxLength":2000,"description":"Optional description text for the card (up to 2000 chars)"},"media":{"type":"object","properties":{"height":{"type":"string","enum":["SHORT","MEDIUM","TALL"],"description":"Image height for card: SHORT, MEDIUM, or TALL"},"contentInfo":{"type":"object","properties":{"fileUrl":{"type":"string","maxLength":2048,"format":"uri","description":"URL of image to display in card (should be a public HTTPS URL)"},"forceRefresh":{"type":"boolean"},"thumbnailUrl":{"type":"string","maxLength":2048,"format":"uri","description":"Optional thumbnail URL"}},"required":["fileUrl"]}}},"suggestions":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"reply":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggestion chip label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when suggestion is tapped (string, length up to 2048)","example":"click_me"}},"required":["text","postbackData"]}},"required":["reply"],"additionalProperties":false},{"type":"object","properties":{"action":{"anyOf":[{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"openUrlAction":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri","description":"URL to open in browser (must be a valid URL)","example":"https://www.google.com"},"application":{"type":"string","enum":["OPEN_URL_APPLICATION_UNSPECIFIED","BROWSER","WEBVIEW"],"description":"Type of application to open the URL"},"webviewViewMode":{"type":"string","enum":["WEBVIEW_VIEW_MODE_UNSPECIFIED","FULL","HALF","TALL"],"description":"Type of webview display mode"},"description":{"type":"string"}},"required":["url"],"example":{"url":"https://www.google.com","application":"WEBVIEW","webviewViewMode":"FULL"}}},"required":["text","postbackData","openUrlAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"viewLocationAction":{"type":"object","properties":{"latLong":{"type":"object","properties":{"latitude":{"type":"number","nullable":true,"minimum":-90,"maximum":90},"longitude":{"type":"number","nullable":true,"minimum":-180,"maximum":180}},"example":{"latitude":37.7749,"longitude":-122.4194},"description":"Optional latitude/longitude of the specified place"},"label":{"type":"string","nullable":true,"description":"Optional label for the marker placed at latLong"},"query":{"type":"string","nullable":true,"description":"Optional search string (Android Messages only). When provided instead of latLong, tapping opens a location search in the default maps app."}},"description":"Action to view location","example":{"label":"Store Location","latLong":{"latitude":37.7749,"longitude":-122.4194},"query":"Coffee shop near me"}}},"required":["text","postbackData","viewLocationAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"dialAction":{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"Phone number to dial on tap (E.164 format)","example":"+1234567890"}},"required":["phoneNumber"],"example":{"phoneNumber":"+1234567890"}}},"required":["text","postbackData","dialAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"shareLocationAction":{"type":"object","properties":{},"description":"Triggers the RCS app location picker","example":{}}},"required":["text","postbackData","shareLocationAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"createCalendarEventAction":{"type":"object","properties":{"description":{"type":"string","nullable":true},"endTime":{"type":"string","nullable":true,"format":"date-time"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"title":{"type":"string","nullable":true}},"example":{"title":"Team Meeting","description":"Weekly team sync","startTime":"2023-12-01T10:00:00Z","endTime":"2023-12-01T11:00:00Z"}}},"required":["text","postbackData","createCalendarEventAction"],"additionalProperties":false}],"example":{"text":"Visit website","postbackData":"visit_website_action","openUrlAction":{"url":"https://www.google.com"}}}},"required":["action"],"additionalProperties":false}],"description":"Suggestion chip (either a reply or an action)","example":{"reply":{"text":"Click me","postbackData":"click_me"}}},"description":"Suggestion chips: either 1 action OR up to 4 replies (cannot mix)"}}},"minItems":2,"maxItems":10,"description":"Array of card contents (minimum 2, maximum 10 cards)"},"timeToLive":{"type":"string","pattern":"^\\d+[smhd]$/i","description":"Time-to-live before message expires, e.g. \"10s\" (max 15 days)"},"expireTime":{"type":"string","format":"date-time","example":"2025-07-07T10:00:00Z"}},"required":["cardContents"],"additionalProperties":false,"description":"RCS carousel payload using Google RCS carousel parameters"}},"required":["recipient","type","payload"],"description":"Send RCS carousel message request"}}}},"responses":{"200":{"description":"RCS carousel message queued successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","description":"UUID identifier","example":"550e8400-e29b-41d4-a716-446655440000"},"status":{"type":"string","enum":["QUEUED","SENT","DELIVERED","READ","BOUNCED","FAILED","CANCELED"]},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 datetime string","example":"2025-08-08T12:30:00Z"}},"required":["requestId","status","createdAt"],"description":"Message response"},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}},"400":{"description":"Invalid request data","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"402":{"description":"Payment required - insufficient credits or billing issue","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"403":{"description":"Unauthorized access to RCS agent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}}}}},"/v1/rcs-agents/{rcsAgentId}/messages/interactive-text":{"post":{"tags":["RCS Message"],"summary":"Send an RCS interactive text message from an agent","description":"Send an RCS interactive text message from an agent using the new API schema","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"baseVariables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}},"recipient":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"Single RCS recipient"},"idempotencyKey":{"type":"string","maxLength":255,"description":"Idempotency key to prevent duplicate sends","example":"rcs-campaign-001"},"debugEmailAddress":{"type":"string","format":"email","description":"Debug email address to receive a copy of the message. Subject will be the MSISDN, message content will include the message payload.","example":"debug@example.com"},"type":{"type":"string","enum":["CUSTOM_RCS_INTERACTIVE_TEXT"],"description":"Message type identifier"},"thread":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"UUID of existing thread to continue conversation","example":"550e8400-e29b-41d4-a716-446655440000"}},"required":["id"],"description":"Reference to existing thread"},{"type":"object","properties":{"expiresAt":{"type":"string","format":"date"},"config":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time"},"primaryColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Primary color for the thread UI as hex string","example":"#007AFF"},"secondaryColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Secondary color for the thread UI as hex string","example":"#34C759"},"allowReactions":{"type":"boolean","description":"Whether reactions are allowed in this thread","example":true},"allowedReactions":{"type":"array","items":{"type":"string"},"maxItems":10,"description":"Optional array of specific emoji reactions allowed (max 10)","example":["👍","👎","❤️","😂"]},"messageActionLabel":{"type":"string","minLength":1,"maxLength":50,"description":"Text shown on the button to join the thread","example":"Join Conversation"}},"required":["expiresAt","primaryColor","secondaryColor","allowReactions","allowedReactions","messageActionLabel"],"description":"Configuration for creating a new thread"},"initialThreadMessage":{"type":"object","properties":{"bodyText":{"type":"string","minLength":1,"maxLength":1000,"description":"Initial message text to post in the thread from the RCS agent","example":"Welcome to this conversation thread!"}},"required":["bodyText"],"description":"Optional initial message to post when creating the thread"}},"required":["expiresAt","config"],"description":"Configuration for creating a new thread"}],"description":"Thread handling - either existing thread ID or new thread configuration"},"payload":{"type":"object","properties":{"messageText":{"type":"string","minLength":1,"maxLength":3072,"description":"Text content of the message (up to 3072 characters)"},"timeToLive":{"type":"string","pattern":"^\\d+[smhd]$/i","description":"Time-to-live before message expires, e.g. \"10s\" (max 15 days)"},"expireTime":{"type":"string","format":"date-time","example":"2025-07-07T10:00:00Z"}},"additionalProperties":false,"description":"RCS interactive text message payload (no suggestions - for conversation flow)"}},"required":["recipient","type","thread","payload"],"description":"Send custom RCS interactive text message request"}}}},"responses":{"200":{"description":"RCS interactive text message queued successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","description":"UUID identifier","example":"550e8400-e29b-41d4-a716-446655440000"},"status":{"type":"string","enum":["QUEUED","SENT","DELIVERED","READ","BOUNCED","FAILED","CANCELED"]},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 datetime string","example":"2025-08-08T12:30:00Z"}},"required":["requestId","status","createdAt"],"description":"Message response"},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}},"400":{"description":"Invalid request data","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"402":{"description":"Payment required - insufficient credits or billing issue","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"403":{"description":"Unauthorized access to RCS agent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}}}}},"/v1/rcs-agents/{rcsAgentId}/messages/interactive-rich-card":{"post":{"tags":["RCS Message"],"summary":"Send an RCS interactive rich card message from an agent","description":"Send an RCS interactive rich card message from an agent using the new API schema","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"baseVariables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}},"recipient":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"Single RCS recipient"},"idempotencyKey":{"type":"string","maxLength":255,"description":"Idempotency key to prevent duplicate sends","example":"rcs-campaign-001"},"debugEmailAddress":{"type":"string","format":"email","description":"Debug email address to receive a copy of the message. Subject will be the MSISDN, message content will include the message payload.","example":"debug@example.com"},"type":{"type":"string","enum":["CUSTOM_RCS_INTERACTIVE_RICH_CARD"],"description":"Message type identifier"},"thread":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"UUID of existing thread to continue conversation","example":"550e8400-e29b-41d4-a716-446655440000"}},"required":["id"],"description":"Reference to existing thread"},{"type":"object","properties":{"expiresAt":{"type":"string","format":"date"},"config":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time"},"primaryColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Primary color for the thread UI as hex string","example":"#007AFF"},"secondaryColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Secondary color for the thread UI as hex string","example":"#34C759"},"allowReactions":{"type":"boolean","description":"Whether reactions are allowed in this thread","example":true},"allowedReactions":{"type":"array","items":{"type":"string"},"maxItems":10,"description":"Optional array of specific emoji reactions allowed (max 10)","example":["👍","👎","❤️","😂"]},"messageActionLabel":{"type":"string","minLength":1,"maxLength":50,"description":"Text shown on the button to join the thread","example":"Join Conversation"}},"required":["expiresAt","primaryColor","secondaryColor","allowReactions","allowedReactions","messageActionLabel"],"description":"Configuration for creating a new thread"},"initialThreadMessage":{"type":"object","properties":{"bodyText":{"type":"string","minLength":1,"maxLength":1000,"description":"Initial message text to post in the thread from the RCS agent","example":"Welcome to this conversation thread!"}},"required":["bodyText"],"description":"Optional initial message to post when creating the thread"}},"required":["expiresAt","config"],"description":"Configuration for creating a new thread"}],"description":"Thread handling - either existing thread ID or new thread configuration"},"payload":{"type":"object","properties":{"messageText":{"type":"string","maxLength":200,"description":"Optional title text for the rich card (up to 200 chars)"},"messageDescription":{"type":"string","maxLength":2000,"description":"Optional description text for the rich card (up to 2000 chars)"},"imageUrl":{"type":"string","maxLength":2048,"format":"uri","description":"URL of image to display in card (should be a public HTTPS URL)"},"height":{"type":"string","enum":["SHORT","MEDIUM","TALL"],"description":"Image height for rich card: SHORT, MEDIUM, or TALL"}},"required":["imageUrl","height"],"additionalProperties":false,"description":"RCS interactive rich card payload (no suggestions - for conversation flow)"}},"required":["recipient","type","thread","payload"],"description":"Send custom RCS interactive rich card message request"}}}},"responses":{"200":{"description":"RCS interactive rich card message queued successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","description":"UUID identifier","example":"550e8400-e29b-41d4-a716-446655440000"},"status":{"type":"string","enum":["QUEUED","SENT","DELIVERED","READ","BOUNCED","FAILED","CANCELED"]},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 datetime string","example":"2025-08-08T12:30:00Z"}},"required":["requestId","status","createdAt"],"description":"Message response"},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}},"400":{"description":"Invalid request data","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"402":{"description":"Payment required - insufficient credits or billing issue","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"403":{"description":"Unauthorized access to RCS agent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}}}}},"/v1/rcs-agents/{rcsAgentId}/messages/interactive-carousel":{"post":{"tags":["RCS Message"],"summary":"Send an RCS interactive carousel message from an agent","description":"Send an RCS interactive carousel message from an agent using the new API schema","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"baseVariables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}},"recipient":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"Single RCS recipient"},"idempotencyKey":{"type":"string","maxLength":255,"description":"Idempotency key to prevent duplicate sends","example":"rcs-campaign-001"},"debugEmailAddress":{"type":"string","format":"email","description":"Debug email address to receive a copy of the message. Subject will be the MSISDN, message content will include the message payload.","example":"debug@example.com"},"type":{"type":"string","enum":["CUSTOM_RCS_INTERACTIVE_CAROUSEL"],"description":"Message type identifier"},"thread":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"UUID of existing thread to continue conversation","example":"550e8400-e29b-41d4-a716-446655440000"}},"required":["id"],"description":"Reference to existing thread"},{"type":"object","properties":{"expiresAt":{"type":"string","format":"date"},"config":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time"},"primaryColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Primary color for the thread UI as hex string","example":"#007AFF"},"secondaryColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Secondary color for the thread UI as hex string","example":"#34C759"},"allowReactions":{"type":"boolean","description":"Whether reactions are allowed in this thread","example":true},"allowedReactions":{"type":"array","items":{"type":"string"},"maxItems":10,"description":"Optional array of specific emoji reactions allowed (max 10)","example":["👍","👎","❤️","😂"]},"messageActionLabel":{"type":"string","minLength":1,"maxLength":50,"description":"Text shown on the button to join the thread","example":"Join Conversation"}},"required":["expiresAt","primaryColor","secondaryColor","allowReactions","allowedReactions","messageActionLabel"],"description":"Configuration for creating a new thread"},"initialThreadMessage":{"type":"object","properties":{"bodyText":{"type":"string","minLength":1,"maxLength":1000,"description":"Initial message text to post in the thread from the RCS agent","example":"Welcome to this conversation thread!"}},"required":["bodyText"],"description":"Optional initial message to post when creating the thread"}},"required":["expiresAt","config"],"description":"Configuration for creating a new thread"}],"description":"Thread handling - either existing thread ID or new thread configuration"},"payload":{"type":"object","properties":{"cardWidth":{"type":"string","enum":["SMALL","MEDIUM"],"description":"Card width setting for carousel (SMALL or MEDIUM)"},"cardContents":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","maxLength":200,"description":"Optional title text for the card (up to 200 chars)"},"description":{"type":"string","maxLength":2000,"description":"Optional description text for the card (up to 2000 chars)"},"media":{"type":"object","properties":{"height":{"type":"string","enum":["SHORT","MEDIUM","TALL"],"description":"Image height for card: SHORT, MEDIUM, or TALL"},"contentInfo":{"type":"object","properties":{"fileUrl":{"type":"string","maxLength":2048,"format":"uri","description":"URL of image to display in card (should be a public HTTPS URL)"},"forceRefresh":{"type":"boolean"},"thumbnailUrl":{"type":"string","maxLength":2048,"format":"uri","description":"Optional thumbnail URL"}},"required":["fileUrl"]}}},"suggestions":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"reply":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggestion chip label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when suggestion is tapped (string, length up to 2048)","example":"click_me"}},"required":["text","postbackData"]}},"required":["reply"],"additionalProperties":false},{"type":"object","properties":{"action":{"anyOf":[{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"openUrlAction":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri","description":"URL to open in browser (must be a valid URL)","example":"https://www.google.com"},"application":{"type":"string","enum":["OPEN_URL_APPLICATION_UNSPECIFIED","BROWSER","WEBVIEW"],"description":"Type of application to open the URL"},"webviewViewMode":{"type":"string","enum":["WEBVIEW_VIEW_MODE_UNSPECIFIED","FULL","HALF","TALL"],"description":"Type of webview display mode"},"description":{"type":"string"}},"required":["url"],"example":{"url":"https://www.google.com","application":"WEBVIEW","webviewViewMode":"FULL"}}},"required":["text","postbackData","openUrlAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"viewLocationAction":{"type":"object","properties":{"latLong":{"type":"object","properties":{"latitude":{"type":"number","nullable":true,"minimum":-90,"maximum":90},"longitude":{"type":"number","nullable":true,"minimum":-180,"maximum":180}},"example":{"latitude":37.7749,"longitude":-122.4194},"description":"Optional latitude/longitude of the specified place"},"label":{"type":"string","nullable":true,"description":"Optional label for the marker placed at latLong"},"query":{"type":"string","nullable":true,"description":"Optional search string (Android Messages only). When provided instead of latLong, tapping opens a location search in the default maps app."}},"description":"Action to view location","example":{"label":"Store Location","latLong":{"latitude":37.7749,"longitude":-122.4194},"query":"Coffee shop near me"}}},"required":["text","postbackData","viewLocationAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"dialAction":{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"Phone number to dial on tap (E.164 format)","example":"+1234567890"}},"required":["phoneNumber"],"example":{"phoneNumber":"+1234567890"}}},"required":["text","postbackData","dialAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"shareLocationAction":{"type":"object","properties":{},"description":"Triggers the RCS app location picker","example":{}}},"required":["text","postbackData","shareLocationAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"createCalendarEventAction":{"type":"object","properties":{"description":{"type":"string","nullable":true},"endTime":{"type":"string","nullable":true,"format":"date-time"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"title":{"type":"string","nullable":true}},"example":{"title":"Team Meeting","description":"Weekly team sync","startTime":"2023-12-01T10:00:00Z","endTime":"2023-12-01T11:00:00Z"}}},"required":["text","postbackData","createCalendarEventAction"],"additionalProperties":false}],"example":{"text":"Visit website","postbackData":"visit_website_action","openUrlAction":{"url":"https://www.google.com"}}}},"required":["action"],"additionalProperties":false}],"description":"Suggestion chip (either a reply or an action)","example":{"reply":{"text":"Click me","postbackData":"click_me"}}},"description":"Suggestion chips: either 1 action OR up to 4 replies (cannot mix)"}}},"minItems":2,"maxItems":10,"description":"Array of card contents (minimum 2, maximum 10 cards)"},"timeToLive":{"type":"string","pattern":"^\\d+[smhd]$/i","description":"Time-to-live before message expires, e.g. \"10s\" (max 15 days)"},"expireTime":{"type":"string","format":"date-time","example":"2025-07-07T10:00:00Z"}},"required":["cardContents"],"additionalProperties":false,"description":"RCS interactive carousel payload (no suggestions - for conversation flow)"}},"required":["recipient","type","thread","payload"],"description":"Send custom RCS interactive carousel message request"}}}},"responses":{"200":{"description":"RCS interactive carousel message queued successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","description":"UUID identifier","example":"550e8400-e29b-41d4-a716-446655440000"},"status":{"type":"string","enum":["QUEUED","SENT","DELIVERED","READ","BOUNCED","FAILED","CANCELED"]},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 datetime string","example":"2025-08-08T12:30:00Z"}},"required":["requestId","status","createdAt"],"description":"Message response"},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}},"400":{"description":"Invalid request data","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"402":{"description":"Payment required - insufficient credits or billing issue","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"403":{"description":"Unauthorized access to RCS agent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}}}}},"/v1/rcs-agents/{rcsAgentId}/messages/text/batch":{"post":{"tags":["RCS Message Batch"],"summary":"Send RCS text messages in batch","description":"Send multiple RCS text messages to different recipients","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"baseVariables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}},"recipients":{"type":"array","items":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"RCS recipient information"},"minItems":1,"maxItems":10000,"description":"List of RCS recipients for batch operation (no duplicate MSISDNs allowed)"},"idempotencyKey":{"type":"string","maxLength":255},"debugEmailAddress":{"type":"string","format":"email","description":"Debug email address to receive a copy of the message. Subject will be the MSISDN, message content will include the message payload.","example":"debug@example.com"},"type":{"type":"string","enum":["RCS_TEXT"],"description":"Message type identifier"},"payload":{"type":"object","properties":{"messageText":{"type":"string","minLength":1,"maxLength":3072,"description":"Text content of the message (up to 3072 characters)"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"reply":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggestion chip label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when suggestion is tapped (string, length up to 2048)","example":"click_me"}},"required":["text","postbackData"]}},"required":["reply"],"additionalProperties":false},{"type":"object","properties":{"action":{"anyOf":[{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"openUrlAction":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri","description":"URL to open in browser (must be a valid URL)","example":"https://www.google.com"},"application":{"type":"string","enum":["OPEN_URL_APPLICATION_UNSPECIFIED","BROWSER","WEBVIEW"],"description":"Type of application to open the URL"},"webviewViewMode":{"type":"string","enum":["WEBVIEW_VIEW_MODE_UNSPECIFIED","FULL","HALF","TALL"],"description":"Type of webview display mode"},"description":{"type":"string"}},"required":["url"],"example":{"url":"https://www.google.com","application":"WEBVIEW","webviewViewMode":"FULL"}}},"required":["text","postbackData","openUrlAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"viewLocationAction":{"type":"object","properties":{"latLong":{"type":"object","properties":{"latitude":{"type":"number","nullable":true,"minimum":-90,"maximum":90},"longitude":{"type":"number","nullable":true,"minimum":-180,"maximum":180}},"example":{"latitude":37.7749,"longitude":-122.4194},"description":"Optional latitude/longitude of the specified place"},"label":{"type":"string","nullable":true,"description":"Optional label for the marker placed at latLong"},"query":{"type":"string","nullable":true,"description":"Optional search string (Android Messages only). When provided instead of latLong, tapping opens a location search in the default maps app."}},"description":"Action to view location","example":{"label":"Store Location","latLong":{"latitude":37.7749,"longitude":-122.4194},"query":"Coffee shop near me"}}},"required":["text","postbackData","viewLocationAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"dialAction":{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"Phone number to dial on tap (E.164 format)","example":"+1234567890"}},"required":["phoneNumber"],"example":{"phoneNumber":"+1234567890"}}},"required":["text","postbackData","dialAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"shareLocationAction":{"type":"object","properties":{},"description":"Triggers the RCS app location picker","example":{}}},"required":["text","postbackData","shareLocationAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"createCalendarEventAction":{"type":"object","properties":{"description":{"type":"string","nullable":true},"endTime":{"type":"string","nullable":true,"format":"date-time"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"title":{"type":"string","nullable":true}},"example":{"title":"Team Meeting","description":"Weekly team sync","startTime":"2023-12-01T10:00:00Z","endTime":"2023-12-01T11:00:00Z"}}},"required":["text","postbackData","createCalendarEventAction"],"additionalProperties":false}],"example":{"text":"Visit website","postbackData":"visit_website_action","openUrlAction":{"url":"https://www.google.com"}}}},"required":["action"],"additionalProperties":false}],"description":"Suggestion chip (either a reply or an action)","example":{"reply":{"text":"Click me","postbackData":"click_me"}}},"description":"Suggestion chips for basic messages (either 1 action OR up to 11 replies, cannot mix)"},"timeToLive":{"type":"string","pattern":"^\\d+[smhd]$/i","description":"Time-to-live before message expires, e.g. \"10s\" (max 15 days)"},"expireTime":{"type":"string","format":"date-time","example":"2025-07-07T10:00:00Z"}},"additionalProperties":false,"description":"Text message payload that applies to all recipients"}},"required":["recipients","type","payload"],"description":"Send RCS text message batch request"}}}},"responses":{"200":{"description":"RCS text batch queued successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"batchId":{"type":"string","format":"uuid","description":"UUID identifier","example":"550e8400-e29b-41d4-a716-446655440000"},"status":{"type":"string","enum":["QUEUED","PARTIALLY_QUEUED"],"description":"Batch status, PARTIALLY_QUEUED if some tasks failed"},"messageCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 datetime string","example":"2025-08-08T12:30:00Z"},"error":{"type":"string"},"failedTasks":{"type":"array","items":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"RCS recipient information"},"description":"List of failed tasks"}},"required":["batchId","status","messageCount","createdAt","failedTasks"],"description":"Batch response"},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}},"400":{"description":"Invalid request data or RCS capability validation failed. Returns RCS_NOT_REACHABLE error code when some recipients are not RCS-capable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"402":{"description":"Payment required - insufficient credits or billing issue","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"403":{"description":"Unauthorized access to RCS agent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}}}}},"/v1/rcs-agents/{rcsAgentId}/messages/rich-card/batch":{"post":{"tags":["RCS Message Batch"],"summary":"Send RCS rich card messages in batch","description":"Send multiple RCS rich card messages to different recipients","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"baseVariables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}},"recipients":{"type":"array","items":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"RCS recipient information"},"minItems":1,"maxItems":10000,"description":"List of RCS recipients for batch operation (no duplicate MSISDNs allowed)"},"idempotencyKey":{"type":"string","maxLength":255},"debugEmailAddress":{"type":"string","format":"email","description":"Debug email address to receive a copy of the message. Subject will be the MSISDN, message content will include the message payload.","example":"debug@example.com"},"type":{"type":"string","enum":["RCS_RICH_CARD"],"description":"Message type identifier"},"payload":{"type":"object","properties":{"messageText":{"type":"string","maxLength":200,"description":"Optional title text for the rich card (up to 200 chars)"},"messageDescription":{"type":"string","maxLength":2000,"description":"Optional description text for the rich card (up to 2000 chars)"},"imageUrl":{"type":"string","maxLength":2048,"format":"uri","description":"URL of image to display in card (should be a public HTTPS URL)"},"height":{"type":"string","enum":["SHORT","MEDIUM","TALL"],"description":"Image height for rich card: SHORT, MEDIUM, or TALL"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"reply":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggestion chip label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when suggestion is tapped (string, length up to 2048)","example":"click_me"}},"required":["text","postbackData"]}},"required":["reply"],"additionalProperties":false},{"type":"object","properties":{"action":{"anyOf":[{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"openUrlAction":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri","description":"URL to open in browser (must be a valid URL)","example":"https://www.google.com"},"application":{"type":"string","enum":["OPEN_URL_APPLICATION_UNSPECIFIED","BROWSER","WEBVIEW"],"description":"Type of application to open the URL"},"webviewViewMode":{"type":"string","enum":["WEBVIEW_VIEW_MODE_UNSPECIFIED","FULL","HALF","TALL"],"description":"Type of webview display mode"},"description":{"type":"string"}},"required":["url"],"example":{"url":"https://www.google.com","application":"WEBVIEW","webviewViewMode":"FULL"}}},"required":["text","postbackData","openUrlAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"viewLocationAction":{"type":"object","properties":{"latLong":{"type":"object","properties":{"latitude":{"type":"number","nullable":true,"minimum":-90,"maximum":90},"longitude":{"type":"number","nullable":true,"minimum":-180,"maximum":180}},"example":{"latitude":37.7749,"longitude":-122.4194},"description":"Optional latitude/longitude of the specified place"},"label":{"type":"string","nullable":true,"description":"Optional label for the marker placed at latLong"},"query":{"type":"string","nullable":true,"description":"Optional search string (Android Messages only). When provided instead of latLong, tapping opens a location search in the default maps app."}},"description":"Action to view location","example":{"label":"Store Location","latLong":{"latitude":37.7749,"longitude":-122.4194},"query":"Coffee shop near me"}}},"required":["text","postbackData","viewLocationAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"dialAction":{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"Phone number to dial on tap (E.164 format)","example":"+1234567890"}},"required":["phoneNumber"],"example":{"phoneNumber":"+1234567890"}}},"required":["text","postbackData","dialAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"shareLocationAction":{"type":"object","properties":{},"description":"Triggers the RCS app location picker","example":{}}},"required":["text","postbackData","shareLocationAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"createCalendarEventAction":{"type":"object","properties":{"description":{"type":"string","nullable":true},"endTime":{"type":"string","nullable":true,"format":"date-time"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"title":{"type":"string","nullable":true}},"example":{"title":"Team Meeting","description":"Weekly team sync","startTime":"2023-12-01T10:00:00Z","endTime":"2023-12-01T11:00:00Z"}}},"required":["text","postbackData","createCalendarEventAction"],"additionalProperties":false}],"example":{"text":"Visit website","postbackData":"visit_website_action","openUrlAction":{"url":"https://www.google.com"}}}},"required":["action"],"additionalProperties":false}],"description":"Suggestion chip (either a reply or an action)","example":{"reply":{"text":"Click me","postbackData":"click_me"}}},"description":"Suggestion chips: either 1 action OR up to 4 replies (cannot mix)"}},"required":["imageUrl","height"],"additionalProperties":false,"description":"Rich card payload that applies to all recipients"}},"required":["recipients","type","payload"],"description":"Send RCS rich card batch request"}}}},"responses":{"200":{"description":"RCS rich card batch queued successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"batchId":{"type":"string","format":"uuid","description":"UUID identifier","example":"550e8400-e29b-41d4-a716-446655440000"},"status":{"type":"string","enum":["QUEUED","PARTIALLY_QUEUED"],"description":"Batch status, PARTIALLY_QUEUED if some tasks failed"},"messageCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 datetime string","example":"2025-08-08T12:30:00Z"},"error":{"type":"string"},"failedTasks":{"type":"array","items":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"RCS recipient information"},"description":"List of failed tasks"}},"required":["batchId","status","messageCount","createdAt","failedTasks"],"description":"Batch response"},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}},"400":{"description":"Invalid request data or RCS capability validation failed. Returns RCS_NOT_REACHABLE error code when some recipients are not RCS-capable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"402":{"description":"Payment required - insufficient credits or billing issue","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"403":{"description":"Unauthorized access to RCS agent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}}}}},"/v1/rcs-agents/{rcsAgentId}/messages/carousel/batch":{"post":{"tags":["RCS Message Batch"],"summary":"Send RCS carousel messages in batch","description":"Send multiple RCS carousel messages to different recipients","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"baseVariables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}},"recipients":{"type":"array","items":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"RCS recipient information"},"minItems":1,"maxItems":10000,"description":"List of RCS recipients for batch operation (no duplicate MSISDNs allowed)"},"idempotencyKey":{"type":"string","maxLength":255},"debugEmailAddress":{"type":"string","format":"email","description":"Debug email address to receive a copy of the message. Subject will be the MSISDN, message content will include the message payload.","example":"debug@example.com"},"type":{"type":"string","enum":["RCS_CAROUSEL"],"description":"Message type identifier"},"payload":{"type":"object","properties":{"cardWidth":{"type":"string","enum":["SMALL","MEDIUM"],"description":"Card width setting for carousel (SMALL or MEDIUM)"},"cardContents":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","maxLength":200,"description":"Optional title text for the card (up to 200 chars)"},"description":{"type":"string","maxLength":2000,"description":"Optional description text for the card (up to 2000 chars)"},"media":{"type":"object","properties":{"height":{"type":"string","enum":["SHORT","MEDIUM","TALL"],"description":"Image height for card: SHORT, MEDIUM, or TALL"},"contentInfo":{"type":"object","properties":{"fileUrl":{"type":"string","maxLength":2048,"format":"uri","description":"URL of image to display in card (should be a public HTTPS URL)"},"forceRefresh":{"type":"boolean"},"thumbnailUrl":{"type":"string","maxLength":2048,"format":"uri","description":"Optional thumbnail URL"}},"required":["fileUrl"]}}},"suggestions":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"reply":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggestion chip label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when suggestion is tapped (string, length up to 2048)","example":"click_me"}},"required":["text","postbackData"]}},"required":["reply"],"additionalProperties":false},{"type":"object","properties":{"action":{"anyOf":[{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"openUrlAction":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri","description":"URL to open in browser (must be a valid URL)","example":"https://www.google.com"},"application":{"type":"string","enum":["OPEN_URL_APPLICATION_UNSPECIFIED","BROWSER","WEBVIEW"],"description":"Type of application to open the URL"},"webviewViewMode":{"type":"string","enum":["WEBVIEW_VIEW_MODE_UNSPECIFIED","FULL","HALF","TALL"],"description":"Type of webview display mode"},"description":{"type":"string"}},"required":["url"],"example":{"url":"https://www.google.com","application":"WEBVIEW","webviewViewMode":"FULL"}}},"required":["text","postbackData","openUrlAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"viewLocationAction":{"type":"object","properties":{"latLong":{"type":"object","properties":{"latitude":{"type":"number","nullable":true,"minimum":-90,"maximum":90},"longitude":{"type":"number","nullable":true,"minimum":-180,"maximum":180}},"example":{"latitude":37.7749,"longitude":-122.4194},"description":"Optional latitude/longitude of the specified place"},"label":{"type":"string","nullable":true,"description":"Optional label for the marker placed at latLong"},"query":{"type":"string","nullable":true,"description":"Optional search string (Android Messages only). When provided instead of latLong, tapping opens a location search in the default maps app."}},"description":"Action to view location","example":{"label":"Store Location","latLong":{"latitude":37.7749,"longitude":-122.4194},"query":"Coffee shop near me"}}},"required":["text","postbackData","viewLocationAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"dialAction":{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"Phone number to dial on tap (E.164 format)","example":"+1234567890"}},"required":["phoneNumber"],"example":{"phoneNumber":"+1234567890"}}},"required":["text","postbackData","dialAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"shareLocationAction":{"type":"object","properties":{},"description":"Triggers the RCS app location picker","example":{}}},"required":["text","postbackData","shareLocationAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"createCalendarEventAction":{"type":"object","properties":{"description":{"type":"string","nullable":true},"endTime":{"type":"string","nullable":true,"format":"date-time"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"title":{"type":"string","nullable":true}},"example":{"title":"Team Meeting","description":"Weekly team sync","startTime":"2023-12-01T10:00:00Z","endTime":"2023-12-01T11:00:00Z"}}},"required":["text","postbackData","createCalendarEventAction"],"additionalProperties":false}],"example":{"text":"Visit website","postbackData":"visit_website_action","openUrlAction":{"url":"https://www.google.com"}}}},"required":["action"],"additionalProperties":false}],"description":"Suggestion chip (either a reply or an action)","example":{"reply":{"text":"Click me","postbackData":"click_me"}}},"description":"Suggestion chips: either 1 action OR up to 4 replies (cannot mix)"}}},"minItems":2,"maxItems":10,"description":"Array of card contents (minimum 2, maximum 10 cards)"},"timeToLive":{"type":"string","pattern":"^\\d+[smhd]$/i","description":"Time-to-live before message expires, e.g. \"10s\" (max 15 days)"},"expireTime":{"type":"string","format":"date-time","example":"2025-07-07T10:00:00Z"}},"required":["cardContents"],"additionalProperties":false,"description":"Carousel payload that applies to all recipients"}},"required":["recipients","type","payload"],"description":"Send RCS carousel batch request"}}}},"responses":{"200":{"description":"RCS carousel batch queued successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"batchId":{"type":"string","format":"uuid","description":"UUID identifier","example":"550e8400-e29b-41d4-a716-446655440000"},"status":{"type":"string","enum":["QUEUED","PARTIALLY_QUEUED"],"description":"Batch status, PARTIALLY_QUEUED if some tasks failed"},"messageCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 datetime string","example":"2025-08-08T12:30:00Z"},"error":{"type":"string"},"failedTasks":{"type":"array","items":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"RCS recipient information"},"description":"List of failed tasks"}},"required":["batchId","status","messageCount","createdAt","failedTasks"],"description":"Batch response"},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}},"400":{"description":"Invalid request data or RCS capability validation failed. Returns RCS_NOT_REACHABLE error code when some recipients are not RCS-capable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"402":{"description":"Payment required - insufficient credits or billing issue","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"403":{"description":"Unauthorized access to RCS agent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}}}}},"/v1/rcs-agents/{rcsAgentId}/messages/interactive-text/batch":{"post":{"tags":["RCS Message Batch"],"summary":"Send RCS interactive text messages in batch","description":"Send multiple RCS interactive text messages to different recipients","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"baseVariables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}},"recipients":{"type":"array","items":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"RCS recipient information"},"minItems":1,"maxItems":10000,"description":"List of RCS recipients for batch operation (no duplicate MSISDNs allowed)"},"idempotencyKey":{"type":"string","maxLength":255},"debugEmailAddress":{"type":"string","format":"email","description":"Debug email address to receive a copy of the message. Subject will be the MSISDN, message content will include the message payload.","example":"debug@example.com"},"type":{"type":"string","enum":["CUSTOM_RCS_INTERACTIVE_TEXT"],"description":"Message type identifier"},"thread":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"UUID of existing thread to continue conversation","example":"550e8400-e29b-41d4-a716-446655440000"}},"required":["id"],"description":"Reference to existing thread"},{"type":"object","properties":{"expiresAt":{"type":"string","format":"date"},"config":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time"},"primaryColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Primary color for the thread UI as hex string","example":"#007AFF"},"secondaryColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Secondary color for the thread UI as hex string","example":"#34C759"},"allowReactions":{"type":"boolean","description":"Whether reactions are allowed in this thread","example":true},"allowedReactions":{"type":"array","items":{"type":"string"},"maxItems":10,"description":"Optional array of specific emoji reactions allowed (max 10)","example":["👍","👎","❤️","😂"]},"messageActionLabel":{"type":"string","minLength":1,"maxLength":50,"description":"Text shown on the button to join the thread","example":"Join Conversation"}},"required":["expiresAt","primaryColor","secondaryColor","allowReactions","allowedReactions","messageActionLabel"],"description":"Configuration for creating a new thread"},"initialThreadMessage":{"type":"object","properties":{"bodyText":{"type":"string","minLength":1,"maxLength":1000,"description":"Initial message text to post in the thread from the RCS agent","example":"Welcome to this conversation thread!"}},"required":["bodyText"],"description":"Optional initial message to post when creating the thread"}},"required":["expiresAt","config"],"description":"Configuration for creating a new thread"}],"description":"Thread handling - either existing thread ID or new thread configuration"},"payload":{"type":"object","properties":{"messageText":{"type":"string","minLength":1,"maxLength":3072,"description":"Text content of the message (up to 3072 characters)"},"timeToLive":{"type":"string","pattern":"^\\d+[smhd]$/i","description":"Time-to-live before message expires, e.g. \"10s\" (max 15 days)"},"expireTime":{"type":"string","format":"date-time","example":"2025-07-07T10:00:00Z"}},"additionalProperties":false,"description":"Interactive text message payload that applies to all recipients"}},"required":["recipients","type","thread","payload"],"description":"Send custom RCS interactive text message batch request"}}}},"responses":{"200":{"description":"RCS interactive text batch queued successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"batchId":{"type":"string","format":"uuid","description":"UUID identifier","example":"550e8400-e29b-41d4-a716-446655440000"},"status":{"type":"string","enum":["QUEUED","PARTIALLY_QUEUED"],"description":"Batch status, PARTIALLY_QUEUED if some tasks failed"},"messageCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 datetime string","example":"2025-08-08T12:30:00Z"},"error":{"type":"string"},"failedTasks":{"type":"array","items":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"RCS recipient information"},"description":"List of failed tasks"}},"required":["batchId","status","messageCount","createdAt","failedTasks"],"description":"Batch response"},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}},"400":{"description":"Invalid request data or RCS capability validation failed. Returns RCS_NOT_REACHABLE error code when some recipients are not RCS-capable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"402":{"description":"Payment required - insufficient credits or billing issue","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"403":{"description":"Unauthorized access to RCS agent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}}}}},"/v1/rcs-agents/{rcsAgentId}/messages/interactive-rich-card/batch":{"post":{"tags":["RCS Message Batch"],"summary":"Send RCS interactive rich card messages in batch","description":"Send multiple RCS interactive rich card messages to different recipients","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"baseVariables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}},"recipients":{"type":"array","items":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"RCS recipient information"},"minItems":1,"maxItems":10000,"description":"List of RCS recipients for batch operation (no duplicate MSISDNs allowed)"},"idempotencyKey":{"type":"string","maxLength":255},"debugEmailAddress":{"type":"string","format":"email","description":"Debug email address to receive a copy of the message. Subject will be the MSISDN, message content will include the message payload.","example":"debug@example.com"},"type":{"type":"string","enum":["CUSTOM_RCS_INTERACTIVE_RICH_CARD"],"description":"Message type identifier"},"thread":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"UUID of existing thread to continue conversation","example":"550e8400-e29b-41d4-a716-446655440000"}},"required":["id"],"description":"Reference to existing thread"},{"type":"object","properties":{"expiresAt":{"type":"string","format":"date"},"config":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time"},"primaryColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Primary color for the thread UI as hex string","example":"#007AFF"},"secondaryColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Secondary color for the thread UI as hex string","example":"#34C759"},"allowReactions":{"type":"boolean","description":"Whether reactions are allowed in this thread","example":true},"allowedReactions":{"type":"array","items":{"type":"string"},"maxItems":10,"description":"Optional array of specific emoji reactions allowed (max 10)","example":["👍","👎","❤️","😂"]},"messageActionLabel":{"type":"string","minLength":1,"maxLength":50,"description":"Text shown on the button to join the thread","example":"Join Conversation"}},"required":["expiresAt","primaryColor","secondaryColor","allowReactions","allowedReactions","messageActionLabel"],"description":"Configuration for creating a new thread"},"initialThreadMessage":{"type":"object","properties":{"bodyText":{"type":"string","minLength":1,"maxLength":1000,"description":"Initial message text to post in the thread from the RCS agent","example":"Welcome to this conversation thread!"}},"required":["bodyText"],"description":"Optional initial message to post when creating the thread"}},"required":["expiresAt","config"],"description":"Configuration for creating a new thread"}],"description":"Thread handling - either existing thread ID or new thread configuration"},"payload":{"type":"object","properties":{"messageText":{"type":"string","maxLength":200,"description":"Optional title text for the rich card (up to 200 chars)"},"messageDescription":{"type":"string","maxLength":2000,"description":"Optional description text for the rich card (up to 2000 chars)"},"imageUrl":{"type":"string","maxLength":2048,"format":"uri","description":"URL of image to display in card (should be a public HTTPS URL)"},"height":{"type":"string","enum":["SHORT","MEDIUM","TALL"],"description":"Image height for rich card: SHORT, MEDIUM, or TALL"}},"required":["imageUrl","height"],"additionalProperties":false,"description":"Interactive rich card payload that applies to all recipients"}},"required":["recipients","type","thread","payload"],"description":"Send custom RCS interactive rich card batch request"}}}},"responses":{"200":{"description":"RCS interactive rich card batch queued successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"batchId":{"type":"string","format":"uuid","description":"UUID identifier","example":"550e8400-e29b-41d4-a716-446655440000"},"status":{"type":"string","enum":["QUEUED","PARTIALLY_QUEUED"],"description":"Batch status, PARTIALLY_QUEUED if some tasks failed"},"messageCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 datetime string","example":"2025-08-08T12:30:00Z"},"error":{"type":"string"},"failedTasks":{"type":"array","items":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"RCS recipient information"},"description":"List of failed tasks"}},"required":["batchId","status","messageCount","createdAt","failedTasks"],"description":"Batch response"},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}},"400":{"description":"Invalid request data or RCS capability validation failed. Returns RCS_NOT_REACHABLE error code when some recipients are not RCS-capable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"402":{"description":"Payment required - insufficient credits or billing issue","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"403":{"description":"Unauthorized access to RCS agent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}}}}},"/v1/rcs-agents/{rcsAgentId}/messages/interactive-carousel/batch":{"post":{"tags":["RCS Message Batch"],"summary":"Send RCS interactive carousel messages in batch","description":"Send multiple RCS interactive carousel messages to different recipients","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"baseVariables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}},"recipients":{"type":"array","items":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"RCS recipient information"},"minItems":1,"maxItems":10000,"description":"List of RCS recipients for batch operation (no duplicate MSISDNs allowed)"},"idempotencyKey":{"type":"string","maxLength":255},"debugEmailAddress":{"type":"string","format":"email","description":"Debug email address to receive a copy of the message. Subject will be the MSISDN, message content will include the message payload.","example":"debug@example.com"},"type":{"type":"string","enum":["CUSTOM_RCS_INTERACTIVE_CAROUSEL"],"description":"Message type identifier"},"thread":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"UUID of existing thread to continue conversation","example":"550e8400-e29b-41d4-a716-446655440000"}},"required":["id"],"description":"Reference to existing thread"},{"type":"object","properties":{"expiresAt":{"type":"string","format":"date"},"config":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time"},"primaryColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Primary color for the thread UI as hex string","example":"#007AFF"},"secondaryColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Secondary color for the thread UI as hex string","example":"#34C759"},"allowReactions":{"type":"boolean","description":"Whether reactions are allowed in this thread","example":true},"allowedReactions":{"type":"array","items":{"type":"string"},"maxItems":10,"description":"Optional array of specific emoji reactions allowed (max 10)","example":["👍","👎","❤️","😂"]},"messageActionLabel":{"type":"string","minLength":1,"maxLength":50,"description":"Text shown on the button to join the thread","example":"Join Conversation"}},"required":["expiresAt","primaryColor","secondaryColor","allowReactions","allowedReactions","messageActionLabel"],"description":"Configuration for creating a new thread"},"initialThreadMessage":{"type":"object","properties":{"bodyText":{"type":"string","minLength":1,"maxLength":1000,"description":"Initial message text to post in the thread from the RCS agent","example":"Welcome to this conversation thread!"}},"required":["bodyText"],"description":"Optional initial message to post when creating the thread"}},"required":["expiresAt","config"],"description":"Configuration for creating a new thread"}],"description":"Thread handling - either existing thread ID or new thread configuration"},"payload":{"type":"object","properties":{"cardWidth":{"type":"string","enum":["SMALL","MEDIUM"],"description":"Card width setting for carousel (SMALL or MEDIUM)"},"cardContents":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","maxLength":200,"description":"Optional title text for the card (up to 200 chars)"},"description":{"type":"string","maxLength":2000,"description":"Optional description text for the card (up to 2000 chars)"},"media":{"type":"object","properties":{"height":{"type":"string","enum":["SHORT","MEDIUM","TALL"],"description":"Image height for card: SHORT, MEDIUM, or TALL"},"contentInfo":{"type":"object","properties":{"fileUrl":{"type":"string","maxLength":2048,"format":"uri","description":"URL of image to display in card (should be a public HTTPS URL)"},"forceRefresh":{"type":"boolean"},"thumbnailUrl":{"type":"string","maxLength":2048,"format":"uri","description":"Optional thumbnail URL"}},"required":["fileUrl"]}}},"suggestions":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"reply":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggestion chip label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when suggestion is tapped (string, length up to 2048)","example":"click_me"}},"required":["text","postbackData"]}},"required":["reply"],"additionalProperties":false},{"type":"object","properties":{"action":{"anyOf":[{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"openUrlAction":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri","description":"URL to open in browser (must be a valid URL)","example":"https://www.google.com"},"application":{"type":"string","enum":["OPEN_URL_APPLICATION_UNSPECIFIED","BROWSER","WEBVIEW"],"description":"Type of application to open the URL"},"webviewViewMode":{"type":"string","enum":["WEBVIEW_VIEW_MODE_UNSPECIFIED","FULL","HALF","TALL"],"description":"Type of webview display mode"},"description":{"type":"string"}},"required":["url"],"example":{"url":"https://www.google.com","application":"WEBVIEW","webviewViewMode":"FULL"}}},"required":["text","postbackData","openUrlAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"viewLocationAction":{"type":"object","properties":{"latLong":{"type":"object","properties":{"latitude":{"type":"number","nullable":true,"minimum":-90,"maximum":90},"longitude":{"type":"number","nullable":true,"minimum":-180,"maximum":180}},"example":{"latitude":37.7749,"longitude":-122.4194},"description":"Optional latitude/longitude of the specified place"},"label":{"type":"string","nullable":true,"description":"Optional label for the marker placed at latLong"},"query":{"type":"string","nullable":true,"description":"Optional search string (Android Messages only). When provided instead of latLong, tapping opens a location search in the default maps app."}},"description":"Action to view location","example":{"label":"Store Location","latLong":{"latitude":37.7749,"longitude":-122.4194},"query":"Coffee shop near me"}}},"required":["text","postbackData","viewLocationAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"dialAction":{"type":"object","properties":{"phoneNumber":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"Phone number to dial on tap (E.164 format)","example":"+1234567890"}},"required":["phoneNumber"],"example":{"phoneNumber":"+1234567890"}}},"required":["text","postbackData","dialAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"shareLocationAction":{"type":"object","properties":{},"description":"Triggers the RCS app location picker","example":{}}},"required":["text","postbackData","shareLocationAction"],"additionalProperties":false},{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":25,"description":"Suggested action label text (max 25 characters)","example":"Click me"},"postbackData":{"type":"string","minLength":1,"maxLength":2048,"description":"Data returned when action is tapped (base64, up to 2048 chars)","example":"base64"},"fallbackUrl":{"type":"string","maxLength":2048,"format":"uri"},"createCalendarEventAction":{"type":"object","properties":{"description":{"type":"string","nullable":true},"endTime":{"type":"string","nullable":true,"format":"date-time"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"title":{"type":"string","nullable":true}},"example":{"title":"Team Meeting","description":"Weekly team sync","startTime":"2023-12-01T10:00:00Z","endTime":"2023-12-01T11:00:00Z"}}},"required":["text","postbackData","createCalendarEventAction"],"additionalProperties":false}],"example":{"text":"Visit website","postbackData":"visit_website_action","openUrlAction":{"url":"https://www.google.com"}}}},"required":["action"],"additionalProperties":false}],"description":"Suggestion chip (either a reply or an action)","example":{"reply":{"text":"Click me","postbackData":"click_me"}}},"description":"Suggestion chips: either 1 action OR up to 4 replies (cannot mix)"}}},"minItems":2,"maxItems":10,"description":"Array of card contents (minimum 2, maximum 10 cards)"},"timeToLive":{"type":"string","pattern":"^\\d+[smhd]$/i","description":"Time-to-live before message expires, e.g. \"10s\" (max 15 days)"},"expireTime":{"type":"string","format":"date-time","example":"2025-07-07T10:00:00Z"}},"required":["cardContents"],"additionalProperties":false,"description":"Interactive carousel payload that applies to all recipients"}},"required":["recipients","type","thread","payload"],"description":"Send custom RCS interactive carousel batch request"}}}},"responses":{"200":{"description":"RCS interactive carousel batch queued successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"batchId":{"type":"string","format":"uuid","description":"UUID identifier","example":"550e8400-e29b-41d4-a716-446655440000"},"status":{"type":"string","enum":["QUEUED","PARTIALLY_QUEUED"],"description":"Batch status, PARTIALLY_QUEUED if some tasks failed"},"messageCount":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 datetime string","example":"2025-08-08T12:30:00Z"},"error":{"type":"string"},"failedTasks":{"type":"array","items":{"type":"object","properties":{"msisdn":{"type":"string","pattern":"^\\+49\\d{10,12}$","description":"German phone number in E.164 format (starts with +49)","example":"+4915123456789"},"variables":{"type":"object","additionalProperties":{"type":"object","description":"Recursive variable value that can be a primitive, array, or object","example":{"key":"value","nested":{"array":[1,2,3]}}},"description":"Variables for template substitution. Supports nested objects and arrays for handlebars templating (if/else, each loops). Missing variables will be handled according to template engine defaults.","example":{"name":"John","coupon":"SAVE10","user":{"isVip":true,"preferences":["email","sms"]},"items":[{"name":"Product A","price":29.99},{"name":"Product B","price":19.99}]}}},"required":["msisdn"],"description":"RCS recipient information"},"description":"List of failed tasks"}},"required":["batchId","status","messageCount","createdAt","failedTasks"],"description":"Batch response"},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}},"400":{"description":"Invalid request data or RCS capability validation failed. Returns RCS_NOT_REACHABLE error code when some recipients are not RCS-capable.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"402":{"description":"Payment required - insufficient credits or billing issue","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}},"403":{"description":"Unauthorized access to RCS agent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["RCS_NOT_REACHABLE","FIELD_VALIDATION_ERROR"]},"message":{"type":"string"},"details":{"nullable":true}},"required":["message"]},"fieldErrors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}},"timestamp":{"type":"string"}},"required":["success","error","timestamp"]}}}}}}},"/v1/rcs-agents/{rcsAgentId}/webhooks":{"get":{"tags":["Webhooks"],"summary":"List webhooks for an agent","description":"Returns all webhook subscriptions for an agent","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"}],"responses":{"200":{"description":"Webhooks retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","nullable":true,"format":"date"},"updatedAt":{"type":"string","nullable":true,"format":"date"},"senderChannelId":{"type":"string","nullable":true},"url":{"type":"string"},"authToken":{"type":"string"},"eventsFilter":{"type":"array","nullable":true,"items":{"type":"string"}},"isActive":{"type":"boolean","nullable":true}},"required":["id","createdAt","updatedAt","senderChannelId","url","authToken","eventsFilter","isActive"]}},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}}}},"post":{"tags":["Webhooks"],"summary":"Create a webhook subscription","description":"Creates a new webhook subscription for an agent","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"authToken":{"type":"string","description":"Authentication token to be sent with webhook requests"},"eventsFilter":{"type":"array","items":{"type":"string","enum":["rcs.server.message_ttl.revoked","rcs.server.message_ttl.revoked.failed","rcs.user.message.delivered","rcs.user.typing","rcs.user.subscription.removed","rcs.user.subscription.added","rcs.user.message.sent","rcs.user.file.sent","rcs.user.suggestion.clicked","rcs.user.action.clicked"]}},"isActive":{"type":"boolean","default":true}},"required":["url","authToken"]}}}},"responses":{"200":{"description":"Webhook created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","nullable":true,"format":"date"},"updatedAt":{"type":"string","nullable":true,"format":"date"},"senderChannelId":{"type":"string","nullable":true},"url":{"type":"string"},"authToken":{"type":"string"},"eventsFilter":{"type":"array","nullable":true,"items":{"type":"string"}},"isActive":{"type":"boolean","nullable":true}},"required":["id","createdAt","updatedAt","senderChannelId","url","authToken","eventsFilter","isActive"]},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}}}}},"/v1/rcs-agents/{rcsAgentId}/webhooks/{webhookId}":{"get":{"tags":["Webhooks"],"summary":"Get a webhook by ID","description":"Returns a webhook subscription by ID","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"webhookId","in":"path"}],"responses":{"200":{"description":"Webhook retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","nullable":true,"format":"date"},"updatedAt":{"type":"string","nullable":true,"format":"date"},"senderChannelId":{"type":"string","nullable":true},"url":{"type":"string"},"authToken":{"type":"string"},"eventsFilter":{"type":"array","nullable":true,"items":{"type":"string"}},"isActive":{"type":"boolean","nullable":true}},"required":["id","createdAt","updatedAt","senderChannelId","url","authToken","eventsFilter","isActive"]},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}}}},"put":{"tags":["Webhooks"],"summary":"Update a webhook subscription","description":"Updates a webhook subscription","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"webhookId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"authToken":{"type":"string"},"eventsFilter":{"type":"array","items":{"type":"string","enum":["rcs.server.message_ttl.revoked","rcs.server.message_ttl.revoked.failed","rcs.user.message.delivered","rcs.user.typing","rcs.user.subscription.removed","rcs.user.subscription.added","rcs.user.message.sent","rcs.user.file.sent","rcs.user.suggestion.clicked","rcs.user.action.clicked"]}},"isActive":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Webhook updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","nullable":true,"format":"date"},"updatedAt":{"type":"string","nullable":true,"format":"date"},"senderChannelId":{"type":"string","nullable":true},"url":{"type":"string"},"authToken":{"type":"string"},"eventsFilter":{"type":"array","nullable":true,"items":{"type":"string"}},"isActive":{"type":"boolean","nullable":true}},"required":["id","createdAt","updatedAt","senderChannelId","url","authToken","eventsFilter","isActive"]},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}}}},"delete":{"tags":["Webhooks"],"summary":"Delete a webhook subscription","description":"Deletes a webhook subscription","parameters":[{"schema":{"type":"string"},"required":true,"name":"rcsAgentId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"webhookId","in":"path"}],"responses":{"200":{"description":"Webhook deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","nullable":true,"format":"date"},"updatedAt":{"type":"string","nullable":true,"format":"date"},"senderChannelId":{"type":"string","nullable":true},"url":{"type":"string"},"authToken":{"type":"string"},"eventsFilter":{"type":"array","nullable":true,"items":{"type":"string"}},"isActive":{"type":"boolean","nullable":true}},"required":["id","createdAt","updatedAt","senderChannelId","url","authToken","eventsFilter","isActive"]},"timestamp":{"type":"string"}},"required":["success","data","timestamp"]}}}}}}}}}