{"_id":"@distilled.cloud/zerossl","_rev":"4-e373a9f1ea75ce0211a88628075882c5","name":"@distilled.cloud/zerossl","dist-tags":{"placeholder":"0.0.0-placeholder","latest":"1.0.0-rc.15"},"versions":{"0.0.0-placeholder":{"name":"@distilled.cloud/zerossl","version":"0.0.0-placeholder","license":"Apache-2.0","_id":"@distilled.cloud/zerossl@0.0.0-placeholder","maintainers":[{"name":"pear-alchemy","email":"michael@alchemy.run"},{"name":"sam-goodwin","email":"sam@alchemy.run"},{"name":"blankparticle","email":"blankparticle@gmail.com"}],"homepage":"https://github.com/alchemy-run/distilled#readme","bugs":{"url":"https://github.com/alchemy-run/distilled/issues"},"dist":{"shasum":"b56e93feb981e024b50f87eb99e7c83f17d07cc9","tarball":"https://registry.npmjs.org/@distilled.cloud/zerossl/-/zerossl-0.0.0-placeholder.tgz","fileCount":1,"integrity":"sha512-JMiInc40Fa68V1Hyg+Z7Zr3Z9nxfF/6DxDfkDe43cuZCWRM8p+yju8eAECbP050GmxhnBHr3Ne9Bqxnqtv22zw==","signatures":[{"sig":"MEYCIQD1P4jo+MmDldnjDWHas0UN7+MfsgaHqsINjkSJDH6fjwIhANDpKIhdk2as3zysnnjmbv5ltlb7rqg8tOdlCfsDYL4a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":380},"_from":"file:/var/folders/04/dy7yys_174n5gqpcjh0dqw7h0000gn/T/distilled-placeholders-Xhy6Fn/zerossl/distilled.cloud-zerossl-0.0.0-placeholder.tgz","_npmUser":{"name":"blankparticle","email":"blankparticle@gmail.com"},"_resolved":"/var/folders/04/dy7yys_174n5gqpcjh0dqw7h0000gn/T/distilled-placeholders-Xhy6Fn/zerossl/distilled.cloud-zerossl-0.0.0-placeholder.tgz","_integrity":"sha512-JMiInc40Fa68V1Hyg+Z7Zr3Z9nxfF/6DxDfkDe43cuZCWRM8p+yju8eAECbP050GmxhnBHr3Ne9Bqxnqtv22zw==","repository":{"url":"git+https://github.com/alchemy-run/distilled.git","type":"git","directory":"packages/zerossl"},"_npmVersion":"11.19.0","description":"Placeholder package for initial npm registration.","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"tag":"placeholder","access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/zerossl_0.0.0-placeholder_1790929017101_0.8433552882719806","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.13":{"name":"@distilled.cloud/zerossl","version":"1.0.0-rc.13","license":"Apache-2.0","_id":"@distilled.cloud/zerossl@1.0.0-rc.13","maintainers":[{"name":"pear-alchemy","email":"michael@alchemy.run"},{"name":"sam-goodwin","email":"sam@alchemy.run"},{"name":"blankparticle","email":"blankparticle@gmail.com"}],"dist":{"shasum":"04432da73d127e3e0b8b32d5fef2c3b8d7a4cf27","tarball":"https://registry.npmjs.org/@distilled.cloud/zerossl/-/zerossl-1.0.0-rc.13.tgz","fileCount":48,"integrity":"sha512-dnxhg39lZjpTdZbHCVYPoUC9E2r8eSHbqiYDhSq2EurVPJcc9YRXlxZR1bP1nniSp078XV8GA+aUECt/Z56aQg==","signatures":[{"sig":"MEQCICOmSDqMGaD6CvxMmtiPZrAV8VxtG1lf5Q1d9PoIY/XmAiA3D+31FEhYtrsG7gt3dzyxj9Kpnzusal9QAVl5OfoEhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIF/iAHjdRhVEzt13TGCOTM5L0pm6Txf5N+tBS3YinovGAiEA3Pva+/TQhxwCrUGGflxy9j47EczWKXxRetqxK4sMmMU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@distilled.cloud%2fzerossl@1.0.0-rc.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":78342},"type":"module","module":"src/index.ts","exports":{".":{"bun":"./src/index.ts","types":"./lib/index.d.ts","worker":"./src/index.ts","default":"./lib/index.js"},"./Retry":{"bun":"./src/retry.ts","types":"./lib/retry.d.ts","worker":"./src/retry.ts","default":"./lib/retry.js"},"./Errors":{"bun":"./src/errors.ts","types":"./lib/errors.d.ts","worker":"./src/errors.ts","default":"./lib/errors.js"},"./Traits":{"bun":"./src/traits.ts","types":"./lib/traits.d.ts","worker":"./src/traits.ts","default":"./lib/traits.js"},"./zerossl":{"bun":"./src/services/zerossl.ts","types":"./lib/services/zerossl.d.ts","worker":"./src/services/zerossl.ts","default":"./lib/services/zerossl.js"},"./Protocol":{"bun":"./src/protocol.ts","types":"./lib/protocol.d.ts","worker":"./src/protocol.ts","default":"./lib/protocol.js"},"./Credentials":{"bun":"./src/credentials.ts","types":"./lib/credentials.d.ts","worker":"./src/credentials.ts","default":"./lib/credentials.js"}},"scripts":{"build":"tsc -b","generate":"bun scripts/generate.ts","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b93a0e26-00ed-47a4-bbc4-f451a47b879d"}},"repository":{"url":"https://github.com/alchemy-run/distilled","type":"git","directory":"packages/zerossl"},"directories":{},"sideEffects":false,"_nodeVersion":"26.0.0","dependencies":{"@distilled.cloud/core":"1.0.0-rc.13"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","@types/node":"26.2.0","@effect/platform-bun":"^4.0.0"},"peerDependencies":{"effect":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zerossl_1.0.0-rc.13_1790930332264_0.4301141706814533","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.14":{"name":"@distilled.cloud/zerossl","version":"1.0.0-rc.14","license":"Apache-2.0","_id":"@distilled.cloud/zerossl@1.0.0-rc.14","maintainers":[{"name":"pear-alchemy","email":"michael@alchemy.run"},{"name":"sam-goodwin","email":"sam@alchemy.run"},{"name":"blankparticle","email":"blankparticle@gmail.com"}],"dist":{"shasum":"c9a88905dcf933c61f583a930ccb7ea28d3b6bdc","tarball":"https://registry.npmjs.org/@distilled.cloud/zerossl/-/zerossl-1.0.0-rc.14.tgz","fileCount":48,"integrity":"sha512-LCIQ1RwCS1e70MnPrs6TBKTJ34BWmz5Sq2EHJIQ4qFO6IMVqRope3XBTg0YZsljJTPqlT2cMmi7bjeDOPSU/XA==","signatures":[{"sig":"MEUCIQCdbxx9WO1gJ5jTv+GEDwhikb51+pevlu1wEnphdHRkoAIgPfUu5Q/0rxZOBbhKyV8JrZ+BnJKyjzeb7aaKWc/oDjQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICZnMnRDAaSb0NJnh/P/iEyvv3wIuvO7g0/2kUIe+5nxAiEAyXpbIM6Be9Zu5MOoaNdGtegz3nuLlrbF5wdB2T6Q0DM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@distilled.cloud%2fzerossl@1.0.0-rc.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":365206},"type":"module","module":"src/index.ts","exports":{".":{"bun":"./src/index.ts","types":"./lib/index.d.ts","worker":"./src/index.ts","default":"./lib/index.js"},"./Retry":{"bun":"./src/retry.ts","types":"./lib/retry.d.ts","worker":"./src/retry.ts","default":"./lib/retry.js"},"./Errors":{"bun":"./src/errors.ts","types":"./lib/errors.d.ts","worker":"./src/errors.ts","default":"./lib/errors.js"},"./Traits":{"bun":"./src/traits.ts","types":"./lib/traits.d.ts","worker":"./src/traits.ts","default":"./lib/traits.js"},"./zerossl":{"bun":"./src/services/zerossl.ts","types":"./lib/services/zerossl.d.ts","worker":"./src/services/zerossl.ts","default":"./lib/services/zerossl.js"},"./Protocol":{"bun":"./src/protocol.ts","types":"./lib/protocol.d.ts","worker":"./src/protocol.ts","default":"./lib/protocol.js"},"./Credentials":{"bun":"./src/credentials.ts","types":"./lib/credentials.d.ts","worker":"./src/credentials.ts","default":"./lib/credentials.js"}},"scripts":{"build":"tsc -b","convert":"node --conditions=bun scripts/convert.ts","generate":"node --conditions=bun scripts/generate.ts","typecheck":"tsc -p tsconfig.json","specs:fetch":"git submodule update --force --init --depth=1 specs/spec-mirror-zerossl","specs:update":"git submodule update --remote --force --depth=1 specs/spec-mirror-zerossl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b93a0e26-00ed-47a4-bbc4-f451a47b879d"}},"distilled":{"generatedAt":"2026-10-08","specUpdatedAt":"2026-10-08"},"repository":{"url":"https://github.com/alchemy-run/distilled","type":"git","directory":"packages/zerossl"},"directories":{},"sideEffects":false,"dependencies":{"@distilled.cloud/core":"1.0.0-rc.14"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.2.0"},"peerDependencies":{"effect":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/zerossl_1.0.0-rc.14_1791830371832_0.15657773942187414","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.15":{"_id":"@distilled.cloud/zerossl@1.0.0-rc.15","dist":{"shasum":"0fd6ef7655d9070837d0cb6fdb8846737b1a0a63","tarball":"https://registry.npmjs.org/@distilled.cloud/zerossl/-/zerossl-1.0.0-rc.15.tgz","fileCount":48,"integrity":"sha512-lu69h33Ib18kATq0W1c1zw6CH3YkUvKWGj1QUi8lbuINXPXHb2/88ATzehDQr5GM/qxtO+azgglhs/NVOf4UVw==","signatures":[{"sig":"MEUCICknDNNvCyKjGe9LXMCRDJuj69/LrdhmGeYEHV1Qpv8gAiEAlZk46d7xOMr5joMQXb0k/e6V2rCBsq5KGhU/NmPiDWI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDcVzlmJYFIRDEox1wwAHa98dKtIUU43q8JvXqg/vMBQAiEAgThTKX096Mi/tmDcrNonTJizAZB15VpITQKW4T0EXlY="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@distilled.cloud%2fzerossl@1.0.0-rc.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":365206},"name":"@distilled.cloud/zerossl","type":"module","module":"src/index.ts","exports":{".":{"bun":"./src/index.ts","types":"./lib/index.d.ts","worker":"./src/index.ts","default":"./lib/index.js"},"./Retry":{"bun":"./src/retry.ts","types":"./lib/retry.d.ts","worker":"./src/retry.ts","default":"./lib/retry.js"},"./Errors":{"bun":"./src/errors.ts","types":"./lib/errors.d.ts","worker":"./src/errors.ts","default":"./lib/errors.js"},"./Traits":{"bun":"./src/traits.ts","types":"./lib/traits.d.ts","worker":"./src/traits.ts","default":"./lib/traits.js"},"./zerossl":{"bun":"./src/services/zerossl.ts","types":"./lib/services/zerossl.d.ts","worker":"./src/services/zerossl.ts","default":"./lib/services/zerossl.js"},"./Protocol":{"bun":"./src/protocol.ts","types":"./lib/protocol.d.ts","worker":"./src/protocol.ts","default":"./lib/protocol.js"},"./Credentials":{"bun":"./src/credentials.ts","types":"./lib/credentials.d.ts","worker":"./src/credentials.ts","default":"./lib/credentials.js"}},"license":"Apache-2.0","scripts":{"build":"tsc -b","convert":"node --conditions=bun scripts/convert.ts","generate":"node --conditions=bun scripts/generate.ts","typecheck":"tsc -p tsconfig.json","specs:fetch":"git submodule update --force --init --depth=1 specs/spec-mirror-zerossl","specs:update":"git submodule update --remote --force --depth=1 specs/spec-mirror-zerossl"},"version":"1.0.0-rc.15","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b93a0e26-00ed-47a4-bbc4-f451a47b879d"}},"distilled":{"generatedAt":"2026-10-08","specUpdatedAt":"2026-10-08"},"repository":{"url":"https://github.com/alchemy-run/distilled","type":"git","directory":"packages/zerossl"},"directories":{},"maintainers":[{"name":"pear-alchemy","email":"michael@alchemy.run"},{"name":"sam-goodwin","email":"sam@alchemy.run"},{"name":"blankparticle","email":"blankparticle@gmail.com"}],"sideEffects":false,"dependencies":{"@distilled.cloud/core":"1.0.0-rc.15"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.2.0"},"peerDependencies":{"effect":"^4.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/zerossl_1.0.0-rc.15_1791833767496_0.8156087947789998"}}},"time":{"created":"2026-10-02T08:16:56.598Z","modified":"2026-10-12T19:36:08.498Z","0.0.0-placeholder":"2026-10-02T08:16:57.235Z","1.0.0-rc.13":"2026-10-02T08:38:52.362Z","1.0.0-rc.14":"2026-10-12T18:39:31.953Z","1.0.0-rc.15":"2026-10-12T19:36:07.589Z"},"license":"Apache-2.0","repository":{"url":"https://github.com/alchemy-run/distilled","type":"git","directory":"packages/zerossl"},"maintainers":[{"name":"pear-alchemy","email":"michael@alchemy.run"},{"name":"sam-goodwin","email":"sam@alchemy.run"},{"name":"blankparticle","email":"blankparticle@gmail.com"}],"readme":"# ZeroSSL for Effect\n\n`@distilled.cloud/zerossl` provides ZeroSSL's External Account Binding (EAB)\ncredential endpoint. Install it alongside `effect`, set `ZEROSSL_ACCESS_KEY`,\nsave this as `example.ts`, and run `node example.ts`:\n\n```ts\nimport * as ZeroSsl from \"@distilled.cloud/zerossl\";\nimport * as Effect from \"effect/Effect\";\nimport * as FetchHttpClient from \"effect/http/FetchHttpClient\";\n\nconst eab = await Effect.runPromise(\n  ZeroSsl.zerossl.generateEabCredentials({}).pipe(\n    Effect.provide(ZeroSsl.CredentialsFromEnv),\n    Effect.provide(FetchHttpClient.layer),\n  ),\n);\nconsole.log({ success: eab.success });\n// Store eab.eab_kid and the redacted eab.eab_hmac_key securely.\n```\n\nThis makes a real credential-generation request. EAB credentials are reusable\nand subject to daily limits; generate once and retain the pair rather than\nrunning the example for every certificate.\n\n## Authentication and outputs\n\n`CredentialsFromEnv` reads `ZEROSSL_ACCESS_KEY`, falling back to `ZERO_SSL_KEY`.\n`ZeroSsl.layer({ accessKey, apiBaseUrl })` accepts explicit credentials with a\nredacted access key. Requests use `Authorization: ApiKey <key>`, not a query\nparameter, following the [current REST authentication guidance](https://zerossl.com/documentation/api/).\nHeader-only authentication is supported by `POST /acme/eab-credentials`.\n\nThe service remains `ZeroSsl.zerossl.generateEabCredentials` (also available\nfrom `@distilled.cloud/zerossl/zerossl`). Its HMAC output is\n`Redacted<string>`, matching the runtime value. `success` remains boolean;\nthe protocol also normalizes the EAB documentation's numeric `1`/`0` form.\nJSON outputs are schema-validated before sensitive values are wrapped.\n`ZeroSslParseError` omits raw bodies and potentially secret-bearing parser\nerrors. Typed rate-limit errors retain `Retry-After` as an optional Effect\n`Duration`, including when ZeroSSL sends an error envelope with HTTP 200.\n\n## Source and limitations\n\n`scripts/convert.ts` builds the Smithy model from the ZeroSSL API reference,\nwhich ZeroSSL publishes as Markdown in\n[zerossl/documentation](https://github.com/zerossl/documentation) and the spec\nmirror `specs/spec-mirror-zerossl` snapshots daily: one page per endpoint\n(method, URL, parameter table, example response) plus the error-code tables.\nWhat the reference does not state lives in `patches/`. Edit the converter,\npatches and handwritten protocol, not generated service files; regenerate with\n`pnpm generate zerossl` from the workspace root.\n\nOnly EAB credential generation is modeled, not ZeroSSL's certificate-management\nREST API. Certificate issuance uses `@distilled.cloud/acme` with the ZeroSSL\ndirectory and `externalAccountBinding: { keyId: eab.eab_kid, hmacKey: eab.eab_hmac_key }`.\nCallers own challenge solving, renewal, and secure credential storage. Retry\nbehavior uses the shared SDK policy and can be configured via `ZeroSsl.Retry`.\n","readmeFilename":""}