@apteva/integrations 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/apps/activecampaign.json +209 -0
- package/src/apps/activecollab.json +417 -0
- package/src/apps/airtable.json +235 -0
- package/src/apps/alpaca-trading.json +1554 -0
- package/src/apps/amadeus.json +225 -0
- package/src/apps/anthropic-api.json +96 -0
- package/src/apps/apify.json +203 -0
- package/src/apps/apollo.json +748 -0
- package/src/apps/apple-podcasts.json +116 -0
- package/src/apps/archive-api.json +104 -0
- package/src/apps/archive.json +151 -0
- package/src/apps/arduino-cloud.json +301 -0
- package/src/apps/arest.json +492 -0
- package/src/apps/asana.json +184 -0
- package/src/apps/ashby.json +176 -0
- package/src/apps/assemblyai.json +163 -0
- package/src/apps/attio.json +243 -0
- package/src/apps/aws-cloudfront.json +132 -0
- package/src/apps/aws-dynamodb.json +295 -0
- package/src/apps/aws-ec2.json +184 -0
- package/src/apps/aws-lambda.json +361 -0
- package/src/apps/aws-route53.json +110 -0
- package/src/apps/aws-s3.json +303 -0
- package/src/apps/aws-ses.json +556 -0
- package/src/apps/aws-sns.json +217 -0
- package/src/apps/aws-sqs.json +234 -0
- package/src/apps/axiom.json +123 -0
- package/src/apps/beehiiv.json +252 -0
- package/src/apps/binance-trading.json +555 -0
- package/src/apps/bitly.json +175 -0
- package/src/apps/bloobirds.json +246 -0
- package/src/apps/bluesky.json +201 -0
- package/src/apps/blynk.json +316 -0
- package/src/apps/booking-com.json +144 -0
- package/src/apps/box.json +289 -0
- package/src/apps/brevo.json +1423 -0
- package/src/apps/browse-ai.json +148 -0
- package/src/apps/bunny-cdn.json +330 -0
- package/src/apps/bunny-stream.json +387 -0
- package/src/apps/cal-com.json +240 -0
- package/src/apps/calendly.json +578 -0
- package/src/apps/calflow-calendar.json +706 -0
- package/src/apps/callrail.json +190 -0
- package/src/apps/canva.json +197 -0
- package/src/apps/cartesia.json +201 -0
- package/src/apps/castbase.json +753 -0
- package/src/apps/chargebee.json +226 -0
- package/src/apps/cleanster.json +359 -0
- package/src/apps/clicksend.json +278 -0
- package/src/apps/clickup.json +266 -0
- package/src/apps/clipkit.json +517 -0
- package/src/apps/close.json +359 -0
- package/src/apps/cloudflare.json +329 -0
- package/src/apps/cloudinary.json +164 -0
- package/src/apps/coda.json +288 -0
- package/src/apps/cohere.json +158 -0
- package/src/apps/coinbase.json +268 -0
- package/src/apps/composio.json +146 -0
- package/src/apps/confluence.json +270 -0
- package/src/apps/consensus.json +879 -0
- package/src/apps/contabo.json +733 -0
- package/src/apps/convertkit.json +211 -0
- package/src/apps/core-image.json +426 -0
- package/src/apps/core-video.json +1246 -0
- package/src/apps/craftcloud.json +298 -0
- package/src/apps/datadog.json +401 -0
- package/src/apps/dataforseo.json +1273 -0
- package/src/apps/deepseek.json +150 -0
- package/src/apps/dialpad.json +229 -0
- package/src/apps/discord.json +239 -0
- package/src/apps/dnsimple.json +405 -0
- package/src/apps/docusign.json +214 -0
- package/src/apps/docx.json +282 -0
- package/src/apps/dropbox.json +185 -0
- package/src/apps/duffel.json +231 -0
- package/src/apps/dux-soup.json +694 -0
- package/src/apps/dynadot.json +250 -0
- package/src/apps/elevenlabs.json +327 -0
- package/src/apps/eventbrite-events.json +598 -0
- package/src/apps/facebook-ads.json +1399 -0
- package/src/apps/facebook-api.json +282 -0
- package/src/apps/fal-ai.json +400 -0
- package/src/apps/fathom.json +86 -0
- package/src/apps/figma.json +162 -0
- package/src/apps/filestack.json +159 -0
- package/src/apps/firebase.json +271 -0
- package/src/apps/firecrawl.json +278 -0
- package/src/apps/folk.json +564 -0
- package/src/apps/forecast-app.json +377 -0
- package/src/apps/freshdesk.json +283 -0
- package/src/apps/gemini.json +528 -0
- package/src/apps/ghost.json +439 -0
- package/src/apps/gigs-marketplace.json +1442 -0
- package/src/apps/github.json +1479 -47
- package/src/apps/gitlab.json +448 -0
- package/src/apps/gmail.json +839 -28
- package/src/apps/gohighlevel.json +596 -0
- package/src/apps/google-ads.json +270 -0
- package/src/apps/google-calendar.json +996 -36
- package/src/apps/google-docs.json +278 -0
- package/src/apps/google-drive.json +360 -0
- package/src/apps/google-maps.json +473 -0
- package/src/apps/google-sheets.json +330 -0
- package/src/apps/gooten.json +411 -0
- package/src/apps/gravity-forms.json +385 -0
- package/src/apps/gusto.json +171 -0
- package/src/apps/hackernews.json +221 -0
- package/src/apps/harmonic.json +86 -0
- package/src/apps/helpscout.json +664 -0
- package/src/apps/hetzner.json +658 -0
- package/src/apps/heygen.json +184 -0
- package/src/apps/heyreach.json +388 -0
- package/src/apps/hospitable.json +340 -0
- package/src/apps/hostinger.json +374 -0
- package/src/apps/hubspot.json +682 -0
- package/src/apps/huggingface.json +97 -0
- package/src/apps/hunter.json +504 -0
- package/src/apps/ig-trading.json +849 -0
- package/src/apps/imaterialise.json +349 -0
- package/src/apps/instagram-api.json +538 -0
- package/src/apps/intercom.json +648 -0
- package/src/apps/jira.json +226 -0
- package/src/apps/klaviyo.json +199 -0
- package/src/apps/kling-ai.json +206 -0
- package/src/apps/kraken.json +870 -0
- package/src/apps/late.json +1056 -0
- package/src/apps/leadpages.json +243 -0
- package/src/apps/learning-platform.json +2244 -0
- package/src/apps/linear.json +184 -57
- package/src/apps/linkedin.json +179 -0
- package/src/apps/listen-notes.json +136 -0
- package/src/apps/lnk-bio.json +125 -0
- package/src/apps/loom.json +188 -0
- package/src/apps/luma.json +280 -0
- package/src/apps/mailchimp.json +238 -0
- package/src/apps/mailgun.json +310 -0
- package/src/apps/manychat.json +312 -0
- package/src/apps/marin-software.json +843 -0
- package/src/apps/media-downloader.json +157 -0
- package/src/apps/meetup-events.json +361 -0
- package/src/apps/meshy.json +248 -0
- package/src/apps/microsoft-teams.json +162 -0
- package/src/apps/monday.json +213 -0
- package/src/apps/mongodb-atlas.json +467 -0
- package/src/apps/namecheap.json +252 -0
- package/src/apps/nexar.json +289 -0
- package/src/apps/notion.json +530 -50
- package/src/apps/omnikit-analytics.json +374 -0
- package/src/apps/omnikit-api-gateway.json +660 -0
- package/src/apps/omnikit-billing.json +1781 -0
- package/src/apps/omnikit-cms.json +899 -0
- package/src/apps/omnikit-functions.json +329 -0
- package/src/apps/omnikit-intelligence.json +650 -0
- package/src/apps/omnikit-management.json +214 -0
- package/src/apps/omnikit-media.json +646 -0
- package/src/apps/omnikit-messaging.json +1826 -0
- package/src/apps/omnikit-redirects.json +209 -0
- package/src/apps/omnikit-webhooks.json +269 -0
- package/src/apps/omnikit-workflows.json +323 -0
- package/src/apps/openai-api.json +462 -0
- package/src/apps/openmeteo-weather.json +75 -0
- package/src/apps/optinmonster.json +244 -0
- package/src/apps/paidkit.json +1218 -0
- package/src/apps/paypal.json +254 -0
- package/src/apps/pdf.json +366 -0
- package/src/apps/pipedrive.json +255 -0
- package/src/apps/polymarket.json +653 -0
- package/src/apps/porkbun.json +417 -0
- package/src/apps/portfolio.json +501 -0
- package/src/apps/postmark.json +257 -0
- package/src/apps/printful.json +273 -0
- package/src/apps/printify.json +295 -0
- package/src/apps/producthunt.json +346 -0
- package/src/apps/pushover-notifications.json +113 -0
- package/src/apps/qonto.json +366 -0
- package/src/apps/quickbooks.json +234 -0
- package/src/apps/replicate.json +106 -0
- package/src/apps/rss.json +281 -0
- package/src/apps/salesflow.json +538 -0
- package/src/apps/salesforce-crm.json +216 -0
- package/src/apps/sap.json +256 -0
- package/src/apps/scaleway.json +911 -0
- package/src/apps/sculpteo.json +234 -0
- package/src/apps/sendgrid-email.json +233 -0
- package/src/apps/sendgrid.json +160 -35
- package/src/apps/shapeways.json +188 -0
- package/src/apps/shopify.json +1217 -0
- package/src/apps/skai.json +779 -0
- package/src/apps/slack.json +228 -38
- package/src/apps/slant3d.json +231 -0
- package/src/apps/slides.json +760 -0
- package/src/apps/smartly.json +504 -0
- package/src/apps/snov.json +467 -0
- package/src/apps/socialcast.json +553 -63
- package/src/apps/square.json +274 -0
- package/src/apps/storage-management.json +788 -0
- package/src/apps/storylane.json +180 -0
- package/src/apps/strapi.json +338 -0
- package/src/apps/stripe-payments.json +847 -0
- package/src/apps/stripe.json +472 -35
- package/src/apps/supabase.json +169 -0
- package/src/apps/supademo.json +115 -0
- package/src/apps/taskflow.json +714 -0
- package/src/apps/teamwork.json +457 -0
- package/src/apps/telegram.json +444 -0
- package/src/apps/thinger.json +458 -0
- package/src/apps/ticktick.json +169 -0
- package/src/apps/tiktok-api.json +406 -0
- package/src/apps/todoist.json +151 -0
- package/src/apps/together.json +123 -0
- package/src/apps/torrent.json +267 -0
- package/src/apps/trading.json +1012 -0
- package/src/apps/trading212.json +383 -0
- package/src/apps/trello.json +205 -0
- package/src/apps/tripo.json +157 -0
- package/src/apps/twilio.json +1008 -0
- package/src/apps/twitter-ads.json +875 -0
- package/src/apps/twitter-api.json +1151 -0
- package/src/apps/twitterapiio.json +548 -0
- package/src/apps/typeform.json +210 -0
- package/src/apps/vidforge.json +1020 -0
- package/src/apps/vonage.json +394 -0
- package/src/apps/vultr.json +225 -0
- package/src/apps/webflow.json +223 -0
- package/src/apps/wise.json +273 -0
- package/src/apps/wistia.json +283 -0
- package/src/apps/woocommerce.json +288 -0
- package/src/apps/wordpress.json +1675 -0
- package/src/apps/xero.json +257 -0
- package/src/apps/youtube-api.json +861 -0
- package/src/apps/zendesk.json +295 -0
- package/src/apps/zite.json +173 -0
- package/src/apps/zoho-crm.json +386 -0
- package/src/apps/zoo.json +193 -0
- package/src/apps/zoom.json +334 -0
|
@@ -0,0 +1,1826 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "omnikit-messaging",
|
|
3
|
+
"name": "OmniKit Messaging",
|
|
4
|
+
"description": "Comprehensive messaging and marketing automation system with template management, contact segmentation, campaign orchestration, and multi-channel delivery",
|
|
5
|
+
"logo": "https://cdn.omnikit.co/cdn/project-10/public/10_1770556267491_eecb0n/603050903_10162713420734412_6016628635295692734_n.jpg",
|
|
6
|
+
"categories": [
|
|
7
|
+
"messaging",
|
|
8
|
+
"email",
|
|
9
|
+
"sms",
|
|
10
|
+
"campaigns",
|
|
11
|
+
"marketing",
|
|
12
|
+
"automation",
|
|
13
|
+
"analytics",
|
|
14
|
+
"omnikit"
|
|
15
|
+
],
|
|
16
|
+
"base_url": "https://api.omnikit.co",
|
|
17
|
+
"auth": {
|
|
18
|
+
"types": [
|
|
19
|
+
"bearer"
|
|
20
|
+
],
|
|
21
|
+
"headers": {
|
|
22
|
+
"Authorization": "Bearer {{token}}"
|
|
23
|
+
},
|
|
24
|
+
"credential_fields": [
|
|
25
|
+
{
|
|
26
|
+
"name": "token",
|
|
27
|
+
"label": "API Key"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"tools": [
|
|
32
|
+
{
|
|
33
|
+
"name": "create_template",
|
|
34
|
+
"description": "Create a reusable email or SMS template. IMPORTANT: Set category='campaign' for marketing campaigns, 'transactional' for receipts/notifications, 'automation' for welcome series. Returns a template ID (UUID) - save this ID to use in create-campaign. Unsubscribe link is added automatically - do NOT include it in your content. Does NOT send anything.",
|
|
35
|
+
"method": "POST",
|
|
36
|
+
"path": "/messaging/templates",
|
|
37
|
+
"input_schema": {
|
|
38
|
+
"type": "object",
|
|
39
|
+
"properties": {
|
|
40
|
+
"name": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"description": "Template name"
|
|
43
|
+
},
|
|
44
|
+
"content": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"description": "Message content object with channel-specific fields (e.g., {html, text} for email, {body} for SMS)"
|
|
47
|
+
},
|
|
48
|
+
"channel": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"enum": [
|
|
51
|
+
"email",
|
|
52
|
+
"push",
|
|
53
|
+
"sms",
|
|
54
|
+
"slack",
|
|
55
|
+
"webhook",
|
|
56
|
+
"in_app"
|
|
57
|
+
],
|
|
58
|
+
"default": "email",
|
|
59
|
+
"description": "Communication channel"
|
|
60
|
+
},
|
|
61
|
+
"category": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"enum": [
|
|
64
|
+
"transactional",
|
|
65
|
+
"campaign",
|
|
66
|
+
"automation"
|
|
67
|
+
],
|
|
68
|
+
"default": "transactional",
|
|
69
|
+
"description": "IMPORTANT - choose correctly: 'campaign' for marketing emails/broadcasts sent via create-campaign, 'transactional' for individual receipts/notifications, 'automation' for triggered sequences. For campaigns, you MUST set this to 'campaign'."
|
|
70
|
+
},
|
|
71
|
+
"subject": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"description": "Message subject (required for email channel)"
|
|
74
|
+
},
|
|
75
|
+
"variables": {
|
|
76
|
+
"type": "array",
|
|
77
|
+
"items": {
|
|
78
|
+
"type": "string"
|
|
79
|
+
},
|
|
80
|
+
"description": "List of template variables (optional, will be auto-extracted)"
|
|
81
|
+
},
|
|
82
|
+
"tags": {
|
|
83
|
+
"type": "array",
|
|
84
|
+
"items": {
|
|
85
|
+
"type": "string"
|
|
86
|
+
},
|
|
87
|
+
"description": "Template tags for organization"
|
|
88
|
+
},
|
|
89
|
+
"created_by": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"description": "User ID who created the template (optional)"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"required": [
|
|
95
|
+
"name",
|
|
96
|
+
"content"
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"name": "list_templates",
|
|
102
|
+
"description": "List all saved email/SMS templates for a project. Use this to find a template_id before creating a campaign.",
|
|
103
|
+
"method": "GET",
|
|
104
|
+
"path": "/messaging/templates",
|
|
105
|
+
"input_schema": {
|
|
106
|
+
"type": "object",
|
|
107
|
+
"properties": {
|
|
108
|
+
"channel": {
|
|
109
|
+
"type": "string",
|
|
110
|
+
"enum": [
|
|
111
|
+
"email",
|
|
112
|
+
"sms",
|
|
113
|
+
"push",
|
|
114
|
+
"slack",
|
|
115
|
+
"webhook",
|
|
116
|
+
"in_app"
|
|
117
|
+
],
|
|
118
|
+
"description": "Filter by channel (optional)"
|
|
119
|
+
},
|
|
120
|
+
"category": {
|
|
121
|
+
"type": "string",
|
|
122
|
+
"enum": [
|
|
123
|
+
"transactional",
|
|
124
|
+
"campaign",
|
|
125
|
+
"automation"
|
|
126
|
+
],
|
|
127
|
+
"description": "Filter by category: transactional, campaign, or automation (optional)"
|
|
128
|
+
},
|
|
129
|
+
"search": {
|
|
130
|
+
"type": "string",
|
|
131
|
+
"description": "Search in template name and content (optional)"
|
|
132
|
+
},
|
|
133
|
+
"tags": {
|
|
134
|
+
"type": "array",
|
|
135
|
+
"items": {
|
|
136
|
+
"type": "string"
|
|
137
|
+
},
|
|
138
|
+
"description": "Filter by tags (optional)"
|
|
139
|
+
},
|
|
140
|
+
"is_active": {
|
|
141
|
+
"type": "boolean",
|
|
142
|
+
"description": "Filter by active status (optional)"
|
|
143
|
+
},
|
|
144
|
+
"limit": {
|
|
145
|
+
"type": "integer",
|
|
146
|
+
"minimum": 1,
|
|
147
|
+
"maximum": 100,
|
|
148
|
+
"default": 20,
|
|
149
|
+
"description": "Number of templates to return (optional)"
|
|
150
|
+
},
|
|
151
|
+
"offset": {
|
|
152
|
+
"type": "integer",
|
|
153
|
+
"minimum": 0,
|
|
154
|
+
"default": 0,
|
|
155
|
+
"description": "Pagination offset (optional)"
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"name": "update_template",
|
|
162
|
+
"description": "Update an existing email or SMS template. Modify name, subject, content, category, tags, or active status. Variables in content are auto-extracted. Unsubscribe link is added automatically - do NOT include it in your content.",
|
|
163
|
+
"method": "PUT",
|
|
164
|
+
"path": "/messaging/templates/%7B%7Bid%7D%7D",
|
|
165
|
+
"input_schema": {
|
|
166
|
+
"type": "object",
|
|
167
|
+
"properties": {
|
|
168
|
+
"id": {
|
|
169
|
+
"type": "string",
|
|
170
|
+
"description": "Template ID to update (required)"
|
|
171
|
+
},
|
|
172
|
+
"name": {
|
|
173
|
+
"type": "string",
|
|
174
|
+
"description": "New template name"
|
|
175
|
+
},
|
|
176
|
+
"subject": {
|
|
177
|
+
"type": "string",
|
|
178
|
+
"description": "New message subject (for email channel)"
|
|
179
|
+
},
|
|
180
|
+
"content": {
|
|
181
|
+
"type": "object",
|
|
182
|
+
"description": "New message content object with channel-specific fields (e.g., {html, text} for email, {body} for SMS)"
|
|
183
|
+
},
|
|
184
|
+
"category": {
|
|
185
|
+
"type": "string",
|
|
186
|
+
"enum": [
|
|
187
|
+
"transactional",
|
|
188
|
+
"campaign",
|
|
189
|
+
"automation"
|
|
190
|
+
],
|
|
191
|
+
"description": "Template category: transactional (individual messages), campaign (broadcasts), automation (flow-triggered)"
|
|
192
|
+
},
|
|
193
|
+
"tags": {
|
|
194
|
+
"type": "array",
|
|
195
|
+
"items": {
|
|
196
|
+
"type": "string"
|
|
197
|
+
},
|
|
198
|
+
"description": "Template tags for organization"
|
|
199
|
+
},
|
|
200
|
+
"is_active": {
|
|
201
|
+
"type": "boolean",
|
|
202
|
+
"description": "Whether template is active"
|
|
203
|
+
},
|
|
204
|
+
"updated_by": {
|
|
205
|
+
"type": "string",
|
|
206
|
+
"description": "User ID making the update"
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
"required": [
|
|
210
|
+
"id"
|
|
211
|
+
]
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"name": "get_template",
|
|
216
|
+
"description": "Get a message template by ID or name",
|
|
217
|
+
"method": "GET",
|
|
218
|
+
"path": "/messaging/templates/%7B%7Bid%7D%7D",
|
|
219
|
+
"input_schema": {
|
|
220
|
+
"type": "object",
|
|
221
|
+
"properties": {
|
|
222
|
+
"id": {
|
|
223
|
+
"type": "string",
|
|
224
|
+
"description": "Template ID"
|
|
225
|
+
},
|
|
226
|
+
"name": {
|
|
227
|
+
"type": "string",
|
|
228
|
+
"description": "Template name (alternative to id)"
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"name": "create_contact",
|
|
235
|
+
"description": "Add a new contact to the messaging system. Requires at least one of: email, phone, pushToken, slackUserId, or user_id. If contact already exists, returns existing_contact_id in the data field - use that ID to send messages.",
|
|
236
|
+
"method": "POST",
|
|
237
|
+
"path": "/messaging/contacts",
|
|
238
|
+
"input_schema": {
|
|
239
|
+
"type": "object",
|
|
240
|
+
"properties": {
|
|
241
|
+
"user_id": {
|
|
242
|
+
"type": "string",
|
|
243
|
+
"description": "User ID (one of: user_id, email, phone, pushToken, slackUserId required)"
|
|
244
|
+
},
|
|
245
|
+
"email": {
|
|
246
|
+
"type": "string",
|
|
247
|
+
"format": "email",
|
|
248
|
+
"description": "Contact email address"
|
|
249
|
+
},
|
|
250
|
+
"phone": {
|
|
251
|
+
"type": "string",
|
|
252
|
+
"description": "Contact phone number"
|
|
253
|
+
},
|
|
254
|
+
"pushToken": {
|
|
255
|
+
"type": "string",
|
|
256
|
+
"description": "Push notification token"
|
|
257
|
+
},
|
|
258
|
+
"slackUserId": {
|
|
259
|
+
"type": "string",
|
|
260
|
+
"description": "Slack user ID"
|
|
261
|
+
},
|
|
262
|
+
"attributes": {
|
|
263
|
+
"type": "object",
|
|
264
|
+
"description": "Custom contact attributes",
|
|
265
|
+
"default": {}
|
|
266
|
+
},
|
|
267
|
+
"preferences": {
|
|
268
|
+
"type": "object",
|
|
269
|
+
"description": "Contact communication preferences",
|
|
270
|
+
"default": {}
|
|
271
|
+
},
|
|
272
|
+
"tags": {
|
|
273
|
+
"type": "array",
|
|
274
|
+
"items": {
|
|
275
|
+
"type": "string"
|
|
276
|
+
},
|
|
277
|
+
"description": "Contact tags"
|
|
278
|
+
},
|
|
279
|
+
"status": {
|
|
280
|
+
"type": "string",
|
|
281
|
+
"enum": [
|
|
282
|
+
"active",
|
|
283
|
+
"unsubscribed",
|
|
284
|
+
"bounced",
|
|
285
|
+
"complained",
|
|
286
|
+
"inactive"
|
|
287
|
+
],
|
|
288
|
+
"default": "active",
|
|
289
|
+
"description": "Contact status"
|
|
290
|
+
},
|
|
291
|
+
"created_by": {
|
|
292
|
+
"type": "string",
|
|
293
|
+
"description": "User ID who created the contact (optional)"
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"name": "get_contact",
|
|
300
|
+
"description": "Get a specific messaging contact by ID",
|
|
301
|
+
"method": "GET",
|
|
302
|
+
"path": "/messaging/contacts/%7B%7Bid%7D%7D",
|
|
303
|
+
"input_schema": {
|
|
304
|
+
"type": "object",
|
|
305
|
+
"properties": {
|
|
306
|
+
"id": {
|
|
307
|
+
"type": "string",
|
|
308
|
+
"description": "Contact ID to retrieve"
|
|
309
|
+
}
|
|
310
|
+
},
|
|
311
|
+
"required": [
|
|
312
|
+
"id"
|
|
313
|
+
]
|
|
314
|
+
}
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"name": "list_contacts",
|
|
318
|
+
"description": "List contacts with filtering and pagination",
|
|
319
|
+
"method": "GET",
|
|
320
|
+
"path": "/messaging/contacts",
|
|
321
|
+
"input_schema": {
|
|
322
|
+
"type": "object",
|
|
323
|
+
"properties": {
|
|
324
|
+
"status": {
|
|
325
|
+
"type": "string",
|
|
326
|
+
"enum": [
|
|
327
|
+
"active",
|
|
328
|
+
"unsubscribed",
|
|
329
|
+
"bounced",
|
|
330
|
+
"complained",
|
|
331
|
+
"inactive"
|
|
332
|
+
],
|
|
333
|
+
"description": "Filter by contact status"
|
|
334
|
+
},
|
|
335
|
+
"tags": {
|
|
336
|
+
"type": "array",
|
|
337
|
+
"items": {
|
|
338
|
+
"type": "string"
|
|
339
|
+
},
|
|
340
|
+
"description": "Filter by tags"
|
|
341
|
+
},
|
|
342
|
+
"search": {
|
|
343
|
+
"type": "string",
|
|
344
|
+
"description": "Search in email, phone, and attributes"
|
|
345
|
+
},
|
|
346
|
+
"limit": {
|
|
347
|
+
"type": "integer",
|
|
348
|
+
"default": 20,
|
|
349
|
+
"description": "Number of contacts to return (max 100)"
|
|
350
|
+
},
|
|
351
|
+
"offset": {
|
|
352
|
+
"type": "integer",
|
|
353
|
+
"default": 0,
|
|
354
|
+
"description": "Number of contacts to skip"
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"name": "update_contact",
|
|
361
|
+
"description": "Update an existing contact",
|
|
362
|
+
"method": "PUT",
|
|
363
|
+
"path": "/messaging/contacts/%7B%7Bid%7D%7D",
|
|
364
|
+
"input_schema": {
|
|
365
|
+
"type": "object",
|
|
366
|
+
"properties": {
|
|
367
|
+
"id": {
|
|
368
|
+
"type": "string",
|
|
369
|
+
"description": "Contact ID to update (required)"
|
|
370
|
+
},
|
|
371
|
+
"email": {
|
|
372
|
+
"type": "string",
|
|
373
|
+
"description": "Contact email address"
|
|
374
|
+
},
|
|
375
|
+
"phone": {
|
|
376
|
+
"type": "string",
|
|
377
|
+
"description": "Contact phone number"
|
|
378
|
+
},
|
|
379
|
+
"push_token": {
|
|
380
|
+
"type": "string",
|
|
381
|
+
"description": "Push notification token"
|
|
382
|
+
},
|
|
383
|
+
"attributes": {
|
|
384
|
+
"type": "object",
|
|
385
|
+
"description": "Custom contact attributes"
|
|
386
|
+
},
|
|
387
|
+
"tags": {
|
|
388
|
+
"type": "array",
|
|
389
|
+
"items": {
|
|
390
|
+
"type": "string"
|
|
391
|
+
},
|
|
392
|
+
"description": "Contact tags"
|
|
393
|
+
},
|
|
394
|
+
"preferences": {
|
|
395
|
+
"type": "object",
|
|
396
|
+
"description": "Contact messaging preferences"
|
|
397
|
+
},
|
|
398
|
+
"status": {
|
|
399
|
+
"type": "string",
|
|
400
|
+
"enum": [
|
|
401
|
+
"active",
|
|
402
|
+
"unsubscribed",
|
|
403
|
+
"bounced",
|
|
404
|
+
"complained",
|
|
405
|
+
"inactive"
|
|
406
|
+
],
|
|
407
|
+
"description": "Contact status"
|
|
408
|
+
}
|
|
409
|
+
},
|
|
410
|
+
"required": [
|
|
411
|
+
"id"
|
|
412
|
+
]
|
|
413
|
+
}
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"name": "create_campaign",
|
|
417
|
+
"description": "Create an email/SMS campaign. WORKFLOW: 1) Call create-template with category='campaign', save returned ID (UUID like '8e3b305e-...'), 2) Call create-segment, save returned ID, 3) Call this with those UUIDs. IDs are UUIDs from API responses, NOT names you create. Creates draft - use launch-campaign to send.",
|
|
418
|
+
"method": "POST",
|
|
419
|
+
"path": "/messaging/campaigns",
|
|
420
|
+
"input_schema": {
|
|
421
|
+
"type": "object",
|
|
422
|
+
"properties": {
|
|
423
|
+
"name": {
|
|
424
|
+
"type": "string",
|
|
425
|
+
"description": "Campaign name (required)"
|
|
426
|
+
},
|
|
427
|
+
"template_id": {
|
|
428
|
+
"type": "string",
|
|
429
|
+
"format": "uuid",
|
|
430
|
+
"description": "UUID from create-template response (e.g., '8e3b305e-38d1-44c6-a545-87c28b43bc24'). NOT a name - must be actual ID. Template must have category='campaign'."
|
|
431
|
+
},
|
|
432
|
+
"segment_id": {
|
|
433
|
+
"type": "string",
|
|
434
|
+
"format": "uuid",
|
|
435
|
+
"description": "UUID from create-segment response. NOT a name - must be actual ID from the API response."
|
|
436
|
+
},
|
|
437
|
+
"channel": {
|
|
438
|
+
"type": "string",
|
|
439
|
+
"enum": [
|
|
440
|
+
"email",
|
|
441
|
+
"sms",
|
|
442
|
+
"push",
|
|
443
|
+
"multi"
|
|
444
|
+
],
|
|
445
|
+
"description": "Communication channel (required)"
|
|
446
|
+
},
|
|
447
|
+
"description": {
|
|
448
|
+
"type": "string",
|
|
449
|
+
"description": "Campaign description (optional)"
|
|
450
|
+
},
|
|
451
|
+
"scheduled_at": {
|
|
452
|
+
"type": "string",
|
|
453
|
+
"format": "date-time",
|
|
454
|
+
"description": "When to send the campaign (ISO 8601)"
|
|
455
|
+
},
|
|
456
|
+
"timezone": {
|
|
457
|
+
"type": "string",
|
|
458
|
+
"default": "UTC",
|
|
459
|
+
"description": "Timezone for scheduling"
|
|
460
|
+
},
|
|
461
|
+
"send_immediately": {
|
|
462
|
+
"type": "boolean",
|
|
463
|
+
"default": false,
|
|
464
|
+
"description": "Send immediately instead of scheduling"
|
|
465
|
+
},
|
|
466
|
+
"delivery_settings": {
|
|
467
|
+
"type": "object",
|
|
468
|
+
"description": "Delivery configuration",
|
|
469
|
+
"properties": {
|
|
470
|
+
"rate_limit": {
|
|
471
|
+
"type": "integer",
|
|
472
|
+
"description": "Messages per minute"
|
|
473
|
+
},
|
|
474
|
+
"retry_failed": {
|
|
475
|
+
"type": "boolean",
|
|
476
|
+
"default": true
|
|
477
|
+
},
|
|
478
|
+
"track_opens": {
|
|
479
|
+
"type": "boolean",
|
|
480
|
+
"default": true
|
|
481
|
+
},
|
|
482
|
+
"track_clicks": {
|
|
483
|
+
"type": "boolean",
|
|
484
|
+
"default": true
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
},
|
|
489
|
+
"required": [
|
|
490
|
+
"name",
|
|
491
|
+
"template_id",
|
|
492
|
+
"segment_id",
|
|
493
|
+
"channel"
|
|
494
|
+
]
|
|
495
|
+
}
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
"name": "list_campaigns",
|
|
499
|
+
"description": "List CAMPAIGNS (actual send instances). Campaigns use templates and target segments. This returns campaigns, NOT templates.",
|
|
500
|
+
"method": "GET",
|
|
501
|
+
"path": "/messaging/campaigns",
|
|
502
|
+
"input_schema": {
|
|
503
|
+
"type": "object",
|
|
504
|
+
"properties": {
|
|
505
|
+
"status": {
|
|
506
|
+
"type": "string",
|
|
507
|
+
"enum": [
|
|
508
|
+
"draft",
|
|
509
|
+
"scheduled",
|
|
510
|
+
"sending",
|
|
511
|
+
"sent",
|
|
512
|
+
"paused",
|
|
513
|
+
"failed",
|
|
514
|
+
"cancelled"
|
|
515
|
+
],
|
|
516
|
+
"description": "Filter by campaign status"
|
|
517
|
+
},
|
|
518
|
+
"channel": {
|
|
519
|
+
"type": "string",
|
|
520
|
+
"enum": [
|
|
521
|
+
"email",
|
|
522
|
+
"sms",
|
|
523
|
+
"push",
|
|
524
|
+
"multi"
|
|
525
|
+
],
|
|
526
|
+
"description": "Filter by communication channel"
|
|
527
|
+
},
|
|
528
|
+
"limit": {
|
|
529
|
+
"type": "integer",
|
|
530
|
+
"default": 20,
|
|
531
|
+
"minimum": 1,
|
|
532
|
+
"maximum": 100,
|
|
533
|
+
"description": "Number of campaigns to return"
|
|
534
|
+
},
|
|
535
|
+
"offset": {
|
|
536
|
+
"type": "integer",
|
|
537
|
+
"default": 0,
|
|
538
|
+
"minimum": 0,
|
|
539
|
+
"description": "Offset for pagination"
|
|
540
|
+
},
|
|
541
|
+
"sort": {
|
|
542
|
+
"type": "string",
|
|
543
|
+
"default": "created_at:desc",
|
|
544
|
+
"description": "Sort order (e.g., created_at:desc, name:asc, scheduled_at:desc)"
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
"name": "get_campaign",
|
|
551
|
+
"description": "Get details of a specific CAMPAIGN by ID. Returns campaign configuration, stats, and metadata.",
|
|
552
|
+
"method": "GET",
|
|
553
|
+
"path": "/messaging/campaigns/%7B%7Bid%7D%7D",
|
|
554
|
+
"input_schema": {
|
|
555
|
+
"type": "object",
|
|
556
|
+
"properties": {
|
|
557
|
+
"id": {
|
|
558
|
+
"type": "string",
|
|
559
|
+
"description": "Campaign ID (required)"
|
|
560
|
+
}
|
|
561
|
+
},
|
|
562
|
+
"required": [
|
|
563
|
+
"id"
|
|
564
|
+
]
|
|
565
|
+
}
|
|
566
|
+
},
|
|
567
|
+
{
|
|
568
|
+
"name": "update_campaign",
|
|
569
|
+
"description": "Update a CAMPAIGN's details (name, description, channel, template, segment, sender, schedule, tracking, send settings). Can only update campaigns that haven't been sent yet.",
|
|
570
|
+
"method": "PUT",
|
|
571
|
+
"path": "/messaging/campaigns/%7B%7Bid%7D%7D",
|
|
572
|
+
"input_schema": {
|
|
573
|
+
"type": "object",
|
|
574
|
+
"properties": {
|
|
575
|
+
"id": {
|
|
576
|
+
"type": "string",
|
|
577
|
+
"description": "Campaign ID (required)"
|
|
578
|
+
},
|
|
579
|
+
"name": {
|
|
580
|
+
"type": "string",
|
|
581
|
+
"description": "Campaign name"
|
|
582
|
+
},
|
|
583
|
+
"description": {
|
|
584
|
+
"type": "string",
|
|
585
|
+
"description": "Campaign description"
|
|
586
|
+
},
|
|
587
|
+
"channel": {
|
|
588
|
+
"type": "string",
|
|
589
|
+
"enum": [
|
|
590
|
+
"email",
|
|
591
|
+
"sms",
|
|
592
|
+
"push",
|
|
593
|
+
"multi"
|
|
594
|
+
],
|
|
595
|
+
"description": "Communication channel"
|
|
596
|
+
},
|
|
597
|
+
"template_id": {
|
|
598
|
+
"type": "string",
|
|
599
|
+
"description": "Message template ID"
|
|
600
|
+
},
|
|
601
|
+
"segment_id": {
|
|
602
|
+
"type": "string",
|
|
603
|
+
"description": "Target segment ID"
|
|
604
|
+
},
|
|
605
|
+
"sender_id": {
|
|
606
|
+
"type": "string",
|
|
607
|
+
"description": "Sender ID (verified email/phone to send from)"
|
|
608
|
+
},
|
|
609
|
+
"schedule": {
|
|
610
|
+
"type": "object",
|
|
611
|
+
"description": "Schedule configuration (e.g., {type: 'scheduled', send_at: '2024-12-25T10:00:00Z'})"
|
|
612
|
+
},
|
|
613
|
+
"tracking": {
|
|
614
|
+
"type": "object",
|
|
615
|
+
"description": "Tracking configuration (e.g., {track_opens: true, track_clicks: true})"
|
|
616
|
+
},
|
|
617
|
+
"send_settings": {
|
|
618
|
+
"type": "object",
|
|
619
|
+
"description": "Send settings (e.g., {rate_limit: 100, retry_failed: true})"
|
|
620
|
+
},
|
|
621
|
+
"updated_by": {
|
|
622
|
+
"type": "string",
|
|
623
|
+
"description": "User ID making the update"
|
|
624
|
+
}
|
|
625
|
+
},
|
|
626
|
+
"required": [
|
|
627
|
+
"id"
|
|
628
|
+
]
|
|
629
|
+
}
|
|
630
|
+
},
|
|
631
|
+
{
|
|
632
|
+
"name": "delete_campaign",
|
|
633
|
+
"description": "Delete/cancel a CAMPAIGN. Can only delete campaigns that haven't been sent yet. Use with caution.",
|
|
634
|
+
"method": "DELETE",
|
|
635
|
+
"path": "/messaging/campaigns/%7B%7Bid%7D%7D",
|
|
636
|
+
"input_schema": {
|
|
637
|
+
"type": "object",
|
|
638
|
+
"properties": {
|
|
639
|
+
"id": {
|
|
640
|
+
"type": "string",
|
|
641
|
+
"description": "Campaign ID to delete (required)"
|
|
642
|
+
},
|
|
643
|
+
"deleted_by": {
|
|
644
|
+
"type": "string",
|
|
645
|
+
"description": "User ID performing the deletion"
|
|
646
|
+
}
|
|
647
|
+
},
|
|
648
|
+
"required": [
|
|
649
|
+
"id"
|
|
650
|
+
]
|
|
651
|
+
}
|
|
652
|
+
},
|
|
653
|
+
{
|
|
654
|
+
"name": "send_message",
|
|
655
|
+
"description": "Send a standalone one-off message directly to a contact or email/phone. Provide either contactId OR 'to' (email/phone) - if 'to' is used without contactId, will auto-find or create a contact. This is for promotional/transactional messages, NOT for replying to customer support conversations. For conversation replies, use omnikit-messaging-conversation-reply instead.",
|
|
656
|
+
"method": "POST",
|
|
657
|
+
"path": "/messaging/messages/send",
|
|
658
|
+
"input_schema": {
|
|
659
|
+
"type": "object",
|
|
660
|
+
"properties": {
|
|
661
|
+
"contactId": {
|
|
662
|
+
"type": "string",
|
|
663
|
+
"description": "Contact ID to send to (required if 'to' not provided)"
|
|
664
|
+
},
|
|
665
|
+
"to": {
|
|
666
|
+
"type": "string",
|
|
667
|
+
"description": "Direct email address or phone number to send to. If no contactId provided, will auto-find or create a contact. Example: 'user@example.com' for email, '+1234567890' for SMS."
|
|
668
|
+
},
|
|
669
|
+
"contactName": {
|
|
670
|
+
"type": "string",
|
|
671
|
+
"description": "Optional name for auto-created contact (e.g., 'John Doe'). Only used when 'to' creates a new contact."
|
|
672
|
+
},
|
|
673
|
+
"channel": {
|
|
674
|
+
"type": "string",
|
|
675
|
+
"enum": [
|
|
676
|
+
"email",
|
|
677
|
+
"sms",
|
|
678
|
+
"push",
|
|
679
|
+
"slack",
|
|
680
|
+
"webhook",
|
|
681
|
+
"in_app"
|
|
682
|
+
],
|
|
683
|
+
"default": "email",
|
|
684
|
+
"description": "Delivery channel (required)"
|
|
685
|
+
},
|
|
686
|
+
"templateId": {
|
|
687
|
+
"type": "string",
|
|
688
|
+
"description": "Template ID to use (optional, or provide content)"
|
|
689
|
+
},
|
|
690
|
+
"content": {
|
|
691
|
+
"type": "object",
|
|
692
|
+
"description": "Message content (required if no templateId). For EMAIL: use {\"html\": \"<html>...</html>\", \"text\": \"plain text fallback\"}. For PUSH: use {\"title\": \"...\", \"body\": \"...\", \"action_url\": \"...\"}. For SMS/OTHER: use {\"body\": \"...\"}. HTML is fully supported for email channel.",
|
|
693
|
+
"properties": {
|
|
694
|
+
"html": {
|
|
695
|
+
"type": "string",
|
|
696
|
+
"description": "HTML content for email (supports full HTML with inline styles)"
|
|
697
|
+
},
|
|
698
|
+
"text": {
|
|
699
|
+
"type": "string",
|
|
700
|
+
"description": "Plain text fallback for email"
|
|
701
|
+
},
|
|
702
|
+
"body": {
|
|
703
|
+
"type": "string",
|
|
704
|
+
"description": "Body text for SMS/push/other channels"
|
|
705
|
+
},
|
|
706
|
+
"title": {
|
|
707
|
+
"type": "string",
|
|
708
|
+
"description": "Title for push notifications"
|
|
709
|
+
},
|
|
710
|
+
"action_url": {
|
|
711
|
+
"type": "string",
|
|
712
|
+
"description": "Action URL for push notifications"
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
},
|
|
716
|
+
"subject": {
|
|
717
|
+
"type": "string",
|
|
718
|
+
"description": "Message subject (for email/push)"
|
|
719
|
+
},
|
|
720
|
+
"templateData": {
|
|
721
|
+
"type": "object",
|
|
722
|
+
"description": "Data for template variable substitution",
|
|
723
|
+
"default": {}
|
|
724
|
+
},
|
|
725
|
+
"conversationId": {
|
|
726
|
+
"type": "string",
|
|
727
|
+
"description": "Conversation ID (optional)"
|
|
728
|
+
},
|
|
729
|
+
"campaignId": {
|
|
730
|
+
"type": "string",
|
|
731
|
+
"description": "Campaign ID (optional)"
|
|
732
|
+
},
|
|
733
|
+
"scheduledAt": {
|
|
734
|
+
"type": "string",
|
|
735
|
+
"format": "date-time",
|
|
736
|
+
"description": "Schedule delivery for later (optional)"
|
|
737
|
+
},
|
|
738
|
+
"created_by": {
|
|
739
|
+
"type": "string",
|
|
740
|
+
"description": "User ID who sent the message (optional)"
|
|
741
|
+
}
|
|
742
|
+
},
|
|
743
|
+
"required": [
|
|
744
|
+
"channel"
|
|
745
|
+
]
|
|
746
|
+
}
|
|
747
|
+
},
|
|
748
|
+
{
|
|
749
|
+
"name": "create_segment",
|
|
750
|
+
"description": "Create a new contact segment with filtering rules",
|
|
751
|
+
"method": "POST",
|
|
752
|
+
"path": "/messaging/segments",
|
|
753
|
+
"input_schema": {
|
|
754
|
+
"type": "object",
|
|
755
|
+
"properties": {
|
|
756
|
+
"name": {
|
|
757
|
+
"type": "string",
|
|
758
|
+
"description": "Segment name (required)"
|
|
759
|
+
},
|
|
760
|
+
"rules": {
|
|
761
|
+
"type": "object",
|
|
762
|
+
"description": "Filtering rules for segment membership. Structure: {operator: 'AND'|'OR', conditions: [{field, operator, value}]}. Operators: equals, not_equals, contains, starts_with, greater_than, less_than, in, not_in, exists, not_exists"
|
|
763
|
+
},
|
|
764
|
+
"description": {
|
|
765
|
+
"type": "string",
|
|
766
|
+
"description": "Segment description (optional)"
|
|
767
|
+
},
|
|
768
|
+
"type": {
|
|
769
|
+
"type": "string",
|
|
770
|
+
"enum": [
|
|
771
|
+
"static",
|
|
772
|
+
"dynamic"
|
|
773
|
+
],
|
|
774
|
+
"default": "dynamic",
|
|
775
|
+
"description": "Segment type: 'dynamic' auto-updates based on rules, 'static' is a fixed list"
|
|
776
|
+
},
|
|
777
|
+
"tags": {
|
|
778
|
+
"type": "array",
|
|
779
|
+
"items": {
|
|
780
|
+
"type": "string"
|
|
781
|
+
},
|
|
782
|
+
"description": "Segment tags"
|
|
783
|
+
}
|
|
784
|
+
},
|
|
785
|
+
"required": [
|
|
786
|
+
"name",
|
|
787
|
+
"rules"
|
|
788
|
+
]
|
|
789
|
+
}
|
|
790
|
+
},
|
|
791
|
+
{
|
|
792
|
+
"name": "list_segments",
|
|
793
|
+
"description": "List all contact segments with filtering and pagination",
|
|
794
|
+
"method": "GET",
|
|
795
|
+
"path": "/messaging/segments",
|
|
796
|
+
"input_schema": {
|
|
797
|
+
"type": "object",
|
|
798
|
+
"properties": {
|
|
799
|
+
"is_active": {
|
|
800
|
+
"type": "boolean",
|
|
801
|
+
"description": "Filter by active status"
|
|
802
|
+
},
|
|
803
|
+
"search": {
|
|
804
|
+
"type": "string",
|
|
805
|
+
"description": "Search in segment name and description"
|
|
806
|
+
},
|
|
807
|
+
"created_by": {
|
|
808
|
+
"type": "string",
|
|
809
|
+
"description": "Filter by creator user ID"
|
|
810
|
+
},
|
|
811
|
+
"limit": {
|
|
812
|
+
"type": "integer",
|
|
813
|
+
"minimum": 1,
|
|
814
|
+
"maximum": 100,
|
|
815
|
+
"default": 20,
|
|
816
|
+
"description": "Number of segments to return"
|
|
817
|
+
},
|
|
818
|
+
"offset": {
|
|
819
|
+
"type": "integer",
|
|
820
|
+
"minimum": 0,
|
|
821
|
+
"default": 0,
|
|
822
|
+
"description": "Number of segments to skip"
|
|
823
|
+
},
|
|
824
|
+
"sort": {
|
|
825
|
+
"type": "string",
|
|
826
|
+
"pattern": "^(name|created_at|updated_at):(asc|desc)$",
|
|
827
|
+
"default": "created_at:desc",
|
|
828
|
+
"description": "Sort field and direction"
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
},
|
|
833
|
+
{
|
|
834
|
+
"name": "update_segment",
|
|
835
|
+
"description": "Update an existing contact segment's name, description, or filters",
|
|
836
|
+
"method": "PUT",
|
|
837
|
+
"path": "/messaging/segments/%7B%7Bid%7D%7D",
|
|
838
|
+
"input_schema": {
|
|
839
|
+
"type": "object",
|
|
840
|
+
"properties": {
|
|
841
|
+
"id": {
|
|
842
|
+
"type": "string",
|
|
843
|
+
"description": "Segment ID (required)"
|
|
844
|
+
},
|
|
845
|
+
"name": {
|
|
846
|
+
"type": "string",
|
|
847
|
+
"description": "New segment name"
|
|
848
|
+
},
|
|
849
|
+
"description": {
|
|
850
|
+
"type": "string",
|
|
851
|
+
"description": "New segment description"
|
|
852
|
+
},
|
|
853
|
+
"filters": {
|
|
854
|
+
"type": "object",
|
|
855
|
+
"description": "New filtering rules"
|
|
856
|
+
},
|
|
857
|
+
"is_active": {
|
|
858
|
+
"type": "boolean",
|
|
859
|
+
"description": "Whether segment is active"
|
|
860
|
+
}
|
|
861
|
+
},
|
|
862
|
+
"required": [
|
|
863
|
+
"id"
|
|
864
|
+
]
|
|
865
|
+
}
|
|
866
|
+
},
|
|
867
|
+
{
|
|
868
|
+
"name": "delete_segment",
|
|
869
|
+
"description": "Delete a contact segment (cannot be undone)",
|
|
870
|
+
"method": "DELETE",
|
|
871
|
+
"path": "/messaging/segments/%7B%7Bid%7D%7D",
|
|
872
|
+
"input_schema": {
|
|
873
|
+
"type": "object",
|
|
874
|
+
"properties": {
|
|
875
|
+
"id": {
|
|
876
|
+
"type": "string",
|
|
877
|
+
"description": "Segment ID to delete (required)"
|
|
878
|
+
}
|
|
879
|
+
},
|
|
880
|
+
"required": [
|
|
881
|
+
"id"
|
|
882
|
+
]
|
|
883
|
+
}
|
|
884
|
+
},
|
|
885
|
+
{
|
|
886
|
+
"name": "refresh_segment",
|
|
887
|
+
"description": "Manually refresh segment membership based on current filter rules",
|
|
888
|
+
"method": "POST",
|
|
889
|
+
"path": "/messaging/segments/%7B%7Bsegment_id%7D%7D/refresh",
|
|
890
|
+
"input_schema": {
|
|
891
|
+
"type": "object",
|
|
892
|
+
"properties": {
|
|
893
|
+
"segment_id": {
|
|
894
|
+
"type": "string",
|
|
895
|
+
"description": "Segment ID to refresh (required)"
|
|
896
|
+
}
|
|
897
|
+
},
|
|
898
|
+
"required": [
|
|
899
|
+
"segment_id"
|
|
900
|
+
]
|
|
901
|
+
}
|
|
902
|
+
},
|
|
903
|
+
{
|
|
904
|
+
"name": "test_campaign",
|
|
905
|
+
"description": "Send a test email for a campaign to verify content and rendering before sending to the full audience",
|
|
906
|
+
"method": "POST",
|
|
907
|
+
"path": "/messaging/campaigns/%7B%7Bcampaign_id%7D%7D/test",
|
|
908
|
+
"input_schema": {
|
|
909
|
+
"type": "object",
|
|
910
|
+
"properties": {
|
|
911
|
+
"campaign_id": {
|
|
912
|
+
"type": "string",
|
|
913
|
+
"description": "Campaign ID to test (required)"
|
|
914
|
+
},
|
|
915
|
+
"test_email": {
|
|
916
|
+
"type": "string",
|
|
917
|
+
"format": "email",
|
|
918
|
+
"description": "Email address to send test to (required)"
|
|
919
|
+
},
|
|
920
|
+
"test_name": {
|
|
921
|
+
"type": "string",
|
|
922
|
+
"default": "Test User",
|
|
923
|
+
"description": "Name of test recipient for personalization"
|
|
924
|
+
},
|
|
925
|
+
"created_by": {
|
|
926
|
+
"type": "string",
|
|
927
|
+
"description": "User ID sending the test"
|
|
928
|
+
}
|
|
929
|
+
},
|
|
930
|
+
"required": [
|
|
931
|
+
"campaign_id",
|
|
932
|
+
"test_email"
|
|
933
|
+
]
|
|
934
|
+
}
|
|
935
|
+
},
|
|
936
|
+
{
|
|
937
|
+
"name": "launch_campaign",
|
|
938
|
+
"description": "Execute and send a campaign to its target audience. Campaign must be created first with create-campaign.",
|
|
939
|
+
"method": "POST",
|
|
940
|
+
"path": "/messaging/campaigns/%7B%7Bcampaign_id%7D%7D/launch",
|
|
941
|
+
"input_schema": {
|
|
942
|
+
"type": "object",
|
|
943
|
+
"properties": {
|
|
944
|
+
"campaign_id": {
|
|
945
|
+
"type": "string",
|
|
946
|
+
"description": "Campaign ID to launch (required)"
|
|
947
|
+
},
|
|
948
|
+
"launched_by": {
|
|
949
|
+
"type": "string",
|
|
950
|
+
"description": "User ID who is launching the campaign (optional)"
|
|
951
|
+
}
|
|
952
|
+
},
|
|
953
|
+
"required": [
|
|
954
|
+
"campaign_id"
|
|
955
|
+
]
|
|
956
|
+
}
|
|
957
|
+
},
|
|
958
|
+
{
|
|
959
|
+
"name": "list_conversations",
|
|
960
|
+
"description": "List conversations in a project with filtering, searching, and pagination",
|
|
961
|
+
"method": "GET",
|
|
962
|
+
"path": "/messaging/conversations",
|
|
963
|
+
"input_schema": {
|
|
964
|
+
"type": "object",
|
|
965
|
+
"properties": {
|
|
966
|
+
"status": {
|
|
967
|
+
"type": "string",
|
|
968
|
+
"enum": [
|
|
969
|
+
"active",
|
|
970
|
+
"pending",
|
|
971
|
+
"archived",
|
|
972
|
+
"closed",
|
|
973
|
+
"spam"
|
|
974
|
+
],
|
|
975
|
+
"description": "Filter by conversation status. Values: active (open/ongoing - needs our response), pending (waiting on customer response), archived (hidden but not resolved), closed (resolved/completed), spam (marked as spam)"
|
|
976
|
+
},
|
|
977
|
+
"priority": {
|
|
978
|
+
"type": "string",
|
|
979
|
+
"enum": [
|
|
980
|
+
"low",
|
|
981
|
+
"medium",
|
|
982
|
+
"high",
|
|
983
|
+
"urgent"
|
|
984
|
+
],
|
|
985
|
+
"description": "Filter by priority (optional)"
|
|
986
|
+
},
|
|
987
|
+
"assigned_to": {
|
|
988
|
+
"type": "string",
|
|
989
|
+
"description": "Filter conversations assigned to a user (optional)"
|
|
990
|
+
},
|
|
991
|
+
"contact_id": {
|
|
992
|
+
"type": "string",
|
|
993
|
+
"description": "Filter conversations containing a specific contact (optional)"
|
|
994
|
+
},
|
|
995
|
+
"channel": {
|
|
996
|
+
"type": "string",
|
|
997
|
+
"enum": [
|
|
998
|
+
"email",
|
|
999
|
+
"sms",
|
|
1000
|
+
"push",
|
|
1001
|
+
"slack",
|
|
1002
|
+
"webhook",
|
|
1003
|
+
"in_app"
|
|
1004
|
+
],
|
|
1005
|
+
"description": "Filter by communication channel (optional)"
|
|
1006
|
+
},
|
|
1007
|
+
"search": {
|
|
1008
|
+
"type": "string",
|
|
1009
|
+
"description": "Search in conversation subject and metadata (optional)"
|
|
1010
|
+
},
|
|
1011
|
+
"created_after": {
|
|
1012
|
+
"type": "string",
|
|
1013
|
+
"format": "date-time",
|
|
1014
|
+
"description": "Filter conversations created after this date (ISO 8601) (optional)"
|
|
1015
|
+
},
|
|
1016
|
+
"created_before": {
|
|
1017
|
+
"type": "string",
|
|
1018
|
+
"format": "date-time",
|
|
1019
|
+
"description": "Filter conversations created before this date (ISO 8601) (optional)"
|
|
1020
|
+
},
|
|
1021
|
+
"limit": {
|
|
1022
|
+
"type": "integer",
|
|
1023
|
+
"minimum": 1,
|
|
1024
|
+
"maximum": 100,
|
|
1025
|
+
"default": 20,
|
|
1026
|
+
"description": "Number of conversations to return (optional)"
|
|
1027
|
+
},
|
|
1028
|
+
"offset": {
|
|
1029
|
+
"type": "integer",
|
|
1030
|
+
"minimum": 0,
|
|
1031
|
+
"default": 0,
|
|
1032
|
+
"description": "Pagination offset (optional)"
|
|
1033
|
+
},
|
|
1034
|
+
"sort": {
|
|
1035
|
+
"type": "string",
|
|
1036
|
+
"default": "created_at:desc",
|
|
1037
|
+
"description": "Sort field and direction (e.g., 'created_at:desc', 'status:asc') (optional)"
|
|
1038
|
+
}
|
|
1039
|
+
}
|
|
1040
|
+
}
|
|
1041
|
+
},
|
|
1042
|
+
{
|
|
1043
|
+
"name": "conversation_reply",
|
|
1044
|
+
"description": "Send a reply message within an existing customer support conversation thread. Requires conversation_id. Use this when responding to customer inquiries. For standalone messages to contacts, use omnikit-messaging-send-message instead.",
|
|
1045
|
+
"method": "POST",
|
|
1046
|
+
"path": "/messaging/conversations/%7B%7Bconversation_id%7D%7D/reply",
|
|
1047
|
+
"input_schema": {
|
|
1048
|
+
"type": "object",
|
|
1049
|
+
"properties": {
|
|
1050
|
+
"conversation_id": {
|
|
1051
|
+
"type": "string",
|
|
1052
|
+
"description": "Conversation ID to reply to (required)"
|
|
1053
|
+
},
|
|
1054
|
+
"content": {
|
|
1055
|
+
"type": "string",
|
|
1056
|
+
"description": "Reply content text (optional if template_id provided)"
|
|
1057
|
+
},
|
|
1058
|
+
"template_id": {
|
|
1059
|
+
"type": "string",
|
|
1060
|
+
"description": "Template ID to use for the reply (optional if content provided)"
|
|
1061
|
+
},
|
|
1062
|
+
"template_data": {
|
|
1063
|
+
"type": "object",
|
|
1064
|
+
"description": "Data for template variable substitution",
|
|
1065
|
+
"default": {}
|
|
1066
|
+
},
|
|
1067
|
+
"direction": {
|
|
1068
|
+
"type": "string",
|
|
1069
|
+
"enum": [
|
|
1070
|
+
"inbound",
|
|
1071
|
+
"outbound"
|
|
1072
|
+
],
|
|
1073
|
+
"default": "outbound",
|
|
1074
|
+
"description": "Message direction (optional)"
|
|
1075
|
+
},
|
|
1076
|
+
"send_message": {
|
|
1077
|
+
"type": "boolean",
|
|
1078
|
+
"default": true,
|
|
1079
|
+
"description": "Whether to actually send the message or just create it (optional)"
|
|
1080
|
+
},
|
|
1081
|
+
"contact_id": {
|
|
1082
|
+
"type": "string",
|
|
1083
|
+
"description": "Contact ID (required if getting from conversation)"
|
|
1084
|
+
},
|
|
1085
|
+
"reply_to_message_id": {
|
|
1086
|
+
"type": "string",
|
|
1087
|
+
"description": "ID of the message being replied to (optional)"
|
|
1088
|
+
},
|
|
1089
|
+
"channel_override": {
|
|
1090
|
+
"type": "string",
|
|
1091
|
+
"enum": [
|
|
1092
|
+
"email",
|
|
1093
|
+
"sms",
|
|
1094
|
+
"push",
|
|
1095
|
+
"slack",
|
|
1096
|
+
"webhook"
|
|
1097
|
+
],
|
|
1098
|
+
"description": "Override the default channel (optional)"
|
|
1099
|
+
},
|
|
1100
|
+
"subject": {
|
|
1101
|
+
"type": "string",
|
|
1102
|
+
"description": "Custom message subject (for email) (optional)"
|
|
1103
|
+
},
|
|
1104
|
+
"from_email": {
|
|
1105
|
+
"type": "string",
|
|
1106
|
+
"format": "email",
|
|
1107
|
+
"description": "Verified email address to send from (optional)"
|
|
1108
|
+
},
|
|
1109
|
+
"sender_id": {
|
|
1110
|
+
"type": "string",
|
|
1111
|
+
"description": "Sender user ID to get verified email (optional)"
|
|
1112
|
+
},
|
|
1113
|
+
"created_by": {
|
|
1114
|
+
"type": "string",
|
|
1115
|
+
"description": "User ID who created the reply (optional)"
|
|
1116
|
+
}
|
|
1117
|
+
},
|
|
1118
|
+
"required": [
|
|
1119
|
+
"conversation_id"
|
|
1120
|
+
]
|
|
1121
|
+
}
|
|
1122
|
+
},
|
|
1123
|
+
{
|
|
1124
|
+
"name": "list_messages",
|
|
1125
|
+
"description": "List messages in a conversation. Retrieve all messages from a conversation thread including content, sender, direction (inbound/outbound), timestamps, and delivery status. Use this to get conversation history, read messages, or view what was said.",
|
|
1126
|
+
"method": "GET",
|
|
1127
|
+
"path": "/messaging/messages",
|
|
1128
|
+
"input_schema": {
|
|
1129
|
+
"type": "object",
|
|
1130
|
+
"properties": {
|
|
1131
|
+
"conversation_id": {
|
|
1132
|
+
"type": "string",
|
|
1133
|
+
"description": "Conversation ID to load messages from (optional - filter by conversation)"
|
|
1134
|
+
},
|
|
1135
|
+
"contact_id": {
|
|
1136
|
+
"type": "string",
|
|
1137
|
+
"description": "Filter by contact ID (optional)"
|
|
1138
|
+
},
|
|
1139
|
+
"campaign_id": {
|
|
1140
|
+
"type": "string",
|
|
1141
|
+
"description": "Filter by campaign ID (optional)"
|
|
1142
|
+
},
|
|
1143
|
+
"status": {
|
|
1144
|
+
"type": "string",
|
|
1145
|
+
"enum": [
|
|
1146
|
+
"draft",
|
|
1147
|
+
"scheduled",
|
|
1148
|
+
"sending",
|
|
1149
|
+
"sent",
|
|
1150
|
+
"delivered",
|
|
1151
|
+
"opened",
|
|
1152
|
+
"clicked",
|
|
1153
|
+
"bounced",
|
|
1154
|
+
"complained",
|
|
1155
|
+
"failed"
|
|
1156
|
+
],
|
|
1157
|
+
"description": "Filter by message status (optional)"
|
|
1158
|
+
},
|
|
1159
|
+
"channel": {
|
|
1160
|
+
"type": "string",
|
|
1161
|
+
"enum": [
|
|
1162
|
+
"email",
|
|
1163
|
+
"sms",
|
|
1164
|
+
"push",
|
|
1165
|
+
"webhook"
|
|
1166
|
+
],
|
|
1167
|
+
"description": "Filter by channel (optional)"
|
|
1168
|
+
},
|
|
1169
|
+
"direction": {
|
|
1170
|
+
"type": "string",
|
|
1171
|
+
"enum": [
|
|
1172
|
+
"inbound",
|
|
1173
|
+
"outbound"
|
|
1174
|
+
],
|
|
1175
|
+
"description": "Filter by direction (optional)"
|
|
1176
|
+
},
|
|
1177
|
+
"limit": {
|
|
1178
|
+
"type": "integer",
|
|
1179
|
+
"minimum": 1,
|
|
1180
|
+
"maximum": 100,
|
|
1181
|
+
"default": 50,
|
|
1182
|
+
"description": "Number of messages to return (optional)"
|
|
1183
|
+
},
|
|
1184
|
+
"offset": {
|
|
1185
|
+
"type": "integer",
|
|
1186
|
+
"minimum": 0,
|
|
1187
|
+
"default": 0,
|
|
1188
|
+
"description": "Pagination offset (optional)"
|
|
1189
|
+
},
|
|
1190
|
+
"sort": {
|
|
1191
|
+
"type": "string",
|
|
1192
|
+
"default": "created_at:desc",
|
|
1193
|
+
"description": "Sort field and direction (e.g., 'created_at:desc' for latest first, 'created_at:asc' for oldest first) (optional)"
|
|
1194
|
+
},
|
|
1195
|
+
"include_content": {
|
|
1196
|
+
"type": "boolean",
|
|
1197
|
+
"default": false,
|
|
1198
|
+
"description": "Include full message content (optional)"
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
}
|
|
1202
|
+
},
|
|
1203
|
+
{
|
|
1204
|
+
"name": "get_conversation",
|
|
1205
|
+
"description": "Get conversation metadata and context (status, priority, participants, tags, assigned_to). Returns conversation info only - NOT the message history. Use omnikit-messaging-list-messages to load actual messages.",
|
|
1206
|
+
"method": "GET",
|
|
1207
|
+
"path": "/messaging/conversations/%7B%7Bid%7D%7D",
|
|
1208
|
+
"input_schema": {
|
|
1209
|
+
"type": "object",
|
|
1210
|
+
"properties": {
|
|
1211
|
+
"id": {
|
|
1212
|
+
"type": "string",
|
|
1213
|
+
"description": "Conversation ID (required)"
|
|
1214
|
+
}
|
|
1215
|
+
},
|
|
1216
|
+
"required": [
|
|
1217
|
+
"id"
|
|
1218
|
+
]
|
|
1219
|
+
}
|
|
1220
|
+
},
|
|
1221
|
+
{
|
|
1222
|
+
"name": "update_conversation",
|
|
1223
|
+
"description": "Update conversation status, priority, assignment, and metadata. Use this to change status from open to closed, modify priority, or reassign conversations",
|
|
1224
|
+
"method": "PUT",
|
|
1225
|
+
"path": "/messaging/conversations/%7B%7Bconversation_id%7D%7D",
|
|
1226
|
+
"input_schema": {
|
|
1227
|
+
"type": "object",
|
|
1228
|
+
"properties": {
|
|
1229
|
+
"conversation_id": {
|
|
1230
|
+
"type": "string",
|
|
1231
|
+
"description": "Conversation ID to update (required)"
|
|
1232
|
+
},
|
|
1233
|
+
"status": {
|
|
1234
|
+
"type": "string",
|
|
1235
|
+
"enum": [
|
|
1236
|
+
"active",
|
|
1237
|
+
"pending",
|
|
1238
|
+
"archived",
|
|
1239
|
+
"closed",
|
|
1240
|
+
"spam"
|
|
1241
|
+
],
|
|
1242
|
+
"description": "Update conversation status. Values: active (open/ongoing - needs our response), pending (waiting on customer response - use after replying), archived (hidden but not resolved), closed (resolved/completed), spam (mark as spam)"
|
|
1243
|
+
},
|
|
1244
|
+
"priority": {
|
|
1245
|
+
"type": "string",
|
|
1246
|
+
"enum": [
|
|
1247
|
+
"low",
|
|
1248
|
+
"medium",
|
|
1249
|
+
"high",
|
|
1250
|
+
"urgent"
|
|
1251
|
+
],
|
|
1252
|
+
"description": "Update priority level (optional)"
|
|
1253
|
+
},
|
|
1254
|
+
"assigned_to": {
|
|
1255
|
+
"type": "string",
|
|
1256
|
+
"description": "User ID to assign conversation to, or null to unassign (optional)"
|
|
1257
|
+
},
|
|
1258
|
+
"tags": {
|
|
1259
|
+
"type": "array",
|
|
1260
|
+
"items": {
|
|
1261
|
+
"type": "string"
|
|
1262
|
+
},
|
|
1263
|
+
"description": "Update conversation tags (optional)"
|
|
1264
|
+
},
|
|
1265
|
+
"subject": {
|
|
1266
|
+
"type": "string",
|
|
1267
|
+
"description": "Update conversation subject (optional)"
|
|
1268
|
+
},
|
|
1269
|
+
"notes": {
|
|
1270
|
+
"type": "string",
|
|
1271
|
+
"description": "Add internal notes (appended to history) (optional)"
|
|
1272
|
+
},
|
|
1273
|
+
"metadata": {
|
|
1274
|
+
"type": "object",
|
|
1275
|
+
"description": "Update custom metadata fields (optional)"
|
|
1276
|
+
},
|
|
1277
|
+
"updated_by": {
|
|
1278
|
+
"type": "string",
|
|
1279
|
+
"description": "User ID making the update (optional)"
|
|
1280
|
+
}
|
|
1281
|
+
},
|
|
1282
|
+
"required": [
|
|
1283
|
+
"conversation_id"
|
|
1284
|
+
]
|
|
1285
|
+
}
|
|
1286
|
+
},
|
|
1287
|
+
{
|
|
1288
|
+
"name": "delete_contact",
|
|
1289
|
+
"description": "Soft-delete a messaging contact by ID. The contact will be marked as deleted but data is retained for audit purposes.",
|
|
1290
|
+
"method": "DELETE",
|
|
1291
|
+
"path": "/messaging/contacts/%7B%7Bid%7D%7D",
|
|
1292
|
+
"input_schema": {
|
|
1293
|
+
"type": "object",
|
|
1294
|
+
"properties": {
|
|
1295
|
+
"id": {
|
|
1296
|
+
"type": "string",
|
|
1297
|
+
"description": "Contact ID to delete (UUID)"
|
|
1298
|
+
},
|
|
1299
|
+
"deleted_by": {
|
|
1300
|
+
"type": "string",
|
|
1301
|
+
"description": "User ID performing the deletion (optional)"
|
|
1302
|
+
}
|
|
1303
|
+
},
|
|
1304
|
+
"required": [
|
|
1305
|
+
"id"
|
|
1306
|
+
]
|
|
1307
|
+
}
|
|
1308
|
+
},
|
|
1309
|
+
{
|
|
1310
|
+
"name": "contact_history",
|
|
1311
|
+
"description": "Get the full message history and engagement statistics for a contact. Returns contact info, message history with delivery/open/click tracking, and an engagement summary with rates. Use this to check if a contact has already been emailed before sending again.",
|
|
1312
|
+
"method": "GET",
|
|
1313
|
+
"path": "/messaging/contacts/%7B%7Bid%7D%7D/history",
|
|
1314
|
+
"input_schema": {
|
|
1315
|
+
"type": "object",
|
|
1316
|
+
"properties": {
|
|
1317
|
+
"id": {
|
|
1318
|
+
"type": "string",
|
|
1319
|
+
"description": "Contact ID (UUID)"
|
|
1320
|
+
},
|
|
1321
|
+
"channel": {
|
|
1322
|
+
"type": "string",
|
|
1323
|
+
"enum": [
|
|
1324
|
+
"email",
|
|
1325
|
+
"sms",
|
|
1326
|
+
"push"
|
|
1327
|
+
],
|
|
1328
|
+
"description": "Filter history by channel (optional)"
|
|
1329
|
+
},
|
|
1330
|
+
"direction": {
|
|
1331
|
+
"type": "string",
|
|
1332
|
+
"enum": [
|
|
1333
|
+
"inbound",
|
|
1334
|
+
"outbound"
|
|
1335
|
+
],
|
|
1336
|
+
"description": "Filter by message direction (optional)"
|
|
1337
|
+
},
|
|
1338
|
+
"include_engagement": {
|
|
1339
|
+
"type": "boolean",
|
|
1340
|
+
"default": true,
|
|
1341
|
+
"description": "Include engagement summary with open/click/bounce rates (default: true)"
|
|
1342
|
+
},
|
|
1343
|
+
"limit": {
|
|
1344
|
+
"type": "integer",
|
|
1345
|
+
"default": 50,
|
|
1346
|
+
"description": "Number of messages to return (default: 50)"
|
|
1347
|
+
},
|
|
1348
|
+
"offset": {
|
|
1349
|
+
"type": "integer",
|
|
1350
|
+
"default": 0,
|
|
1351
|
+
"description": "Pagination offset (default: 0)"
|
|
1352
|
+
}
|
|
1353
|
+
},
|
|
1354
|
+
"required": [
|
|
1355
|
+
"id"
|
|
1356
|
+
]
|
|
1357
|
+
}
|
|
1358
|
+
},
|
|
1359
|
+
{
|
|
1360
|
+
"name": "delete_template",
|
|
1361
|
+
"description": "Soft-delete a message template by ID. Template will be marked as deleted but retained for audit. Cannot delete templates actively used by running campaigns.",
|
|
1362
|
+
"method": "DELETE",
|
|
1363
|
+
"path": "/messaging/templates/%7B%7Bid%7D%7D",
|
|
1364
|
+
"input_schema": {
|
|
1365
|
+
"type": "object",
|
|
1366
|
+
"properties": {
|
|
1367
|
+
"id": {
|
|
1368
|
+
"type": "string",
|
|
1369
|
+
"description": "Template ID to delete (UUID)"
|
|
1370
|
+
},
|
|
1371
|
+
"deleted_by": {
|
|
1372
|
+
"type": "string",
|
|
1373
|
+
"description": "User ID performing the deletion (optional)"
|
|
1374
|
+
}
|
|
1375
|
+
},
|
|
1376
|
+
"required": [
|
|
1377
|
+
"id"
|
|
1378
|
+
]
|
|
1379
|
+
}
|
|
1380
|
+
},
|
|
1381
|
+
{
|
|
1382
|
+
"name": "template_stats",
|
|
1383
|
+
"description": "Get engagement statistics for templates - open rates, click rates, bounce rates, etc. Can filter by specific template, channel, or date range. Useful for evaluating template performance before reusing in campaigns.",
|
|
1384
|
+
"method": "GET",
|
|
1385
|
+
"path": "/messaging/templates/stats",
|
|
1386
|
+
"input_schema": {
|
|
1387
|
+
"type": "object",
|
|
1388
|
+
"properties": {
|
|
1389
|
+
"template_id": {
|
|
1390
|
+
"type": "string",
|
|
1391
|
+
"description": "Specific template ID to get stats for (optional, returns all if not provided)"
|
|
1392
|
+
},
|
|
1393
|
+
"channel": {
|
|
1394
|
+
"type": "string",
|
|
1395
|
+
"enum": [
|
|
1396
|
+
"email",
|
|
1397
|
+
"sms",
|
|
1398
|
+
"push"
|
|
1399
|
+
],
|
|
1400
|
+
"description": "Filter by channel (optional)"
|
|
1401
|
+
},
|
|
1402
|
+
"date_from": {
|
|
1403
|
+
"type": "string",
|
|
1404
|
+
"description": "Start date filter in ISO 8601 format (optional)"
|
|
1405
|
+
},
|
|
1406
|
+
"date_to": {
|
|
1407
|
+
"type": "string",
|
|
1408
|
+
"description": "End date filter in ISO 8601 format (optional)"
|
|
1409
|
+
}
|
|
1410
|
+
}
|
|
1411
|
+
}
|
|
1412
|
+
},
|
|
1413
|
+
{
|
|
1414
|
+
"name": "create_conversation",
|
|
1415
|
+
"description": "Create a new customer support conversation/ticket. Optionally include an initial message, participant IDs, priority, tags, and assignment. Returns the conversation ID for follow-up replies.",
|
|
1416
|
+
"method": "POST",
|
|
1417
|
+
"path": "/messaging/conversations",
|
|
1418
|
+
"input_schema": {
|
|
1419
|
+
"type": "object",
|
|
1420
|
+
"properties": {
|
|
1421
|
+
"participant_ids": {
|
|
1422
|
+
"type": "array",
|
|
1423
|
+
"items": {
|
|
1424
|
+
"type": "string"
|
|
1425
|
+
},
|
|
1426
|
+
"description": "Contact IDs to include in the conversation"
|
|
1427
|
+
},
|
|
1428
|
+
"channel": {
|
|
1429
|
+
"type": "string",
|
|
1430
|
+
"enum": [
|
|
1431
|
+
"email",
|
|
1432
|
+
"sms",
|
|
1433
|
+
"push",
|
|
1434
|
+
"slack",
|
|
1435
|
+
"webhook",
|
|
1436
|
+
"in-app"
|
|
1437
|
+
],
|
|
1438
|
+
"default": "email",
|
|
1439
|
+
"description": "Communication channel"
|
|
1440
|
+
},
|
|
1441
|
+
"subject": {
|
|
1442
|
+
"type": "string",
|
|
1443
|
+
"description": "Conversation subject/title"
|
|
1444
|
+
},
|
|
1445
|
+
"priority": {
|
|
1446
|
+
"type": "string",
|
|
1447
|
+
"enum": [
|
|
1448
|
+
"low",
|
|
1449
|
+
"medium",
|
|
1450
|
+
"high",
|
|
1451
|
+
"urgent"
|
|
1452
|
+
],
|
|
1453
|
+
"default": "medium",
|
|
1454
|
+
"description": "Priority level"
|
|
1455
|
+
},
|
|
1456
|
+
"tags": {
|
|
1457
|
+
"type": "array",
|
|
1458
|
+
"items": {
|
|
1459
|
+
"type": "string"
|
|
1460
|
+
},
|
|
1461
|
+
"description": "Tags for categorization"
|
|
1462
|
+
},
|
|
1463
|
+
"assigned_to": {
|
|
1464
|
+
"type": "string",
|
|
1465
|
+
"description": "Agent/user ID to assign the conversation to"
|
|
1466
|
+
},
|
|
1467
|
+
"initial_message": {
|
|
1468
|
+
"type": "object",
|
|
1469
|
+
"description": "Optional initial message: {content: string, direction: 'inbound'|'outbound'}",
|
|
1470
|
+
"properties": {
|
|
1471
|
+
"content": {
|
|
1472
|
+
"type": "string",
|
|
1473
|
+
"description": "Message content"
|
|
1474
|
+
},
|
|
1475
|
+
"direction": {
|
|
1476
|
+
"type": "string",
|
|
1477
|
+
"enum": [
|
|
1478
|
+
"inbound",
|
|
1479
|
+
"outbound"
|
|
1480
|
+
],
|
|
1481
|
+
"default": "inbound",
|
|
1482
|
+
"description": "Message direction"
|
|
1483
|
+
}
|
|
1484
|
+
},
|
|
1485
|
+
"required": [
|
|
1486
|
+
"content"
|
|
1487
|
+
]
|
|
1488
|
+
},
|
|
1489
|
+
"metadata": {
|
|
1490
|
+
"type": "object",
|
|
1491
|
+
"description": "Custom metadata (optional)"
|
|
1492
|
+
}
|
|
1493
|
+
}
|
|
1494
|
+
}
|
|
1495
|
+
},
|
|
1496
|
+
{
|
|
1497
|
+
"name": "close_conversation",
|
|
1498
|
+
"description": "Close a conversation with resolution details. Optionally send a final message, set resolution status (resolved, not_resolved, escalated, duplicate, spam, abandoned), and record satisfaction rating.",
|
|
1499
|
+
"method": "POST",
|
|
1500
|
+
"path": "/messaging/conversations/%7B%7Bconversation_id%7D%7D/close",
|
|
1501
|
+
"input_schema": {
|
|
1502
|
+
"type": "object",
|
|
1503
|
+
"properties": {
|
|
1504
|
+
"conversation_id": {
|
|
1505
|
+
"type": "string",
|
|
1506
|
+
"description": "Conversation ID to close"
|
|
1507
|
+
},
|
|
1508
|
+
"resolution_status": {
|
|
1509
|
+
"type": "string",
|
|
1510
|
+
"enum": [
|
|
1511
|
+
"resolved",
|
|
1512
|
+
"not_resolved",
|
|
1513
|
+
"escalated",
|
|
1514
|
+
"duplicate",
|
|
1515
|
+
"spam",
|
|
1516
|
+
"abandoned"
|
|
1517
|
+
],
|
|
1518
|
+
"default": "resolved",
|
|
1519
|
+
"description": "How the conversation was resolved"
|
|
1520
|
+
},
|
|
1521
|
+
"resolution_notes": {
|
|
1522
|
+
"type": "string",
|
|
1523
|
+
"description": "Notes about the resolution"
|
|
1524
|
+
},
|
|
1525
|
+
"resolution_category": {
|
|
1526
|
+
"type": "string",
|
|
1527
|
+
"description": "Category of the resolution (e.g., 'billing', 'technical')"
|
|
1528
|
+
},
|
|
1529
|
+
"customer_satisfaction_rating": {
|
|
1530
|
+
"type": "integer",
|
|
1531
|
+
"description": "Satisfaction rating 1-5 (optional)"
|
|
1532
|
+
},
|
|
1533
|
+
"final_message": {
|
|
1534
|
+
"type": "string",
|
|
1535
|
+
"description": "Optional final message to send before closing"
|
|
1536
|
+
},
|
|
1537
|
+
"send_final_message": {
|
|
1538
|
+
"type": "boolean",
|
|
1539
|
+
"default": false,
|
|
1540
|
+
"description": "Whether to send the final_message to the customer"
|
|
1541
|
+
},
|
|
1542
|
+
"closed_by": {
|
|
1543
|
+
"type": "string",
|
|
1544
|
+
"description": "User ID of the agent closing the conversation"
|
|
1545
|
+
}
|
|
1546
|
+
},
|
|
1547
|
+
"required": [
|
|
1548
|
+
"conversation_id"
|
|
1549
|
+
]
|
|
1550
|
+
}
|
|
1551
|
+
},
|
|
1552
|
+
{
|
|
1553
|
+
"name": "delete_conversation",
|
|
1554
|
+
"description": "Soft-delete a conversation and its messages. The data is retained for audit purposes but no longer visible in listings.",
|
|
1555
|
+
"method": "DELETE",
|
|
1556
|
+
"path": "/messaging/conversations/%7B%7Bid%7D%7D",
|
|
1557
|
+
"input_schema": {
|
|
1558
|
+
"type": "object",
|
|
1559
|
+
"properties": {
|
|
1560
|
+
"id": {
|
|
1561
|
+
"type": "string",
|
|
1562
|
+
"description": "Conversation ID to delete (UUID)"
|
|
1563
|
+
}
|
|
1564
|
+
},
|
|
1565
|
+
"required": [
|
|
1566
|
+
"id"
|
|
1567
|
+
]
|
|
1568
|
+
}
|
|
1569
|
+
},
|
|
1570
|
+
{
|
|
1571
|
+
"name": "assign_conversation",
|
|
1572
|
+
"description": "Assign or reassign a conversation to a support agent. Supports notification of both new and previous assignees, priority changes, and assignment notes.",
|
|
1573
|
+
"method": "POST",
|
|
1574
|
+
"path": "/messaging/conversations/%7B%7Bconversation_id%7D%7D/assign",
|
|
1575
|
+
"input_schema": {
|
|
1576
|
+
"type": "object",
|
|
1577
|
+
"properties": {
|
|
1578
|
+
"conversation_id": {
|
|
1579
|
+
"type": "string",
|
|
1580
|
+
"description": "Conversation ID to assign"
|
|
1581
|
+
},
|
|
1582
|
+
"assigned_to": {
|
|
1583
|
+
"type": "string",
|
|
1584
|
+
"description": "Agent/user ID to assign to, or null to unassign"
|
|
1585
|
+
},
|
|
1586
|
+
"assigned_by": {
|
|
1587
|
+
"type": "string",
|
|
1588
|
+
"description": "User ID performing the assignment"
|
|
1589
|
+
},
|
|
1590
|
+
"assignment_reason": {
|
|
1591
|
+
"type": "string",
|
|
1592
|
+
"description": "Reason for the assignment or reassignment"
|
|
1593
|
+
},
|
|
1594
|
+
"priority_change": {
|
|
1595
|
+
"type": "string",
|
|
1596
|
+
"enum": [
|
|
1597
|
+
"low",
|
|
1598
|
+
"medium",
|
|
1599
|
+
"high",
|
|
1600
|
+
"urgent"
|
|
1601
|
+
],
|
|
1602
|
+
"description": "Optionally change priority during assignment"
|
|
1603
|
+
},
|
|
1604
|
+
"notes": {
|
|
1605
|
+
"type": "string",
|
|
1606
|
+
"description": "Internal notes for the assignee"
|
|
1607
|
+
},
|
|
1608
|
+
"notify_assignee": {
|
|
1609
|
+
"type": "boolean",
|
|
1610
|
+
"default": true,
|
|
1611
|
+
"description": "Notify the new assignee"
|
|
1612
|
+
},
|
|
1613
|
+
"notify_previous_assignee": {
|
|
1614
|
+
"type": "boolean",
|
|
1615
|
+
"default": true,
|
|
1616
|
+
"description": "Notify the previous assignee about reassignment"
|
|
1617
|
+
}
|
|
1618
|
+
},
|
|
1619
|
+
"required": [
|
|
1620
|
+
"conversation_id"
|
|
1621
|
+
]
|
|
1622
|
+
}
|
|
1623
|
+
},
|
|
1624
|
+
{
|
|
1625
|
+
"name": "escalate_conversation",
|
|
1626
|
+
"description": "Escalate a conversation to a higher priority level or different team. Use when a conversation needs elevated attention or specialist handling.",
|
|
1627
|
+
"method": "POST",
|
|
1628
|
+
"path": "/messaging/conversations/%7B%7Bconversation_id%7D%7D/escalate",
|
|
1629
|
+
"input_schema": {
|
|
1630
|
+
"type": "object",
|
|
1631
|
+
"properties": {
|
|
1632
|
+
"conversation_id": {
|
|
1633
|
+
"type": "string",
|
|
1634
|
+
"description": "Conversation ID to escalate"
|
|
1635
|
+
},
|
|
1636
|
+
"escalation_reason": {
|
|
1637
|
+
"type": "string",
|
|
1638
|
+
"description": "Reason for the escalation (required)"
|
|
1639
|
+
},
|
|
1640
|
+
"escalation_level": {
|
|
1641
|
+
"type": "string",
|
|
1642
|
+
"enum": [
|
|
1643
|
+
"medium",
|
|
1644
|
+
"high",
|
|
1645
|
+
"urgent",
|
|
1646
|
+
"critical"
|
|
1647
|
+
],
|
|
1648
|
+
"default": "high",
|
|
1649
|
+
"description": "Escalation severity level"
|
|
1650
|
+
},
|
|
1651
|
+
"escalated_to_team": {
|
|
1652
|
+
"type": "string",
|
|
1653
|
+
"description": "Target team for escalation"
|
|
1654
|
+
},
|
|
1655
|
+
"escalated_to_agent": {
|
|
1656
|
+
"type": "string",
|
|
1657
|
+
"description": "Specific agent to escalate to"
|
|
1658
|
+
},
|
|
1659
|
+
"escalated_by": {
|
|
1660
|
+
"type": "string",
|
|
1661
|
+
"description": "User ID performing the escalation"
|
|
1662
|
+
},
|
|
1663
|
+
"escalation_notes": {
|
|
1664
|
+
"type": "string",
|
|
1665
|
+
"description": "Additional context for the escalation target"
|
|
1666
|
+
},
|
|
1667
|
+
"priority_change": {
|
|
1668
|
+
"type": "string",
|
|
1669
|
+
"enum": [
|
|
1670
|
+
"low",
|
|
1671
|
+
"medium",
|
|
1672
|
+
"high",
|
|
1673
|
+
"urgent"
|
|
1674
|
+
],
|
|
1675
|
+
"default": "high",
|
|
1676
|
+
"description": "New priority level"
|
|
1677
|
+
}
|
|
1678
|
+
},
|
|
1679
|
+
"required": [
|
|
1680
|
+
"conversation_id",
|
|
1681
|
+
"escalation_reason"
|
|
1682
|
+
]
|
|
1683
|
+
}
|
|
1684
|
+
},
|
|
1685
|
+
{
|
|
1686
|
+
"name": "create_sender",
|
|
1687
|
+
"description": "Register a new authorized sender email address for a project. Senders must be verified before they can be used to send emails. After creating, the sender will need domain verification.",
|
|
1688
|
+
"method": "POST",
|
|
1689
|
+
"path": "/messaging/senders",
|
|
1690
|
+
"input_schema": {
|
|
1691
|
+
"type": "object",
|
|
1692
|
+
"properties": {
|
|
1693
|
+
"email": {
|
|
1694
|
+
"type": "string",
|
|
1695
|
+
"format": "email",
|
|
1696
|
+
"description": "Sender email address"
|
|
1697
|
+
},
|
|
1698
|
+
"name": {
|
|
1699
|
+
"type": "string",
|
|
1700
|
+
"description": "Display name for the sender (e.g., 'Support Team')"
|
|
1701
|
+
},
|
|
1702
|
+
"description": {
|
|
1703
|
+
"type": "string",
|
|
1704
|
+
"description": "Optional description or notes about this sender"
|
|
1705
|
+
},
|
|
1706
|
+
"is_active": {
|
|
1707
|
+
"type": "boolean",
|
|
1708
|
+
"default": true,
|
|
1709
|
+
"description": "Whether this sender is active"
|
|
1710
|
+
}
|
|
1711
|
+
},
|
|
1712
|
+
"required": [
|
|
1713
|
+
"email"
|
|
1714
|
+
]
|
|
1715
|
+
}
|
|
1716
|
+
},
|
|
1717
|
+
{
|
|
1718
|
+
"name": "list_senders",
|
|
1719
|
+
"description": "List authorized sender email addresses for the project. Filter by email, active status, or search by name/description.",
|
|
1720
|
+
"method": "GET",
|
|
1721
|
+
"path": "/messaging/senders",
|
|
1722
|
+
"input_schema": {
|
|
1723
|
+
"type": "object",
|
|
1724
|
+
"properties": {
|
|
1725
|
+
"email": {
|
|
1726
|
+
"type": "string",
|
|
1727
|
+
"description": "Filter by sender email address (optional)"
|
|
1728
|
+
},
|
|
1729
|
+
"is_active": {
|
|
1730
|
+
"type": "boolean",
|
|
1731
|
+
"description": "Filter by active status (optional)"
|
|
1732
|
+
},
|
|
1733
|
+
"search": {
|
|
1734
|
+
"type": "string",
|
|
1735
|
+
"description": "Search in email, name, and description (optional)"
|
|
1736
|
+
},
|
|
1737
|
+
"limit": {
|
|
1738
|
+
"type": "integer",
|
|
1739
|
+
"default": 20,
|
|
1740
|
+
"description": "Number of results to return (max 100)"
|
|
1741
|
+
},
|
|
1742
|
+
"offset": {
|
|
1743
|
+
"type": "integer",
|
|
1744
|
+
"default": 0,
|
|
1745
|
+
"description": "Pagination offset"
|
|
1746
|
+
},
|
|
1747
|
+
"sort": {
|
|
1748
|
+
"type": "string",
|
|
1749
|
+
"description": "Sort field:direction (e.g., 'created_at:desc')"
|
|
1750
|
+
}
|
|
1751
|
+
}
|
|
1752
|
+
}
|
|
1753
|
+
},
|
|
1754
|
+
{
|
|
1755
|
+
"name": "get_sender",
|
|
1756
|
+
"description": "Get details of a specific authorized sender by ID, including email, display name, active status, and verification info.",
|
|
1757
|
+
"method": "GET",
|
|
1758
|
+
"path": "/messaging/senders/%7B%7Bid%7D%7D",
|
|
1759
|
+
"input_schema": {
|
|
1760
|
+
"type": "object",
|
|
1761
|
+
"properties": {
|
|
1762
|
+
"id": {
|
|
1763
|
+
"type": "string",
|
|
1764
|
+
"description": "Sender ID"
|
|
1765
|
+
}
|
|
1766
|
+
},
|
|
1767
|
+
"required": [
|
|
1768
|
+
"id"
|
|
1769
|
+
]
|
|
1770
|
+
}
|
|
1771
|
+
},
|
|
1772
|
+
{
|
|
1773
|
+
"name": "update_sender",
|
|
1774
|
+
"description": "Update an existing authorized sender - change email, display name, description, or active status.",
|
|
1775
|
+
"method": "PUT",
|
|
1776
|
+
"path": "/messaging/senders/%7B%7Bid%7D%7D",
|
|
1777
|
+
"input_schema": {
|
|
1778
|
+
"type": "object",
|
|
1779
|
+
"properties": {
|
|
1780
|
+
"id": {
|
|
1781
|
+
"type": "string",
|
|
1782
|
+
"description": "Sender ID to update"
|
|
1783
|
+
},
|
|
1784
|
+
"email": {
|
|
1785
|
+
"type": "string",
|
|
1786
|
+
"format": "email",
|
|
1787
|
+
"description": "New sender email address"
|
|
1788
|
+
},
|
|
1789
|
+
"name": {
|
|
1790
|
+
"type": "string",
|
|
1791
|
+
"description": "New display name"
|
|
1792
|
+
},
|
|
1793
|
+
"description": {
|
|
1794
|
+
"type": "string",
|
|
1795
|
+
"description": "New description"
|
|
1796
|
+
},
|
|
1797
|
+
"is_active": {
|
|
1798
|
+
"type": "boolean",
|
|
1799
|
+
"description": "Set active/inactive"
|
|
1800
|
+
}
|
|
1801
|
+
},
|
|
1802
|
+
"required": [
|
|
1803
|
+
"id"
|
|
1804
|
+
]
|
|
1805
|
+
}
|
|
1806
|
+
},
|
|
1807
|
+
{
|
|
1808
|
+
"name": "delete_sender",
|
|
1809
|
+
"description": "Delete an authorized sender email address. Cannot delete senders that are actively used by running campaigns.",
|
|
1810
|
+
"method": "DELETE",
|
|
1811
|
+
"path": "/messaging/senders/%7B%7Bid%7D%7D",
|
|
1812
|
+
"input_schema": {
|
|
1813
|
+
"type": "object",
|
|
1814
|
+
"properties": {
|
|
1815
|
+
"id": {
|
|
1816
|
+
"type": "string",
|
|
1817
|
+
"description": "Sender ID to delete"
|
|
1818
|
+
}
|
|
1819
|
+
},
|
|
1820
|
+
"required": [
|
|
1821
|
+
"id"
|
|
1822
|
+
]
|
|
1823
|
+
}
|
|
1824
|
+
}
|
|
1825
|
+
]
|
|
1826
|
+
}
|