{"openapi":"3.0.3","info":{"title":"Wraps Platform API","description":"REST API for the Wraps email marketing platform. Send emails, manage contacts, trigger workflows, and process events.","version":"1.0.0","contact":{"name":"Wraps Support","url":"https://wraps.dev","email":"support@wraps.dev"},"license":{"name":"Proprietary","url":"https://wraps.dev/terms"},"termsOfService":"https://wraps.dev/terms"},"servers":[{"url":"https://api.wraps.dev","description":"Production API"}],"tags":[{"name":"health","description":"Health check and API info endpoints"},{"name":"contacts","description":"Contact management - create, update, delete, and list contacts"},{"name":"batch","description":"Batch email sending operations for broadcasts"},{"name":"events","description":"Custom event ingestion for triggering workflows"},{"name":"workflows","description":"API-triggered workflow execution endpoints"},{"name":"connections","description":"AWS account connection management"},{"name":"webhooks","description":"Webhook endpoints for receiving SES events"},{"name":"unsubscribe","description":"RFC 8058 compliant email unsubscribe endpoints"},{"name":"tools","description":"Free email deliverability tools (no auth required)"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key (wraps_*) or session token. Use format: Bearer wraps_your_api_key"}},"schemas":{}},"security":[{"bearerAuth":[]}],"paths":{"/health":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"description":"Health status","examples":["ok"],"type":"string"},"timestamp":{"description":"ISO 8601 timestamp","format":"date-time","type":"string"},"version":{"description":"API version","examples":["1.0.0"],"type":"string"}},"required":["status","timestamp","version"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"status":{"description":"Health status","examples":["ok"],"type":"string"},"timestamp":{"description":"ISO 8601 timestamp","format":"date-time","type":"string"},"version":{"description":"API version","examples":["1.0.0"],"type":"string"}},"required":["status","timestamp","version"]}},"text/plain":{"schema":{"type":"object","properties":{"status":{"description":"Health status","examples":["ok"],"type":"string"},"timestamp":{"description":"ISO 8601 timestamp","format":"date-time","type":"string"},"version":{"description":"API version","examples":["1.0.0"],"type":"string"}},"required":["status","timestamp","version"]}}}}},"operationId":"getHealth","tags":["health"],"summary":"Health check","description":"Returns the health status of the API"}},"/":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"API name","type":"string"},"version":{"description":"API version","type":"string"},"docs":{"description":"Documentation URL","type":"string"}},"required":["name","version","docs"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"name":{"description":"API name","type":"string"},"version":{"description":"API version","type":"string"},"docs":{"description":"Documentation URL","type":"string"}},"required":["name","version","docs"]}},"text/plain":{"schema":{"type":"object","properties":{"name":{"description":"API name","type":"string"},"version":{"description":"API version","type":"string"},"docs":{"description":"Documentation URL","type":"string"}},"required":["name","version","docs"]}}}}},"operationId":"getIndex","tags":["health"],"summary":"API info","description":"Returns basic API information"}},"/v1/connections/":{"post":{"parameters":[],"operationId":"postV1Connections","tags":["connections"],"summary":"Register or update an AWS connection","description":"Registers or updates the AWS account connection. Returns externalId for IAM role trust policy and webhookSecret for EventBridge configuration.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["accountId","region"],"properties":{"accountId":{"description":"AWS account ID (12 digits)","type":"string"},"region":{"description":"AWS region (e.g. us-east-1)","type":"string"},"name":{"description":"Display name for the account","type":"string"},"features":{"additionalProperties":true,"description":"Service features config","type":"object","properties":{}}}}},"multipart/form-data":{"schema":{"type":"object","required":["accountId","region"],"properties":{"accountId":{"description":"AWS account ID (12 digits)","type":"string"},"region":{"description":"AWS region (e.g. us-east-1)","type":"string"},"name":{"description":"Display name for the account","type":"string"},"features":{"additionalProperties":true,"description":"Service features config","type":"object","properties":{}}}}},"text/plain":{"schema":{"type":"object","required":["accountId","region"],"properties":{"accountId":{"description":"AWS account ID (12 digits)","type":"string"},"region":{"description":"AWS region (e.g. us-east-1)","type":"string"},"name":{"description":"Display name for the account","type":"string"},"features":{"additionalProperties":true,"description":"Service features config","type":"object","properties":{}}}}}}},"responses":{"200":{}}},"get":{"operationId":"getV1Connections","tags":["connections"],"summary":"List AWS connections","description":"Returns all AWS account connections for the authenticated organization.","responses":{"200":{}}}},"/v1/connections/{id}":{"delete":{"parameters":[{"description":"Connection ID","schema":{"type":"string"},"in":"path","name":"id","required":true}],"operationId":"deleteV1ConnectionsById","tags":["connections"],"summary":"Disconnect an AWS account","description":"Clears the webhook secret for the connection. The account record is preserved.","responses":{"200":{}}}},"/v1/contacts/":{"get":{"parameters":[{"description":"Page number (1-indexed)","schema":{"type":"string","maxLength":10},"in":"query","name":"page","required":false},{"description":"Number of items per page (max 100)","schema":{"type":"string","maxLength":10},"in":"query","name":"pageSize","required":false},{"description":"Filter by email status","schema":{"anyOf":[{"const":"active","type":"string"},{"const":"unsubscribed","type":"string"},{"const":"bounced","type":"string"},{"const":"complained","type":"string"}]},"in":"query","name":"emailStatus","required":false},{"description":"Filter by SMS status","schema":{"anyOf":[{"const":"pending_consent","type":"string"},{"const":"opted_in","type":"string"},{"const":"opted_out","type":"string"},{"const":"invalid","type":"string"}]},"in":"query","name":"smsStatus","required":false},{"description":"Search by email or phone","schema":{"type":"string","maxLength":255},"in":"query","name":"search","required":false},{"description":"Filter by preferred channel","schema":{"anyOf":[{"const":"email","type":"string"},{"const":"sms","type":"string"}]},"in":"query","name":"preferredChannel","required":false}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"contacts":{"type":"array","items":{"type":"object","required":["id","email","phone","firstName","lastName","company","jobTitle","emailStatus","smsStatus","preferredChannel","properties","emailsSent","emailsOpened","emailsClicked","smsSent","smsClicked","createdAt","updatedAt"],"properties":{"id":{"description":"Contact ID","type":"string"},"email":{"description":"Email address","anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"description":"Phone number","anyOf":[{"type":"string"},{"type":"null"}]},"firstName":{"description":"First name","anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"description":"Last name","anyOf":[{"type":"string"},{"type":"null"}]},"company":{"description":"Company name","anyOf":[{"type":"string"},{"type":"null"}]},"jobTitle":{"description":"Job title","anyOf":[{"type":"string"},{"type":"null"}]},"emailStatus":{"description":"Email subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"smsStatus":{"description":"SMS subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"preferredChannel":{"description":"Preferred communication channel","anyOf":[{"type":"string"},{"type":"null"}]},"properties":{"additionalProperties":true,"type":"object","properties":{}},"emailsSent":{"description":"Number of emails sent","type":"number"},"emailsOpened":{"description":"Number of emails opened","type":"number"},"emailsClicked":{"description":"Number of emails clicked","type":"number"},"smsSent":{"description":"Number of SMS sent","type":"number"},"smsClicked":{"description":"Number of SMS clicked","type":"number"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"updatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"}}}},"total":{"description":"Total number of contacts matching filter","type":"number"},"page":{"description":"Current page number","type":"number"},"pageSize":{"description":"Number of items per page","type":"number"},"totalPages":{"description":"Total number of pages","type":"number"}},"required":["contacts","total","page","pageSize","totalPages"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"contacts":{"type":"array","items":{"type":"object","required":["id","email","phone","firstName","lastName","company","jobTitle","emailStatus","smsStatus","preferredChannel","properties","emailsSent","emailsOpened","emailsClicked","smsSent","smsClicked","createdAt","updatedAt"],"properties":{"id":{"description":"Contact ID","type":"string"},"email":{"description":"Email address","anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"description":"Phone number","anyOf":[{"type":"string"},{"type":"null"}]},"firstName":{"description":"First name","anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"description":"Last name","anyOf":[{"type":"string"},{"type":"null"}]},"company":{"description":"Company name","anyOf":[{"type":"string"},{"type":"null"}]},"jobTitle":{"description":"Job title","anyOf":[{"type":"string"},{"type":"null"}]},"emailStatus":{"description":"Email subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"smsStatus":{"description":"SMS subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"preferredChannel":{"description":"Preferred communication channel","anyOf":[{"type":"string"},{"type":"null"}]},"properties":{"additionalProperties":true,"type":"object","properties":{}},"emailsSent":{"description":"Number of emails sent","type":"number"},"emailsOpened":{"description":"Number of emails opened","type":"number"},"emailsClicked":{"description":"Number of emails clicked","type":"number"},"smsSent":{"description":"Number of SMS sent","type":"number"},"smsClicked":{"description":"Number of SMS clicked","type":"number"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"updatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"}}}},"total":{"description":"Total number of contacts matching filter","type":"number"},"page":{"description":"Current page number","type":"number"},"pageSize":{"description":"Number of items per page","type":"number"},"totalPages":{"description":"Total number of pages","type":"number"}},"required":["contacts","total","page","pageSize","totalPages"]}},"text/plain":{"schema":{"type":"object","properties":{"contacts":{"type":"array","items":{"type":"object","required":["id","email","phone","firstName","lastName","company","jobTitle","emailStatus","smsStatus","preferredChannel","properties","emailsSent","emailsOpened","emailsClicked","smsSent","smsClicked","createdAt","updatedAt"],"properties":{"id":{"description":"Contact ID","type":"string"},"email":{"description":"Email address","anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"description":"Phone number","anyOf":[{"type":"string"},{"type":"null"}]},"firstName":{"description":"First name","anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"description":"Last name","anyOf":[{"type":"string"},{"type":"null"}]},"company":{"description":"Company name","anyOf":[{"type":"string"},{"type":"null"}]},"jobTitle":{"description":"Job title","anyOf":[{"type":"string"},{"type":"null"}]},"emailStatus":{"description":"Email subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"smsStatus":{"description":"SMS subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"preferredChannel":{"description":"Preferred communication channel","anyOf":[{"type":"string"},{"type":"null"}]},"properties":{"additionalProperties":true,"type":"object","properties":{}},"emailsSent":{"description":"Number of emails sent","type":"number"},"emailsOpened":{"description":"Number of emails opened","type":"number"},"emailsClicked":{"description":"Number of emails clicked","type":"number"},"smsSent":{"description":"Number of SMS sent","type":"number"},"smsClicked":{"description":"Number of SMS clicked","type":"number"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"updatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"}}}},"total":{"description":"Total number of contacts matching filter","type":"number"},"page":{"description":"Current page number","type":"number"},"pageSize":{"description":"Number of items per page","type":"number"},"totalPages":{"description":"Total number of pages","type":"number"}},"required":["contacts","total","page","pageSize","totalPages"]}}}}},"operationId":"getV1Contacts","tags":["contacts"],"summary":"List contacts","description":"Lists contacts with pagination and filtering"},"post":{"parameters":[],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Contact ID","type":"string"},"email":{"description":"Email address","anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"description":"Phone number","anyOf":[{"type":"string"},{"type":"null"}]},"firstName":{"description":"First name","anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"description":"Last name","anyOf":[{"type":"string"},{"type":"null"}]},"company":{"description":"Company name","anyOf":[{"type":"string"},{"type":"null"}]},"jobTitle":{"description":"Job title","anyOf":[{"type":"string"},{"type":"null"}]},"emailStatus":{"description":"Email subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"smsStatus":{"description":"SMS subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"preferredChannel":{"description":"Preferred communication channel","anyOf":[{"type":"string"},{"type":"null"}]},"properties":{"additionalProperties":true,"type":"object","properties":{}},"emailsSent":{"description":"Number of emails sent","type":"number"},"emailsOpened":{"description":"Number of emails opened","type":"number"},"emailsClicked":{"description":"Number of emails clicked","type":"number"},"smsSent":{"description":"Number of SMS sent","type":"number"},"smsClicked":{"description":"Number of SMS clicked","type":"number"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"updatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"pendingTopics":{"description":"Topic IDs pending confirmation","type":"array","items":{"type":"string"}}},"required":["id","email","phone","firstName","lastName","company","jobTitle","emailStatus","smsStatus","preferredChannel","properties","emailsSent","emailsOpened","emailsClicked","smsSent","smsClicked","createdAt","updatedAt"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"id":{"description":"Contact ID","type":"string"},"email":{"description":"Email address","anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"description":"Phone number","anyOf":[{"type":"string"},{"type":"null"}]},"firstName":{"description":"First name","anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"description":"Last name","anyOf":[{"type":"string"},{"type":"null"}]},"company":{"description":"Company name","anyOf":[{"type":"string"},{"type":"null"}]},"jobTitle":{"description":"Job title","anyOf":[{"type":"string"},{"type":"null"}]},"emailStatus":{"description":"Email subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"smsStatus":{"description":"SMS subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"preferredChannel":{"description":"Preferred communication channel","anyOf":[{"type":"string"},{"type":"null"}]},"properties":{"additionalProperties":true,"type":"object","properties":{}},"emailsSent":{"description":"Number of emails sent","type":"number"},"emailsOpened":{"description":"Number of emails opened","type":"number"},"emailsClicked":{"description":"Number of emails clicked","type":"number"},"smsSent":{"description":"Number of SMS sent","type":"number"},"smsClicked":{"description":"Number of SMS clicked","type":"number"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"updatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"pendingTopics":{"description":"Topic IDs pending confirmation","type":"array","items":{"type":"string"}}},"required":["id","email","phone","firstName","lastName","company","jobTitle","emailStatus","smsStatus","preferredChannel","properties","emailsSent","emailsOpened","emailsClicked","smsSent","smsClicked","createdAt","updatedAt"]}},"text/plain":{"schema":{"type":"object","properties":{"id":{"description":"Contact ID","type":"string"},"email":{"description":"Email address","anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"description":"Phone number","anyOf":[{"type":"string"},{"type":"null"}]},"firstName":{"description":"First name","anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"description":"Last name","anyOf":[{"type":"string"},{"type":"null"}]},"company":{"description":"Company name","anyOf":[{"type":"string"},{"type":"null"}]},"jobTitle":{"description":"Job title","anyOf":[{"type":"string"},{"type":"null"}]},"emailStatus":{"description":"Email subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"smsStatus":{"description":"SMS subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"preferredChannel":{"description":"Preferred communication channel","anyOf":[{"type":"string"},{"type":"null"}]},"properties":{"additionalProperties":true,"type":"object","properties":{}},"emailsSent":{"description":"Number of emails sent","type":"number"},"emailsOpened":{"description":"Number of emails opened","type":"number"},"emailsClicked":{"description":"Number of emails clicked","type":"number"},"smsSent":{"description":"Number of SMS sent","type":"number"},"smsClicked":{"description":"Number of SMS clicked","type":"number"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"updatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"pendingTopics":{"description":"Topic IDs pending confirmation","type":"array","items":{"type":"string"}}},"required":["id","email","phone","firstName","lastName","company","jobTitle","emailStatus","smsStatus","preferredChannel","properties","emailsSent","emailsOpened","emailsClicked","smsSent","smsClicked","createdAt","updatedAt"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}},"text/plain":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}}}},"409":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}},"text/plain":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}}}}},"operationId":"postV1Contacts","tags":["contacts"],"summary":"Create contact","description":"Creates a new contact with optional topic subscriptions","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"description":"Email address","maxLength":255,"format":"email","type":"string"},"phone":{"description":"Phone number","maxLength":50,"type":"string"},"firstName":{"description":"First name","maxLength":100,"type":"string"},"lastName":{"description":"Last name","maxLength":100,"type":"string"},"company":{"description":"Company name","maxLength":200,"type":"string"},"jobTitle":{"description":"Job title","maxLength":200,"type":"string"},"emailStatus":{"description":"Email subscription status","anyOf":[{"const":"active","type":"string"},{"const":"unsubscribed","type":"string"},{"const":"bounced","type":"string"},{"const":"complained","type":"string"}]},"smsStatus":{"description":"SMS consent status","anyOf":[{"const":"pending_consent","type":"string"},{"const":"opted_in","type":"string"},{"const":"opted_out","type":"string"},{"const":"invalid","type":"string"}]},"preferredChannel":{"description":"Preferred communication channel","anyOf":[{"const":"email","type":"string"},{"const":"sms","type":"string"}]},"properties":{"additionalProperties":true,"description":"Custom properties","type":"object","properties":{}},"topicIds":{"description":"Topic IDs to subscribe","type":"array","items":{"maxLength":36,"type":"string"}},"topicSlugs":{"description":"Topic slugs to subscribe","type":"array","items":{"maxLength":100,"type":"string"}}}}},"multipart/form-data":{"schema":{"type":"object","properties":{"email":{"description":"Email address","maxLength":255,"format":"email","type":"string"},"phone":{"description":"Phone number","maxLength":50,"type":"string"},"firstName":{"description":"First name","maxLength":100,"type":"string"},"lastName":{"description":"Last name","maxLength":100,"type":"string"},"company":{"description":"Company name","maxLength":200,"type":"string"},"jobTitle":{"description":"Job title","maxLength":200,"type":"string"},"emailStatus":{"description":"Email subscription status","anyOf":[{"const":"active","type":"string"},{"const":"unsubscribed","type":"string"},{"const":"bounced","type":"string"},{"const":"complained","type":"string"}]},"smsStatus":{"description":"SMS consent status","anyOf":[{"const":"pending_consent","type":"string"},{"const":"opted_in","type":"string"},{"const":"opted_out","type":"string"},{"const":"invalid","type":"string"}]},"preferredChannel":{"description":"Preferred communication channel","anyOf":[{"const":"email","type":"string"},{"const":"sms","type":"string"}]},"properties":{"additionalProperties":true,"description":"Custom properties","type":"object","properties":{}},"topicIds":{"description":"Topic IDs to subscribe","type":"array","items":{"maxLength":36,"type":"string"}},"topicSlugs":{"description":"Topic slugs to subscribe","type":"array","items":{"maxLength":100,"type":"string"}}}}},"text/plain":{"schema":{"type":"object","properties":{"email":{"description":"Email address","maxLength":255,"format":"email","type":"string"},"phone":{"description":"Phone number","maxLength":50,"type":"string"},"firstName":{"description":"First name","maxLength":100,"type":"string"},"lastName":{"description":"Last name","maxLength":100,"type":"string"},"company":{"description":"Company name","maxLength":200,"type":"string"},"jobTitle":{"description":"Job title","maxLength":200,"type":"string"},"emailStatus":{"description":"Email subscription status","anyOf":[{"const":"active","type":"string"},{"const":"unsubscribed","type":"string"},{"const":"bounced","type":"string"},{"const":"complained","type":"string"}]},"smsStatus":{"description":"SMS consent status","anyOf":[{"const":"pending_consent","type":"string"},{"const":"opted_in","type":"string"},{"const":"opted_out","type":"string"},{"const":"invalid","type":"string"}]},"preferredChannel":{"description":"Preferred communication channel","anyOf":[{"const":"email","type":"string"},{"const":"sms","type":"string"}]},"properties":{"additionalProperties":true,"description":"Custom properties","type":"object","properties":{}},"topicIds":{"description":"Topic IDs to subscribe","type":"array","items":{"maxLength":36,"type":"string"}},"topicSlugs":{"description":"Topic slugs to subscribe","type":"array","items":{"maxLength":100,"type":"string"}}}}}}}},"delete":{"parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"deleted":{"description":"Number of contacts deleted","type":"number"}},"required":["success","deleted"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"deleted":{"description":"Number of contacts deleted","type":"number"}},"required":["success","deleted"]}},"text/plain":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"deleted":{"description":"Number of contacts deleted","type":"number"}},"required":["success","deleted"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}},"text/plain":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}}}}},"operationId":"deleteV1Contacts","tags":["contacts"],"summary":"Bulk delete contacts","description":"Deletes multiple contacts at once (max 100)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["ids"],"properties":{"ids":{"description":"Contact IDs to delete (max 100)","type":"array","items":{"maxLength":36,"type":"string"}}}}},"multipart/form-data":{"schema":{"type":"object","required":["ids"],"properties":{"ids":{"description":"Contact IDs to delete (max 100)","type":"array","items":{"maxLength":36,"type":"string"}}}}},"text/plain":{"schema":{"type":"object","required":["ids"],"properties":{"ids":{"description":"Contact IDs to delete (max 100)","type":"array","items":{"maxLength":36,"type":"string"}}}}}}}}},"/v1/contacts/{id}":{"get":{"parameters":[{"description":"Contact ID","schema":{"type":"string","maxLength":36},"in":"path","name":"id","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Contact ID","type":"string"},"email":{"description":"Email address","anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"description":"Phone number","anyOf":[{"type":"string"},{"type":"null"}]},"firstName":{"description":"First name","anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"description":"Last name","anyOf":[{"type":"string"},{"type":"null"}]},"company":{"description":"Company name","anyOf":[{"type":"string"},{"type":"null"}]},"jobTitle":{"description":"Job title","anyOf":[{"type":"string"},{"type":"null"}]},"emailStatus":{"description":"Email subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"smsStatus":{"description":"SMS subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"preferredChannel":{"description":"Preferred communication channel","anyOf":[{"type":"string"},{"type":"null"}]},"properties":{"additionalProperties":true,"type":"object","properties":{}},"emailsSent":{"description":"Number of emails sent","type":"number"},"emailsOpened":{"description":"Number of emails opened","type":"number"},"emailsClicked":{"description":"Number of emails clicked","type":"number"},"smsSent":{"description":"Number of SMS sent","type":"number"},"smsClicked":{"description":"Number of SMS clicked","type":"number"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"updatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"topics":{"type":"array","items":{"type":"object","required":["topicId","topicName","status","subscribedAt"],"properties":{"topicId":{"type":"string"},"topicName":{"type":"string"},"status":{"type":"string"},"subscribedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}},"required":["id","email","phone","firstName","lastName","company","jobTitle","emailStatus","smsStatus","preferredChannel","properties","emailsSent","emailsOpened","emailsClicked","smsSent","smsClicked","createdAt","updatedAt","topics"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"id":{"description":"Contact ID","type":"string"},"email":{"description":"Email address","anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"description":"Phone number","anyOf":[{"type":"string"},{"type":"null"}]},"firstName":{"description":"First name","anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"description":"Last name","anyOf":[{"type":"string"},{"type":"null"}]},"company":{"description":"Company name","anyOf":[{"type":"string"},{"type":"null"}]},"jobTitle":{"description":"Job title","anyOf":[{"type":"string"},{"type":"null"}]},"emailStatus":{"description":"Email subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"smsStatus":{"description":"SMS subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"preferredChannel":{"description":"Preferred communication channel","anyOf":[{"type":"string"},{"type":"null"}]},"properties":{"additionalProperties":true,"type":"object","properties":{}},"emailsSent":{"description":"Number of emails sent","type":"number"},"emailsOpened":{"description":"Number of emails opened","type":"number"},"emailsClicked":{"description":"Number of emails clicked","type":"number"},"smsSent":{"description":"Number of SMS sent","type":"number"},"smsClicked":{"description":"Number of SMS clicked","type":"number"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"updatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"topics":{"type":"array","items":{"type":"object","required":["topicId","topicName","status","subscribedAt"],"properties":{"topicId":{"type":"string"},"topicName":{"type":"string"},"status":{"type":"string"},"subscribedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}},"required":["id","email","phone","firstName","lastName","company","jobTitle","emailStatus","smsStatus","preferredChannel","properties","emailsSent","emailsOpened","emailsClicked","smsSent","smsClicked","createdAt","updatedAt","topics"]}},"text/plain":{"schema":{"type":"object","properties":{"id":{"description":"Contact ID","type":"string"},"email":{"description":"Email address","anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"description":"Phone number","anyOf":[{"type":"string"},{"type":"null"}]},"firstName":{"description":"First name","anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"description":"Last name","anyOf":[{"type":"string"},{"type":"null"}]},"company":{"description":"Company name","anyOf":[{"type":"string"},{"type":"null"}]},"jobTitle":{"description":"Job title","anyOf":[{"type":"string"},{"type":"null"}]},"emailStatus":{"description":"Email subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"smsStatus":{"description":"SMS subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"preferredChannel":{"description":"Preferred communication channel","anyOf":[{"type":"string"},{"type":"null"}]},"properties":{"additionalProperties":true,"type":"object","properties":{}},"emailsSent":{"description":"Number of emails sent","type":"number"},"emailsOpened":{"description":"Number of emails opened","type":"number"},"emailsClicked":{"description":"Number of emails clicked","type":"number"},"smsSent":{"description":"Number of SMS sent","type":"number"},"smsClicked":{"description":"Number of SMS clicked","type":"number"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"updatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"topics":{"type":"array","items":{"type":"object","required":["topicId","topicName","status","subscribedAt"],"properties":{"topicId":{"type":"string"},"topicName":{"type":"string"},"status":{"type":"string"},"subscribedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}},"required":["id","email","phone","firstName","lastName","company","jobTitle","emailStatus","smsStatus","preferredChannel","properties","emailsSent","emailsOpened","emailsClicked","smsSent","smsClicked","createdAt","updatedAt","topics"]}}}},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}},"text/plain":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}}}}},"operationId":"getV1ContactsById","tags":["contacts"],"summary":"Get contact","description":"Returns a single contact by ID with topic subscriptions"},"patch":{"parameters":[{"description":"Contact ID","schema":{"type":"string","maxLength":36},"in":"path","name":"id","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Contact ID","type":"string"},"email":{"description":"Email address","anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"description":"Phone number","anyOf":[{"type":"string"},{"type":"null"}]},"firstName":{"description":"First name","anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"description":"Last name","anyOf":[{"type":"string"},{"type":"null"}]},"company":{"description":"Company name","anyOf":[{"type":"string"},{"type":"null"}]},"jobTitle":{"description":"Job title","anyOf":[{"type":"string"},{"type":"null"}]},"emailStatus":{"description":"Email subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"smsStatus":{"description":"SMS subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"preferredChannel":{"description":"Preferred communication channel","anyOf":[{"type":"string"},{"type":"null"}]},"properties":{"additionalProperties":true,"type":"object","properties":{}},"emailsSent":{"description":"Number of emails sent","type":"number"},"emailsOpened":{"description":"Number of emails opened","type":"number"},"emailsClicked":{"description":"Number of emails clicked","type":"number"},"smsSent":{"description":"Number of SMS sent","type":"number"},"smsClicked":{"description":"Number of SMS clicked","type":"number"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"updatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"pendingTopics":{"description":"Topic IDs pending confirmation","type":"array","items":{"type":"string"}}},"required":["id","email","phone","firstName","lastName","company","jobTitle","emailStatus","smsStatus","preferredChannel","properties","emailsSent","emailsOpened","emailsClicked","smsSent","smsClicked","createdAt","updatedAt"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"id":{"description":"Contact ID","type":"string"},"email":{"description":"Email address","anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"description":"Phone number","anyOf":[{"type":"string"},{"type":"null"}]},"firstName":{"description":"First name","anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"description":"Last name","anyOf":[{"type":"string"},{"type":"null"}]},"company":{"description":"Company name","anyOf":[{"type":"string"},{"type":"null"}]},"jobTitle":{"description":"Job title","anyOf":[{"type":"string"},{"type":"null"}]},"emailStatus":{"description":"Email subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"smsStatus":{"description":"SMS subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"preferredChannel":{"description":"Preferred communication channel","anyOf":[{"type":"string"},{"type":"null"}]},"properties":{"additionalProperties":true,"type":"object","properties":{}},"emailsSent":{"description":"Number of emails sent","type":"number"},"emailsOpened":{"description":"Number of emails opened","type":"number"},"emailsClicked":{"description":"Number of emails clicked","type":"number"},"smsSent":{"description":"Number of SMS sent","type":"number"},"smsClicked":{"description":"Number of SMS clicked","type":"number"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"updatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"pendingTopics":{"description":"Topic IDs pending confirmation","type":"array","items":{"type":"string"}}},"required":["id","email","phone","firstName","lastName","company","jobTitle","emailStatus","smsStatus","preferredChannel","properties","emailsSent","emailsOpened","emailsClicked","smsSent","smsClicked","createdAt","updatedAt"]}},"text/plain":{"schema":{"type":"object","properties":{"id":{"description":"Contact ID","type":"string"},"email":{"description":"Email address","anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"description":"Phone number","anyOf":[{"type":"string"},{"type":"null"}]},"firstName":{"description":"First name","anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"description":"Last name","anyOf":[{"type":"string"},{"type":"null"}]},"company":{"description":"Company name","anyOf":[{"type":"string"},{"type":"null"}]},"jobTitle":{"description":"Job title","anyOf":[{"type":"string"},{"type":"null"}]},"emailStatus":{"description":"Email subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"smsStatus":{"description":"SMS subscription status","anyOf":[{"type":"string"},{"type":"null"}]},"preferredChannel":{"description":"Preferred communication channel","anyOf":[{"type":"string"},{"type":"null"}]},"properties":{"additionalProperties":true,"type":"object","properties":{}},"emailsSent":{"description":"Number of emails sent","type":"number"},"emailsOpened":{"description":"Number of emails opened","type":"number"},"emailsClicked":{"description":"Number of emails clicked","type":"number"},"smsSent":{"description":"Number of SMS sent","type":"number"},"smsClicked":{"description":"Number of SMS clicked","type":"number"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"},"updatedAt":{"description":"Last update timestamp","format":"date-time","type":"string"},"pendingTopics":{"description":"Topic IDs pending confirmation","type":"array","items":{"type":"string"}}},"required":["id","email","phone","firstName","lastName","company","jobTitle","emailStatus","smsStatus","preferredChannel","properties","emailsSent","emailsOpened","emailsClicked","smsSent","smsClicked","createdAt","updatedAt"]}}}},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}},"text/plain":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}}}}},"operationId":"patchV1ContactsById","tags":["contacts"],"summary":"Update contact","description":"Updates an existing contact","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"description":"Email address","maxLength":255,"format":"email","type":"string"},"phone":{"description":"Phone number","maxLength":50,"type":"string"},"firstName":{"description":"First name","anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"lastName":{"description":"Last name","anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"company":{"description":"Company name","anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"jobTitle":{"description":"Job title","anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"emailStatus":{"description":"Email subscription status","anyOf":[{"const":"active","type":"string"},{"const":"unsubscribed","type":"string"},{"const":"bounced","type":"string"},{"const":"complained","type":"string"}]},"smsStatus":{"description":"SMS consent status","anyOf":[{"const":"pending_consent","type":"string"},{"const":"opted_in","type":"string"},{"const":"opted_out","type":"string"},{"const":"invalid","type":"string"}]},"preferredChannel":{"description":"Preferred communication channel (null to clear)","anyOf":[{"const":"email","type":"string"},{"const":"sms","type":"string"},{"type":"null"}]},"properties":{"additionalProperties":true,"description":"Custom properties","type":"object","properties":{}},"topicIds":{"description":"Topic IDs to subscribe","type":"array","items":{"maxLength":36,"type":"string"}},"topicSlugs":{"description":"Topic slugs to subscribe","type":"array","items":{"maxLength":100,"type":"string"}}}}},"multipart/form-data":{"schema":{"type":"object","properties":{"email":{"description":"Email address","maxLength":255,"format":"email","type":"string"},"phone":{"description":"Phone number","maxLength":50,"type":"string"},"firstName":{"description":"First name","anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"lastName":{"description":"Last name","anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"company":{"description":"Company name","anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"jobTitle":{"description":"Job title","anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"emailStatus":{"description":"Email subscription status","anyOf":[{"const":"active","type":"string"},{"const":"unsubscribed","type":"string"},{"const":"bounced","type":"string"},{"const":"complained","type":"string"}]},"smsStatus":{"description":"SMS consent status","anyOf":[{"const":"pending_consent","type":"string"},{"const":"opted_in","type":"string"},{"const":"opted_out","type":"string"},{"const":"invalid","type":"string"}]},"preferredChannel":{"description":"Preferred communication channel (null to clear)","anyOf":[{"const":"email","type":"string"},{"const":"sms","type":"string"},{"type":"null"}]},"properties":{"additionalProperties":true,"description":"Custom properties","type":"object","properties":{}},"topicIds":{"description":"Topic IDs to subscribe","type":"array","items":{"maxLength":36,"type":"string"}},"topicSlugs":{"description":"Topic slugs to subscribe","type":"array","items":{"maxLength":100,"type":"string"}}}}},"text/plain":{"schema":{"type":"object","properties":{"email":{"description":"Email address","maxLength":255,"format":"email","type":"string"},"phone":{"description":"Phone number","maxLength":50,"type":"string"},"firstName":{"description":"First name","anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"lastName":{"description":"Last name","anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"company":{"description":"Company name","anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"jobTitle":{"description":"Job title","anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"emailStatus":{"description":"Email subscription status","anyOf":[{"const":"active","type":"string"},{"const":"unsubscribed","type":"string"},{"const":"bounced","type":"string"},{"const":"complained","type":"string"}]},"smsStatus":{"description":"SMS consent status","anyOf":[{"const":"pending_consent","type":"string"},{"const":"opted_in","type":"string"},{"const":"opted_out","type":"string"},{"const":"invalid","type":"string"}]},"preferredChannel":{"description":"Preferred communication channel (null to clear)","anyOf":[{"const":"email","type":"string"},{"const":"sms","type":"string"},{"type":"null"}]},"properties":{"additionalProperties":true,"description":"Custom properties","type":"object","properties":{}},"topicIds":{"description":"Topic IDs to subscribe","type":"array","items":{"maxLength":36,"type":"string"}},"topicSlugs":{"description":"Topic slugs to subscribe","type":"array","items":{"maxLength":100,"type":"string"}}}}}}}},"delete":{"parameters":[{"description":"Contact ID","schema":{"type":"string","maxLength":36},"in":"path","name":"id","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}},"text/plain":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}},"text/plain":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}}}}},"operationId":"deleteV1ContactsById","tags":["contacts"],"summary":"Delete contact","description":"Deletes a single contact"}},"/v1/contacts/{id}/topics":{"put":{"parameters":[{"description":"Contact ID","schema":{"type":"string","maxLength":36},"in":"path","name":"id","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"topics":{"type":"array","items":{"type":"object","required":["topicId","topicName","status","subscribedAt"],"properties":{"topicId":{"type":"string"},"topicName":{"type":"string"},"status":{"type":"string"},"subscribedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}}}},"pendingTopics":{"type":"array","items":{"type":"string"}}},"required":["topics"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"topics":{"type":"array","items":{"type":"object","required":["topicId","topicName","status","subscribedAt"],"properties":{"topicId":{"type":"string"},"topicName":{"type":"string"},"status":{"type":"string"},"subscribedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}}}},"pendingTopics":{"type":"array","items":{"type":"string"}}},"required":["topics"]}},"text/plain":{"schema":{"type":"object","properties":{"topics":{"type":"array","items":{"type":"object","required":["topicId","topicName","status","subscribedAt"],"properties":{"topicId":{"type":"string"},"topicName":{"type":"string"},"status":{"type":"string"},"subscribedAt":{"anyOf":[{"type":"string"},{"type":"null"}]}}}},"pendingTopics":{"type":"array","items":{"type":"string"}}},"required":["topics"]}}}},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}},"text/plain":{"schema":{"type":"object","properties":{"error":{"description":"Error message","type":"string"}},"required":["error"]}}}}},"operationId":"putV1ContactsByIdTopics","tags":["contacts"],"summary":"Replace contact topics","description":"Replaces all topic subscriptions for a contact. Use PATCH to add topics without removing existing ones.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"topicIds":{"description":"Topic IDs to subscribe","type":"array","items":{"maxLength":36,"type":"string"}},"topicSlugs":{"description":"Topic slugs to subscribe","type":"array","items":{"maxLength":100,"type":"string"}}}}},"multipart/form-data":{"schema":{"type":"object","properties":{"topicIds":{"description":"Topic IDs to subscribe","type":"array","items":{"maxLength":36,"type":"string"}},"topicSlugs":{"description":"Topic slugs to subscribe","type":"array","items":{"maxLength":100,"type":"string"}}}}},"text/plain":{"schema":{"type":"object","properties":{"topicIds":{"description":"Topic IDs to subscribe","type":"array","items":{"maxLength":36,"type":"string"}},"topicSlugs":{"description":"Topic slugs to subscribe","type":"array","items":{"maxLength":100,"type":"string"}}}}}}}}},"/v1/batch/":{"post":{"parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"description":"Batch ID","type":"string"},"status":{"description":"Batch status (queued, scheduled, processing, completed, failed, cancelled)","type":"string"},"channel":{"description":"Channel (email or sms)","type":"string"},"totalRecipients":{"description":"Total number of recipients","type":"number"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"}},"required":["id","status","channel","totalRecipients","createdAt"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"id":{"description":"Batch ID","type":"string"},"status":{"description":"Batch status (queued, scheduled, processing, completed, failed, cancelled)","type":"string"},"channel":{"description":"Channel (email or sms)","type":"string"},"totalRecipients":{"description":"Total number of recipients","type":"number"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"}},"required":["id","status","channel","totalRecipients","createdAt"]}},"text/plain":{"schema":{"type":"object","properties":{"id":{"description":"Batch ID","type":"string"},"status":{"description":"Batch status (queued, scheduled, processing, completed, failed, cancelled)","type":"string"},"channel":{"description":"Channel (email or sms)","type":"string"},"totalRecipients":{"description":"Total number of recipients","type":"number"},"createdAt":{"description":"Creation timestamp","format":"date-time","type":"string"}},"required":["id","status","channel","totalRecipients","createdAt"]}}}}},"operationId":"postV1Batch","tags":["batch"],"summary":"Create batch send","description":"Creates a new batch send job and queues it for processing","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["awsAccountId"],"properties":{"channel":{"description":"Channel to send through","anyOf":[{"const":"email","type":"string"},{"const":"sms","type":"string"}]},"name":{"description":"Name for the batch send","maxLength":255,"type":"string"},"audienceType":{"description":"Audience targeting type","anyOf":[{"const":"all","type":"string"},{"const":"topic","type":"string"},{"const":"segment","type":"string"}]},"topicId":{"description":"Topic ID to target","maxLength":36,"type":"string"},"segmentId":{"description":"Segment ID to target","maxLength":36,"type":"string"},"subject":{"description":"Email subject line","maxLength":998,"type":"string"},"previewText":{"description":"Email preview text","maxLength":500,"type":"string"},"from":{"description":"From email address","maxLength":255,"type":"string"},"fromName":{"description":"From display name","maxLength":100,"type":"string"},"replyTo":{"description":"Reply-to email address","maxLength":255,"type":"string"},"templateId":{"description":"Email template ID","maxLength":36,"type":"string"},"htmlContent":{"description":"Raw HTML content (if not using template)","type":"string"},"variableMappings":{"description":"Variable mappings for custom template variables","type":"array","items":{"type":"object","required":["variableName","source"],"properties":{"variableName":{"description":"Template variable name","type":"string"},"source":{"anyOf":[{"type":"object","required":["type","value"],"properties":{"type":{"const":"static","type":"string"},"value":{"description":"Static value","type":"string"}}},{"type":"object","required":["type","field"],"properties":{"type":{"const":"contact","type":"string"},"field":{"description":"Contact field name","type":"string"}}}]}}}},"body":{"description":"SMS body text","maxLength":1600,"type":"string"},"senderId":{"description":"SMS sender ID","maxLength":20,"type":"string"},"scheduledFor":{"description":"ISO 8601 datetime for scheduled send","format":"date-time","type":"string"},"awsAccountId":{"description":"AWS account ID to use for sending","maxLength":36,"type":"string"},"totalRecipients":{"description":"Pre-counted recipient count","type":"number"}}}},"multipart/form-data":{"schema":{"type":"object","required":["awsAccountId"],"properties":{"channel":{"description":"Channel to send through","anyOf":[{"const":"email","type":"string"},{"const":"sms","type":"string"}]},"name":{"description":"Name for the batch send","maxLength":255,"type":"string"},"audienceType":{"description":"Audience targeting type","anyOf":[{"const":"all","type":"string"},{"const":"topic","type":"string"},{"const":"segment","type":"string"}]},"topicId":{"description":"Topic ID to target","maxLength":36,"type":"string"},"segmentId":{"description":"Segment ID to target","maxLength":36,"type":"string"},"subject":{"description":"Email subject line","maxLength":998,"type":"string"},"previewText":{"description":"Email preview text","maxLength":500,"type":"string"},"from":{"description":"From email address","maxLength":255,"type":"string"},"fromName":{"description":"From display name","maxLength":100,"type":"string"},"replyTo":{"description":"Reply-to email address","maxLength":255,"type":"string"},"templateId":{"description":"Email template ID","maxLength":36,"type":"string"},"htmlContent":{"description":"Raw HTML content (if not using template)","type":"string"},"variableMappings":{"description":"Variable mappings for custom template variables","type":"array","items":{"type":"object","required":["variableName","source"],"properties":{"variableName":{"description":"Template variable name","type":"string"},"source":{"anyOf":[{"type":"object","required":["type","value"],"properties":{"type":{"const":"static","type":"string"},"value":{"description":"Static value","type":"string"}}},{"type":"object","required":["type","field"],"properties":{"type":{"const":"contact","type":"string"},"field":{"description":"Contact field name","type":"string"}}}]}}}},"body":{"description":"SMS body text","maxLength":1600,"type":"string"},"senderId":{"description":"SMS sender ID","maxLength":20,"type":"string"},"scheduledFor":{"description":"ISO 8601 datetime for scheduled send","format":"date-time","type":"string"},"awsAccountId":{"description":"AWS account ID to use for sending","maxLength":36,"type":"string"},"totalRecipients":{"description":"Pre-counted recipient count","type":"number"}}}},"text/plain":{"schema":{"type":"object","required":["awsAccountId"],"properties":{"channel":{"description":"Channel to send through","anyOf":[{"const":"email","type":"string"},{"const":"sms","type":"string"}]},"name":{"description":"Name for the batch send","maxLength":255,"type":"string"},"audienceType":{"description":"Audience targeting type","anyOf":[{"const":"all","type":"string"},{"const":"topic","type":"string"},{"const":"segment","type":"string"}]},"topicId":{"description":"Topic ID to target","maxLength":36,"type":"string"},"segmentId":{"description":"Segment ID to target","maxLength":36,"type":"string"},"subject":{"description":"Email subject line","maxLength":998,"type":"string"},"previewText":{"description":"Email preview text","maxLength":500,"type":"string"},"from":{"description":"From email address","maxLength":255,"type":"string"},"fromName":{"description":"From display name","maxLength":100,"type":"string"},"replyTo":{"description":"Reply-to email address","maxLength":255,"type":"string"},"templateId":{"description":"Email template ID","maxLength":36,"type":"string"},"htmlContent":{"description":"Raw HTML content (if not using template)","type":"string"},"variableMappings":{"description":"Variable mappings for custom template variables","type":"array","items":{"type":"object","required":["variableName","source"],"properties":{"variableName":{"description":"Template variable name","type":"string"},"source":{"anyOf":[{"type":"object","required":["type","value"],"properties":{"type":{"const":"static","type":"string"},"value":{"description":"Static value","type":"string"}}},{"type":"object","required":["type","field"],"properties":{"type":{"const":"contact","type":"string"},"field":{"description":"Contact field name","type":"string"}}}]}}}},"body":{"description":"SMS body text","maxLength":1600,"type":"string"},"senderId":{"description":"SMS sender ID","maxLength":20,"type":"string"},"scheduledFor":{"description":"ISO 8601 datetime for scheduled send","format":"date-time","type":"string"},"awsAccountId":{"description":"AWS account ID to use for sending","maxLength":36,"type":"string"},"totalRecipients":{"description":"Pre-counted recipient count","type":"number"}}}}}}}},"/v1/batch/{id}":{"get":{"parameters":[{"description":"Batch ID","schema":{"type":"string","maxLength":36},"in":"path","name":"id","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"channel":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"totalRecipients":{"type":"number"},"processedRecipients":{"type":"number"},"sent":{"type":"number"},"failed":{"type":"number"},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"}},"required":["id","status","channel","name","totalRecipients","processedRecipients","sent","failed","startedAt","completedAt","createdAt"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"channel":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"totalRecipients":{"type":"number"},"processedRecipients":{"type":"number"},"sent":{"type":"number"},"failed":{"type":"number"},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"}},"required":["id","status","channel","name","totalRecipients","processedRecipients","sent","failed","startedAt","completedAt","createdAt"]}},"text/plain":{"schema":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"channel":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"totalRecipients":{"type":"number"},"processedRecipients":{"type":"number"},"sent":{"type":"number"},"failed":{"type":"number"},"startedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string"}},"required":["id","status","channel","name","totalRecipients","processedRecipients","sent","failed","startedAt","completedAt","createdAt"]}}}}},"operationId":"getV1BatchById","tags":["batch"],"summary":"Get batch status","description":"Returns the current status of a batch send job"},"delete":{"parameters":[{"description":"Batch ID to cancel","schema":{"type":"string","maxLength":36},"in":"path","name":"id","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"id":{"type":"string"},"status":{"type":"string"}},"required":["success","id","status"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"id":{"type":"string"},"status":{"type":"string"}},"required":["success","id","status"]}},"text/plain":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"id":{"type":"string"},"status":{"type":"string"}},"required":["success","id","status"]}}}}},"operationId":"deleteV1BatchById","tags":["batch"],"summary":"Cancel batch send","description":"Cancels a scheduled or queued batch send. If scheduled, also deletes the EventBridge schedule."}},"/v1/events/":{"post":{"parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"contactCreated":{"description":"Whether a new contact was created","type":"boolean"},"workflowsTriggered":{"description":"Number of workflows triggered","type":"number"},"executionsResumed":{"description":"Number of executions resumed","type":"number"}},"required":["success","contactCreated","workflowsTriggered","executionsResumed"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"contactCreated":{"description":"Whether a new contact was created","type":"boolean"},"workflowsTriggered":{"description":"Number of workflows triggered","type":"number"},"executionsResumed":{"description":"Number of executions resumed","type":"number"}},"required":["success","contactCreated","workflowsTriggered","executionsResumed"]}},"text/plain":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"contactCreated":{"description":"Whether a new contact was created","type":"boolean"},"workflowsTriggered":{"description":"Number of workflows triggered","type":"number"},"executionsResumed":{"description":"Number of executions resumed","type":"number"}},"required":["success","contactCreated","workflowsTriggered","executionsResumed"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"const":false,"type":"boolean"},"error":{"type":"string"}},"required":["success","error"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"success":{"const":false,"type":"boolean"},"error":{"type":"string"}},"required":["success","error"]}},"text/plain":{"schema":{"type":"object","properties":{"success":{"const":false,"type":"boolean"},"error":{"type":"string"}},"required":["success","error"]}}}}},"operationId":"postV1Events","summary":"Ingest event","description":"Send a custom event to trigger workflows and resume waiting executions","tags":["events"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"description":"Event name (e.g., 'purchase.completed')","maxLength":255,"type":"string"},"contactId":{"description":"Contact ID","maxLength":36,"type":"string"},"contactEmail":{"description":"Contact email (alternative to contactId)","maxLength":255,"type":"string"},"contactName":{"description":"Contact name (used when createIfMissing is true to set firstName)","maxLength":100,"type":"string"},"createIfMissing":{"description":"If true and contact doesn't exist, create a new contact with the provided email","default":false,"type":"boolean"},"properties":{"additionalProperties":true,"description":"Event properties","type":"object","properties":{}}}}},"multipart/form-data":{"schema":{"type":"object","required":["name"],"properties":{"name":{"description":"Event name (e.g., 'purchase.completed')","maxLength":255,"type":"string"},"contactId":{"description":"Contact ID","maxLength":36,"type":"string"},"contactEmail":{"description":"Contact email (alternative to contactId)","maxLength":255,"type":"string"},"contactName":{"description":"Contact name (used when createIfMissing is true to set firstName)","maxLength":100,"type":"string"},"createIfMissing":{"description":"If true and contact doesn't exist, create a new contact with the provided email","default":false,"type":"boolean"},"properties":{"additionalProperties":true,"description":"Event properties","type":"object","properties":{}}}}},"text/plain":{"schema":{"type":"object","required":["name"],"properties":{"name":{"description":"Event name (e.g., 'purchase.completed')","maxLength":255,"type":"string"},"contactId":{"description":"Contact ID","maxLength":36,"type":"string"},"contactEmail":{"description":"Contact email (alternative to contactId)","maxLength":255,"type":"string"},"contactName":{"description":"Contact name (used when createIfMissing is true to set firstName)","maxLength":100,"type":"string"},"createIfMissing":{"description":"If true and contact doesn't exist, create a new contact with the provided email","default":false,"type":"boolean"},"properties":{"additionalProperties":true,"description":"Event properties","type":"object","properties":{}}}}}}}}},"/v1/events/batch":{"post":{"parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"processed":{"description":"Number of events processed","type":"number"},"workflowsTriggered":{"description":"Total workflows triggered","type":"number"},"executionsResumed":{"description":"Total executions resumed","type":"number"},"errors":{"description":"Error messages if any","type":"array","items":{"type":"string"}}},"required":["success","processed","workflowsTriggered","executionsResumed","errors"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"processed":{"description":"Number of events processed","type":"number"},"workflowsTriggered":{"description":"Total workflows triggered","type":"number"},"executionsResumed":{"description":"Total executions resumed","type":"number"},"errors":{"description":"Error messages if any","type":"array","items":{"type":"string"}}},"required":["success","processed","workflowsTriggered","executionsResumed","errors"]}},"text/plain":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"processed":{"description":"Number of events processed","type":"number"},"workflowsTriggered":{"description":"Total workflows triggered","type":"number"},"executionsResumed":{"description":"Total executions resumed","type":"number"},"errors":{"description":"Error messages if any","type":"array","items":{"type":"string"}}},"required":["success","processed","workflowsTriggered","executionsResumed","errors"]}}}}},"operationId":"postV1EventsBatch","summary":"Batch ingest events","description":"Process multiple events in a single request","tags":["events"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["events"],"properties":{"events":{"description":"List of events to process","maxItems":1000,"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"maxLength":255,"type":"string"},"contactId":{"maxLength":36,"type":"string"},"contactEmail":{"maxLength":255,"type":"string"},"properties":{"additionalProperties":true,"type":"object","properties":{}}}}}}}},"multipart/form-data":{"schema":{"type":"object","required":["events"],"properties":{"events":{"description":"List of events to process","maxItems":1000,"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"maxLength":255,"type":"string"},"contactId":{"maxLength":36,"type":"string"},"contactEmail":{"maxLength":255,"type":"string"},"properties":{"additionalProperties":true,"type":"object","properties":{}}}}}}}},"text/plain":{"schema":{"type":"object","required":["events"],"properties":{"events":{"description":"List of events to process","maxItems":1000,"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"maxLength":255,"type":"string"},"contactId":{"maxLength":36,"type":"string"},"contactEmail":{"maxLength":255,"type":"string"},"properties":{"additionalProperties":true,"type":"object","properties":{}}}}}}}}}}}},"/v1/workflows/{workflowId}/trigger":{"post":{"parameters":[{"description":"Workflow ID to trigger","schema":{"type":"string","maxLength":36},"in":"path","name":"workflowId","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"workflowId":{"type":"string"},"workflowName":{"type":"string"},"contactId":{"type":"string"},"error":{"type":"string"}},"required":["success"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"workflowId":{"type":"string"},"workflowName":{"type":"string"},"contactId":{"type":"string"},"error":{"type":"string"}},"required":["success"]}},"text/plain":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"workflowId":{"type":"string"},"workflowName":{"type":"string"},"contactId":{"type":"string"},"error":{"type":"string"}},"required":["success"]}}}}},"operationId":"postV1WorkflowsByWorkflowIdTrigger","summary":"Trigger workflow","description":"Trigger a specific workflow for a contact. The workflow must have triggerType 'api' and be enabled.","tags":["workflows"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contactId":{"description":"Contact ID","maxLength":36,"type":"string"},"contactEmail":{"description":"Contact email (alternative to contactId)","maxLength":255,"type":"string"},"data":{"additionalProperties":true,"description":"Data to pass to the workflow","type":"object","properties":{}}}}},"multipart/form-data":{"schema":{"type":"object","properties":{"contactId":{"description":"Contact ID","maxLength":36,"type":"string"},"contactEmail":{"description":"Contact email (alternative to contactId)","maxLength":255,"type":"string"},"data":{"additionalProperties":true,"description":"Data to pass to the workflow","type":"object","properties":{}}}}},"text/plain":{"schema":{"type":"object","properties":{"contactId":{"description":"Contact ID","maxLength":36,"type":"string"},"contactEmail":{"description":"Contact email (alternative to contactId)","maxLength":255,"type":"string"},"data":{"additionalProperties":true,"description":"Data to pass to the workflow","type":"object","properties":{}}}}}}}}},"/v1/workflows/{workflowId}/trigger/batch":{"post":{"parameters":[{"description":"Workflow ID to trigger","schema":{"type":"string","maxLength":36},"in":"path","name":"workflowId","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"workflowId":{"type":"string"},"workflowName":{"type":"string"},"triggered":{"description":"Number of contacts triggered","type":"number"},"errors":{"description":"Error messages if any","type":"array","items":{"type":"string"}},"error":{"type":"string"}},"required":["success"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"workflowId":{"type":"string"},"workflowName":{"type":"string"},"triggered":{"description":"Number of contacts triggered","type":"number"},"errors":{"description":"Error messages if any","type":"array","items":{"type":"string"}},"error":{"type":"string"}},"required":["success"]}},"text/plain":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"workflowId":{"type":"string"},"workflowName":{"type":"string"},"triggered":{"description":"Number of contacts triggered","type":"number"},"errors":{"description":"Error messages if any","type":"array","items":{"type":"string"}},"error":{"type":"string"}},"required":["success"]}}}}},"operationId":"postV1WorkflowsByWorkflowIdTriggerBatch","summary":"Batch trigger workflow","description":"Trigger a workflow for multiple contacts at once. Each contact can have its own data that gets merged with common data.","tags":["workflows"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["contacts"],"properties":{"contacts":{"description":"List of contacts to trigger the workflow for","type":"array","items":{"type":"object","properties":{"contactId":{"maxLength":36,"type":"string"},"contactEmail":{"maxLength":255,"type":"string"},"data":{"additionalProperties":true,"type":"object","properties":{}}}}},"data":{"additionalProperties":true,"description":"Common data to pass to all workflow triggers","type":"object","properties":{}}}}},"multipart/form-data":{"schema":{"type":"object","required":["contacts"],"properties":{"contacts":{"description":"List of contacts to trigger the workflow for","type":"array","items":{"type":"object","properties":{"contactId":{"maxLength":36,"type":"string"},"contactEmail":{"maxLength":255,"type":"string"},"data":{"additionalProperties":true,"type":"object","properties":{}}}}},"data":{"additionalProperties":true,"description":"Common data to pass to all workflow triggers","type":"object","properties":{}}}}},"text/plain":{"schema":{"type":"object","required":["contacts"],"properties":{"contacts":{"description":"List of contacts to trigger the workflow for","type":"array","items":{"type":"object","properties":{"contactId":{"maxLength":36,"type":"string"},"contactEmail":{"maxLength":255,"type":"string"},"data":{"additionalProperties":true,"type":"object","properties":{}}}}},"data":{"additionalProperties":true,"description":"Common data to pass to all workflow triggers","type":"object","properties":{}}}}}}}}},"/v1/workflows/executions/{executionId}/retry":{"post":{"parameters":[{"description":"Execution ID to retry","schema":{"type":"string","maxLength":36},"in":"path","name":"executionId","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"error":{"type":"string"}},"required":["success"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"error":{"type":"string"}},"required":["success"]}},"text/plain":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"error":{"type":"string"}},"required":["success"]}}}}},"operationId":"postV1WorkflowsExecutionsByExecutionIdRetry","summary":"Retry failed execution","description":"Retry a failed workflow execution from the step where it failed. Completed steps are preserved.","tags":["workflows"]}},"/v1/workflows/executions/{executionId}/cancel":{"post":{"parameters":[{"description":"Execution ID to cancel","schema":{"type":"string","maxLength":36},"in":"path","name":"executionId","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}},"required":["success"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}},"required":["success"]}},"text/plain":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}},"required":["success"]}}}}},"operationId":"postV1WorkflowsExecutionsByExecutionIdCancel","summary":"Cancel workflow execution","description":"Cancel an active workflow execution. Cleans up schedulers and adjusts workflow stats.","tags":["workflows"]}},"/webhooks/ses/{awsAccountNumber}":{"post":{"parameters":[{"description":"12-digit AWS account ID","schema":{"type":"string","minLength":12,"maxLength":12,"pattern":"^[0-9]{12}$"},"in":"path","name":"awsAccountNumber","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"description":"Processing status","type":"string"},"eventType":{"type":"string"},"messageId":{"type":"string"},"reason":{"type":"string"}},"required":["status"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"status":{"description":"Processing status","type":"string"},"eventType":{"type":"string"},"messageId":{"type":"string"},"reason":{"type":"string"}},"required":["status"]}},"text/plain":{"schema":{"type":"object","properties":{"status":{"description":"Processing status","type":"string"},"eventType":{"type":"string"},"messageId":{"type":"string"},"reason":{"type":"string"}},"required":["status"]}}}},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}},"text/plain":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"500":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"string"}},"required":["error"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"string"}},"required":["error"]}},"text/plain":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"string"}},"required":["error"]}}}}},"operationId":"postWebhooksSesByAwsAccountNumber","tags":["webhooks"],"summary":"Receive SES events","description":"Webhook endpoint for receiving SES events from EventBridge API Destination. The awsAccountNumber is the 12-digit AWS account ID."}},"/unsubscribe/{token}":{"post":{"parameters":[{"description":"Unsubscribe token","schema":{"type":"string","maxLength":500},"in":"path","name":"token","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"contactId":{"type":"string"},"topicId":{"type":"string"}},"required":["success"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"contactId":{"type":"string"},"topicId":{"type":"string"}},"required":["success"]}},"text/plain":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"contactId":{"type":"string"},"topicId":{"type":"string"}},"required":["success"]}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}},"text/plain":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}},"text/plain":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"operationId":"postUnsubscribeByToken","tags":["unsubscribe"],"summary":"One-click unsubscribe (RFC 8058)","description":"Processes unsubscribe requests. Supports RFC 8058 one-click unsubscribe via POST with body 'List-Unsubscribe=One-Click'. Returns 200 OK directly (no redirects per RFC 8058 spec).","requestBody":{"required":true,"content":{"application/json":{"schema":{}},"multipart/form-data":{"schema":{}},"text/plain":{"schema":{}}}}},"get":{"parameters":[{"description":"Unsubscribe token","schema":{"type":"string","maxLength":500},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"HTML confirmation page","content":{"application/json":{"schema":{"description":"HTML confirmation page","type":"string"}},"multipart/form-data":{"schema":{"description":"HTML confirmation page","type":"string"}},"text/plain":{"schema":{"description":"HTML confirmation page","type":"string"}}}},"400":{"description":"HTML error page","content":{"application/json":{"schema":{"description":"HTML error page","type":"string"}},"multipart/form-data":{"schema":{"description":"HTML error page","type":"string"}},"text/plain":{"schema":{"description":"HTML error page","type":"string"}}}},"404":{"description":"HTML not found page","content":{"application/json":{"schema":{"description":"HTML not found page","type":"string"}},"multipart/form-data":{"schema":{"description":"HTML not found page","type":"string"}},"text/plain":{"schema":{"description":"HTML not found page","type":"string"}}}}},"operationId":"getUnsubscribeByToken","tags":["unsubscribe"],"summary":"Unsubscribe confirmation page","description":"Shows a confirmation page for users who click the unsubscribe link in emails. Displays a form to confirm the unsubscribe action."}},"/v1/preference-events/":{"post":{"parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"subscribed":{"type":"number"},"unsubscribed":{"type":"number"}},"required":["success","subscribed","unsubscribed"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"subscribed":{"type":"number"},"unsubscribed":{"type":"number"}},"required":["success","subscribed","unsubscribed"]}},"text/plain":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"subscribed":{"type":"number"},"unsubscribed":{"type":"number"}},"required":["success","subscribed","unsubscribed"]}}}},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}},"text/plain":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"operationId":"postV1Preference-events","tags":["unsubscribe"],"summary":"Emit workflow events for preference center changes","description":"Called by the preference center after DB writes to emit topic_subscribed/topic_unsubscribed workflow events. Authenticated via unsubscribe JWT token.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["token","contactId","organizationId","changes"],"properties":{"token":{"type":"string"},"contactId":{"type":"string"},"organizationId":{"type":"string"},"changes":{"type":"array","items":{"type":"object","required":["topicId","action"],"properties":{"topicId":{"type":"string"},"topicName":{"type":"string"},"action":{"anyOf":[{"const":"subscribed","type":"string"},{"const":"unsubscribed","type":"string"}]}}}}}}},"multipart/form-data":{"schema":{"type":"object","required":["token","contactId","organizationId","changes"],"properties":{"token":{"type":"string"},"contactId":{"type":"string"},"organizationId":{"type":"string"},"changes":{"type":"array","items":{"type":"object","required":["topicId","action"],"properties":{"topicId":{"type":"string"},"topicName":{"type":"string"},"action":{"anyOf":[{"const":"subscribed","type":"string"},{"const":"unsubscribed","type":"string"}]}}}}}}},"text/plain":{"schema":{"type":"object","required":["token","contactId","organizationId","changes"],"properties":{"token":{"type":"string"},"contactId":{"type":"string"},"organizationId":{"type":"string"},"changes":{"type":"array","items":{"type":"object","required":["topicId","action"],"properties":{"topicId":{"type":"string"},"topicName":{"type":"string"},"action":{"anyOf":[{"const":"subscribed","type":"string"},{"const":"unsubscribed","type":"string"}]}}}}}}}}}}},"/v1/templates/push":{"post":{"parameters":[],"operationId":"postV1TemplatesPush","tags":["templates"],"summary":"Push a template from CLI","description":"Upserts a template compiled from React Email source. Used by `wraps push`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["slug","source","compiledHtml","compiledText","subject","emailType","variables","sourceHash","sesTemplateName"],"properties":{"slug":{"description":"Template slug (filename without extension)","type":"string"},"source":{"description":"React Email TSX source code","type":"string"},"compiledHtml":{"description":"Compiled HTML output","type":"string"},"compiledText":{"description":"Compiled plain text output","type":"string"},"subject":{"description":"Email subject line","type":"string"},"previewText":{"description":"Preview/preheader text","type":"string"},"emailType":{"description":"Email type for compliance","anyOf":[{"const":"marketing","type":"string"},{"const":"transactional","type":"string"}]},"channel":{"description":"Template channel (default: email)","anyOf":[{"const":"email","type":"string"},{"const":"sms","type":"string"}]},"variables":{"description":"Template variables","type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"fallback":{"type":"string"}}}},"sourceHash":{"description":"SHA256 hash of source file","type":"string"},"sesTemplateName":{"description":"SES template name","type":"string"},"cliProjectPath":{"description":"Path in project (e.g. templates/welcome.tsx)","type":"string"},"force":{"description":"Force overwrite even if edited on dashboard","type":"boolean"}}}},"multipart/form-data":{"schema":{"type":"object","required":["slug","source","compiledHtml","compiledText","subject","emailType","variables","sourceHash","sesTemplateName"],"properties":{"slug":{"description":"Template slug (filename without extension)","type":"string"},"source":{"description":"React Email TSX source code","type":"string"},"compiledHtml":{"description":"Compiled HTML output","type":"string"},"compiledText":{"description":"Compiled plain text output","type":"string"},"subject":{"description":"Email subject line","type":"string"},"previewText":{"description":"Preview/preheader text","type":"string"},"emailType":{"description":"Email type for compliance","anyOf":[{"const":"marketing","type":"string"},{"const":"transactional","type":"string"}]},"channel":{"description":"Template channel (default: email)","anyOf":[{"const":"email","type":"string"},{"const":"sms","type":"string"}]},"variables":{"description":"Template variables","type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"fallback":{"type":"string"}}}},"sourceHash":{"description":"SHA256 hash of source file","type":"string"},"sesTemplateName":{"description":"SES template name","type":"string"},"cliProjectPath":{"description":"Path in project (e.g. templates/welcome.tsx)","type":"string"},"force":{"description":"Force overwrite even if edited on dashboard","type":"boolean"}}}},"text/plain":{"schema":{"type":"object","required":["slug","source","compiledHtml","compiledText","subject","emailType","variables","sourceHash","sesTemplateName"],"properties":{"slug":{"description":"Template slug (filename without extension)","type":"string"},"source":{"description":"React Email TSX source code","type":"string"},"compiledHtml":{"description":"Compiled HTML output","type":"string"},"compiledText":{"description":"Compiled plain text output","type":"string"},"subject":{"description":"Email subject line","type":"string"},"previewText":{"description":"Preview/preheader text","type":"string"},"emailType":{"description":"Email type for compliance","anyOf":[{"const":"marketing","type":"string"},{"const":"transactional","type":"string"}]},"channel":{"description":"Template channel (default: email)","anyOf":[{"const":"email","type":"string"},{"const":"sms","type":"string"}]},"variables":{"description":"Template variables","type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"fallback":{"type":"string"}}}},"sourceHash":{"description":"SHA256 hash of source file","type":"string"},"sesTemplateName":{"description":"SES template name","type":"string"},"cliProjectPath":{"description":"Path in project (e.g. templates/welcome.tsx)","type":"string"},"force":{"description":"Force overwrite even if edited on dashboard","type":"boolean"}}}}}},"responses":{"200":{}}}},"/v1/templates/push/batch":{"post":{"parameters":[],"operationId":"postV1TemplatesPushBatch","tags":["templates"],"summary":"Push multiple templates from CLI","description":"Batch upsert templates compiled from React Email source.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["templates"],"properties":{"templates":{"type":"array","items":{"type":"object","required":["slug","source","compiledHtml","compiledText","subject","emailType","variables","sourceHash","sesTemplateName"],"properties":{"slug":{"type":"string"},"source":{"type":"string"},"compiledHtml":{"type":"string"},"compiledText":{"type":"string"},"subject":{"type":"string"},"previewText":{"type":"string"},"emailType":{"anyOf":[{"const":"marketing","type":"string"},{"const":"transactional","type":"string"}]},"channel":{"anyOf":[{"const":"email","type":"string"},{"const":"sms","type":"string"}]},"variables":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"fallback":{"type":"string"}}}},"sourceHash":{"type":"string"},"sesTemplateName":{"type":"string"},"cliProjectPath":{"type":"string"},"force":{"type":"boolean"}}}}}}},"multipart/form-data":{"schema":{"type":"object","required":["templates"],"properties":{"templates":{"type":"array","items":{"type":"object","required":["slug","source","compiledHtml","compiledText","subject","emailType","variables","sourceHash","sesTemplateName"],"properties":{"slug":{"type":"string"},"source":{"type":"string"},"compiledHtml":{"type":"string"},"compiledText":{"type":"string"},"subject":{"type":"string"},"previewText":{"type":"string"},"emailType":{"anyOf":[{"const":"marketing","type":"string"},{"const":"transactional","type":"string"}]},"channel":{"anyOf":[{"const":"email","type":"string"},{"const":"sms","type":"string"}]},"variables":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"fallback":{"type":"string"}}}},"sourceHash":{"type":"string"},"sesTemplateName":{"type":"string"},"cliProjectPath":{"type":"string"},"force":{"type":"boolean"}}}}}}},"text/plain":{"schema":{"type":"object","required":["templates"],"properties":{"templates":{"type":"array","items":{"type":"object","required":["slug","source","compiledHtml","compiledText","subject","emailType","variables","sourceHash","sesTemplateName"],"properties":{"slug":{"type":"string"},"source":{"type":"string"},"compiledHtml":{"type":"string"},"compiledText":{"type":"string"},"subject":{"type":"string"},"previewText":{"type":"string"},"emailType":{"anyOf":[{"const":"marketing","type":"string"},{"const":"transactional","type":"string"}]},"channel":{"anyOf":[{"const":"email","type":"string"},{"const":"sms","type":"string"}]},"variables":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"fallback":{"type":"string"}}}},"sourceHash":{"type":"string"},"sesTemplateName":{"type":"string"},"cliProjectPath":{"type":"string"},"force":{"type":"boolean"}}}}}}}}},"responses":{"200":{}}}},"/v1/templates/pull":{"get":{"operationId":"getV1TemplatesPull","tags":["templates"],"summary":"Pull templates for CLI sync","description":"Returns all templates pushed from CLI with their React Email source.","responses":{"200":{}}}},"/v1/workflows/push":{"post":{"parameters":[],"operationId":"postV1WorkflowsPush","tags":["workflows"],"summary":"Push a workflow from CLI","description":"Upserts a workflow parsed from TypeScript source. Used by `wraps email workflows push`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["slug","name","sourceTs","sourceHash","steps","transitions","triggerType"],"properties":{"slug":{"description":"Workflow slug (filename without extension)","type":"string"},"name":{"description":"Workflow display name","type":"string"},"description":{"description":"Workflow description","type":"string"},"sourceTs":{"description":"Original TypeScript source code","type":"string"},"sourceHash":{"description":"SHA256 hash of source file","type":"string"},"steps":{"description":"Flat array of workflow steps","type":"array","items":{"type":"object","required":["id","type","name","position","config"],"properties":{"id":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"position":{"type":"object","required":["x","y"],"properties":{"x":{"type":"number"},"y":{"type":"number"}}},"config":{}}}},"transitions":{"description":"Flat array of step transitions","type":"array","items":{"type":"object","required":["id","fromStepId","toStepId"],"properties":{"id":{"type":"string"},"fromStepId":{"type":"string"},"toStepId":{"type":"string"},"condition":{"type":"object","required":["branch"],"properties":{"branch":{"type":"string"}}}}}},"triggerType":{"description":"Trigger type","type":"string"},"triggerConfig":{"description":"Trigger configuration"},"settings":{"type":"object","properties":{"allowReentry":{"type":"boolean"},"reentryDelaySeconds":{"type":"number"},"maxConcurrentExecutions":{"type":"number"},"contactCooldownSeconds":{"type":"number"}}},"defaults":{"type":"object","properties":{"from":{"type":"string"},"fromName":{"type":"string"},"replyTo":{"type":"string"},"senderId":{"type":"string"}}},"cliProjectPath":{"description":"Path in project (e.g. workflows/onboarding.ts)","type":"string"},"force":{"description":"Force overwrite even if edited on dashboard","type":"boolean"},"draft":{"description":"Push as draft without enabling the workflow","type":"boolean"}}}},"multipart/form-data":{"schema":{"type":"object","required":["slug","name","sourceTs","sourceHash","steps","transitions","triggerType"],"properties":{"slug":{"description":"Workflow slug (filename without extension)","type":"string"},"name":{"description":"Workflow display name","type":"string"},"description":{"description":"Workflow description","type":"string"},"sourceTs":{"description":"Original TypeScript source code","type":"string"},"sourceHash":{"description":"SHA256 hash of source file","type":"string"},"steps":{"description":"Flat array of workflow steps","type":"array","items":{"type":"object","required":["id","type","name","position","config"],"properties":{"id":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"position":{"type":"object","required":["x","y"],"properties":{"x":{"type":"number"},"y":{"type":"number"}}},"config":{}}}},"transitions":{"description":"Flat array of step transitions","type":"array","items":{"type":"object","required":["id","fromStepId","toStepId"],"properties":{"id":{"type":"string"},"fromStepId":{"type":"string"},"toStepId":{"type":"string"},"condition":{"type":"object","required":["branch"],"properties":{"branch":{"type":"string"}}}}}},"triggerType":{"description":"Trigger type","type":"string"},"triggerConfig":{"description":"Trigger configuration"},"settings":{"type":"object","properties":{"allowReentry":{"type":"boolean"},"reentryDelaySeconds":{"type":"number"},"maxConcurrentExecutions":{"type":"number"},"contactCooldownSeconds":{"type":"number"}}},"defaults":{"type":"object","properties":{"from":{"type":"string"},"fromName":{"type":"string"},"replyTo":{"type":"string"},"senderId":{"type":"string"}}},"cliProjectPath":{"description":"Path in project (e.g. workflows/onboarding.ts)","type":"string"},"force":{"description":"Force overwrite even if edited on dashboard","type":"boolean"},"draft":{"description":"Push as draft without enabling the workflow","type":"boolean"}}}},"text/plain":{"schema":{"type":"object","required":["slug","name","sourceTs","sourceHash","steps","transitions","triggerType"],"properties":{"slug":{"description":"Workflow slug (filename without extension)","type":"string"},"name":{"description":"Workflow display name","type":"string"},"description":{"description":"Workflow description","type":"string"},"sourceTs":{"description":"Original TypeScript source code","type":"string"},"sourceHash":{"description":"SHA256 hash of source file","type":"string"},"steps":{"description":"Flat array of workflow steps","type":"array","items":{"type":"object","required":["id","type","name","position","config"],"properties":{"id":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"position":{"type":"object","required":["x","y"],"properties":{"x":{"type":"number"},"y":{"type":"number"}}},"config":{}}}},"transitions":{"description":"Flat array of step transitions","type":"array","items":{"type":"object","required":["id","fromStepId","toStepId"],"properties":{"id":{"type":"string"},"fromStepId":{"type":"string"},"toStepId":{"type":"string"},"condition":{"type":"object","required":["branch"],"properties":{"branch":{"type":"string"}}}}}},"triggerType":{"description":"Trigger type","type":"string"},"triggerConfig":{"description":"Trigger configuration"},"settings":{"type":"object","properties":{"allowReentry":{"type":"boolean"},"reentryDelaySeconds":{"type":"number"},"maxConcurrentExecutions":{"type":"number"},"contactCooldownSeconds":{"type":"number"}}},"defaults":{"type":"object","properties":{"from":{"type":"string"},"fromName":{"type":"string"},"replyTo":{"type":"string"},"senderId":{"type":"string"}}},"cliProjectPath":{"description":"Path in project (e.g. workflows/onboarding.ts)","type":"string"},"force":{"description":"Force overwrite even if edited on dashboard","type":"boolean"},"draft":{"description":"Push as draft without enabling the workflow","type":"boolean"}}}}}},"responses":{"200":{}}}},"/v1/workflows/push/batch":{"post":{"parameters":[],"operationId":"postV1WorkflowsPushBatch","tags":["workflows"],"summary":"Push multiple workflows from CLI","description":"Batch upsert workflows parsed from TypeScript source.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["workflows"],"properties":{"workflows":{"type":"array","items":{"type":"object","required":["slug","name","sourceTs","sourceHash","steps","transitions","triggerType"],"properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"sourceTs":{"type":"string"},"sourceHash":{"type":"string"},"steps":{"type":"array","items":{"type":"object","required":["id","type","name","position","config"],"properties":{"id":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"position":{"type":"object","required":["x","y"],"properties":{"x":{"type":"number"},"y":{"type":"number"}}},"config":{}}}},"transitions":{"type":"array","items":{"type":"object","required":["id","fromStepId","toStepId"],"properties":{"id":{"type":"string"},"fromStepId":{"type":"string"},"toStepId":{"type":"string"},"condition":{"type":"object","required":["branch"],"properties":{"branch":{"type":"string"}}}}}},"triggerType":{"type":"string"},"triggerConfig":{},"settings":{"type":"object","properties":{"allowReentry":{"type":"boolean"},"reentryDelaySeconds":{"type":"number"},"maxConcurrentExecutions":{"type":"number"},"contactCooldownSeconds":{"type":"number"}}},"defaults":{"type":"object","properties":{"from":{"type":"string"},"fromName":{"type":"string"},"replyTo":{"type":"string"},"senderId":{"type":"string"}}},"cliProjectPath":{"type":"string"},"force":{"type":"boolean"},"draft":{"type":"boolean"}}}}}}},"multipart/form-data":{"schema":{"type":"object","required":["workflows"],"properties":{"workflows":{"type":"array","items":{"type":"object","required":["slug","name","sourceTs","sourceHash","steps","transitions","triggerType"],"properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"sourceTs":{"type":"string"},"sourceHash":{"type":"string"},"steps":{"type":"array","items":{"type":"object","required":["id","type","name","position","config"],"properties":{"id":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"position":{"type":"object","required":["x","y"],"properties":{"x":{"type":"number"},"y":{"type":"number"}}},"config":{}}}},"transitions":{"type":"array","items":{"type":"object","required":["id","fromStepId","toStepId"],"properties":{"id":{"type":"string"},"fromStepId":{"type":"string"},"toStepId":{"type":"string"},"condition":{"type":"object","required":["branch"],"properties":{"branch":{"type":"string"}}}}}},"triggerType":{"type":"string"},"triggerConfig":{},"settings":{"type":"object","properties":{"allowReentry":{"type":"boolean"},"reentryDelaySeconds":{"type":"number"},"maxConcurrentExecutions":{"type":"number"},"contactCooldownSeconds":{"type":"number"}}},"defaults":{"type":"object","properties":{"from":{"type":"string"},"fromName":{"type":"string"},"replyTo":{"type":"string"},"senderId":{"type":"string"}}},"cliProjectPath":{"type":"string"},"force":{"type":"boolean"},"draft":{"type":"boolean"}}}}}}},"text/plain":{"schema":{"type":"object","required":["workflows"],"properties":{"workflows":{"type":"array","items":{"type":"object","required":["slug","name","sourceTs","sourceHash","steps","transitions","triggerType"],"properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"sourceTs":{"type":"string"},"sourceHash":{"type":"string"},"steps":{"type":"array","items":{"type":"object","required":["id","type","name","position","config"],"properties":{"id":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"position":{"type":"object","required":["x","y"],"properties":{"x":{"type":"number"},"y":{"type":"number"}}},"config":{}}}},"transitions":{"type":"array","items":{"type":"object","required":["id","fromStepId","toStepId"],"properties":{"id":{"type":"string"},"fromStepId":{"type":"string"},"toStepId":{"type":"string"},"condition":{"type":"object","required":["branch"],"properties":{"branch":{"type":"string"}}}}}},"triggerType":{"type":"string"},"triggerConfig":{},"settings":{"type":"object","properties":{"allowReentry":{"type":"boolean"},"reentryDelaySeconds":{"type":"number"},"maxConcurrentExecutions":{"type":"number"},"contactCooldownSeconds":{"type":"number"}}},"defaults":{"type":"object","properties":{"from":{"type":"string"},"fromName":{"type":"string"},"replyTo":{"type":"string"},"senderId":{"type":"string"}}},"cliProjectPath":{"type":"string"},"force":{"type":"boolean"},"draft":{"type":"boolean"}}}}}}}}},"responses":{"200":{}}}},"/v1/workflows/pull":{"get":{"operationId":"getV1WorkflowsPull","tags":["workflows"],"summary":"Pull workflows for CLI sync","description":"Returns all workflows pushed from CLI with their TypeScript source.","responses":{"200":{}}}},"/tools/email-check":{"post":{"parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"domain":{"type":"string"},"checkedAt":{"type":"string"},"duration":{"type":"number"},"score":{"type":"object","required":["grade","score","maxScore","breakdown"],"properties":{"grade":{"type":"string"},"score":{"type":"number"},"maxScore":{"type":"number"},"breakdown":{"additionalProperties":true,"type":"object","properties":{}}}},"spf":{"type":"object","required":["exists","valid","record","lookupCount","lookupLimit","allMechanism","includes","hasPtr","warnings"],"properties":{"exists":{"type":"boolean"},"valid":{"type":"boolean"},"record":{"anyOf":[{"type":"string"},{"type":"null"}]},"lookupCount":{"type":"number"},"lookupLimit":{"type":"number"},"allMechanism":{"anyOf":[{"type":"string"},{"type":"null"}]},"includes":{"type":"array","items":{"type":"string"}},"hasPtr":{"type":"boolean"},"warnings":{"type":"array","items":{"type":"string"}}}},"dkim":{"type":"object","required":["found","selectorsFound","selectorsChecked","warnings"],"properties":{"found":{"type":"boolean"},"selectorsFound":{"type":"array","items":{"type":"object","required":["selector","keyType","keyBits","testMode"],"properties":{"selector":{"type":"string"},"keyType":{"anyOf":[{"type":"string"},{"type":"null"}]},"keyBits":{"anyOf":[{"type":"number"},{"type":"null"}]},"testMode":{"type":"boolean"}}}},"selectorsChecked":{"type":"number"},"warnings":{"type":"array","items":{"type":"string"}}}},"dmarc":{"type":"object","required":["exists","valid","record","policy","subdomainPolicy","reportingEnabled","pct","alignmentSpf","alignmentDkim","ruaAddresses","warnings"],"properties":{"exists":{"type":"boolean"},"valid":{"type":"boolean"},"record":{"anyOf":[{"type":"string"},{"type":"null"}]},"policy":{"anyOf":[{"type":"string"},{"type":"null"}]},"subdomainPolicy":{"anyOf":[{"type":"string"},{"type":"null"}]},"reportingEnabled":{"type":"boolean"},"pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"alignmentSpf":{"anyOf":[{"type":"string"},{"type":"null"}]},"alignmentDkim":{"anyOf":[{"type":"string"},{"type":"null"}]},"ruaAddresses":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","items":{"type":"string"}}}},"mx":{"type":"object","required":["exists","hasRedundancy","records"],"properties":{"exists":{"type":"boolean"},"hasRedundancy":{"type":"boolean"},"records":{"type":"array","items":{"type":"object","required":["exchange","priority","resolves","ipv4Count","ipv6Count"],"properties":{"exchange":{"type":"string"},"priority":{"type":"number"},"resolves":{"type":"boolean"},"ipv4Count":{"type":"number"},"ipv6Count":{"type":"number"}}}}}},"domainAge":{"type":"object","required":["ageInDays","createdAt","expiresAt","daysUntilExpiry","registrar","source","privacyEnabled"],"properties":{"ageInDays":{"anyOf":[{"type":"number"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"daysUntilExpiry":{"anyOf":[{"type":"number"},{"type":"null"}]},"registrar":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"privacyEnabled":{"type":"boolean"}}},"ipv6":{"type":"object","required":["mxHasIpv6","spfIncludesIpv6","mxIpv6Count"],"properties":{"mxHasIpv6":{"type":"boolean"},"spfIncludesIpv6":{"type":"boolean"},"mxIpv6Count":{"type":"number"}}},"reverseDns":{"type":"object","required":["allHavePtr","allConfirm","count"],"properties":{"allHavePtr":{"type":"boolean"},"allConfirm":{"type":"boolean"},"count":{"type":"number"}}},"blacklist":{"type":"object","required":["checked","overallClean","domainListings","ipListings"],"properties":{"checked":{"type":"boolean"},"overallClean":{"type":"boolean"},"domainListings":{"type":"array","items":{"type":"object","required":["blacklist","priority","delistUrl"],"properties":{"blacklist":{"type":"string"},"priority":{"type":"string"},"delistUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}}}},"ipListings":{"type":"array","items":{"type":"object","required":["blacklist","priority","target","delistUrl"],"properties":{"blacklist":{"type":"string"},"priority":{"type":"string"},"target":{"type":"string"},"delistUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}}},"issues":{"type":"array","items":{"type":"object","required":["check","reason","points","severity"],"properties":{"check":{"type":"string"},"reason":{"type":"string"},"points":{"type":"number"},"severity":{"type":"string"}}}},"bonuses":{"type":"array","items":{"type":"object","required":["check","reason","points"],"properties":{"check":{"type":"string"},"reason":{"type":"string"},"points":{"type":"number"}}}},"error":{"type":"string"}},"required":["success"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"domain":{"type":"string"},"checkedAt":{"type":"string"},"duration":{"type":"number"},"score":{"type":"object","required":["grade","score","maxScore","breakdown"],"properties":{"grade":{"type":"string"},"score":{"type":"number"},"maxScore":{"type":"number"},"breakdown":{"additionalProperties":true,"type":"object","properties":{}}}},"spf":{"type":"object","required":["exists","valid","record","lookupCount","lookupLimit","allMechanism","includes","hasPtr","warnings"],"properties":{"exists":{"type":"boolean"},"valid":{"type":"boolean"},"record":{"anyOf":[{"type":"string"},{"type":"null"}]},"lookupCount":{"type":"number"},"lookupLimit":{"type":"number"},"allMechanism":{"anyOf":[{"type":"string"},{"type":"null"}]},"includes":{"type":"array","items":{"type":"string"}},"hasPtr":{"type":"boolean"},"warnings":{"type":"array","items":{"type":"string"}}}},"dkim":{"type":"object","required":["found","selectorsFound","selectorsChecked","warnings"],"properties":{"found":{"type":"boolean"},"selectorsFound":{"type":"array","items":{"type":"object","required":["selector","keyType","keyBits","testMode"],"properties":{"selector":{"type":"string"},"keyType":{"anyOf":[{"type":"string"},{"type":"null"}]},"keyBits":{"anyOf":[{"type":"number"},{"type":"null"}]},"testMode":{"type":"boolean"}}}},"selectorsChecked":{"type":"number"},"warnings":{"type":"array","items":{"type":"string"}}}},"dmarc":{"type":"object","required":["exists","valid","record","policy","subdomainPolicy","reportingEnabled","pct","alignmentSpf","alignmentDkim","ruaAddresses","warnings"],"properties":{"exists":{"type":"boolean"},"valid":{"type":"boolean"},"record":{"anyOf":[{"type":"string"},{"type":"null"}]},"policy":{"anyOf":[{"type":"string"},{"type":"null"}]},"subdomainPolicy":{"anyOf":[{"type":"string"},{"type":"null"}]},"reportingEnabled":{"type":"boolean"},"pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"alignmentSpf":{"anyOf":[{"type":"string"},{"type":"null"}]},"alignmentDkim":{"anyOf":[{"type":"string"},{"type":"null"}]},"ruaAddresses":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","items":{"type":"string"}}}},"mx":{"type":"object","required":["exists","hasRedundancy","records"],"properties":{"exists":{"type":"boolean"},"hasRedundancy":{"type":"boolean"},"records":{"type":"array","items":{"type":"object","required":["exchange","priority","resolves","ipv4Count","ipv6Count"],"properties":{"exchange":{"type":"string"},"priority":{"type":"number"},"resolves":{"type":"boolean"},"ipv4Count":{"type":"number"},"ipv6Count":{"type":"number"}}}}}},"domainAge":{"type":"object","required":["ageInDays","createdAt","expiresAt","daysUntilExpiry","registrar","source","privacyEnabled"],"properties":{"ageInDays":{"anyOf":[{"type":"number"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"daysUntilExpiry":{"anyOf":[{"type":"number"},{"type":"null"}]},"registrar":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"privacyEnabled":{"type":"boolean"}}},"ipv6":{"type":"object","required":["mxHasIpv6","spfIncludesIpv6","mxIpv6Count"],"properties":{"mxHasIpv6":{"type":"boolean"},"spfIncludesIpv6":{"type":"boolean"},"mxIpv6Count":{"type":"number"}}},"reverseDns":{"type":"object","required":["allHavePtr","allConfirm","count"],"properties":{"allHavePtr":{"type":"boolean"},"allConfirm":{"type":"boolean"},"count":{"type":"number"}}},"blacklist":{"type":"object","required":["checked","overallClean","domainListings","ipListings"],"properties":{"checked":{"type":"boolean"},"overallClean":{"type":"boolean"},"domainListings":{"type":"array","items":{"type":"object","required":["blacklist","priority","delistUrl"],"properties":{"blacklist":{"type":"string"},"priority":{"type":"string"},"delistUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}}}},"ipListings":{"type":"array","items":{"type":"object","required":["blacklist","priority","target","delistUrl"],"properties":{"blacklist":{"type":"string"},"priority":{"type":"string"},"target":{"type":"string"},"delistUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}}},"issues":{"type":"array","items":{"type":"object","required":["check","reason","points","severity"],"properties":{"check":{"type":"string"},"reason":{"type":"string"},"points":{"type":"number"},"severity":{"type":"string"}}}},"bonuses":{"type":"array","items":{"type":"object","required":["check","reason","points"],"properties":{"check":{"type":"string"},"reason":{"type":"string"},"points":{"type":"number"}}}},"error":{"type":"string"}},"required":["success"]}},"text/plain":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"domain":{"type":"string"},"checkedAt":{"type":"string"},"duration":{"type":"number"},"score":{"type":"object","required":["grade","score","maxScore","breakdown"],"properties":{"grade":{"type":"string"},"score":{"type":"number"},"maxScore":{"type":"number"},"breakdown":{"additionalProperties":true,"type":"object","properties":{}}}},"spf":{"type":"object","required":["exists","valid","record","lookupCount","lookupLimit","allMechanism","includes","hasPtr","warnings"],"properties":{"exists":{"type":"boolean"},"valid":{"type":"boolean"},"record":{"anyOf":[{"type":"string"},{"type":"null"}]},"lookupCount":{"type":"number"},"lookupLimit":{"type":"number"},"allMechanism":{"anyOf":[{"type":"string"},{"type":"null"}]},"includes":{"type":"array","items":{"type":"string"}},"hasPtr":{"type":"boolean"},"warnings":{"type":"array","items":{"type":"string"}}}},"dkim":{"type":"object","required":["found","selectorsFound","selectorsChecked","warnings"],"properties":{"found":{"type":"boolean"},"selectorsFound":{"type":"array","items":{"type":"object","required":["selector","keyType","keyBits","testMode"],"properties":{"selector":{"type":"string"},"keyType":{"anyOf":[{"type":"string"},{"type":"null"}]},"keyBits":{"anyOf":[{"type":"number"},{"type":"null"}]},"testMode":{"type":"boolean"}}}},"selectorsChecked":{"type":"number"},"warnings":{"type":"array","items":{"type":"string"}}}},"dmarc":{"type":"object","required":["exists","valid","record","policy","subdomainPolicy","reportingEnabled","pct","alignmentSpf","alignmentDkim","ruaAddresses","warnings"],"properties":{"exists":{"type":"boolean"},"valid":{"type":"boolean"},"record":{"anyOf":[{"type":"string"},{"type":"null"}]},"policy":{"anyOf":[{"type":"string"},{"type":"null"}]},"subdomainPolicy":{"anyOf":[{"type":"string"},{"type":"null"}]},"reportingEnabled":{"type":"boolean"},"pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"alignmentSpf":{"anyOf":[{"type":"string"},{"type":"null"}]},"alignmentDkim":{"anyOf":[{"type":"string"},{"type":"null"}]},"ruaAddresses":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","items":{"type":"string"}}}},"mx":{"type":"object","required":["exists","hasRedundancy","records"],"properties":{"exists":{"type":"boolean"},"hasRedundancy":{"type":"boolean"},"records":{"type":"array","items":{"type":"object","required":["exchange","priority","resolves","ipv4Count","ipv6Count"],"properties":{"exchange":{"type":"string"},"priority":{"type":"number"},"resolves":{"type":"boolean"},"ipv4Count":{"type":"number"},"ipv6Count":{"type":"number"}}}}}},"domainAge":{"type":"object","required":["ageInDays","createdAt","expiresAt","daysUntilExpiry","registrar","source","privacyEnabled"],"properties":{"ageInDays":{"anyOf":[{"type":"number"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"daysUntilExpiry":{"anyOf":[{"type":"number"},{"type":"null"}]},"registrar":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"privacyEnabled":{"type":"boolean"}}},"ipv6":{"type":"object","required":["mxHasIpv6","spfIncludesIpv6","mxIpv6Count"],"properties":{"mxHasIpv6":{"type":"boolean"},"spfIncludesIpv6":{"type":"boolean"},"mxIpv6Count":{"type":"number"}}},"reverseDns":{"type":"object","required":["allHavePtr","allConfirm","count"],"properties":{"allHavePtr":{"type":"boolean"},"allConfirm":{"type":"boolean"},"count":{"type":"number"}}},"blacklist":{"type":"object","required":["checked","overallClean","domainListings","ipListings"],"properties":{"checked":{"type":"boolean"},"overallClean":{"type":"boolean"},"domainListings":{"type":"array","items":{"type":"object","required":["blacklist","priority","delistUrl"],"properties":{"blacklist":{"type":"string"},"priority":{"type":"string"},"delistUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}}}},"ipListings":{"type":"array","items":{"type":"object","required":["blacklist","priority","target","delistUrl"],"properties":{"blacklist":{"type":"string"},"priority":{"type":"string"},"target":{"type":"string"},"delistUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}}},"issues":{"type":"array","items":{"type":"object","required":["check","reason","points","severity"],"properties":{"check":{"type":"string"},"reason":{"type":"string"},"points":{"type":"number"},"severity":{"type":"string"}}}},"bonuses":{"type":"array","items":{"type":"object","required":["check","reason","points"],"properties":{"check":{"type":"string"},"reason":{"type":"string"},"points":{"type":"number"}}}},"error":{"type":"string"}},"required":["success"]}}}}},"operationId":"postToolsEmail-check","tags":["tools"],"summary":"Check email deliverability","description":"Comprehensive email deliverability check for any domain. Returns SPF, DKIM, DMARC status and a grade. Optionally provide DKIM selectors for providers like AWS SES that use random selectors.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domain"],"properties":{"domain":{"minLength":3,"maxLength":255,"description":"Domain to check","type":"string"},"quick":{"description":"Quick mode (skip blacklist checks)","type":"boolean"},"dkimSelector":{"maxLength":100,"description":"Single DKIM selector to check","type":"string"},"dkimSelectors":{"description":"Multiple DKIM selectors to check","type":"array","items":{"maxLength":100,"type":"string"}}}}},"multipart/form-data":{"schema":{"type":"object","required":["domain"],"properties":{"domain":{"minLength":3,"maxLength":255,"description":"Domain to check","type":"string"},"quick":{"description":"Quick mode (skip blacklist checks)","type":"boolean"},"dkimSelector":{"maxLength":100,"description":"Single DKIM selector to check","type":"string"},"dkimSelectors":{"description":"Multiple DKIM selectors to check","type":"array","items":{"maxLength":100,"type":"string"}}}}},"text/plain":{"schema":{"type":"object","required":["domain"],"properties":{"domain":{"minLength":3,"maxLength":255,"description":"Domain to check","type":"string"},"quick":{"description":"Quick mode (skip blacklist checks)","type":"boolean"},"dkimSelector":{"maxLength":100,"description":"Single DKIM selector to check","type":"string"},"dkimSelectors":{"description":"Multiple DKIM selectors to check","type":"array","items":{"maxLength":100,"type":"string"}}}}}}}}},"/tools/email-check/{domain}":{"get":{"parameters":[{"description":"Domain to check","schema":{"type":"string","maxLength":255},"in":"path","name":"domain","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"domain":{"type":"string"},"checkedAt":{"type":"string"},"duration":{"type":"number"},"score":{"type":"object","required":["grade","score","maxScore","breakdown"],"properties":{"grade":{"type":"string"},"score":{"type":"number"},"maxScore":{"type":"number"},"breakdown":{"additionalProperties":true,"type":"object","properties":{}}}},"spf":{"type":"object","required":["exists","valid","record","lookupCount","lookupLimit","allMechanism","includes","hasPtr","warnings"],"properties":{"exists":{"type":"boolean"},"valid":{"type":"boolean"},"record":{"anyOf":[{"type":"string"},{"type":"null"}]},"lookupCount":{"type":"number"},"lookupLimit":{"type":"number"},"allMechanism":{"anyOf":[{"type":"string"},{"type":"null"}]},"includes":{"type":"array","items":{"type":"string"}},"hasPtr":{"type":"boolean"},"warnings":{"type":"array","items":{"type":"string"}}}},"dkim":{"type":"object","required":["found","selectorsFound","selectorsChecked","warnings"],"properties":{"found":{"type":"boolean"},"selectorsFound":{"type":"array","items":{"type":"object","required":["selector","keyType","keyBits","testMode"],"properties":{"selector":{"type":"string"},"keyType":{"anyOf":[{"type":"string"},{"type":"null"}]},"keyBits":{"anyOf":[{"type":"number"},{"type":"null"}]},"testMode":{"type":"boolean"}}}},"selectorsChecked":{"type":"number"},"warnings":{"type":"array","items":{"type":"string"}}}},"dmarc":{"type":"object","required":["exists","valid","record","policy","subdomainPolicy","reportingEnabled","pct","alignmentSpf","alignmentDkim","ruaAddresses","warnings"],"properties":{"exists":{"type":"boolean"},"valid":{"type":"boolean"},"record":{"anyOf":[{"type":"string"},{"type":"null"}]},"policy":{"anyOf":[{"type":"string"},{"type":"null"}]},"subdomainPolicy":{"anyOf":[{"type":"string"},{"type":"null"}]},"reportingEnabled":{"type":"boolean"},"pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"alignmentSpf":{"anyOf":[{"type":"string"},{"type":"null"}]},"alignmentDkim":{"anyOf":[{"type":"string"},{"type":"null"}]},"ruaAddresses":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","items":{"type":"string"}}}},"mx":{"type":"object","required":["exists","hasRedundancy","records"],"properties":{"exists":{"type":"boolean"},"hasRedundancy":{"type":"boolean"},"records":{"type":"array","items":{"type":"object","required":["exchange","priority","resolves","ipv4Count","ipv6Count"],"properties":{"exchange":{"type":"string"},"priority":{"type":"number"},"resolves":{"type":"boolean"},"ipv4Count":{"type":"number"},"ipv6Count":{"type":"number"}}}}}},"domainAge":{"type":"object","required":["ageInDays","createdAt","expiresAt","daysUntilExpiry","registrar","source","privacyEnabled"],"properties":{"ageInDays":{"anyOf":[{"type":"number"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"daysUntilExpiry":{"anyOf":[{"type":"number"},{"type":"null"}]},"registrar":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"privacyEnabled":{"type":"boolean"}}},"ipv6":{"type":"object","required":["mxHasIpv6","spfIncludesIpv6","mxIpv6Count"],"properties":{"mxHasIpv6":{"type":"boolean"},"spfIncludesIpv6":{"type":"boolean"},"mxIpv6Count":{"type":"number"}}},"reverseDns":{"type":"object","required":["allHavePtr","allConfirm","count"],"properties":{"allHavePtr":{"type":"boolean"},"allConfirm":{"type":"boolean"},"count":{"type":"number"}}},"blacklist":{"type":"object","required":["checked","overallClean","domainListings","ipListings"],"properties":{"checked":{"type":"boolean"},"overallClean":{"type":"boolean"},"domainListings":{"type":"array","items":{"type":"object","required":["blacklist","priority","delistUrl"],"properties":{"blacklist":{"type":"string"},"priority":{"type":"string"},"delistUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}}}},"ipListings":{"type":"array","items":{"type":"object","required":["blacklist","priority","target","delistUrl"],"properties":{"blacklist":{"type":"string"},"priority":{"type":"string"},"target":{"type":"string"},"delistUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}}},"issues":{"type":"array","items":{"type":"object","required":["check","reason","points","severity"],"properties":{"check":{"type":"string"},"reason":{"type":"string"},"points":{"type":"number"},"severity":{"type":"string"}}}},"bonuses":{"type":"array","items":{"type":"object","required":["check","reason","points"],"properties":{"check":{"type":"string"},"reason":{"type":"string"},"points":{"type":"number"}}}},"error":{"type":"string"}},"required":["success"]}},"multipart/form-data":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"domain":{"type":"string"},"checkedAt":{"type":"string"},"duration":{"type":"number"},"score":{"type":"object","required":["grade","score","maxScore","breakdown"],"properties":{"grade":{"type":"string"},"score":{"type":"number"},"maxScore":{"type":"number"},"breakdown":{"additionalProperties":true,"type":"object","properties":{}}}},"spf":{"type":"object","required":["exists","valid","record","lookupCount","lookupLimit","allMechanism","includes","hasPtr","warnings"],"properties":{"exists":{"type":"boolean"},"valid":{"type":"boolean"},"record":{"anyOf":[{"type":"string"},{"type":"null"}]},"lookupCount":{"type":"number"},"lookupLimit":{"type":"number"},"allMechanism":{"anyOf":[{"type":"string"},{"type":"null"}]},"includes":{"type":"array","items":{"type":"string"}},"hasPtr":{"type":"boolean"},"warnings":{"type":"array","items":{"type":"string"}}}},"dkim":{"type":"object","required":["found","selectorsFound","selectorsChecked","warnings"],"properties":{"found":{"type":"boolean"},"selectorsFound":{"type":"array","items":{"type":"object","required":["selector","keyType","keyBits","testMode"],"properties":{"selector":{"type":"string"},"keyType":{"anyOf":[{"type":"string"},{"type":"null"}]},"keyBits":{"anyOf":[{"type":"number"},{"type":"null"}]},"testMode":{"type":"boolean"}}}},"selectorsChecked":{"type":"number"},"warnings":{"type":"array","items":{"type":"string"}}}},"dmarc":{"type":"object","required":["exists","valid","record","policy","subdomainPolicy","reportingEnabled","pct","alignmentSpf","alignmentDkim","ruaAddresses","warnings"],"properties":{"exists":{"type":"boolean"},"valid":{"type":"boolean"},"record":{"anyOf":[{"type":"string"},{"type":"null"}]},"policy":{"anyOf":[{"type":"string"},{"type":"null"}]},"subdomainPolicy":{"anyOf":[{"type":"string"},{"type":"null"}]},"reportingEnabled":{"type":"boolean"},"pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"alignmentSpf":{"anyOf":[{"type":"string"},{"type":"null"}]},"alignmentDkim":{"anyOf":[{"type":"string"},{"type":"null"}]},"ruaAddresses":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","items":{"type":"string"}}}},"mx":{"type":"object","required":["exists","hasRedundancy","records"],"properties":{"exists":{"type":"boolean"},"hasRedundancy":{"type":"boolean"},"records":{"type":"array","items":{"type":"object","required":["exchange","priority","resolves","ipv4Count","ipv6Count"],"properties":{"exchange":{"type":"string"},"priority":{"type":"number"},"resolves":{"type":"boolean"},"ipv4Count":{"type":"number"},"ipv6Count":{"type":"number"}}}}}},"domainAge":{"type":"object","required":["ageInDays","createdAt","expiresAt","daysUntilExpiry","registrar","source","privacyEnabled"],"properties":{"ageInDays":{"anyOf":[{"type":"number"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"daysUntilExpiry":{"anyOf":[{"type":"number"},{"type":"null"}]},"registrar":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"privacyEnabled":{"type":"boolean"}}},"ipv6":{"type":"object","required":["mxHasIpv6","spfIncludesIpv6","mxIpv6Count"],"properties":{"mxHasIpv6":{"type":"boolean"},"spfIncludesIpv6":{"type":"boolean"},"mxIpv6Count":{"type":"number"}}},"reverseDns":{"type":"object","required":["allHavePtr","allConfirm","count"],"properties":{"allHavePtr":{"type":"boolean"},"allConfirm":{"type":"boolean"},"count":{"type":"number"}}},"blacklist":{"type":"object","required":["checked","overallClean","domainListings","ipListings"],"properties":{"checked":{"type":"boolean"},"overallClean":{"type":"boolean"},"domainListings":{"type":"array","items":{"type":"object","required":["blacklist","priority","delistUrl"],"properties":{"blacklist":{"type":"string"},"priority":{"type":"string"},"delistUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}}}},"ipListings":{"type":"array","items":{"type":"object","required":["blacklist","priority","target","delistUrl"],"properties":{"blacklist":{"type":"string"},"priority":{"type":"string"},"target":{"type":"string"},"delistUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}}},"issues":{"type":"array","items":{"type":"object","required":["check","reason","points","severity"],"properties":{"check":{"type":"string"},"reason":{"type":"string"},"points":{"type":"number"},"severity":{"type":"string"}}}},"bonuses":{"type":"array","items":{"type":"object","required":["check","reason","points"],"properties":{"check":{"type":"string"},"reason":{"type":"string"},"points":{"type":"number"}}}},"error":{"type":"string"}},"required":["success"]}},"text/plain":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"domain":{"type":"string"},"checkedAt":{"type":"string"},"duration":{"type":"number"},"score":{"type":"object","required":["grade","score","maxScore","breakdown"],"properties":{"grade":{"type":"string"},"score":{"type":"number"},"maxScore":{"type":"number"},"breakdown":{"additionalProperties":true,"type":"object","properties":{}}}},"spf":{"type":"object","required":["exists","valid","record","lookupCount","lookupLimit","allMechanism","includes","hasPtr","warnings"],"properties":{"exists":{"type":"boolean"},"valid":{"type":"boolean"},"record":{"anyOf":[{"type":"string"},{"type":"null"}]},"lookupCount":{"type":"number"},"lookupLimit":{"type":"number"},"allMechanism":{"anyOf":[{"type":"string"},{"type":"null"}]},"includes":{"type":"array","items":{"type":"string"}},"hasPtr":{"type":"boolean"},"warnings":{"type":"array","items":{"type":"string"}}}},"dkim":{"type":"object","required":["found","selectorsFound","selectorsChecked","warnings"],"properties":{"found":{"type":"boolean"},"selectorsFound":{"type":"array","items":{"type":"object","required":["selector","keyType","keyBits","testMode"],"properties":{"selector":{"type":"string"},"keyType":{"anyOf":[{"type":"string"},{"type":"null"}]},"keyBits":{"anyOf":[{"type":"number"},{"type":"null"}]},"testMode":{"type":"boolean"}}}},"selectorsChecked":{"type":"number"},"warnings":{"type":"array","items":{"type":"string"}}}},"dmarc":{"type":"object","required":["exists","valid","record","policy","subdomainPolicy","reportingEnabled","pct","alignmentSpf","alignmentDkim","ruaAddresses","warnings"],"properties":{"exists":{"type":"boolean"},"valid":{"type":"boolean"},"record":{"anyOf":[{"type":"string"},{"type":"null"}]},"policy":{"anyOf":[{"type":"string"},{"type":"null"}]},"subdomainPolicy":{"anyOf":[{"type":"string"},{"type":"null"}]},"reportingEnabled":{"type":"boolean"},"pct":{"anyOf":[{"type":"number"},{"type":"null"}]},"alignmentSpf":{"anyOf":[{"type":"string"},{"type":"null"}]},"alignmentDkim":{"anyOf":[{"type":"string"},{"type":"null"}]},"ruaAddresses":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","items":{"type":"string"}}}},"mx":{"type":"object","required":["exists","hasRedundancy","records"],"properties":{"exists":{"type":"boolean"},"hasRedundancy":{"type":"boolean"},"records":{"type":"array","items":{"type":"object","required":["exchange","priority","resolves","ipv4Count","ipv6Count"],"properties":{"exchange":{"type":"string"},"priority":{"type":"number"},"resolves":{"type":"boolean"},"ipv4Count":{"type":"number"},"ipv6Count":{"type":"number"}}}}}},"domainAge":{"type":"object","required":["ageInDays","createdAt","expiresAt","daysUntilExpiry","registrar","source","privacyEnabled"],"properties":{"ageInDays":{"anyOf":[{"type":"number"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"daysUntilExpiry":{"anyOf":[{"type":"number"},{"type":"null"}]},"registrar":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"privacyEnabled":{"type":"boolean"}}},"ipv6":{"type":"object","required":["mxHasIpv6","spfIncludesIpv6","mxIpv6Count"],"properties":{"mxHasIpv6":{"type":"boolean"},"spfIncludesIpv6":{"type":"boolean"},"mxIpv6Count":{"type":"number"}}},"reverseDns":{"type":"object","required":["allHavePtr","allConfirm","count"],"properties":{"allHavePtr":{"type":"boolean"},"allConfirm":{"type":"boolean"},"count":{"type":"number"}}},"blacklist":{"type":"object","required":["checked","overallClean","domainListings","ipListings"],"properties":{"checked":{"type":"boolean"},"overallClean":{"type":"boolean"},"domainListings":{"type":"array","items":{"type":"object","required":["blacklist","priority","delistUrl"],"properties":{"blacklist":{"type":"string"},"priority":{"type":"string"},"delistUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}}}},"ipListings":{"type":"array","items":{"type":"object","required":["blacklist","priority","target","delistUrl"],"properties":{"blacklist":{"type":"string"},"priority":{"type":"string"},"target":{"type":"string"},"delistUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}}},"issues":{"type":"array","items":{"type":"object","required":["check","reason","points","severity"],"properties":{"check":{"type":"string"},"reason":{"type":"string"},"points":{"type":"number"},"severity":{"type":"string"}}}},"bonuses":{"type":"array","items":{"type":"object","required":["check","reason","points"],"properties":{"check":{"type":"string"},"reason":{"type":"string"},"points":{"type":"number"}}}},"error":{"type":"string"}},"required":["success"]}}}}},"operationId":"getToolsEmail-checkByDomain","tags":["tools"],"summary":"Check email deliverability (GET)","description":"Quick email deliverability check for any domain via GET request."}},"/v1/workflow-schedules/{workflowId}/enable":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"workflowId","required":true}],"operationId":"postV1Workflow-schedulesByWorkflowIdEnable","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["cronExpression"],"properties":{"cronExpression":{"type":"string"},"timezone":{"type":"string"}}}},"multipart/form-data":{"schema":{"type":"object","required":["cronExpression"],"properties":{"cronExpression":{"type":"string"},"timezone":{"type":"string"}}}},"text/plain":{"schema":{"type":"object","required":["cronExpression"],"properties":{"cronExpression":{"type":"string"},"timezone":{"type":"string"}}}}}},"responses":{"200":{}}}},"/v1/workflow-schedules/{workflowId}/disable":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"workflowId","required":true}],"operationId":"postV1Workflow-schedulesByWorkflowIdDisable","responses":{"200":{}}}},"/v1/workflow-schedules/{workflowId}":{"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"workflowId","required":true}],"operationId":"putV1Workflow-schedulesByWorkflowId","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["cronExpression"],"properties":{"cronExpression":{"type":"string"},"timezone":{"type":"string"}}}},"multipart/form-data":{"schema":{"type":"object","required":["cronExpression"],"properties":{"cronExpression":{"type":"string"},"timezone":{"type":"string"}}}},"text/plain":{"schema":{"type":"object","required":["cronExpression"],"properties":{"cronExpression":{"type":"string"},"timezone":{"type":"string"}}}}}},"responses":{"200":{}}}}}}