@jskit-ai/connectors-catalog 0.1.1

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.
Files changed (399) hide show
  1. package/README.md +192 -0
  2. package/docs/ai-upstream-notices.md +51 -0
  3. package/docs/ai.md +191 -0
  4. package/docs/airtable.md +130 -0
  5. package/docs/algolia.md +190 -0
  6. package/docs/amazon-redshift.md +229 -0
  7. package/docs/amplitude.md +210 -0
  8. package/docs/apify.md +162 -0
  9. package/docs/apollo-io.md +200 -0
  10. package/docs/asana.md +126 -0
  11. package/docs/ashby.md +188 -0
  12. package/docs/atlassian.md +224 -0
  13. package/docs/attention.md +162 -0
  14. package/docs/aws-athena.md +150 -0
  15. package/docs/aws-credentials.md +75 -0
  16. package/docs/aws-s3.md +193 -0
  17. package/docs/bigquery.md +146 -0
  18. package/docs/brevo.md +122 -0
  19. package/docs/calendly.md +158 -0
  20. package/docs/canva.md +191 -0
  21. package/docs/chargebee.md +192 -0
  22. package/docs/clay.md +194 -0
  23. package/docs/clickhouse.md +242 -0
  24. package/docs/confidence-exp.md +74 -0
  25. package/docs/confidence-flags.md +75 -0
  26. package/docs/confidence-oauth.md +137 -0
  27. package/docs/contentful.md +123 -0
  28. package/docs/databricks.md +180 -0
  29. package/docs/dbt-semantic-layer.md +175 -0
  30. package/docs/elevenlabs.md +102 -0
  31. package/docs/figma.md +132 -0
  32. package/docs/firebase-cloud-messaging.md +262 -0
  33. package/docs/firecrawl.md +137 -0
  34. package/docs/fireflies.md +95 -0
  35. package/docs/fireworks-ai.md +53 -0
  36. package/docs/gatewayapi.md +113 -0
  37. package/docs/gemini-enterprise.md +224 -0
  38. package/docs/github-api.md +133 -0
  39. package/docs/gitlab-api.md +138 -0
  40. package/docs/gmail.md +133 -0
  41. package/docs/gong.md +205 -0
  42. package/docs/google-ads.md +156 -0
  43. package/docs/google-analytics.md +202 -0
  44. package/docs/google-docs.md +105 -0
  45. package/docs/google-drive.md +108 -0
  46. package/docs/google-maps-platform.md +208 -0
  47. package/docs/google-oauth.md +123 -0
  48. package/docs/google-search-console.md +124 -0
  49. package/docs/google-sheets.md +94 -0
  50. package/docs/google-slides.md +95 -0
  51. package/docs/granola.md +178 -0
  52. package/docs/hex.md +161 -0
  53. package/docs/heygen.md +124 -0
  54. package/docs/hubspot.md +142 -0
  55. package/docs/incident-io.md +118 -0
  56. package/docs/inngest.md +178 -0
  57. package/docs/klipy.md +149 -0
  58. package/docs/lexware.md +144 -0
  59. package/docs/lightspeed.md +193 -0
  60. package/docs/linear.md +137 -0
  61. package/docs/linkedin.md +196 -0
  62. package/docs/logo-dev.md +152 -0
  63. package/docs/mailgun.md +153 -0
  64. package/docs/mapbox.md +174 -0
  65. package/docs/microsoft-excel.md +97 -0
  66. package/docs/microsoft-fabric.md +249 -0
  67. package/docs/microsoft-oauth.md +143 -0
  68. package/docs/microsoft-onedrive.md +76 -0
  69. package/docs/microsoft-onenote.md +75 -0
  70. package/docs/microsoft-outlook.md +90 -0
  71. package/docs/microsoft-powerpoint.md +119 -0
  72. package/docs/microsoft-sharepoint.md +75 -0
  73. package/docs/microsoft-teams.md +72 -0
  74. package/docs/microsoft-word.md +119 -0
  75. package/docs/miro.md +117 -0
  76. package/docs/n8n.md +169 -0
  77. package/docs/notion.md +137 -0
  78. package/docs/oura.md +161 -0
  79. package/docs/paddle.md +168 -0
  80. package/docs/perplexity.md +85 -0
  81. package/docs/pipedrive.md +120 -0
  82. package/docs/polar.md +63 -0
  83. package/docs/posthog.md +227 -0
  84. package/docs/prestashop.md +151 -0
  85. package/docs/replicate.md +60 -0
  86. package/docs/resend.md +153 -0
  87. package/docs/salesforce.md +234 -0
  88. package/docs/sanity.md +122 -0
  89. package/docs/semrush.md +276 -0
  90. package/docs/sentry.md +112 -0
  91. package/docs/sevdesk.md +107 -0
  92. package/docs/shopify.md +206 -0
  93. package/docs/slack.md +257 -0
  94. package/docs/snowflake.md +271 -0
  95. package/docs/storyblok.md +130 -0
  96. package/docs/stripe.md +77 -0
  97. package/docs/supabase.md +51 -0
  98. package/docs/tally.md +105 -0
  99. package/docs/telegram.md +165 -0
  100. package/docs/tiktok.md +201 -0
  101. package/docs/twilio.md +284 -0
  102. package/docs/twitch.md +428 -0
  103. package/docs/wave.md +440 -0
  104. package/docs/wix.md +1249 -0
  105. package/docs/wiz.md +177 -0
  106. package/docs/woocommerce.md +400 -0
  107. package/docs/wordpress-com.md +358 -0
  108. package/docs/wordpress-self-hosted.md +252 -0
  109. package/docs/workday.md +292 -0
  110. package/docs/x-twitter.md +188 -0
  111. package/docs/xero.md +429 -0
  112. package/docs/zoho-books.md +214 -0
  113. package/docs/zoho-crm.md +192 -0
  114. package/package.json +153 -0
  115. package/patterns/ai-connections/PATTERN.md +84 -0
  116. package/patterns/ai-connections/example/ai-model.js +11 -0
  117. package/patterns/ai-connections/example/perplexity-answer.js +29 -0
  118. package/patterns/api-key-connection/PATTERN.md +368 -0
  119. package/patterns/api-key-connection/example/connections.js +18 -0
  120. package/patterns/api-key-connection/example/integrations.json +19 -0
  121. package/patterns/assistant-mcp/PATTERN.md +110 -0
  122. package/patterns/assistant-mcp/example/integrations.json +13 -0
  123. package/patterns/assistant-mcp-oauth/PATTERN.md +235 -0
  124. package/patterns/assistant-mcp-oauth/example/integrations.json +102 -0
  125. package/patterns/aws-storage-queries/PATTERN.md +169 -0
  126. package/patterns/aws-storage-queries/example/formats/data-formats.js +35 -0
  127. package/patterns/aws-storage-queries/example/formats/package-lock.json +49 -0
  128. package/patterns/aws-storage-queries/example/formats/package.json +12 -0
  129. package/patterns/aws-storage-queries/example/formats/verify-formats.mjs +37 -0
  130. package/patterns/aws-storage-queries/example/integrations.json +38 -0
  131. package/patterns/aws-storage-queries/example/s3-transfer.js +34 -0
  132. package/patterns/event-delivery/PATTERN.md +151 -0
  133. package/patterns/event-delivery/example/integrations.json +17 -0
  134. package/patterns/firebase-messaging/PATTERN.md +156 -0
  135. package/patterns/firebase-messaging/example/server/notifications.js +23 -0
  136. package/patterns/google-ads-search/PATTERN.md +92 -0
  137. package/patterns/google-ads-search/example/ads-setup.js +25 -0
  138. package/patterns/oauth-connection/PATTERN.md +724 -0
  139. package/patterns/oauth-connection/example/integrations.json +20 -0
  140. package/patterns/paddle-catalogue/PATTERN.md +78 -0
  141. package/patterns/paddle-catalogue/example/create-products.js +38 -0
  142. package/patterns/public-image/PATTERN.md +84 -0
  143. package/patterns/public-image/example/integrations.json +13 -0
  144. package/patterns/public-image/example/logo-url.js +16 -0
  145. package/patterns/redshift-queries/PATTERN.md +150 -0
  146. package/patterns/redshift-queries/example/integrations.json +33 -0
  147. package/patterns/source-scanning/PATTERN.md +83 -0
  148. package/patterns/source-scanning/example/source-scanner.js +13 -0
  149. package/src/client/firebase-cloud-messaging.js +10 -0
  150. package/src/client/google-analytics.js +72 -0
  151. package/src/client/google-maps-platform.js +39 -0
  152. package/src/client/logo-dev.js +36 -0
  153. package/src/server/ai.js +46 -0
  154. package/src/server/airtable.js +67 -0
  155. package/src/server/algolia.js +63 -0
  156. package/src/server/amazon-redshift.js +96 -0
  157. package/src/server/amplitude.js +31 -0
  158. package/src/server/apify.js +68 -0
  159. package/src/server/apollo-io.js +85 -0
  160. package/src/server/asana.js +64 -0
  161. package/src/server/ashby.js +61 -0
  162. package/src/server/atlassian.js +32 -0
  163. package/src/server/attention.js +93 -0
  164. package/src/server/aws-athena.js +82 -0
  165. package/src/server/aws-s3.js +49 -0
  166. package/src/server/awsTransport.js +75 -0
  167. package/src/server/bigquery.js +97 -0
  168. package/src/server/brevo.js +97 -0
  169. package/src/server/calendly.js +77 -0
  170. package/src/server/canva.js +13 -0
  171. package/src/server/chargebee.js +88 -0
  172. package/src/server/clay.js +78 -0
  173. package/src/server/clickhouse.js +66 -0
  174. package/src/server/confidence.js +29 -0
  175. package/src/server/contentful.js +40 -0
  176. package/src/server/databricks.js +55 -0
  177. package/src/server/dbt-semantic-layer.js +95 -0
  178. package/src/server/elevenlabs.js +81 -0
  179. package/src/server/figma.js +24 -0
  180. package/src/server/firebase-cloud-messaging.js +111 -0
  181. package/src/server/firecrawl.js +70 -0
  182. package/src/server/fireflies.js +31 -0
  183. package/src/server/fireworks-ai.js +16 -0
  184. package/src/server/gatewayapi.js +48 -0
  185. package/src/server/gemini-enterprise.js +47 -0
  186. package/src/server/github-api.js +90 -0
  187. package/src/server/gitlab-api.js +67 -0
  188. package/src/server/gmail.js +60 -0
  189. package/src/server/gong.js +52 -0
  190. package/src/server/google-ads-search.js +134 -0
  191. package/src/server/google-ads.js +80 -0
  192. package/src/server/google-docs.js +36 -0
  193. package/src/server/google-drive.js +71 -0
  194. package/src/server/google-maps-platform.js +90 -0
  195. package/src/server/google-search-console.js +31 -0
  196. package/src/server/google-sheets.js +60 -0
  197. package/src/server/google-slides.js +36 -0
  198. package/src/server/google.js +61 -0
  199. package/src/server/granola.js +115 -0
  200. package/src/server/graphqlOperation.js +15 -0
  201. package/src/server/hex.js +29 -0
  202. package/src/server/heygen.js +54 -0
  203. package/src/server/hubspot.js +85 -0
  204. package/src/server/incident-io.js +68 -0
  205. package/src/server/inngest.js +86 -0
  206. package/src/server/jsonOperation.js +34 -0
  207. package/src/server/klipy.js +34 -0
  208. package/src/server/lexware.js +59 -0
  209. package/src/server/lightspeed.js +82 -0
  210. package/src/server/linear.js +52 -0
  211. package/src/server/linkedin.js +74 -0
  212. package/src/server/mailgun.js +76 -0
  213. package/src/server/mapbox.js +46 -0
  214. package/src/server/mcpRegistration.js +41 -0
  215. package/src/server/mcpTransport.js +60 -0
  216. package/src/server/microsoft-excel.js +67 -0
  217. package/src/server/microsoft-fabric.js +81 -0
  218. package/src/server/microsoft-onedrive.js +58 -0
  219. package/src/server/microsoft-onenote.js +52 -0
  220. package/src/server/microsoft-outlook.js +58 -0
  221. package/src/server/microsoft-powerpoint.js +5 -0
  222. package/src/server/microsoft-sharepoint.js +46 -0
  223. package/src/server/microsoft-teams.js +29 -0
  224. package/src/server/microsoft-word.js +5 -0
  225. package/src/server/microsoft.js +88 -0
  226. package/src/server/miro.js +29 -0
  227. package/src/server/n8n.js +78 -0
  228. package/src/server/notion.js +76 -0
  229. package/src/server/oura.js +48 -0
  230. package/src/server/paddle.js +83 -0
  231. package/src/server/perplexity.js +15 -0
  232. package/src/server/pipedrive.js +95 -0
  233. package/src/server/polar.js +20 -0
  234. package/src/server/posthog.js +44 -0
  235. package/src/server/prestashop.js +42 -0
  236. package/src/server/replicate.js +42 -0
  237. package/src/server/resend.js +93 -0
  238. package/src/server/salesforce.js +84 -0
  239. package/src/server/sanity.js +31 -0
  240. package/src/server/semrush.js +359 -0
  241. package/src/server/sentry.js +30 -0
  242. package/src/server/sevdesk.js +20 -0
  243. package/src/server/shopify.js +99 -0
  244. package/src/server/slack.js +143 -0
  245. package/src/server/snowflake.js +139 -0
  246. package/src/server/storyblok.js +49 -0
  247. package/src/server/stripe.js +13 -0
  248. package/src/server/supabase.js +13 -0
  249. package/src/server/tally.js +78 -0
  250. package/src/server/telegram.js +55 -0
  251. package/src/server/tiktok.js +86 -0
  252. package/src/server/twilio.js +90 -0
  253. package/src/server/twitch.js +409 -0
  254. package/src/server/wave.js +520 -0
  255. package/src/server/wix.js +1048 -0
  256. package/src/server/wiz.js +117 -0
  257. package/src/server/woocommerce.js +412 -0
  258. package/src/server/wordpress-com.js +236 -0
  259. package/src/server/wordpress-self-hosted.js +134 -0
  260. package/src/server/workday.js +136 -0
  261. package/src/server/x-twitter.js +110 -0
  262. package/src/server/xero.js +397 -0
  263. package/src/server/zoho-books.js +90 -0
  264. package/src/server/zoho-crm.js +89 -0
  265. package/src/server/zohoOAuth.js +21 -0
  266. package/src/shared/ai-models.json +8049 -0
  267. package/src/shared/ai.js +63 -0
  268. package/src/shared/algolia.js +29 -0
  269. package/src/shared/amazon-redshift.js +51 -0
  270. package/src/shared/amplitude.js +28 -0
  271. package/src/shared/atlassian.js +43 -0
  272. package/src/shared/aws.js +72 -0
  273. package/src/shared/canva.js +66 -0
  274. package/src/shared/chargebee.js +26 -0
  275. package/src/shared/clickhouse.js +38 -0
  276. package/src/shared/confidence.js +28 -0
  277. package/src/shared/databricks.js +33 -0
  278. package/src/shared/dbt-semantic-layer.js +32 -0
  279. package/src/shared/definitions.js +140 -0
  280. package/src/shared/figma.js +21 -0
  281. package/src/shared/firebase-cloud-messaging.js +45 -0
  282. package/src/shared/gemini-enterprise.js +33 -0
  283. package/src/shared/gong.js +33 -0
  284. package/src/shared/google-ads-search.js +31 -0
  285. package/src/shared/google-ads.js +28 -0
  286. package/src/shared/google-maps-platform.js +28 -0
  287. package/src/shared/google.js +133 -0
  288. package/src/shared/granola.js +25 -0
  289. package/src/shared/hex.js +28 -0
  290. package/src/shared/inngest.js +35 -0
  291. package/src/shared/lightspeed.js +75 -0
  292. package/src/shared/linkedin.js +27 -0
  293. package/src/shared/logo-dev.js +21 -0
  294. package/src/shared/mapbox.js +38 -0
  295. package/src/shared/mcp.js +92 -0
  296. package/src/shared/microsoft-fabric.js +47 -0
  297. package/src/shared/microsoft.js +231 -0
  298. package/src/shared/miro.js +27 -0
  299. package/src/shared/oura.js +23 -0
  300. package/src/shared/posthog.js +33 -0
  301. package/src/shared/prestashop.js +23 -0
  302. package/src/shared/salesforce.js +36 -0
  303. package/src/shared/semrush.js +24 -0
  304. package/src/shared/shopify.js +51 -0
  305. package/src/shared/siteUrl.js +12 -0
  306. package/src/shared/slack.js +88 -0
  307. package/src/shared/snowflake.js +55 -0
  308. package/src/shared/tiktok.js +22 -0
  309. package/src/shared/tokens.js +747 -0
  310. package/src/shared/twilio.js +41 -0
  311. package/src/shared/twitch.js +49 -0
  312. package/src/shared/wave.js +52 -0
  313. package/src/shared/wix.js +40 -0
  314. package/src/shared/wiz.js +41 -0
  315. package/src/shared/wordpress-com.js +30 -0
  316. package/src/shared/wordpress.js +69 -0
  317. package/src/shared/workday.js +50 -0
  318. package/src/shared/x-twitter.js +19 -0
  319. package/src/shared/xero.js +46 -0
  320. package/src/shared/zoho-books.js +39 -0
  321. package/src/shared/zoho-crm.js +43 -0
  322. package/src/shared/zoho-regions.js +12 -0
  323. package/test/ai.test.js +136 -0
  324. package/test/airtable.test.js +125 -0
  325. package/test/algolia.test.js +207 -0
  326. package/test/amazon-redshift.test.js +272 -0
  327. package/test/amplitude.test.js +239 -0
  328. package/test/apify.test.js +93 -0
  329. package/test/apollo-io.test.js +125 -0
  330. package/test/asana.test.js +99 -0
  331. package/test/ashby.test.js +97 -0
  332. package/test/atlassian.test.js +249 -0
  333. package/test/attention.test.js +79 -0
  334. package/test/aws.test.js +405 -0
  335. package/test/brevo.test.js +71 -0
  336. package/test/calendly.test.js +136 -0
  337. package/test/canva.test.js +258 -0
  338. package/test/chargebee.test.js +195 -0
  339. package/test/clickhouse.test.js +278 -0
  340. package/test/confidence.test.js +205 -0
  341. package/test/databricks.test.js +253 -0
  342. package/test/dbt-semantic-layer.test.js +221 -0
  343. package/test/designMcp.test.js +336 -0
  344. package/test/elevenlabs.test.js +52 -0
  345. package/test/firebase-cloud-messaging.test.js +242 -0
  346. package/test/firecrawl.test.js +66 -0
  347. package/test/gemini-enterprise.test.js +218 -0
  348. package/test/github-api.test.js +167 -0
  349. package/test/gitlab-api.test.js +160 -0
  350. package/test/gong.test.js +192 -0
  351. package/test/google-ads.test.js +350 -0
  352. package/test/google-maps-platform.test.js +191 -0
  353. package/test/google.test.js +710 -0
  354. package/test/granola.test.js +240 -0
  355. package/test/hex.test.js +253 -0
  356. package/test/heygen.test.js +121 -0
  357. package/test/hubspot.test.js +103 -0
  358. package/test/inngest.test.js +219 -0
  359. package/test/lightspeed.test.js +250 -0
  360. package/test/linear.test.js +146 -0
  361. package/test/linkedin.test.js +243 -0
  362. package/test/logo-dev.test.js +79 -0
  363. package/test/mailgun.test.js +107 -0
  364. package/test/mapbox.test.js +181 -0
  365. package/test/mcp.test.js +227 -0
  366. package/test/microsoft-fabric.test.js +258 -0
  367. package/test/microsoft.test.js +554 -0
  368. package/test/n8nOAuth.test.js +188 -0
  369. package/test/notionOAuth.test.js +183 -0
  370. package/test/oura.test.js +211 -0
  371. package/test/paddleCatalogue.test.js +51 -0
  372. package/test/paddlePermissions.test.js +101 -0
  373. package/test/perplexityComposition.test.js +39 -0
  374. package/test/pipedriveOAuth.test.js +140 -0
  375. package/test/posthog.test.js +200 -0
  376. package/test/prestashop.test.js +207 -0
  377. package/test/resend.test.js +163 -0
  378. package/test/salesforce.test.js +276 -0
  379. package/test/semrush.test.js +479 -0
  380. package/test/sentry.test.js +35 -0
  381. package/test/shopify.test.js +247 -0
  382. package/test/slack.test.js +320 -0
  383. package/test/snowflake.test.js +391 -0
  384. package/test/tally.test.js +75 -0
  385. package/test/telegram.test.js +58 -0
  386. package/test/tiktok.test.js +243 -0
  387. package/test/tokens.test.js +1079 -0
  388. package/test/twilio.test.js +221 -0
  389. package/test/twitch.test.js +573 -0
  390. package/test/wave.test.js +678 -0
  391. package/test/wix.test.js +1099 -0
  392. package/test/wiz.test.js +185 -0
  393. package/test/wordpress-com.test.js +469 -0
  394. package/test/wordpress.test.js +660 -0
  395. package/test/workday.test.js +314 -0
  396. package/test/x-twitter.test.js +256 -0
  397. package/test/xero.test.js +700 -0
  398. package/test/zoho-books.test.js +253 -0
  399. package/test/zoho-crm.test.js +223 -0
package/docs/twilio.md ADDED
@@ -0,0 +1,284 @@
1
+ # Twilio
2
+
3
+ Import `twilioProvider` from `@jskit-ai/connectors-catalog/server/twilio`.
4
+ This adapter verifies a Standard API key by listing call records for one
5
+ account in one region. It also sends SMS, initiates voice calls and reads
6
+ individual message/call status, with a signed POST-form callback verifier.
7
+ Phone-number provisioning, TwiML handlers and business workflows are owned by
8
+ the application/operator; the connector supplies operations and configuration.
9
+
10
+ ## Create the regional API key
11
+
12
+ 1. Sign into Twilio Console and select the intended account or subaccount.
13
+ Copy its **Account SID** from the account dashboard. It starts with `AC`.
14
+ 2. In the new Console, open **Settings → Account settings → API keys & auth
15
+ tokens**. Select the region, then **Create API key**. Select **US1**, **IE1**
16
+ or **AU1** to match where the call records are held.
17
+ 3. Enter an **API key name**, choose **Standard**, and click **Next**. Copy
18
+ the **API Key SID**, starting with `SK`, into the editor. Save the secret
19
+ immediately in the application environment as `TWILIO_API_SECRET`; it is
20
+ shown only during creation. Enter `env:TWILIO_API_SECRET` in the editor's
21
+ **API key secret reference** field, then check **Got it!** and **Finish**
22
+ in Twilio. Never put the secret value in `integrations.json`.
23
+ 4. In the legacy Console, the equivalent path is **Admin → Account management
24
+ → Keys & credentials → API keys & tokens → Create API key**. Set
25
+ **Friendly name**, **Region** and **Standard**, choose **Create**, save the
26
+ credentials, then acknowledge them and choose **Done**.
27
+ 5. To revoke access at Twilio, return to the key list, open the key and choose
28
+ **Delete key**, then confirm. Local connector disconnect only removes local
29
+ connection state. Standard keys have broader provider permissions than the
30
+ operations exposed here. The application's authorization policy must restrict
31
+ operation access and permitted destinations.
32
+ [Console key guide](https://www.twilio.com/docs/iam/api-keys/keys-in-console).
33
+
34
+ The API Key SID and its secret belong to a particular account and region.
35
+ They are distinct from the Account SID and Auth Token used in some Twilio
36
+ tutorials. Runtime HTTP Basic authentication uses **API Key SID:API key secret**.
37
+ [Authentication](https://www.twilio.com/docs/usage/requests-to-twilio),
38
+ [regional credentials](https://www.twilio.com/docs/global-infrastructure/manage-regional-api-credentials).
39
+
40
+ ## Portable configuration
41
+
42
+ The editor and a manually composed CLI use the same file:
43
+
44
+ ```json
45
+ {
46
+ "schemaVersion": 1,
47
+ "registrations": {},
48
+ "integrations": {
49
+ "voice": {
50
+ "provider": "twilio",
51
+ "displayName": "Support call records",
52
+ "accountMode": "shared",
53
+ "scopes": [],
54
+ "authentication": {
55
+ "method": "api-key",
56
+ "secretRef": "env:TWILIO_API_SECRET"
57
+ },
58
+ "settings": {
59
+ "region": "us1",
60
+ "accountSid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
61
+ "apiKeySid": "SKbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
62
+ }
63
+ }
64
+ }
65
+ }
66
+ ```
67
+
68
+ Replace both illustrative SIDs with the actual values. Validation requires
69
+ `AC` or `SK` followed by 32 hexadecimal characters. Region defaults to `us1`;
70
+ the other accepted values are `ie1` and `au1`. The form presents Region, Account
71
+ SID and Standard API Key SID, with a separate reference to the secret. These
72
+ same settings and defaults apply to CLI edits. Raw secrets are rejected by the
73
+ reference field. Changing either SID or the region requires verification again;
74
+ rotating the secret under the same reference is picked up on the next request.
75
+
76
+ The runtime binds credentials to these fixed destinations:
77
+
78
+ | Region | API origin |
79
+ |---|---|
80
+ | US1 | `https://api.twilio.com` |
81
+ | IE1 | `https://api.dublin.ie1.twilio.com` |
82
+ | AU1 | `https://api.sydney.au1.twilio.com` |
83
+
84
+ Non-US requests include both region and edge in the hostname. Region-only
85
+ domains such as `api.ie1.twilio.com` are deprecated. Selecting an edge does not
86
+ move the call records between regions. There is no fallback to a different
87
+ region on failure, and not every Twilio product is available in every region.
88
+ [Regional requests](https://www.twilio.com/docs/global-infrastructure/using-the-twilio-rest-api-in-a-non-us-region),
89
+ [edge domain migration](https://www.twilio.com/docs/global-infrastructure/understanding-edge-locations).
90
+
91
+ ## Runtime and AI composition
92
+
93
+ Apply the [API-key source pattern](../patterns/api-key-connection/PATTERN.md)
94
+ with `providers: [twilioProvider]`, the encrypted file connection store, the
95
+ application's environment reference resolver and its authorization policy.
96
+ Configuration and runtime state are text files. The runtime needs neither the
97
+ Vibe64 editor nor a database.
98
+
99
+ ```js
100
+ await connections.connectApiKey({ context, integrationId: "voice" });
101
+ const result = await connections.invoke({
102
+ context, integrationId: "voice", operation: "calls.list",
103
+ input: { PageSize: 25, Status: "completed" }
104
+ });
105
+ ```
106
+
107
+ `calls.list` requests
108
+ `GET /2010-04-01/Accounts/{AccountSid}/Calls.json` at the selected origin.
109
+ Verification uses its default first page; an empty call list is valid.
110
+ The response retains the call records and Twilio's pagination metadata.
111
+ [Call resource](https://www.twilio.com/docs/voice/api/call-resource).
112
+
113
+ Supported inputs are `PageSize` (1–1000, default 50), `Page` (zero or greater,
114
+ default zero), `PageToken`, `To`, `From` and `Status`. The local maximum page is
115
+ 2147483647 and maximum token length is 4096. To/From accept 1–256 characters,
116
+ including phone numbers and supported non-phone identifiers. Status accepts
117
+ `queued`, `ringing`, `in-progress`, `canceled`, `completed`, `failed`, `busy`
118
+ and `no-answer`. Date filters are not implemented by this fragment.
119
+
120
+ For another page, extract `PageToken` and `Page` from `next_page_uri` and pass
121
+ them as structured input; continue using the desired filters and page size.
122
+ The runtime never follows that returned URL or accepts a caller-supplied URL,
123
+ account SID or region as operation input. It encodes query values and rebuilds
124
+ the request against the configured account and origin. It returns one page per
125
+ call and does not automatically retry or fetch all pages. A rejected key marks
126
+ the local connection as needing reconnection; errors do not return the provider
127
+ response body or the secret to callers.
128
+
129
+ ## Provisioning automation and application ownership
130
+
131
+ ### SMS and outbound voice
132
+
133
+ `messages.send` accepts `To`, `Body` (1–1600 characters, whitespace preserved),
134
+ exactly one of `From` or `MessagingServiceSid`, and optional `StatusCallback`.
135
+ Phone numbers use E.164 format (`+` followed by country code and number).
136
+ The service SID begins with `MG`. The configured account must own a capable
137
+ sender or Messaging Service; trial recipients, geographic permissions and
138
+ sender registration must already be configured in Twilio. This operation is
139
+ text SMS, not MMS, WhatsApp, RCS or Twilio Verify.
140
+
141
+ `calls.create` accepts E.164 `To` and `From`, exactly one of `Url` or `Twiml`,
142
+ optional `StatusCallback`, and `Timeout` (5–600 seconds, default 60). The
143
+ application owns the call-control endpoint or supplies valid TwiML (maximum
144
+ 4000 characters). Return TwiML XML from that endpoint; escape dynamic values
145
+ using the framework's XML tools. Callback and call-control URLs must be HTTPS
146
+ without URL credentials or fragments. Inline TwiML is passed to Twilio as XML
147
+ text, not executed or rendered by JSKIT.
148
+
149
+ ```js
150
+ const message = await connections.invoke({
151
+ context, integrationId: "voice", operation: "messages.send",
152
+ input: { To: recipient, From: sender, Body: "Your appointment is tomorrow." }
153
+ });
154
+ const delivery = await connections.invoke({
155
+ context, integrationId: "voice", operation: "messages.get",
156
+ input: { resourceSid: message.sid }
157
+ });
158
+ ```
159
+
160
+ `messages.get` takes an `SM` resource SID. `calls.get` takes a `CA` resource
161
+ SID. Both return one provider record, including status and available error
162
+ details. A queued response does not prove delivery or a completed call.
163
+ The application must authorize the requested resource against its own stored
164
+ message/call ownership, and authorize destination, sender, content and call
165
+ control before invoking a write. Authentication alone does not authorize all
166
+ users to send to arbitrary numbers.
167
+
168
+ Writes use form-encoded POST requests to the configured account's Messages or
169
+ Calls endpoint; reads use GET on that resource SID. No automatic write retries
170
+ or automatic polling occur. A timeout, malformed success or server failure can
171
+ leave the send outcome unknown: reconcile provider records before deciding
172
+ whether to send again. A retry can cause duplicate communication and charges.
173
+ Product availability depends on region and account access; there is no silent
174
+ fallback to another region. Other frameworks can perform these same native
175
+ HTTP operations with the same account, regional credentials and Env references.
176
+
177
+ References: [Message API](https://www.twilio.com/docs/messaging/api/message-resource),
178
+ [Call API](https://www.twilio.com/docs/voice/api/call-resource),
179
+ [regional availability](https://www.twilio.com/docs/global-infrastructure/regional-product-and-feature-availability).
180
+
181
+ ### Incoming messages, delivery and call control
182
+
183
+ Store the account's **Auth Token** separately from the Standard API key secret,
184
+ using private Env `TWILIO_AUTH_TOKEN` and optional configuration setting
185
+ `authTokenRef: "env:TWILIO_AUTH_TOKEN"`. The Auth Token is available on the
186
+ Twilio Console account dashboard. Never expose either secret to a browser.
187
+ The application resolves that reference through its private Env resolver;
188
+ the verifier receives the value, not the reference string.
189
+
190
+ Configure the phone number's **A message comes in** and/or **A call comes in**
191
+ handler to the application's public HTTPS URL, with **HTTP POST**. For Messaging
192
+ Services configure inbound handling in the service's Integration settings.
193
+ For outbound delivery/call completion supply `StatusCallback` when sending.
194
+ The app owns all these routes and their configured public URLs. Custom-domain
195
+ changes require updating Twilio and the expected URL used by verification.
196
+
197
+ ```js
198
+ import { verifyTwilioRequest } from "@jskit-ai/connectors-catalog/server/twilio";
199
+
200
+ const event = verifyTwilioRequest({
201
+ rawBody, // Uint8Array captured before the framework's form parser
202
+ signature: request.headers["x-twilio-signature"],
203
+ contentType: request.headers["content-type"],
204
+ authToken: await resolveReference(integration.settings.authTokenRef),
205
+ accountSid: integration.settings.accountSid,
206
+ url: process.env.TWILIO_INBOUND_URL // exact URL configured at Twilio
207
+ });
208
+ ```
209
+
210
+ Choose the expected integration/URL through trusted route configuration, never
211
+ from an unverified AccountSid or forwarded Host header. The verifier binds the
212
+ signature to that exact URL (including query), all form fields and expected
213
+ account. It preserves unknown fields. Its scope is UTF-8 POST form bodies,
214
+ maximum 1 MiB and 256 distinct fields; repeated fields, JSON, GET and WebSocket
215
+ callbacks are not supported by this helper. Configure POST accordingly or use
216
+ Twilio's native SDK for other callback formats. Other application frameworks
217
+ should use their own Twilio SDK request validator with the same Env token,
218
+ expected account, exact URL and all received fields.
219
+
220
+ After authentication, the application validates its expected event type and
221
+ fields. An inbound SMS normally includes MessageSid, From, To and Body. Store
222
+ the message under the authorized account/number and deduplicate by MessageSid.
223
+ Return an XML `<Response/>` acknowledgement or a framework-generated TwiML reply.
224
+ Delivery callbacks include MessageSid and status; map only to messages owned by
225
+ this integration. Voice handlers return native TwiML XML; call status callbacks
226
+ map CallSid to the app's call record. Authentication does not define business
227
+ behavior or permit an arbitrary user to redirect a call.
228
+
229
+ Twilio's form signatures have no timestamp expiry. The app must handle repeat
230
+ callbacks and out-of-order statuses idempotently, retaining progress instead of
231
+ regressing terminal delivery states. Disconnecting the sending key does not
232
+ remove Twilio's webhook configuration or revoke its separate account Auth Token.
233
+ See [Twilio request security](https://www.twilio.com/docs/usage/security).
234
+
235
+ ### Account and key provisioning
236
+
237
+ Twilio uses accounts, subaccounts and API keys here, rather than Google-style
238
+ OAuth app registrations. A human must establish the parent account, access and
239
+ any required billing or verification. An authorized operator or AI can then
240
+ create Standard keys through
241
+ `POST /2010-04-01/Accounts/{AccountSid}/Keys.json`, with an
242
+ `application/x-www-form-urlencoded` body containing `FriendlyName`. The request
243
+ requires an appropriate bootstrap credential, such as the account Auth Token
244
+ or a Main API key. Standard keys cannot create more keys. Store the returned
245
+ `sid` and one-time `secret` through the same settings and environment bindings
246
+ above. Use the matching regional host and regional bootstrap credentials.
247
+ [Key creation API](https://www.twilio.com/docs/iam/api-keys/key-resource-v2010).
248
+
249
+ The application owner selects its account or subaccount and issues a key in
250
+ each required region. The Account API supports subaccount
251
+ creation through `POST /2010-04-01/Accounts.json` with `FriendlyName`, after
252
+ authorization with the parent account. Subaccounts separate resources and
253
+ credentials, but their usage is billed to the parent account. Two keys in the
254
+ same account do not establish separate billing or guaranteed quota isolation.
255
+ [Subaccounts](https://www.twilio.com/docs/iam/api/subaccounts).
256
+
257
+ The application operator selects its account, key and region and owns usage
258
+ limits. This adapter does not provision capacity or enforce a budget. Use
259
+ separate parent accounts where independent billing is required, subject to
260
+ Twilio's account arrangements. Online, installed editor and CLI users configure
261
+ the same application-owned credentials.
262
+
263
+ There is no OAuth callback in this API-key flow, so editor VM URLs and custom
264
+ application domains do not add OAuth redirect registrations. Twilio Verify and
265
+ SMS login are separate products and are outside this adapter. The application
266
+ owns access policy; connections are project-owned. Editor coding-assistant
267
+ attachment is deferred and not enabled by saving this connector.
268
+
269
+ ## Proof
270
+
271
+ Ten focused tests use simulated provider responses and real temporary
272
+ encrypted JSON state. They cover all three origins, Basic credential pairing,
273
+ restart, key rotation, ownership, disconnect, required settings, reverification,
274
+ query encoding, paging, malformed responses and denied credentials without
275
+ regional fallback. The two added tests cover useful SMS/call writes and status
276
+ reads, form encoding, ambiguous/invalid inputs, operation policy and uncertain
277
+ writes without automatic retry. An independent HMAC fixture tests signed inbound
278
+ content, unknown fields, URL/account/token binding and tampering rejection.
279
+ Public editor browser checks cover SID errors, separate API-key and callback
280
+ token references, all region choices, setup instructions, persistence and
281
+ connect/disconnect at compact, medium and expanded sizes.
282
+ Provider signup, real API use and generated applications are outside the test
283
+ scope. The same ten tests pass using normal exports from an installed package
284
+ in a disposable Node consumer, independently of Vibe64.