{"_id":"@absolutejs/auth-twilio","_rev":"3-8b0136d21e6202b17763a3172ea32cb7","name":"@absolutejs/auth-twilio","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@absolutejs/auth-twilio","version":"0.1.0","keywords":["auth","mfa","otp","twilio","verify","absolutejs"],"author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/auth-twilio@0.1.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/auth-adapters/tree/main/twilio","bugs":{"url":"https://github.com/absolutejs/auth-adapters/issues"},"dist":{"shasum":"2ecdfe4de81f45e5478938e19ec5d23550154bbc","tarball":"https://registry.npmjs.org/@absolutejs/auth-twilio/-/auth-twilio-0.1.0.tgz","fileCount":12,"integrity":"sha512-YOs/wR5nFmDLgstzD8uG7uhbAcGnpLGmllAlfTKIRXIr7/2E1KE7d5ujAi8eFZFLmjCz5JQ4r9zHNECf+1m4Wg==","signatures":[{"sig":"MEUCIHRNSV1TZkpUY/PJwEfCawUsyISzjJ+zBhQld4dYvinLAiEA7DZ55fVdpjNpN5Ct+GDBt2cgdI5oKsyzOtqOHUSKLUI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43409},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"ce0ff8bc7289115cd1a270d39f8071e0fc2cd99c","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/auth --external '@absolutejs/auth/*' --external twilio --external 'twilio/*' --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","check:package":"bun run format && bun run typecheck && bun run test && bun run verify-package && bun run build && bun run verify-package --artifacts","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"runtimePeers":{"twilio":{"range":">=6.0.0 <7","tested":"6.0.2","optional":false,"buildExternals":["twilio","twilio/*"],"artifactImports":[]},"@absolutejs/auth":{"range":">=0.58.0 <0.59","tested":"0.58.0","optional":false,"buildExternals":["@absolutejs/auth","@absolutejs/auth/*"],"artifactImports":[]}},"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/auth-adapters.git","type":"git","directory":"twilio"},"_npmVersion":"10.9.2","description":"Twilio Verify provider for @absolutejs/auth MFA challenges.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"0.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"twilio":"6.0.2","prettier":"3.8.1","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/auth":"0.58.0"},"peerDependencies":{"twilio":">=6.0.0 <7","@absolutejs/auth":">=0.58.0 <0.59"},"_npmOperationalInternal":{"tmp":"tmp/auth-twilio_0.1.0_1785559074263_0.27686800510408904","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@absolutejs/auth-twilio","version":"0.2.0","keywords":["auth","mfa","otp","twilio","verify","absolutejs"],"author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/auth-twilio@0.2.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/auth-adapters/tree/main/twilio","bugs":{"url":"https://github.com/absolutejs/auth-adapters/issues"},"dist":{"shasum":"671bd947025046c1f23fc7dbffba99278d2fd44f","tarball":"https://registry.npmjs.org/@absolutejs/auth-twilio/-/auth-twilio-0.2.0.tgz","fileCount":12,"integrity":"sha512-sJKJnVennBKf7g9edI7TRMnLIcTtQNNvvxd4bVKk7vWSq+5nD2M/gwQfE3+Tnt5oUa79ya8kbLco2BujtLU9zw==","signatures":[{"sig":"MEYCIQDB1VMPfMU8sVwfg/1O73307EB7W11qshrlMNTO8vXaswIhAJx5sVc5jpphb5wtZqpx8NIMG/wknXsDfD68omTeeRP0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47787},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"431572c4f7f9273be9c25c304b13b1ed4a8cf3db","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/auth --external '@absolutejs/auth/*' --external twilio --external 'twilio/*' --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","check:package":"bun run format && bun run typecheck && bun run test && bun run verify-package && bun run build && bun run verify-package --artifacts","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"runtimePeers":{"twilio":{"range":">=6.0.0 <7","tested":"6.0.2","optional":false,"buildExternals":["twilio","twilio/*"],"artifactImports":[]},"@absolutejs/auth":{"range":">=0.59.0 <0.60","tested":"0.59.2","optional":false,"buildExternals":["@absolutejs/auth","@absolutejs/auth/*"],"artifactImports":[]}},"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/auth-adapters.git","type":"git","directory":"twilio"},"_npmVersion":"10.9.2","description":"Twilio Verify provider for @absolutejs/auth MFA challenges.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"0.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"twilio":"6.0.2","prettier":"3.8.1","@types/bun":"1.3.14","typescript":"5.8.3","@absolutejs/auth":"0.59.2"},"peerDependencies":{"twilio":">=6.0.0 <7","@absolutejs/auth":">=0.59.0 <0.60"},"_npmOperationalInternal":{"tmp":"tmp/auth-twilio_0.2.0_1785600301649_0.43671670528940365","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@absolutejs/auth-twilio","version":"0.3.0","description":"Twilio Verify provider for @absolutejs/auth MFA challenges.","repository":{"type":"git","url":"git+https://github.com/absolutejs/auth-adapters.git","directory":"twilio"},"homepage":"https://github.com/absolutejs/auth-adapters/tree/main/twilio","bugs":{"url":"https://github.com/absolutejs/auth-adapters/issues"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","type":"module","license":"Apache-2.0","author":{"name":"Alex Kahn"},"publishConfig":{"access":"public"},"keywords":["auth","mfa","otp","twilio","verify","absolutejs"],"scripts":{"build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/auth --external '@absolutejs/auth/*' --external twilio --external 'twilio/*' --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","test":"bun test","typecheck":"tsc --noEmit","format":"prettier --write \"./**/*.{ts,json,md}\"","verify-package":"absolute-manifest verify-package","check:package":"bun run format && bun run typecheck && bun run test && bun run verify-package && bun run build && bun run verify-package --artifacts","release":"bun run check:package && npm publish --access public"},"peerDependencies":{"@absolutejs/auth":">=0.59.0 <0.60","twilio":">=6.0.0 <7"},"devDependencies":{"@absolutejs/auth":"0.59.2","@types/bun":"1.3.14","prettier":"3.8.1","twilio":"6.0.2","typescript":"5.8.3"},"dependencies":{"@absolutejs/manifest":"0.7.2","@sinclair/typebox":"^0.34.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"absolutejs":{"manifestContract":2,"runtimePeers":{"@absolutejs/auth":{"artifactImports":[],"buildExternals":["@absolutejs/auth","@absolutejs/auth/*"],"optional":false,"range":">=0.59.0 <0.60","tested":"0.59.2"},"twilio":{"artifactImports":[],"buildExternals":["twilio","twilio/*"],"optional":false,"range":">=6.0.0 <7","tested":"6.0.2"}}},"_id":"@absolutejs/auth-twilio@0.3.0","gitHead":"6ed29bbbbafe3b6778de3e46766c87a0a90fdc71","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-Is0kwMIQvWjg207878L0W8xw+c97YwflcfxbZrkAER2XQE9bcDoSPbQf1CRPNJbXnAxutbz1PN5idYhf98MHAA==","shasum":"c2bc7adf6545c364e1defeb025e15853900e1444","tarball":"https://registry.npmjs.org/@absolutejs/auth-twilio/-/auth-twilio-0.3.0.tgz","fileCount":12,"unpackedSize":48579,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAXgrRfCxrOBch7Ykw5LR76yIGN8FwbxmMV/I7f/X9CtAiAp9WOA+Zr3UAg/zONXvAlfiw80L5Kj3cSF8jMEvJztkg=="}]},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"directories":{},"maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/auth-twilio_0.3.0_1785605435784_0.1385544091636255"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-01T04:37:54.142Z","modified":"2026-08-01T17:30:36.219Z","0.1.0":"2026-08-01T04:37:54.431Z","0.2.0":"2026-08-01T16:05:01.805Z","0.3.0":"2026-08-01T17:30:35.927Z"},"bugs":{"url":"https://github.com/absolutejs/auth-adapters/issues"},"author":{"name":"Alex Kahn"},"license":"Apache-2.0","homepage":"https://github.com/absolutejs/auth-adapters/tree/main/twilio","keywords":["auth","mfa","otp","twilio","verify","absolutejs"],"repository":{"type":"git","url":"git+https://github.com/absolutejs/auth-adapters.git","directory":"twilio"},"description":"Twilio Verify provider for @absolutejs/auth MFA challenges.","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"readme":"# @absolutejs/auth-twilio\n\nTwilio Verify implementation of the `auth/verification-provider` contract from\n`@absolutejs/auth`. Twilio owns OTP generation, delivery, fraud evaluation, and\nverification status; Absolute Auth owns enrollment, MFA policy, and session\npromotion.\n\nThis is intentionally separate from `@absolutejs/dispatch-twilio`, which sends\napplication-authored alerts through Programmable Messaging.\n\n## Install\n\n```sh\nbun add @absolutejs/auth @absolutejs/auth-twilio twilio\n```\n\n## Usage\n\n```ts\nimport { auth } from \"@absolutejs/auth\";\nimport { createTwilioVerificationProvider } from \"@absolutejs/auth-twilio\";\nimport { Twilio } from \"twilio\";\n\nconst client = new Twilio(\n  process.env.TWILIO_ACCOUNT_SID!,\n  process.env.TWILIO_AUTH_TOKEN!,\n);\n\nconst authPlugin = await auth({\n  // credentials, mfa, stores, providersConfiguration, etc.\n  verificationProvider: createTwilioVerificationProvider({\n    profile: {\n      client,\n      verifyServiceSid: process.env.TWILIO_VERIFY_SERVICE_SID!,\n    },\n    // Must match the token lifetime configured on the Verify Service.\n    serviceTokenTtlMs: 10 * 60 * 1000,\n  }),\n});\n```\n\nOptional per-purpose templates keep enrollment and login copy distinct:\n\n```ts\ncreateTwilioVerificationProvider({\n  profile: { client, verifyServiceSid },\n  serviceTokenTtlMs: 600_000,\n  templates: {\n    mfa_enrollment: { sms: \"HJ...\", whatsapp: \"HJ...\" },\n    mfa_challenge: { call: \"HJ...\", sms: \"HJ...\" },\n  },\n});\n```\n\nThe adapter supports SMS, WhatsApp, and voice-call OTP channels, locale,\nrate-limit buckets, and tenant-to-account/Verify-Service routing. Twilio's\nFraud Guard risk check is enabled only for SMS, the channel Twilio supports it\non. By default tags contain only the purpose; `buildTags` is an\nexplicit opt-in and should never return direct personal data. Unknown Verify\nstatuses fail closed.\n\n## Boundaries\n\n- `@absolutejs/auth` enforces enrollment state, resend cooldown, failed-attempt\n  policy, audit events, and session promotion.\n- Twilio Verify generates and checks the code and applies service-level fraud\n  and rate-limit policy.\n- The configured `serviceTokenTtlMs` is an application assertion because\n  Twilio's start response does not expose the service token lifetime.\n- Prefer Twilio API keys in production when constructing the SDK client.\n\n## License\n\nApache-2.0.\n","readmeFilename":"README.md"}