{"_id":"@ahmedrowaihi/openapi-kotlin","_rev":"9-79d9f43f583bcd55b1d6ff59a935266f","name":"@ahmedrowaihi/openapi-kotlin","dist-tags":{"latest":"3.0.0"},"versions":{"0.1.0":{"name":"@ahmedrowaihi/openapi-kotlin","version":"0.1.0","keywords":["openapi","kotlin","android","retrofit","kotlinx-serialization","codegen","sdk","client"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/openapi-kotlin@0.1.0","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi-kotlin","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"c426f45c8b9cbcaef39066e274766c500f00b05c","tarball":"https://registry.npmjs.org/@ahmedrowaihi/openapi-kotlin/-/openapi-kotlin-0.1.0.tgz","fileCount":75,"integrity":"sha512-3Vlmcsv1aTPXoB6oPmHZ/uzeJjnvHzdUEr7pAY9FhvnoLQ26ORSo5UDvsVHUHvyzXoOFE01k/3ZDQzUm4OF49w==","signatures":[{"sig":"MEYCIQDEW4r5PnXbDBCUuvBNACKr36SOk6rZ6qqWNYjvh4wxYQIhAMVs/wOtWa5Tyoikp+fVMNF/17eDzQXLtVQnjUuq2pyQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2fopenapi-kotlin@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":95473},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-openapi-kotlin-0.1.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc --watch","test":"tsc && node --test tests/*.test.ts","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/419af20e8ca439bc4c14ce9b846661ab/ahmedrowaihi-openapi-kotlin-0.1.0.tgz","_integrity":"sha512-3Vlmcsv1aTPXoB6oPmHZ/uzeJjnvHzdUEr7pAY9FhvnoLQ26ORSo5UDvsVHUHvyzXoOFE01k/3ZDQzUm4OF49w==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi-kotlin"},"_npmVersion":"10.8.2","description":"Generate idiomatic Kotlin (Retrofit + kotlinx-serialization + suspend) client SDKs from an OpenAPI 3.x spec.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@hey-api/json-schema-ref-parser":"^1.4.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22","@hey-api/shared":"^0.4.2","@hey-api/spec-types":"^0.2.0","@ahmedrowaihi/tsconfig":"0.0.0","@ahmedrowaihi/openapi-tools":"1.2.0"},"peerDependencies":{"@hey-api/shared":">=0.3.0","@hey-api/spec-types":">=0.2.0","@ahmedrowaihi/openapi-tools":">=1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-kotlin_0.1.0_1777373239024_0.27942718492517526","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/openapi-kotlin. See https://github.com/ir-kit/ir-kit for migration."},"1.0.0":{"name":"@ahmedrowaihi/openapi-kotlin","version":"1.0.0","keywords":["openapi","kotlin","android","okhttp","kotlinx-serialization","codegen","sdk","client"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/openapi-kotlin@1.0.0","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi-kotlin","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"90c64af6760014dcb7b2de80bb061365594e39db","tarball":"https://registry.npmjs.org/@ahmedrowaihi/openapi-kotlin/-/openapi-kotlin-1.0.0.tgz","fileCount":319,"integrity":"sha512-VhlnZ4yQYzX0XYbMdQnQRkny38ermkNuueAQ0K8plVifwgZf/wLj0qEeAuZBIdjtROfNhMl4fc4IglkMNrbOZQ==","signatures":[{"sig":"MEQCIEBUGsZupJ8Ap4R59yfMYJVau5DTIGnDuz8hI5Rw4M4JAiBP02YgMAnC4h1hTGZ68Jc/mHtsDOcfB79bVTVyxG4iqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2fopenapi-kotlin@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":372141},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-openapi-kotlin-1.0.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc --watch","test":"tsc && node --test tests/*.test.ts","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/5dfbd1ec02a57f1593625037381b30b8/ahmedrowaihi-openapi-kotlin-1.0.0.tgz","_integrity":"sha512-VhlnZ4yQYzX0XYbMdQnQRkny38ermkNuueAQ0K8plVifwgZf/wLj0qEeAuZBIdjtROfNhMl4fc4IglkMNrbOZQ==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi-kotlin"},"_npmVersion":"10.8.2","description":"Generate idiomatic Kotlin (OkHttp + kotlinx-serialization + suspend) client SDKs from an OpenAPI 3.x spec.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@hey-api/json-schema-ref-parser":"^1.4.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22","@hey-api/shared":"^0.4.2","@hey-api/spec-types":"^0.2.0","@ahmedrowaihi/tsconfig":"0.0.0","@ahmedrowaihi/openapi-tools":"1.2.0"},"peerDependencies":{"@hey-api/shared":">=0.3.0","@hey-api/spec-types":">=0.2.0","@ahmedrowaihi/openapi-tools":">=1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-kotlin_1.0.0_1777515907930_0.3824760941031893","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/openapi-kotlin. See https://github.com/ir-kit/ir-kit for migration."},"1.0.1":{"name":"@ahmedrowaihi/openapi-kotlin","version":"1.0.1","keywords":["openapi","kotlin","android","okhttp","kotlinx-serialization","codegen","sdk","client"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/openapi-kotlin@1.0.1","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi-kotlin","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"cc93e3c785d35064f167d8a9e823cf0d0349f118","tarball":"https://registry.npmjs.org/@ahmedrowaihi/openapi-kotlin/-/openapi-kotlin-1.0.1.tgz","fileCount":319,"integrity":"sha512-MeATd8oWDajAHeWeO1S0VThr7vjB8mob6D0BwXOZxr2Ht800S77Im9avCc2NcXLtytZamP+o3PICYWp6ajUgmw==","signatures":[{"sig":"MEUCIQDZsRUjsB3/MZpymdDGY1RZ3/7DhaA1PsyOTcxK+80WMAIgPwuE0lR9enaAEXpfLaQv5Q0UInV3qQgTUdvatkVF0P0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2fopenapi-kotlin@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":374350},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-openapi-kotlin-1.0.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc --watch","test":"tsc && node --test tests/*.test.ts","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/403eca5ddbfa6574048fabff6b763b8c/ahmedrowaihi-openapi-kotlin-1.0.1.tgz","_integrity":"sha512-MeATd8oWDajAHeWeO1S0VThr7vjB8mob6D0BwXOZxr2Ht800S77Im9avCc2NcXLtytZamP+o3PICYWp6ajUgmw==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi-kotlin"},"_npmVersion":"10.8.2","description":"Generate idiomatic Kotlin (OkHttp + kotlinx-serialization + suspend) client SDKs from an OpenAPI 3.x spec.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@hey-api/json-schema-ref-parser":"^1.4.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22","@hey-api/shared":"^0.4.2","@hey-api/spec-types":"^0.2.0","@ahmedrowaihi/tsconfig":"0.0.0","@ahmedrowaihi/openapi-tools":"1.2.0"},"peerDependencies":{"@hey-api/shared":">=0.3.0","@hey-api/spec-types":">=0.2.0","@ahmedrowaihi/openapi-tools":">=1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-kotlin_1.0.1_1777525858359_0.17558779893196763","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/openapi-kotlin. See https://github.com/ir-kit/ir-kit for migration."},"1.0.2":{"name":"@ahmedrowaihi/openapi-kotlin","version":"1.0.2","keywords":["openapi","kotlin","android","okhttp","kotlinx-serialization","codegen","sdk","client"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/openapi-kotlin@1.0.2","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi-kotlin","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"47334b5531e4b2c2ee611c5a010aa320687ed30d","tarball":"https://registry.npmjs.org/@ahmedrowaihi/openapi-kotlin/-/openapi-kotlin-1.0.2.tgz","fileCount":315,"integrity":"sha512-nx97BMG/O55cMlPHdl32LA6FD49eAe4RDTDqRp70hXsBdmmhL4+4hBSS9v/C3phdMGfH5I1Ry+pRBtESBjXQ0A==","signatures":[{"sig":"MEYCIQDnRXgsxB6xECRukUaBFqeYEw2NQXg9DEko8KwOf5WHIgIhAKcJbnt70abo4hpQAJ4U8vtOCuJkm6pLch1XmMfRTtbb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2fopenapi-kotlin@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":365218},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-openapi-kotlin-1.0.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc --watch","test":"tsc && node --test tests/*.test.ts","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/6d0a1a3547d93af762a897d4b73d0b56/ahmedrowaihi-openapi-kotlin-1.0.2.tgz","_integrity":"sha512-nx97BMG/O55cMlPHdl32LA6FD49eAe4RDTDqRp70hXsBdmmhL4+4hBSS9v/C3phdMGfH5I1Ry+pRBtESBjXQ0A==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi-kotlin"},"_npmVersion":"10.8.2","description":"Generate idiomatic Kotlin (OkHttp + kotlinx-serialization + suspend) client SDKs from an OpenAPI 3.x spec.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@ahmedrowaihi/oas-core":"0.1.0","@hey-api/json-schema-ref-parser":"^1.4.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22","@hey-api/shared":"^0.4.2","@hey-api/spec-types":"^0.2.0","@ahmedrowaihi/tsconfig":"0.0.0","@ahmedrowaihi/openapi-tools":"1.2.0"},"peerDependencies":{"@hey-api/shared":">=0.3.0","@hey-api/spec-types":">=0.2.0","@ahmedrowaihi/openapi-tools":">=1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-kotlin_1.0.2_1777528717612_0.594279328993212","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/openapi-kotlin. See https://github.com/ir-kit/ir-kit for migration."},"1.1.0":{"name":"@ahmedrowaihi/openapi-kotlin","version":"1.1.0","keywords":["openapi","kotlin","android","okhttp","kotlinx-serialization","codegen","sdk","client"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/openapi-kotlin@1.1.0","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi-kotlin","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"e99a6892016e03cc8cff12936d443259405212c8","tarball":"https://registry.npmjs.org/@ahmedrowaihi/openapi-kotlin/-/openapi-kotlin-1.1.0.tgz","fileCount":315,"integrity":"sha512-lyIgTNc/FLYFu9AMLuWIskSM0Aow8duqzXDmQZtNvW3ZMB7ZiEocaqC+PJQ0Fots6ziGdsiTGvIu5z8+6nRwBA==","signatures":[{"sig":"MEYCIQCLStoAhQXRuR6fLafQa949Fu2hVLc/fOHwU3BgMYeUjAIhAKgsxS9O6XmzcnIqS2GdWDWhbaHc3//SHqMg0d4eRyAp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2fopenapi-kotlin@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":366326},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-openapi-kotlin-1.1.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/6c0044f0ef3ab7c2bc361fd9b42cdfd2/ahmedrowaihi-openapi-kotlin-1.1.0.tgz","_integrity":"sha512-lyIgTNc/FLYFu9AMLuWIskSM0Aow8duqzXDmQZtNvW3ZMB7ZiEocaqC+PJQ0Fots6ziGdsiTGvIu5z8+6nRwBA==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi-kotlin"},"_npmVersion":"10.8.2","description":"Generate idiomatic Kotlin (OkHttp + kotlinx-serialization + suspend) client SDKs from an OpenAPI 3.x spec.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@ahmedrowaihi/oas-core":"1.0.0","@ahmedrowaihi/codegen-core":"0.2.0","@hey-api/json-schema-ref-parser":"^1.4.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.0","@types/node":"^22","@hey-api/shared":"^0.4.2","@hey-api/spec-types":"^0.2.0","@ahmedrowaihi/tsconfig":"0.0.0","@ahmedrowaihi/openapi-tools":"1.2.0"},"peerDependencies":{"@hey-api/shared":">=0.3.0","@hey-api/spec-types":">=0.2.0","@ahmedrowaihi/openapi-tools":">=1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-kotlin_1.1.0_1777621362000_0.29924608668025177","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/openapi-kotlin. See https://github.com/ir-kit/ir-kit for migration."},"1.1.1":{"name":"@ahmedrowaihi/openapi-kotlin","version":"1.1.1","keywords":["openapi","kotlin","android","okhttp","kotlinx-serialization","codegen","sdk","client"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/openapi-kotlin@1.1.1","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi/kotlin","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"58f65d6a35ce866eb7fc4bdb75695ca9b940da8f","tarball":"https://registry.npmjs.org/@ahmedrowaihi/openapi-kotlin/-/openapi-kotlin-1.1.1.tgz","fileCount":315,"integrity":"sha512-QE6+kbxiEFuugyuBSjdEoCioemTQOL2/wkB4yKYbayCopP0SjhSezESx3eSMOQx6z53JVFyXUNJ9AKThNPC06Q==","signatures":[{"sig":"MEUCIQD87dkMoZrWtyTkYjf9eMdncyYXtfUIhzITnGEwBnEvCQIgQF0mHR9votzljZmpE2w9ig6VHD7vqaGTIbERGlnBe7Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2fopenapi-kotlin@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":366392},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-openapi-kotlin-1.1.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/b95e8bf27891a9aceba014e4ffb66a5d/ahmedrowaihi-openapi-kotlin-1.1.1.tgz","_integrity":"sha512-QE6+kbxiEFuugyuBSjdEoCioemTQOL2/wkB4yKYbayCopP0SjhSezESx3eSMOQx6z53JVFyXUNJ9AKThNPC06Q==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi/kotlin"},"_npmVersion":"10.8.2","description":"Generate idiomatic Kotlin (OkHttp + kotlinx-serialization + suspend) client SDKs from an OpenAPI 3.x spec.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@ahmedrowaihi/codegen-core":"0.2.1","@ahmedrowaihi/openapi-core":"2.0.0","@hey-api/json-schema-ref-parser":"^1.4.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.0","@types/node":"^22","@hey-api/shared":"^0.4.2","@hey-api/spec-types":"^0.2.0","@ahmedrowaihi/tsconfig":"0.0.0","@ahmedrowaihi/openapi-tools":"1.2.1"},"peerDependencies":{"@hey-api/shared":">=0.3.0","@hey-api/spec-types":">=0.2.0","@ahmedrowaihi/openapi-tools":">=1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/openapi-kotlin_1.1.1_1777638933688_0.7255103446865954","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/openapi-kotlin. See https://github.com/ir-kit/ir-kit for migration."},"2.0.0":{"name":"@ahmedrowaihi/openapi-kotlin","version":"2.0.0","keywords":["openapi","kotlin","android","okhttp","kotlinx-serialization","codegen","sdk","client"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/openapi-kotlin@2.0.0","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi/kotlin","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"6743a7b08eaf9d1988519262ff8d8dfa06105f29","tarball":"https://registry.npmjs.org/@ahmedrowaihi/openapi-kotlin/-/openapi-kotlin-2.0.0.tgz","fileCount":315,"integrity":"sha512-cGhG4eXK3JJq3OX7vCWU0Dmb2uKnfvCRAwwstukLfoKW1mKjDVfQ9ele4eNZerEbBJtsHgaJfGZ14KbZIhQF0g==","signatures":[{"sig":"MEUCICrXjx2zaflNfws8nIJlb1Hd354wnXh0M2fI0w7NUdvJAiEA6EMcuLr5xKmwXhYUAJGu0OjwezOYQhuB0yjOonDV/PI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2fopenapi-kotlin@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":366424},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-openapi-kotlin-2.0.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/7da3e555743797c7f06368f68e936a69/ahmedrowaihi-openapi-kotlin-2.0.0.tgz","_integrity":"sha512-cGhG4eXK3JJq3OX7vCWU0Dmb2uKnfvCRAwwstukLfoKW1mKjDVfQ9ele4eNZerEbBJtsHgaJfGZ14KbZIhQF0g==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi/kotlin"},"_npmVersion":"10.8.2","description":"Generate idiomatic Kotlin (OkHttp + kotlinx-serialization + suspend) client SDKs from an OpenAPI 3.x spec.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@ahmedrowaihi/codegen-core":"0.2.1","@ahmedrowaihi/openapi-core":"2.0.0","@hey-api/json-schema-ref-parser":"^1.4.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.0","@types/node":"^22","@hey-api/shared":"^0.4.2","@hey-api/spec-types":"^0.2.0","@ahmedrowaihi/tsconfig":"0.0.0","@ahmedrowaihi/openapi-tools":"1.3.0"},"peerDependencies":{"@hey-api/shared":">=0.3.0","@hey-api/spec-types":">=0.2.0","@ahmedrowaihi/openapi-tools":">=1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-kotlin_2.0.0_1778885511438_0.6685496074280002","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/openapi-kotlin. See https://github.com/ir-kit/ir-kit for migration."},"3.0.0":{"name":"@ahmedrowaihi/openapi-kotlin","version":"3.0.0","keywords":["openapi","kotlin","android","okhttp","kotlinx-serialization","codegen","sdk","client"],"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","_id":"@ahmedrowaihi/openapi-kotlin@3.0.0","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi/kotlin","bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"dist":{"shasum":"2b1f0054e8b8ee391306e369932d4a1a71543359","tarball":"https://registry.npmjs.org/@ahmedrowaihi/openapi-kotlin/-/openapi-kotlin-3.0.0.tgz","fileCount":315,"integrity":"sha512-dV+IHs/n233TzzizsWpNyR6090TFsKn09WY12zyOiQg2n5DTkG0r7vOZ8IZVYQ1cb8r6a80JdFngNCIdFAOZtw==","signatures":[{"sig":"MEUCIBZxG8n3ChK4XryWdSMC8J6N4HapViIeg6Ov7Ft5Z3k5AiEAoZDnae25Y/vG7s8laKgUC40xVNuPxinYvwD1x0jdc2I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmedrowaihi%2fopenapi-kotlin@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":365983},"main":"./dist/index.js","type":"module","_from":"file:ahmedrowaihi-openapi-kotlin-3.0.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsc -p tsconfig.build.json --watch","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"},"_resolved":"/tmp/4515d8242cd8c7d66350ebeca850247d/ahmedrowaihi-openapi-kotlin-3.0.0.tgz","_integrity":"sha512-dV+IHs/n233TzzizsWpNyR6090TFsKn09WY12zyOiQg2n5DTkG0r7vOZ8IZVYQ1cb8r6a80JdFngNCIdFAOZtw==","repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi/kotlin"},"_npmVersion":"10.8.2","description":"Generate idiomatic Kotlin (OkHttp + kotlinx-serialization + suspend) client SDKs from an OpenAPI 3.x spec.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@ahmedrowaihi/codegen-core":"0.2.1","@ahmedrowaihi/openapi-core":"2.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.0","@types/node":"^22","@hey-api/shared":"^0.4.2","@hey-api/spec-types":"^0.2.0","@ahmedrowaihi/tsconfig":"0.0.0","@ahmedrowaihi/openapi-tools":"1.4.0"},"peerDependencies":{"@hey-api/shared":">=0.3.0","@hey-api/spec-types":">=0.2.0","@ahmedrowaihi/openapi-tools":">=1.4.0"},"_npmOperationalInternal":{"tmp":"tmp/openapi-kotlin_3.0.0_1778901873104_0.24652945211742838","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @ir-kit/openapi-kotlin. See https://github.com/ir-kit/ir-kit for migration."}},"time":{"created":"2026-04-28T10:47:18.909Z","modified":"2026-05-21T09:19:07.962Z","0.1.0":"2026-04-28T10:47:19.174Z","1.0.0":"2026-04-30T02:25:08.076Z","1.0.1":"2026-04-30T05:10:58.519Z","1.0.2":"2026-04-30T05:58:37.807Z","1.1.0":"2026-05-01T07:42:42.146Z","1.1.1":"2026-05-01T12:35:33.830Z","2.0.0":"2026-05-15T22:51:51.593Z","3.0.0":"2026-05-16T03:24:33.301Z"},"bugs":{"url":"https://github.com/ahmedrowaihi/contract-kit/issues"},"author":{"name":"Ahmed Rowaihi","email":"ahmedrowaihi@gmail.com"},"license":"MIT","homepage":"https://github.com/ahmedrowaihi/contract-kit/tree/main/packages/openapi/kotlin","keywords":["openapi","kotlin","android","okhttp","kotlinx-serialization","codegen","sdk","client"],"repository":{"url":"git+https://github.com/ahmedrowaihi/contract-kit.git","type":"git","directory":"packages/openapi/kotlin"},"description":"Generate idiomatic Kotlin (OkHttp + kotlinx-serialization + suspend) client SDKs from an OpenAPI 3.x spec.","maintainers":[{"name":"ahmedrowaihi","email":"ahmedrowaihi1@gmail.com"}],"readme":"# @ahmedrowaihi/openapi-kotlin\n\nGenerate idiomatic Android / JVM Kotlin client SDKs from an OpenAPI 3.x spec — `@Serializable` data classes, `String`-raw enums, per-tag interfaces with `suspend` functions, and an OkHttp + kotlinx-serialization impl class. Per-call `RequestOptions`, composable interceptors, typed `APIError`, multipart + form-urlencoded wire encoding, multi-2xx sum-type returns, and per-op security auto-wiring all included.\n\nBuilt on the [`@hey-api`](https://github.com/hey-api/openapi-ts) toolchain (`@hey-api/json-schema-ref-parser` for spec loading, `@hey-api/shared` IR for normalization). 2.0 / 3.0 / 3.1 inputs all produce the same output.\n\nSibling package to [`@ahmedrowaihi/openapi-swift`](../openapi-swift). Part of [contract-kit](https://github.com/ahmedrowaihi/contract-kit). Companion to the [`petstore-sdk` example](../../examples/petstore-sdk).\n\n## Install\n\n```bash\npnpm add @ahmedrowaihi/openapi-kotlin @ahmedrowaihi/openapi-tools @hey-api/shared @hey-api/spec-types\n```\n\n## Usage\n\n```ts\nimport { generate } from \"@ahmedrowaihi/openapi-kotlin\";\n\nawait generate({\n  input: \"https://api.example.com/openapi.json\",\n  output: \"./sdk-kotlin\",\n  packageName: \"com.example.petstore\",\n});\n```\n\nReads any of: a filesystem path, an http(s) URL, or a pre-parsed object. YAML and JSON are both supported. External `$ref`s are bundled inline.\n\n## Output\n\n### Schemas → `@Serializable` data classes / enums / typealiases\n\n```kotlin\n@Serializable\npublic data class Pet(\n    public val id: Long? = null,\n    public val name: String,\n    public val category: Category? = null,\n    public val photoUrls: List<String>,\n    public val tags: List<Tag>? = null,\n    public val status: Pet_Status? = null,\n)\n\n@Serializable\npublic enum class Pet_Status(public val raw: String) {\n    @SerialName(\"available\") AVAILABLE(\"available\"),\n    @SerialName(\"pending\") PENDING(\"pending\"),\n    @SerialName(\"sold\") SOLD(\"sold\"),\n}\n```\n\nInline enums on a property get promoted to a top-level `Owner_Property` enum class. Renamed JSON keys (snake_case → camelCase) get a `@SerialName` so the wire format stays untouched.\n\n### Operations → interfaces + impls\n\nFor each tag the generator emits:\n\n- `interface <Tag>Api` with `suspend fun` requirements\n- top-level `<Tag>Api.<op>(…)` extension funs as no-options convenience overloads (forward to the with-options form using `RequestOptions()` defaults)\n- `class OkHttp<Tag>Api(client: APIClient) : <Tag>Api` with the wire impl\n\n```kotlin\npublic interface PetApi {\n    /** GET /pet/{petId} */\n    public suspend fun getPetById(petId: Long, options: RequestOptions): Pet\n    public suspend fun getPetByIdWithResponse(petId: Long, options: RequestOptions): Pair<Pet, Response>\n    // …\n}\n\npublic suspend fun PetApi.getPetById(petId: Long): Pet =\n    getPetById(petId = petId, options = RequestOptions())\n\npublic class OkHttpPetApi(public val client: APIClient) : PetApi {\n    public override suspend fun getPetById(petId: Long, options: RequestOptions): Pet { /* … */ }\n    // …\n}\n```\n\nEvery operation also emits a sibling `*WithResponse` overload that returns `Pair<T, Response>` — for callers that need response headers (pagination cursors, `ETag`, rate limits). Void-returning operations get `*WithResponse(): Response` instead.\n\n### Per-call control via `RequestOptions`\n\n```kotlin\npublic data class RequestOptions(\n    public val client: APIClient? = null,\n    public val baseUrl: HttpUrl? = null,\n    public val timeout: Long? = null,                                    // milliseconds\n    public val headers: Map<String, String> = emptyMap(),\n    public val requestInterceptors: List<suspend (Request) -> Request> = emptyList(),\n    public val responseValidator: (suspend (ByteArray, Response) -> Unit)? = null,\n    public val responseTransformer: (suspend (ByteArray) -> ByteArray)? = null,\n)\n```\n\n```kotlin\npets.getPetById(1)                                                       // defaults\npets.getPetById(1, RequestOptions(client = customClient))                // swap transport\npets.getPetById(1, RequestOptions(headers = mapOf(\"X-Trace\" to id)))     // extra headers\npets.getPetById(1, RequestOptions(baseUrl = stagingUrl))                 // hit staging\npets.getPetById(1, RequestOptions(timeout = 60_000))                     // long-poll override\n```\n\n### Composable interceptors + auth\n\nThe runtime `APIClient` carries an `interceptors.request` list that runs against every outgoing request. Interceptors compose — auth, logging, tracing all coexist:\n\n```kotlin\nval client = APIClient(baseUrl = \"https://api.example.com/\".toHttpUrl())\nclient.interceptors.request += { request ->\n    request.newBuilder()\n        .header(\"Authorization\", \"Bearer ${TokenStore.access()}\")\n        .build()\n}\n```\n\nWhen the spec declares any `securitySchemes`, the generator additionally emits an `Auth` sealed class (with `Bearer`, `ApiKey`, `Basic` subclasses — `ApiKey` carries an `APIKeyLocation` of `HEADER` / `QUERY` / `COOKIE`) and the client gains a `var auth: MutableMap<String, Auth>` keyed by scheme name. Operations with `security:` requirements walk the map and apply the matching scheme automatically:\n\n```kotlin\nclient.auth[\"bearerAuth\"] = Auth.Bearer(token)\nclient.auth[\"xApiKey\"] = Auth.ApiKey(\"X-API-Key\", key, APIKeyLocation.HEADER)\n```\n\n### Body media-type dispatch\n\n| Input media type | Generated parameter shape | Wire encoding |\n|---|---|---|\n| `application/json` (and `+json`) | `body: T` | `Json.encodeToString(<ser>, body).toRequestBody(\"application/json\".toMediaType())` |\n| `multipart/form-data` (object schema) | one param per property; binary fields → `ByteArray` | emitted `MultipartFormBody` helper (wraps `MultipartBody.Builder`) |\n| `application/x-www-form-urlencoded` (object schema) | one param per property | `FormBody.Builder()` |\n| `application/octet-stream`, image, etc. | `body: ByteArray` | raw bytes via `toRequestBody(\"<mt>\".toMediaType())` |\n| `oneOf` / unresolvable JSON | `body: ByteArray` | raw bytes (caller pre-encodes) |\n\n### Typed errors\n\nEvery non-2xx response funnels into `APIError`:\n\n```kotlin\npublic sealed class APIError(message: String? = null, cause: Throwable? = null) :\n    RuntimeException(message, cause) {\n    public class ClientError(public val statusCode: Int, public val body: ByteArray) : APIError(/* … */)   // 4XX\n    public class ServerError(public val statusCode: Int, public val body: ByteArray) : APIError(/* … */)   // 5XX\n    public class UnexpectedStatus(public val statusCode: Int, public val body: ByteArray) : APIError(/* … */) // 1XX/3XX/etc.\n    public class DecodingFailed(cause: Throwable) : APIError(/* … */)                                       // kotlinx-serialization threw\n    public class Transport(cause: Throwable) : APIError(/* … */)                                            // OkHttp/network layer\n}\n```\n\n### Multi-2xx → sum-type return\n\nWhen an operation declares more than one 2xx response code with distinct schemas, the generator emits a sealed-class hierarchy and the impl dispatches on `response.code`:\n\n```kotlin\npublic sealed class SubmitJob_Response {\n    public data class Status200(public val value: JobResult) : SubmitJob_Response()\n    public data class Status202(public val value: Pending) : SubmitJob_Response()\n    public object Status204 : SubmitJob_Response()\n}\n```\n\n## Generator options\n\nEvery option is optional. Pass them to `generate({ ... })`:\n\n| Option | Purpose |\n|---|---|\n| `input` / `output` | Spec source (path / URL / object) and SDK output dir. |\n| `packageName` | Kotlin package every file declares. Default `\"com.example.api\"`. |\n| `clean` | Wipe `output` before writing. Default `true`. Refuses to wipe cwd or filesystem root. |\n| `gradle` | Emit `build.gradle.kts` + `settings.gradle.kts` for standalone-module mode. `true` → defaults. Object → custom `group`, `version`, plugin/dependency versions, JVM target. Omit → mode 1 (raw kotlin source tree only). |\n| `defaultTag` | Tag to use when an op has none. Default `\"Default\"`. |\n| `interfaceName` | `(tag) => string`. Default `(tag) => `${PascalCase(tag)}Api``. |\n| `clientClassName` | `(interfaceName) => string`. Default `(p) => `OkHttp${p}``. |\n| `interfaceOnly` | Skip impl class emission. Default `false`. |\n| `openImpl` | Emit impl class as `open` so consumers can subclass. Default `false`. |\n| `layout` | `\"split\"` (default — `api/` + `models/` sub-packages) or `\"flat\"` (one package). |\n| `fileLocation` | `(decl) => { dir }` — full per-decl override. Rejects `..` traversal and absolute paths. |\n\n```ts\ngenerate({\n    input,\n    output,\n    packageName: \"com.example.petstore\",\n    gradle: { group: \"com.example\", version: \"1.0.0\" },\n    openImpl: true,\n});\n```\n\n## Two consumption modes\n\n| Mode | Setup | When |\n|---|---|---|\n| **Drop into an existing Gradle module** | Paste the package directory (e.g. `com/example/petstore/`) into your module's `src/main/kotlin/` tree. The surrounding module must apply `kotlin(\"plugin.serialization\")` and depend on OkHttp + kotlinx-serialization-json + kotlinx-coroutines-core + kotlinx-datetime. | Adding the SDK directly to one app or library. |\n| **Standalone Gradle module** | Pass `gradle: true` (or an options object) to `generate()`; `build.gradle.kts` + `settings.gradle.kts` are emitted alongside the source. Run `gradle build` from the output dir. | Sharing across multiple modules, publishing privately, or wanting a clean dependency boundary. |\n\n## Output layout\n\n```text\nsdk-kotlin/\n├── com/example/petstore/\n│   ├── api/\n│   │   ├── PetApi.kt                  # interface\n│   │   ├── PetApiExtensions.kt        # convenience overloads (no-options)\n│   │   ├── OkHttpPetApi.kt            # impl class\n│   │   ├── APIClient.kt               # runtime helper (transport, dispatch, decode)\n│   │   ├── APIInterceptors.kt         # interceptor pipeline\n│   │   ├── APIError.kt                # typed errors\n│   │   ├── Auth.kt                    # (when spec has securitySchemes)\n│   │   ├── APIKeyLocation.kt          # (when spec has securitySchemes)\n│   │   ├── MultipartFormBody.kt       # (when any op uses multipart/form-data)\n│   │   ├── URLEncoding.kt             # query helpers\n│   │   ├── QueryStyle.kt              # form / spaceDelimited / pipeDelimited\n│   │   └── RequestOptions.kt\n│   └── models/\n│       ├── Pet.kt                     # @Serializable data classes\n│       ├── Pet_Status.kt              # enum classes\n│       └── …\n└── (build.gradle.kts + settings.gradle.kts when `gradle:` is set)\n```\n\n## Requirements\n\nThe generated code uses Kotlin coroutines + kotlinx-serialization, so:\n\n- **Kotlin** 2.0 or newer (with `kotlin(\"plugin.serialization\")` applied)\n- **JVM target** 17 or newer (configurable via the `gradle` option)\n\nRuntime dependencies (set up by the `gradle:` option, or by the consuming module in drop-in mode):\n\n- `org.jetbrains.kotlinx:kotlinx-serialization-json:1.7+`\n- `org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9+`\n- `org.jetbrains.kotlinx:kotlinx-datetime:0.6+` (only if any model uses `Instant` / `LocalDate`)\n- `com.squareup.okhttp3:okhttp:4.12+`\n\n## API surface\n\n| Export | Purpose |\n|---|---|\n| `generate(opts)` | High-level entry: load → IR → decls → files on disk. |\n| `schemasToDecls(schemas)` | `IR.Model.components.schemas` → `KtDecl[]`. |\n| `operationsToDecls(paths, opts?)` | `IR.PathsObject` → `{ decls, needsAuth, needsMultipart }` (interfaces + impls grouped by tag). |\n| `buildKotlinProject(decls, opts?)` | `KtDecl[]` → `{ path, content }[]` with package / import resolution. |\n| `buildRuntimeFiles(opts, pkg)` | Standalone runtime helper files (APIClient, APIError, …) keyed off the consumer's package. |\n| `buildGradleFile(opts?)` | Build a `build.gradle.kts` for a standalone Gradle module wrapping the SDK. |\n| `securityKey(path, method)` | Key into `OperationsOptions.securitySchemeNames`. |\n| `printFile(file)` / `kt*` builders | Lower-level Kotlin AST + printer. |\n\n```text\nsrc/kt-dsl/                   Kotlin AST: type/, expr/, stmt/, decl/, fun.ts, file.ts\nsrc/kt-compiler/              AST → string, mirrors the AST tree\nsrc/ir/\n├── type/                     IR.SchemaObject → KtType\n├── operation/                IR.OperationObject → signature shared by interface + impl\n├── impl/                     OkHttp body builders (url, request, headers, body, decode)\n├── runtime/                  Templated Kotlin source for runtime helpers\n├── schema.ts                 schemasToDecls\n└── operations.ts             paths → interfaces + impl classes (orchestrator)\n```\n\nAdding a new statement / expression node: add to `kt-dsl/{expr,stmt}/types.ts`, builder, one printer case. Per-method bodies are AST-built; runtime helpers (the same Kotlin every time) ship as templated strings in `ir/runtime/templates.ts`.\n","readmeFilename":"README.md"}