{"_id":"@borrowbetter/swsdk","_rev":"9-53a83ea4a6f3c5c1e0a65822012a770d","name":"@borrowbetter/swsdk","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.1":{"name":"@borrowbetter/swsdk","version":"0.1.1","license":"MIT","_id":"@borrowbetter/swsdk@0.1.1","maintainers":[{"name":"rkingon","email":"rkingon@gmail.com"}],"dist":{"shasum":"fb0e93016ae283f2141679ddb43d024708703cbc","tarball":"https://registry.npmjs.org/@borrowbetter/swsdk/-/swsdk-0.1.1.tgz","fileCount":8,"integrity":"sha512-JByA2SB6i8466B7UtUeX1PJSR2jIWAxyG/l8MwMXIKtcdFRE86a6M4UH3KSRPxX3QxuCbSRU1413cBWQ3jyRdQ==","signatures":[{"sig":"MEUCIQCqZ/qHe+0laIjMhzjyMfO9riMOE31jPlidHa/A21AJawIgIa5WR2loItCO9nVY/ZfqGLgHOo1BijXsYsBHZ8x+Hu0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74560},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"6c219da2ac5b400a6092766d6f3329dec5a84d22","scripts":{"dev":"tsup --watch","lint":"biome check","build":"tsup","smoke":"tsx scripts/smoke.ts","format":"biome check --write --unsafe","typecheck":"tsc --noEmit","format:check":"biome ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"rkingon","email":"rkingon@gmail.com"},"_npmVersion":"10.9.2","description":"Spinwheel credit data and debt profile SDK","directories":{},"_nodeVersion":"22.17.0","dependencies":{"ky":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","typescript":"^5.4.0","dotenv-flow":"^4.1.0","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/swsdk_0.1.1_1772675960630_0.8736539878671321","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@borrowbetter/swsdk","version":"0.1.2","license":"MIT","_id":"@borrowbetter/swsdk@0.1.2","maintainers":[{"name":"rkingon","email":"rkingon@gmail.com"}],"homepage":"https://github.com/BorrowBetter/swsdk#readme","bugs":{"url":"https://github.com/BorrowBetter/swsdk/issues"},"dist":{"shasum":"e022ed351bef87fbda72d16d28b9dd97a73750e2","tarball":"https://registry.npmjs.org/@borrowbetter/swsdk/-/swsdk-0.1.2.tgz","fileCount":8,"integrity":"sha512-YAoteREhFQLGmRjly6icg6+hK6TJ2v6CSdSW6kK/gmGZH8xcJRSoQpsXPT6HinbNsUNQSRHVx9O9h8K4vVGi5Q==","signatures":[{"sig":"MEUCIQD0uATa5RKHnTR4KM99HpObTlr014cvRt1JXzZbOXDCagIgUrii5KpI1YLE3aAoO3zbJO0OLuSHRkOwSOzPornpCFQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74978},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"28ea5d7848e55b2ebf7440ca80d8a6092fccadfe","scripts":{"dev":"tsup --watch","lint":"biome check","build":"tsup","smoke":"tsx scripts/smoke.ts","format":"biome check --write --unsafe","typecheck":"tsc --noEmit","format:check":"biome ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"rkingon","email":"rkingon@gmail.com"},"repository":{"url":"git+https://github.com/BorrowBetter/swsdk.git","type":"git"},"_npmVersion":"10.9.2","description":"Spinwheel credit data and debt profile SDK","directories":{},"_nodeVersion":"22.17.0","dependencies":{"ky":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","typescript":"^5.4.0","dotenv-flow":"^4.1.0","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/swsdk_0.1.2_1772676650015_0.16549850882392292","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@borrowbetter/swsdk","version":"0.1.3","license":"MIT","_id":"@borrowbetter/swsdk@0.1.3","maintainers":[{"name":"rkingon","email":"rkingon@gmail.com"}],"homepage":"https://github.com/BorrowBetter/swsdk#readme","bugs":{"url":"https://github.com/BorrowBetter/swsdk/issues"},"dist":{"shasum":"197d4562aee8daadcde5876c9beea830e4a871a4","tarball":"https://registry.npmjs.org/@borrowbetter/swsdk/-/swsdk-0.1.3.tgz","fileCount":8,"integrity":"sha512-SeCro9ewF+paoBwU/eVZhQDL3RN3BZmcBw2qIcS6rRoJuZHbCmJkq8m6SfFs78aR4AYJ7CSkkFCbUM5wBCzJYg==","signatures":[{"sig":"MEYCIQDxR9bQUHCP5ZvKUWjF/G0BdMYztoSTiKkcVEMtDpXFWwIhAJLPJgQZ0al2bXwmlCh/AFTHbYvivtJqzTQISpYCVEBM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74970},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"2d7f41646b51c94c86a7e9d1904af5f7305ce096","scripts":{"dev":"tsup --watch","lint":"biome check","build":"tsup","smoke":"tsx scripts/smoke.ts","format":"biome check --write --unsafe","typecheck":"tsc --noEmit","format:check":"biome ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"rkingon","email":"rkingon@gmail.com"},"repository":{"url":"git+https://github.com/BorrowBetter/swsdk.git","type":"git"},"_npmVersion":"10.9.2","description":"Spinwheel credit data and debt profile SDK","directories":{},"_nodeVersion":"22.17.0","dependencies":{"ky":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","typescript":"^5.4.0","dotenv-flow":"^4.1.0","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/swsdk_0.1.3_1772825465325_0.1479616507854853","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@borrowbetter/swsdk","version":"0.1.4","license":"MIT","_id":"@borrowbetter/swsdk@0.1.4","maintainers":[{"name":"rkingon","email":"rkingon@gmail.com"}],"homepage":"https://github.com/BorrowBetter/swsdk#readme","bugs":{"url":"https://github.com/BorrowBetter/swsdk/issues"},"dist":{"shasum":"49b002fb6c2b9f65d1b628a7c63befb5a67924b6","tarball":"https://registry.npmjs.org/@borrowbetter/swsdk/-/swsdk-0.1.4.tgz","fileCount":8,"integrity":"sha512-brDOVYyz2dUN/xgsAPgkLPuLOL6qKDy7itJ+9a99F+UDHM1g61W/aGT5BdZI3uc2frIGDjOfiu3Rk7Si3C2fBg==","signatures":[{"sig":"MEUCIAd7GQuMdvB16c0nFBHKuQxD/wW2KoLiPO575hCGF9axAiEA2WTvfZ+OcRJwyStTJ9yA431WiME7RF62vLwKkEZj/j0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74966},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"6855790ca4d1b14783a0fa80943608a1d8fe24f8","scripts":{"dev":"tsup --watch","lint":"biome check","build":"tsup","smoke":"tsx scripts/smoke.ts","format":"biome check --write --unsafe","typecheck":"tsc --noEmit","format:check":"biome ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"rkingon","email":"rkingon@gmail.com"},"repository":{"url":"git+https://github.com/BorrowBetter/swsdk.git","type":"git"},"_npmVersion":"10.9.2","description":"Spinwheel credit data and debt profile SDK","directories":{},"_nodeVersion":"22.17.0","dependencies":{"ky":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","typescript":"^5.4.0","dotenv-flow":"^4.1.0","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/swsdk_0.1.4_1772903685785_0.1457761612805164","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@borrowbetter/swsdk","version":"0.1.5","license":"MIT","_id":"@borrowbetter/swsdk@0.1.5","maintainers":[{"name":"rkingon","email":"rkingon@gmail.com"}],"homepage":"https://github.com/BorrowBetter/swsdk#readme","bugs":{"url":"https://github.com/BorrowBetter/swsdk/issues"},"dist":{"shasum":"1744d8ca6b62d44bd36b240e7387d3b7845bdd79","tarball":"https://registry.npmjs.org/@borrowbetter/swsdk/-/swsdk-0.1.5.tgz","fileCount":8,"integrity":"sha512-ur94fb+mM0GCt9dEK2c7W1p8sYlfPc+5fb410gW5nwtRzcOGDWpNa2eYbUjloO8gaX9EkvAT25WVO0B7OnnvlQ==","signatures":[{"sig":"MEUCIQCAWA19dZ5ugiDlZL+PIhfK3txES8vEImsLYPHwiZ2MrgIgHgRP0C8UV0e9wXuH/9L7yF5NbVgiwkEy1JbAado1Vfc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79112},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"ca588a7ca56f61ec3db63c23b7c855c386aab7dd","scripts":{"dev":"tsup --watch","lint":"biome check","build":"tsup","smoke":"tsx scripts/smoke.ts","format":"biome check --write --unsafe","typecheck":"tsc --noEmit","format:check":"biome ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"rkingon","email":"rkingon@gmail.com"},"repository":{"url":"git+https://github.com/BorrowBetter/swsdk.git","type":"git"},"_npmVersion":"10.9.2","description":"Spinwheel credit data and debt profile SDK","directories":{},"_nodeVersion":"22.17.0","dependencies":{"ky":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","typescript":"^5.4.0","dotenv-flow":"^4.1.0","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/swsdk_0.1.5_1785024204590_0.013916548085573854","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@borrowbetter/swsdk","version":"0.2.0","license":"MIT","_id":"@borrowbetter/swsdk@0.2.0","maintainers":[{"name":"rkingon","email":"rkingon@gmail.com"}],"homepage":"https://github.com/BorrowBetter/swsdk#readme","bugs":{"url":"https://github.com/BorrowBetter/swsdk/issues"},"dist":{"shasum":"541a7fde6091f7ecdf718b70d50699101d3637bc","tarball":"https://registry.npmjs.org/@borrowbetter/swsdk/-/swsdk-0.2.0.tgz","fileCount":8,"integrity":"sha512-Ke0Us2to2tbuV/vbNSEVb2iYws8J+i2izE/QlJFI1S7lcWPmV1muuGOcFHOusysGt91/4wEDw/2vC2dfE85tJA==","signatures":[{"sig":"MEQCIGCRsvT6uL9DhS9glIK8HURCwZMNVEWOFbI15Bz6x46yAiBRsD7a4/hPnU+4Hy6mUFqcxFbYT3wPkDAFsAtMX7TD1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83447},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"fbd0be53e6fd0e4655a8de769499d6842cd59aa5","scripts":{"dev":"tsup --watch","lint":"biome check","build":"tsup","smoke":"tsx scripts/smoke.ts","format":"biome check --write --unsafe","typecheck":"tsc --noEmit","format:check":"biome ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"rkingon","email":"rkingon@gmail.com"},"repository":{"url":"git+https://github.com/BorrowBetter/swsdk.git","type":"git"},"_npmVersion":"10.9.2","description":"Spinwheel credit data and debt profile SDK","directories":{},"_nodeVersion":"22.17.0","dependencies":{"ky":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","typescript":"^5.4.0","dotenv-flow":"^4.1.0","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/swsdk_0.2.0_1786115080696_0.31128122727899377","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@borrowbetter/swsdk","version":"0.3.0","license":"MIT","_id":"@borrowbetter/swsdk@0.3.0","maintainers":[{"name":"rkingon","email":"rkingon@gmail.com"}],"homepage":"https://github.com/BorrowBetter/swsdk#readme","bugs":{"url":"https://github.com/BorrowBetter/swsdk/issues"},"dist":{"shasum":"f5450ab00f10864007ff2e8d652e90ab13e82ee5","tarball":"https://registry.npmjs.org/@borrowbetter/swsdk/-/swsdk-0.3.0.tgz","fileCount":8,"integrity":"sha512-ci0Kl9XXNQR052AVwKg2Xqh64fCGcbRxSV0lllXapZMM6wJbkmddjYfZ+PdzlSXGM/vMdryOO1iukv+6GkMzDw==","signatures":[{"sig":"MEUCIBtFJve1ojeSmmi7ipNHAylVoocNvstIi1lpG8DHTzm3AiEA+TwkBBkR58Rr4pAsYwEj+L9SyaILUyWI2BOUccCCvoU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84847},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"23e0c0bcb914186c878c050659d90c73cb6bc96d","scripts":{"dev":"tsup --watch","lint":"biome check","build":"tsup","smoke":"tsx scripts/smoke.ts","format":"biome check --write --unsafe","typecheck":"tsc --noEmit","format:check":"biome ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"rkingon","email":"rkingon@gmail.com"},"repository":{"url":"git+https://github.com/BorrowBetter/swsdk.git","type":"git"},"_npmVersion":"10.9.2","description":"Spinwheel credit data and debt profile SDK","directories":{},"_nodeVersion":"22.17.0","dependencies":{"ky":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","typescript":"^5.4.0","dotenv-flow":"^4.1.0","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/swsdk_0.3.0_1786731243692_0.3134983366768551","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@borrowbetter/swsdk","version":"0.3.1","license":"MIT","_id":"@borrowbetter/swsdk@0.3.1","maintainers":[{"name":"rkingon","email":"rkingon@gmail.com"}],"homepage":"https://github.com/BorrowBetter/swsdk#readme","bugs":{"url":"https://github.com/BorrowBetter/swsdk/issues"},"dist":{"shasum":"370fcf101c36054c43b11909b523a199e9187832","tarball":"https://registry.npmjs.org/@borrowbetter/swsdk/-/swsdk-0.3.1.tgz","fileCount":8,"integrity":"sha512-1BpgZANAcGQdVEHmgAYB4sSPI0M74mI94rslE8O/kYky+9ZixUpAyCcaKqHnv4GfFP/Pww9PaHqi7aud7m7pBg==","signatures":[{"sig":"MEUCIQCHeQwTQ2FQcZBw3wqpbOYQJz/pNEDw27duQqjIt4kpzgIgGK/jfzo1eqM4mHvKP0vr/WmCnWynPTsA+eUVMtA5xC0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84879},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"90b58880ce211b8803e06bfd4c947cb914cb2b96","scripts":{"dev":"tsup --watch","lint":"biome check","build":"tsup","smoke":"tsx scripts/smoke.ts","format":"biome check --write --unsafe","typecheck":"tsc --noEmit","format:check":"biome ci","prepublishOnly":"npm run build"},"_npmUser":{"name":"rkingon","email":"rkingon@gmail.com"},"repository":{"url":"git+https://github.com/BorrowBetter/swsdk.git","type":"git"},"_npmVersion":"10.9.2","description":"Spinwheel credit data and debt profile SDK","directories":{},"_nodeVersion":"22.17.0","dependencies":{"ky":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","typescript":"^5.4.0","dotenv-flow":"^4.1.0","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/swsdk_0.3.1_1787186713782_0.6118302956332244","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"_id":"@borrowbetter/swsdk@0.4.0","bugs":{"url":"https://github.com/BorrowBetter/swsdk/issues"},"dist":{"shasum":"d0abcfe3429394c224817a8dd05b1c9b3740e8bd","tarball":"https://registry.npmjs.org/@borrowbetter/swsdk/-/swsdk-0.4.0.tgz","fileCount":8,"integrity":"sha512-WM0UxPBUxSAiiqD+Sl1o/E+EY9SOkjJXt5Idgzs3W1VBHZnEuqcdper+CuPpm7rOwgFCiNHcG4TtMLy/H+PXvw==","signatures":[{"sig":"MEUCIQDuPyAl7DnkKA/+8kgB6SEqVGoMioDJ3oJ+kbtdoSL8ngIgUhz3lv6+FWj3RIvJXM5RkK66WjQx4p6Q5t87u/IUMY0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICr3RtWuRF4XkGCRFj6UDQCnAxtARmGR3j9NQZ49MJ9xAiEA2s1alcsel/rTmDoIwF2Z9pA1GvUXsrKR/xRaDsa4xM4="}],"unpackedSize":84851},"main":"./dist/index.js","name":"@borrowbetter/swsdk","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"bdeeb0280468d8368f60d365f3af5dbf6022747b","license":"MIT","scripts":{"dev":"tsup --watch","lint":"biome check","build":"tsup","smoke":"tsx scripts/smoke.ts","format":"biome check --write --unsafe","typecheck":"tsc --noEmit","format:check":"biome ci","prepublishOnly":"npm run build"},"version":"0.4.0","_npmUser":{"name":"rkingon","email":"rkingon@gmail.com"},"homepage":"https://github.com/BorrowBetter/swsdk#readme","repository":{"url":"git+https://github.com/BorrowBetter/swsdk.git","type":"git"},"_npmVersion":"10.9.2","description":"Spinwheel credit data and debt profile SDK","directories":{},"maintainers":[{"name":"rkingon","email":"rkingon@gmail.com"}],"_nodeVersion":"22.17.0","dependencies":{"ky":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","typescript":"^5.4.0","dotenv-flow":"^4.1.0","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/swsdk_0.4.0_1790707852332_0.6486722151105409"}}},"time":{"created":"2026-03-05T01:59:20.524Z","modified":"2026-09-29T18:50:52.683Z","0.1.1":"2026-03-05T01:59:20.769Z","0.1.2":"2026-03-05T02:10:50.159Z","0.1.3":"2026-03-06T19:31:05.485Z","0.1.4":"2026-03-07T17:14:45.927Z","0.1.5":"2026-07-26T00:03:24.734Z","0.2.0":"2026-08-07T15:04:40.844Z","0.3.0":"2026-08-14T18:14:03.843Z","0.3.1":"2026-08-20T00:45:13.925Z","0.4.0":"2026-09-29T18:50:52.466Z"},"bugs":{"url":"https://github.com/BorrowBetter/swsdk/issues"},"license":"MIT","homepage":"https://github.com/BorrowBetter/swsdk#readme","repository":{"url":"git+https://github.com/BorrowBetter/swsdk.git","type":"git"},"description":"Spinwheel credit data and debt profile SDK","maintainers":[{"name":"rkingon","email":"rkingon@gmail.com"}],"readme":"# @borrowbetter/swsdk\n\n> **Internal use only.** This package is maintained by [BorrowBetter](https://borrowbetter.com) for internal projects. It is published publicly for convenience but is not intended for general use. No support or stability guarantees are provided for external consumers.\n\nTypeScript SDK for the [Spinwheel](https://spinwheel.io) credit data and debt profile API. Provides type-safe access to user connection, debt profile fetching, and hydrated user data.\n\n## Installation\n\n```bash\nnpm install @borrowbetter/swsdk\n```\n\n## Requirements\n\n- Node.js >= 22\n- Spinwheel API key (provided by your Spinwheel account manager)\n\n## Quick Start\n\n```typescript\nimport { SpinwheelSDK } from \"@borrowbetter/swsdk\";\n\nconst spinwheel = new SpinwheelSDK({\n  apiKey: process.env.SPINWHEEL_API_KEY,\n  sandbox: process.env.NODE_ENV !== \"production\",\n});\n```\n\n## API\n\n### Connect\n\nConnect a user to Spinwheel via preverified phone or network token.\n\n```typescript\n// Preverified phone (requires Spinwheel support approval)\nconst result = await spinwheel.connect.preverifiedPhone({\n  phoneNumber: \"+14155552671\",\n  dateOfBirth: \"1990-01-15\",\n  extUserId: \"your-internal-user-id\",\n  audit: {\n    verificationDate: \"2025-01-01\",\n    userConsentDate: \"2025-01-01\",\n    verificationType: \"SMS\",\n  },\n});\n\nconst { userId } = result.data;\n\n// Network token\nconst result = await spinwheel.connect.networkToken({\n  extUserId: \"your-internal-user-id\",\n  networkToken: \"token-from-verification\",\n  ssnLastFourDigits: \"1234\",\n  dateOfBirth: \"1990-01-15\",\n  audit: { userConsentDate: \"2025-01-01\" },\n});\n```\n\n`networkToken` also accepts `include`, which returns a snapshot of the user's *already existing*\ncredit report alongside the connect response, saving a `userManagement.get` round trip:\n\n```typescript\nconst { data } = await spinwheel.connect.networkToken({\n  extUserId: \"your-internal-user-id\",\n  networkToken: \"token-from-verification\",\n  ssnLastFourDigits: \"1234\",\n  dateOfBirth: \"1990-01-15\",\n  audit: { userConsentDate: \"2025-01-01\" },\n  include: [\"CREDIT_REPORT\"],\n});\n\nif (data.dataStatus?.status === \"SUCCESS\") {\n  data.creditReports;\n  data.creditCards;\n  data.creditCardSummary; // ...and the other liabilities and summaries\n}\n```\n\nThe connect itself succeeds independently of the snapshot — check `dataStatus` to see whether\nthe credit data came back:\n\n| `statusCode` | Meaning |\n|--------------|---------|\n| `2000` | Success — credit reports, liabilities, and summaries returned |\n| `4040` | Connected, but no existing credit report was found |\n| `4030` | Connected, but no data returned — account not configured for this |\n| `5000` | Connected, but credit report retrieval failed |\n\n> Only `CREDIT_REPORT` is supported, and an empty array is rejected with a 400 — omit the field\n> entirely if you don't want the extra data. This returns an existing report only; it does not\n> trigger a pull, so `debtProfile.fetch` is still the way to source one (a user with no report\n> yet comes back `4040`).\n\n### Debt Profile\n\nTrigger an asynchronous credit pull. Results are retrieved via `userManagement.get()` once processing completes.\n\n```typescript\nawait spinwheel.debtProfile.fetch(userId, {\n  creditReport: {\n    sourceBureau: \"TransUnion\",\n    type: \"1_BUREAU.FULL\",\n  },\n  creditScore: {\n    sourceBureau: \"TransUnion\",\n    model: \"VANTAGE_SCORE_3_0\",\n  },\n});\n```\n\n> Note: Your implementation must display the Spinwheel End User Agreement before calling this method.\n\n### User Management\n\nRetrieve a user's full hydrated profile including all liabilities and credit reports. Always uses the secure endpoint with unmasked account number and SSN.\n\n```typescript\n// By Spinwheel user ID\nconst { data } = await spinwheel.userManagement.get({ userId });\n\n// By your external user ID\nconst { data } = await spinwheel.userManagement.get({ extUserId: \"your-id\" });\n\n// Available on the hydrated user\ndata.profile?.creditScore;\ndata.creditCardSummary;\ndata.personalLoanSummary;\ndata.autoLoanSummary;\ndata.homeLoanSummary;\ndata.studentLoanSummary;\ndata.creditReports;\ndata.creditCards;\ndata.personalLoans;\ndata.autoLoans;\ndata.homeLoans;\ndata.studentLoans;\ndata.miscellaneousLiabilities;\n```\n\n## Configuration\n\n```typescript\nnew SpinwheelSDK({\n  apiKey: string;    // Required — your Spinwheel API key\n  sandbox?: boolean; // Optional — defaults to false (production)\n  retry?: number | RetryOptions; // Optional — default ky retry for every request; overridable per call\n});\n```\n\n### Retry\n\nRetry is [ky's](https://github.com/sindresorhus/ky#retry) — pass a count or a `RetryOptions` object. Set a client-wide default via the constructor, and override it per request by passing an options object as the last argument to any method:\n\n```typescript\nconst spinwheel = new SpinwheelSDK({\n  apiKey: \"your-api-key\",\n  retry: { limit: 3 }, // default for all requests\n});\n\n// Override for a single call — e.g. poll the profile harder:\nawait spinwheel.userManagement.get({ userId }, { retry: { limit: 5 } });\n\n// Disable retries for one call:\nawait spinwheel.userManagement.get({ userId }, { retry: 0 });\n```\n\n> **Note:** ky only retries idempotent methods (GET/PUT/HEAD/DELETE/OPTIONS/TRACE) by default. Retry applies out of the box to `userManagement.get` (a GET). The POST-based methods (`connect.*`, `debtProfile.fetch`) will not retry unless you opt in with `retry: { methods: [\"post\"] }` — weigh the double-submit risk before doing so.\n\n## Response Shape\n\nAll methods return Spinwheel's standard response envelope:\n\n```typescript\ninterface SpinwheelResponse<T> {\n  status: {\n    code: number;\n    desc: string;\n    messages?: Array<{ desc: string; type?: \"ERROR\" | \"WARN\" | \"INFO\" }>;\n  };\n  data: T;\n}\n```\n\n```typescript\nconst result = await spinwheel.connect.preverifiedPhone({ ... });\n\nif (result.status.code >= 400) {\n  console.error(result.status.messages);\n  return;\n}\n\nconst { userId } = result.data;\n```\n\n## Type Exports\n\nAll types are exported directly from the package:\n\n```typescript\nimport type {\n  SpinwheelConfig,\n  SpinwheelRequestOptions,\n  HydratedUserData,\n  UserData,\n  CreditReport,\n  CreditCard,\n  PersonalLoan,\n  AutoLoan,\n  HomeLoan,\n  StudentLoan,\n  LiabilityType,\n  CreditBureau,\n  // ...and more\n} from \"@borrowbetter/swsdk\";\n```\n\n## Development\n\n```bash\nnpm install\nnpm run dev        # tsup watch mode\nnpm run build      # compile to dist/\nnpm run typecheck  # TypeScript check\nnpm run lint       # Biome lint\nnpm run format     # Biome format + auto-fix\nnpm run smoke      # Run smoke test against sandbox\n```\n\n### Smoke Test\n\n```bash\ncp .env.example .env.local\n# Add SPINWHEEL_API_KEY to .env.local\nnpm run smoke\n```\n\n### Scripts\n\n| Script | Description |\n|--------|-------------|\n| `npm run build` | Compile to `dist/` |\n| `npm run dev` | Watch mode |\n| `npm run smoke` | End-to-end test against sandbox |\n| `npm run lint` | Biome lint check |\n| `npm run format` | Biome format + auto-fix |\n| `npm run typecheck` | TypeScript type check |\n","readmeFilename":"README.md"}