{"_id":"shipbob-node-sdk","_rev":"29-aeb98551d50199c2ecadb11cbba0a6cd","name":"shipbob-node-sdk","dist-tags":{"latest":"0.0.28"},"versions":{"0.0.1":{"name":"shipbob-node-sdk","version":"0.0.1","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.1","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"769fe4f87def8764e9471e0030640caeddde4009","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.1.tgz","fileCount":7,"integrity":"sha512-0Kn7hwzBqKRFL19/IQ3zK24/f6u8lU5Zu/iBOGSEDCvkmEylrFdUo7jNAflsYVu61w26TGPe5IkkNnEZImhRtA==","signatures":[{"sig":"MEYCIQDylLmAzlhSi/hMWo0KdSnsTv2Tj1TeKvBs7DOE8crHDQIhANLhDNft/Rdsl1VQ0Tr0l6DZAYSZtBkfbaDOIxrhbEv+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277034},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"62e2c5451708f9e06fcfe417f535294939bec421","scripts":{"lint":"eslint .","test":"mocha","build":"tsc","prebuild":"rimraf dist && eslint && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" --write","generate:client":"openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"10.5.1","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","mocha":"^11.1.0","dotenv":"^16.4.7","eslint":"^9.20.1","rimraf":"^6.0.1","prettier":"^3.5.1","@eslint/js":"^9.20.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","typescript-eslint":"^8.24.1","@openapitools/openapi-generator-cli":"^2.16.3"},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.1_1739997157543_0.6307406682933012","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"shipbob-node-sdk","version":"0.0.2","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.2","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"74bb5fb4184d372c27568b7fdb9d233db44eea00","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.2.tgz","fileCount":10,"integrity":"sha512-Gpv/lv3ALVe+3rS1PCU62suRD8k4L8HCKcSiNss1xdR60212NUSv6Gmdfet6t0cISqlHpimYmLDvOyC31DgbGw==","signatures":[{"sig":"MEQCIB18421NgRDcjcBL93Njca3yLKKez2U7440LQWJmUMKNAiAw0SHlJNE2ewEVq81q8YmwvULFUuMCxTBZvlJ8oORVNg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":320752},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"62e2c5451708f9e06fcfe417f535294939bec421","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && eslint . --ignore-pattern generated/ && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" --write","generate:client":"openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"10.5.1","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","mocha":"^11.1.0","dotenv":"^16.4.7","eslint":"^9.20.1","rimraf":"^6.0.1","prettier":"^3.5.1","@eslint/js":"^9.20.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","typescript-eslint":"^8.24.1","@openapitools/openapi-generator-cli":"^2.16.3"},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.2_1739998512848_0.27952341105318523","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"shipbob-node-sdk","version":"0.0.3","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.3","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"b16bf00775dbbb5db7dcfd1e3b6756780a7fb374","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.3.tgz","fileCount":6,"integrity":"sha512-fX/gcJDmGaPgvcpmWhfak7YsDmNdH4xC9W9qDi5+BOkjBOiulwENVbqL+Q2Ygszzc7yYe2aD9juv5iJjqV8oyQ==","signatures":[{"sig":"MEQCIDPVe1Y6ksCq3Luw25osITwVkWfWRJNA5OaAbOt8jIBNAiAkbPPmBlJ6eCdHgHPByM2OnaMG8uLUANRRkCg76YpAwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":242717},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"e25c648e42e87ca4486ce31477aebe8496f07b6d","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && eslint . --ignore-pattern generated/ && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" --write","generate:client":"openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"9.8.1","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"18.18.2","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","mocha":"^11.1.0","dotenv":"^16.4.7","eslint":"^9.20.1","rimraf":"^6.0.1","prettier":"^3.5.1","@eslint/js":"^9.20.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","typescript-eslint":"^8.24.1","@openapitools/openapi-generator-cli":"^2.16.3"},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.3_1740014148658_0.834044581811241","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"shipbob-node-sdk","version":"0.0.4","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.4","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"59688e1cc57acc3d26ee4bc530183fab2f370dfc","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.4.tgz","fileCount":5,"integrity":"sha512-rjE30kvxl00gt2DRSUX1QCMKM5FWWskUZ0OZ0jCJ0vmlxB7jM0Ju3yeMvzo5wkKR830hHThzvboMSEcQJ3c2mw==","signatures":[{"sig":"MEUCIQD/U5PRw6+jxKZBr5iweLIXUKFe/cCL9N4LIdcvO/054gIgDw1Fe+8FrSnpHS9oF+DAPd3V3ATwtPtQQ2H8pIO50oI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78417},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"ad2dd10f927ce02050d0ccf6cf5961591412556b","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && eslint . --ignore-pattern generated/ && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" --write","generate:client":"openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"10.5.1","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","mocha":"^11.1.0","dotenv":"^16.4.7","eslint":"^9.20.1","rimraf":"^6.0.1","prettier":"^3.5.1","@eslint/js":"^9.20.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","typescript-eslint":"^8.24.1","@openapitools/openapi-generator-cli":"^2.16.3"},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.4_1740585810897_0.11963753206409056","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"shipbob-node-sdk","version":"0.0.5","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.5","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"6fa57a9086fc11b739c66064a853a722b19670c2","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.5.tgz","fileCount":5,"integrity":"sha512-7Pt0f601/55cq+UQj2fzIbJwKFm3oiFI0GTp+fNcDqYDjrsgrO7f0XtPXShHaIYX4TVybiWWhUbkUN/bfp7Syw==","signatures":[{"sig":"MEQCIBfdaPDbqGn512b2YI+sltf5XUeyFJaRhaCaN7uBDv+QAiB+zQbW6QLcsSbkG3ilGlWUkBWiSVNcR2zr9NqvSWwytQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84862},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"23613030321c350ee16392a18af283abaeb94564","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && eslint . --ignore-pattern generated/ && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" --write","generate:client":"openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"10.5.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"21.7.3","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","mocha":"^11.1.0","dotenv":"^16.4.7","eslint":"^9.20.1","rimraf":"^6.0.1","prettier":"^3.5.1","@eslint/js":"^9.20.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","typescript-eslint":"^8.24.1","@openapitools/openapi-generator-cli":"^2.16.3"},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.5_1740788194328_0.7593416900444068","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"shipbob-node-sdk","version":"0.0.6","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.6","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"45479cb87e06cc3264cdb6591abfbd35f893adbd","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.6.tgz","fileCount":10,"integrity":"sha512-M8FTsap2CDwHLbYoTu7b5f/R0jnJP3AXYX36wFGUJOWsHksnajfwg6ye1YjblPW304UQPvi7Am26Xz6Iqtb+Ug==","signatures":[{"sig":"MEUCIB6mI+EgvufhMwYGjkj8bDbgP+aRPtK5sPh4SvQkIDJPAiEAhGn5tI2cSIZ1R7pLA+3E2A9I62oyePUDByYiC95P1II=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86999},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && eslint . --ignore-pattern generated/ && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" --write","generate:client":"openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"description":"ShipBob API node SDK","directories":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","mocha":"^11.1.0","dotenv":"^16.4.7","eslint":"^9.20.1","rimraf":"^6.0.1","prettier":"^3.5.1","@eslint/js":"^9.20.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","typescript-eslint":"^8.24.1","@openapitools/openapi-generator-cli":"^2.16.3"},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.6_1741144550510_0.5672461023118631","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"shipbob-node-sdk","version":"0.0.7","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.7","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"91985ed2fbf4fea9366e17da30cd960ab71c2905","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.7.tgz","fileCount":8,"integrity":"sha512-vufXa3y0gEpmGZY6DZas94R6Qkka6WumsZqLVCFV9FE2eXWbPeIVwx6yfkiaT/0tFNN0Fs/IM6guJBZqh9zAUg==","signatures":[{"sig":"MEQCICdPRd8/k2lT4AZS8t42JlVHbMiqlzNtivoLB/2I7EWtAiB2WBnxSHQewaVDVdPDJb9QPuOUsuk8kdsbat6+8Pg6Mg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92173},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"e124442704a6de4c170040a46cf66b5bd4dbca89","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && eslint . --ignore-pattern generated/ && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" --write","generate:client":"openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"10.5.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"21.7.3","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","mocha":"^11.1.0","dotenv":"^16.4.7","eslint":"^9.20.1","rimraf":"^6.0.1","prettier":"^3.5.1","@eslint/js":"^9.20.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","typescript-eslint":"^8.24.1","@openapitools/openapi-generator-cli":"^2.16.3"},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.7_1742492421113_0.7801407878881523","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"shipbob-node-sdk","version":"0.0.8","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.8","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"f6c4c64454870852b2e94ae8443fecb28ef97c2c","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.8.tgz","fileCount":8,"integrity":"sha512-tTdLYsLu3vLCvSD/HO6OIMcRSDFqJ/hR+QX7HnZUcFJqSqFCnGd86CTAPQdgC79M1CIyEmIQDngb03huh7oOlw==","signatures":[{"sig":"MEQCIAOV4EEc3Tem6dkEqvqErW/oPGwS3LXPciHBE7lm7sjOAiBcrkQunMBZKJaQwfporjSliRejiFMKO8rZ22hVyONWrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92171},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"e124442704a6de4c170040a46cf66b5bd4dbca89","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && eslint . --ignore-pattern generated/ && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" --write","generate:client":"openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"10.5.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"21.7.3","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","mocha":"^11.1.0","dotenv":"^16.4.7","eslint":"^9.20.1","rimraf":"^6.0.1","prettier":"^3.5.1","@eslint/js":"^9.20.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","typescript-eslint":"^8.24.1","@openapitools/openapi-generator-cli":"^2.16.3"},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.8_1742493280818_0.7539899751521997","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"shipbob-node-sdk","version":"0.0.9","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.9","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"cb8e46b76e54d0811b08d28e68776350b458d8a3","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.9.tgz","fileCount":10,"integrity":"sha512-+siHQE99O3jvndVCru1oQW2L01Pyu+ydQDEyt2CDr2yx1y/buuUFkwVRyW6dQKMd4byRusa2JWM8w4RqN9CU9Q==","signatures":[{"sig":"MEYCIQD+sfTmd7QZ0s6Is/z836MnJ3nsz9BngO+3GDBnq3W4pQIhAKvYobUgJ9nebgDgYjXRRwabUXe7cUDkQun1pO1zrkIU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95422},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && eslint . --ignore-pattern generated/ && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" --write","generate:client":"openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"description":"ShipBob API node SDK","directories":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","mocha":"^11.1.0","dotenv":"^16.4.7","eslint":"^9.20.1","rimraf":"^6.0.1","prettier":"^3.5.1","@eslint/js":"^9.20.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","typescript-eslint":"^8.24.1","@openapitools/openapi-generator-cli":"^2.16.3"},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.9_1742915176949_0.22810263597222202","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"shipbob-node-sdk","version":"0.0.10","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.10","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"6b6ccd8132ec0adc50a62564a37db539f880bdc8","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.10.tgz","fileCount":11,"integrity":"sha512-h9Jj1bT0iKe56drWQim5eOuYV+mur5fK7WproJNv1pvmXW1P9Q+rGQf6FtLvnmx7xGO4fqejVTxGhsD62d7CXA==","signatures":[{"sig":"MEUCIQC3fH9Hisi33klr+7BPyvjiPQYRSdBc6H01vDPT7xPNqgIgdzrvCPhYsCoAuONMkOcasZM0KOWuzQMHVFHd6ugxN9k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113032},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"b3026292ad59c5ba4da3668b204fcd5d2873c1f3","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && eslint . --ignore-pattern generated/ && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" --write","generate:client":"openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"10.5.1","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","mocha":"^11.1.0","dotenv":"^16.4.7","eslint":"^9.20.1","rimraf":"^6.0.1","prettier":"^3.5.1","@eslint/js":"^9.20.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","typescript-eslint":"^8.24.1","@openapitools/openapi-generator-cli":"^2.16.3"},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.10_1743210675771_0.7946976480487824","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"shipbob-node-sdk","version":"0.0.11","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.11","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"83568e0588b830fb75fbcffe01f2ee0995ca56df","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.11.tgz","fileCount":14,"integrity":"sha512-50y5wLDn/Xs4fYa8piMPcviyrOzrb1i5ax6pQOeCbqxGEReKsYayS9jSRBrFpE9+yMxUOV6V0OsqbeLRoKXvzg==","signatures":[{"sig":"MEUCIHAmrsMODdAOr2F6keg/wVH+c8sQx7v9fPT7vx20REJKAiEA2wbeVoPeSsurO4gpwHRyQS9RvGPp1Q39I7NOxd7Tl2g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130677},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"1e02609b4a269de81eb6e9fb09275d0cfac2d8e8","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && eslint . --ignore-pattern generated/ && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" --write","generate:client":"openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"10.5.1","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","mocha":"^11.1.0","dotenv":"^16.4.7","eslint":"^9.20.1","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","@eslint/js":"^9.20.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","typescript-eslint":"^8.24.1","@openapitools/openapi-generator-cli":"^2.16.3"},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.11_1743567638430_0.1688314838783167","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"shipbob-node-sdk","version":"0.0.12","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.12","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"c54c6fcff92eeed8c6d88a5b6ca812e83e256ffc","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.12.tgz","fileCount":14,"integrity":"sha512-CPE3G5q32y8BvBqn6IdvKdhBCsrqs1ukl3NsCFZcahUDTFk8uSEtgbCZOj+hu+EZWj8Qrb+X9FVtqQFWIHOasA==","signatures":[{"sig":"MEQCICEdWMA4URVTTPU45h3M27cnghy3aCDldHZz2bZ76aX9AiAT+jdh7/aRojFigV23fGIV1ZEwTwHHnk8G3SZB7Cb+LQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133315},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"943e4648add9292c6010212c9cabd6c91ae20d94","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && eslint . --ignore-pattern generated/ && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" \"*.md\" --write","generate:client":"openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"10.5.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"21.7.3","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","mocha":"^11.1.0","dotenv":"^16.4.7","eslint":"^9.20.1","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","@eslint/js":"^9.20.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","typescript-eslint":"^8.24.1","@openapitools/openapi-generator-cli":"^2.16.3"},"peerDependencies":{"puppeteer":">=22"},"peerDependenciesMeta":{"puppeteer":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.12_1744159554271_0.32335812778710693","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"shipbob-node-sdk","version":"0.0.13","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.13","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"006f11081392ef0e15504bec7a2a706b7b1a71ed","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.13.tgz","fileCount":14,"integrity":"sha512-4Brs7BYcouozNMgagyI8ZNXpOaU+EAsiK1LbqbdRVlWkSZTjtSFVZAohoCgPnLZuJ9cKwB0Z6crg2Oz9QH7iPw==","signatures":[{"sig":"MEYCIQCV3hxdShmku1ZMVYcgGn5DP+vsr2jNKNqViONecSvZgwIhAJwbYICZYMYHCOhKw51hiGOq5QqSznel/5VzqgxXKG/4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132211},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"3a4002024e7f0a377afac88512b4cba9489a8314","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && eslint . --ignore-pattern generated/ && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" \"*.md\" --write","generate:client":"openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"10.5.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"21.7.3","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","mocha":"^11.1.0","dotenv":"^16.4.7","eslint":"^9.20.1","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","@eslint/js":"^9.20.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","typescript-eslint":"^8.24.1","@openapitools/openapi-generator-cli":"^2.16.3"},"peerDependencies":{"puppeteer":">=22"},"peerDependenciesMeta":{"puppeteer":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.13_1747879677988_0.9319958237006056","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"shipbob-node-sdk","version":"0.0.14","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.14","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"40abbcd033a78210ccb6170c33a02b83df2c50ed","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.14.tgz","fileCount":14,"integrity":"sha512-JdNh753b/6dUhmZJHcC8h8RO2KQAcuTCYef+1ruGoSu1KDGxjnwuubR0uAyZwYqaQtei8qYjf1F5jwtAQE83fQ==","signatures":[{"sig":"MEYCIQD5BQc3CFAR99q6Fyw22qkTir6gwl5fSfgHO4QftTaMpAIhAMmNRomrMvQlFbzdjVPgbSaqIvXkE+3c5VNoMrZvkmVV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133798},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"3a4002024e7f0a377afac88512b4cba9489a8314","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && eslint . --ignore-pattern generated/ && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" \"*.md\" --write","generate:client":"openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"10.5.1","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","mocha":"^11.1.0","dotenv":"^16.4.7","eslint":"^9.20.1","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","@eslint/js":"^9.20.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","typescript-eslint":"^8.24.1","@openapitools/openapi-generator-cli":"^2.16.3"},"peerDependencies":{"puppeteer":">=22"},"peerDependenciesMeta":{"puppeteer":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.14_1762308528707_0.035141570697455604","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"shipbob-node-sdk","version":"0.0.16","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.16","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"fe843f4d442cbdc23b365f8e72c0f1e468115ca5","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.16.tgz","fileCount":14,"integrity":"sha512-zQy3Rc9dDlx7tIDGsIuXXL8mFUx+e/o0HsDev8jxc39luedeQEGitEwCn+iTs2C3zxYl+m9s/IN70Bbdm9hk8g==","signatures":[{"sig":"MEQCIEJ4tKu2NqVdxOOkkkoZ1YluF1T1LEdjS7wKcgkQxbFCAiAezFQuzp5jpPOd00x5TdZe8fOpn07pNPkmuqNp8AYDYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135632},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"ae694164b1e1dd8201372d19ea6a1dc59c6bd6c3","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && eslint . --ignore-pattern generated/ && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" \"*.md\" --write","generate:client":"openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"10.5.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"21.7.3","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","mocha":"^11.1.0","dotenv":"^16.4.7","eslint":"^9.20.1","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","@eslint/js":"^9.20.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","typescript-eslint":"^8.24.1","@openapitools/openapi-generator-cli":"^2.16.3"},"peerDependencies":{"puppeteer":">=22"},"peerDependenciesMeta":{"puppeteer":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.16_1770085119766_0.8452824814496529","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"shipbob-node-sdk","version":"0.0.17","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.17","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"5fa17452a8aa7b895c3b18952111091c78c8abe3","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.17.tgz","fileCount":14,"integrity":"sha512-F9vIBk+Gs4r5sgpTho+dufQZ1IOHoLVkl7PJHzPbPjuQDreHmfu8AwWdLkiFA4rF+c2qFtn4S0nZ9jXOpEBH6w==","signatures":[{"sig":"MEYCIQD7+8oOANCG6vDDavCMI8RwOk3tB5Z0VGrTAcC/+sDJGgIhAKe7+5V46c6FYAChh+cKpDtDt3MYA0Ol5QT+7LC+ITiR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135635},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"ae694164b1e1dd8201372d19ea6a1dc59c6bd6c3","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && eslint . --ignore-pattern generated/ && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" \"*.md\" --write","generate:client":"openapi-generator-cli generate -i openapi.json -g typescript -o generated/openapi --additional-properties=npmName=restClient,supportsES6=true,withInterfaces=true"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"10.5.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"21.7.3","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","mocha":"^11.1.0","dotenv":"^16.4.7","eslint":"^9.20.1","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","@eslint/js":"^9.20.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","typescript-eslint":"^8.24.1","@openapitools/openapi-generator-cli":"^2.16.3"},"peerDependencies":{"puppeteer":">=22"},"peerDependenciesMeta":{"puppeteer":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.17_1770085420924_0.8713685225730288","host":"s3://npm-registry-packages-npm-production"}},"0.0.18":{"name":"shipbob-node-sdk","version":"0.0.18","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.18","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"98cca3c2fedb20a5bf0eab39c9f18cc6dfb7aaa6","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.18.tgz","fileCount":113,"integrity":"sha512-Ez+aSZzRR6l65gTdA2zhV7fxN5GMLGtHRWKu5jnbELDpcDlfEaKWGsB8IEsdQYqfs9UwQnXKYW8Zuy/i4ZjSGQ==","signatures":[{"sig":"MEUCIHdZKKwDfo4ibgN7i9E+6ktcEkiogBe8P70Fg98g4KzsAiEAp8LF56k3mfUj+6MIakTbcCJIGElcBlBbn1l38wEIDEM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2166069},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"ee8fefab2ece195ca6bf99d49353de391f921f75","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" \"*.md\" --write","generate:2025-07":"rimraf src/client/2025-07 && openapi-ts -i openapi-2025-07.json -o src/client/2025-07","generate:2026-01":"rimraf src/client/2026-01 && openapi-ts -i openapi-2026-01.json -o src/client/2026-01"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"10.5.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"21.7.3","_hasShrinkwrap":false,"devDependencies":{"mocha":"^11.1.0","dotenv":"^16.4.7","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","@hey-api/openapi-ts":"0.95.0"},"peerDependencies":{"puppeteer":">=22"},"peerDependenciesMeta":{"puppeteer":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.18_1775715776884_0.33607424012202625","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"shipbob-node-sdk","version":"0.0.19","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.19","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"45724ed1ad5a8bb21c4cbf23a724f61c681ab379","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.19.tgz","fileCount":113,"integrity":"sha512-Ph9aZx4MCsgLj1oK43WPGh+dsDysy7p1TQNY5RH4qw9RDtDB6WHs1sk/8wm1EMTnKpcQPrWHDzLciMHIgOJEMQ==","signatures":[{"sig":"MEUCIQC8R3HSnnj9XrMgcHX3MkOVVRj12L2r2gXC9bUKokUDmAIgflpP9xuKNO/4tuIWoXuvd9eflIOO9b+KdaC6E6L3gpE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2167739},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"ee8fefab2ece195ca6bf99d49353de391f921f75","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" \"*.md\" --write","generate:2025-07":"rimraf src/client/2025-07 && openapi-ts -i openapi-2025-07.json -o src/client/2025-07","generate:2026-01":"rimraf src/client/2026-01 && openapi-ts -i openapi-2026-01.json -o src/client/2026-01"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"10.5.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"21.7.3","_hasShrinkwrap":false,"devDependencies":{"mocha":"^11.1.0","dotenv":"^16.4.7","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","@hey-api/openapi-ts":"0.95.0"},"peerDependencies":{"puppeteer":">=22"},"peerDependenciesMeta":{"puppeteer":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.19_1775756501597_0.7104787854335579","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"shipbob-node-sdk","version":"0.0.20","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.20","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"539ec2f349446b3ff09b4014d2b50e846576a982","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.20.tgz","fileCount":113,"integrity":"sha512-ZSIaralZmu6u/gvZKSw8jleL0l5EIYgO0PvgQvt58ev8fbmXEZca+khnBUCIX2sxmA896boPPjLQM/Yrte4CQQ==","signatures":[{"sig":"MEUCIHBLCn3Ri2TLTjOfmYv+RUncUjiZ4gHTslSadSOq8LdPAiEA+UELQPDIet4qhzZcHOkfSpIU9EvS8bs2obVaXKW4E7w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2167845},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"139e2f80602910809c6dffa891e3045e087d599a","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" \"*.md\" --write","generate:2025-07":"rimraf src/client/2025-07 && openapi-ts -i openapi-2025-07.json -o src/client/2025-07","generate:2026-01":"rimraf src/client/2026-01 && openapi-ts -i openapi-2026-01.json -o src/client/2026-01"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"10.5.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"21.7.3","_hasShrinkwrap":false,"devDependencies":{"mocha":"^11.1.0","dotenv":"^16.4.7","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","@hey-api/openapi-ts":"0.95.0"},"peerDependencies":{"puppeteer":">=22"},"peerDependenciesMeta":{"puppeteer":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.20_1775766756648_0.33044370912011534","host":"s3://npm-registry-packages-npm-production"}},"0.0.21":{"name":"shipbob-node-sdk","version":"0.0.21","author":{"name":"Brian Zinn"},"license":"ISC","_id":"shipbob-node-sdk@0.0.21","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"ab0d57bf1eee2f4c7f07f1a63c4c68ad9a6c5b45","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.21.tgz","fileCount":113,"integrity":"sha512-AIOS0M3q8aargHf5Cde5HJiOi4JZ0x24BbXTlzlaKJ0kpAqUpJ9FvKpinJ8tFyBPpx2XRJL2v2M7zUkLKiYSwQ==","signatures":[{"sig":"MEQCIDQJCbcWYKI7q0K/krLdTbbACUTz+S/lrghQkGk9iYN9AiANZXxUJE3CQ3Badu/JVzMYUV4VgZwAHYg/Gw5wxGJxhw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2216261},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"139e2f80602910809c6dffa891e3045e087d599a","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc","prebuild":"rimraf dist && prettier \"**/*.ts\" --check","prettier:write":"prettier \"**/*.ts\" \"*.md\" --write","generate:2025-07":"rimraf src/client/2025-07 && openapi-ts -i openapi-2025-07.json -o src/client/2025-07","generate:2026-01":"rimraf src/client/2026-01 && openapi-ts -i openapi-2026-01.json -o src/client/2026-01"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"11.11.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","mocha":"^11.1.0","dotenv":"^16.4.7","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","@hey-api/openapi-ts":"0.95.0"},"peerDependencies":{"puppeteer":">=22"},"peerDependenciesMeta":{"puppeteer":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.21_1776739417300_0.8267386790807281","host":"s3://npm-registry-packages-npm-production"}},"0.0.22":{"name":"shipbob-node-sdk","version":"0.0.22","author":{"name":"Brian Zinn"},"license":"0BSD","_id":"shipbob-node-sdk@0.0.22","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"585aa30a57dcfbe9a3e3d3d40106f43a06e4215c","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.22.tgz","fileCount":162,"integrity":"sha512-gvQClBL5nW4BXJGzc3GtmhWstXd2Cx+KFGokp/hyUya8evtKfqm1z11IDu70PaKvpUT5cOgeXR2/SVIQSRDXvQ==","signatures":[{"sig":"MEUCIGb3udm63/TsdYQbdkPbhFodbWbeprAlTFTJW694FJkJAiEAwkjTw0i5mbOUfHR5IWpCI7/x3ViKFczOMsM8qfd1m2o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1782560},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"a0425607e9017d52d012048b5bb0a4463d987430","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc -p tsconfig.build.json","prebuild":"rimraf dist && prettier \"**/*.ts\" \"openapi-*.json\" --check","prepublishOnly":"yarn build","prettier:write":"prettier \"**/*.ts\" \"*.md\" \"openapi-*.json\" --write","generate:2025-07":"rimraf src/client/2025-07 && openapi-ts -i openapi-2025-07.json -o src/client/2025-07","generate:2026-01":"rimraf src/client/2026-01 && openapi-ts -i openapi-2026-01.json -o src/client/2026-01","generate:2026-07":"rimraf src/client/2026-07 && openapi-ts -i openapi-2026-07.json -o src/client/2026-07"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"11.11.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","mocha":"^11.1.0","dotenv":"^16.4.7","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","@hey-api/openapi-ts":"0.95.0"},"peerDependencies":{"puppeteer":">=22"},"peerDependenciesMeta":{"puppeteer":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.22_1787192101814_0.7956516370697808","host":"s3://npm-registry-packages-npm-production"}},"0.0.23":{"name":"shipbob-node-sdk","version":"0.0.23","author":{"name":"Brian Zinn"},"license":"0BSD","_id":"shipbob-node-sdk@0.0.23","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"c84eca16d3ef18426a344534cf1f6925cf13a484","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.23.tgz","fileCount":162,"integrity":"sha512-Pjj0sNatydk147aVaZ8hMsYuOsmL6qm2YoCfXvsny5+4TpD4yX2AfvyBUNUTqzkj24naQrF8czaWhgoyqlZ1QA==","signatures":[{"sig":"MEUCIDke1hiXur5iTYJHq2L9C9IpYkAzBykZT1ostzBd5uXIAiEAs49vMGW46Kk4FIcGAstYN/++PTXwW2dWN2mnfz9G56M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1785394},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"a0425607e9017d52d012048b5bb0a4463d987430","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc -p tsconfig.build.json","prebuild":"rimraf dist && prettier \"**/*.ts\" \"openapi-*.json\" --check","prepublishOnly":"yarn build","prettier:write":"prettier \"**/*.ts\" \"*.md\" \"openapi-*.json\" --write","generate:2025-07":"rimraf src/client/2025-07 && openapi-ts -i openapi-2025-07.json -o src/client/2025-07","generate:2026-01":"rimraf src/client/2026-01 && openapi-ts -i openapi-2026-01.json -o src/client/2026-01","generate:2026-07":"rimraf src/client/2026-07 && openapi-ts -i openapi-2026-07.json -o src/client/2026-07"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"11.11.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","mocha":"^11.1.0","dotenv":"^16.4.7","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","@hey-api/openapi-ts":"0.95.0"},"peerDependencies":{"puppeteer":">=22"},"peerDependenciesMeta":{"puppeteer":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.23_1787240299562_0.9830745297368275","host":"s3://npm-registry-packages-npm-production"}},"0.0.24":{"name":"shipbob-node-sdk","version":"0.0.24","author":{"name":"Brian Zinn"},"license":"0BSD","_id":"shipbob-node-sdk@0.0.24","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"b593f1e85ec70a529ea4eb8e33a6d2039b12e36b","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.24.tgz","fileCount":162,"integrity":"sha512-Yb6t37udl99/JQQUXS8FyurPDJZWnAAsZI5kUA4/eJNQT9Mvdt+RINdgGCMImHcT/GuxabNIhVbTDta9kpLcMw==","signatures":[{"sig":"MEUCIEZbwiyKcFp2WQqvi74Fb+5XM11q/qxaOdFSvSzZcWWsAiEAnMTBw0ukc7QziDAv22Pd/Ma/4FO/Eh+EP6saCQD4tY8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1800049},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"a6d807dac8a38273ac937daba66d2273cef1d36d","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc -p tsconfig.build.json","prebuild":"rimraf dist && prettier \"**/*.ts\" \"openapi-*.json\" --check","prepublishOnly":"yarn build","prettier:write":"prettier \"**/*.ts\" \"*.md\" \"openapi-*.json\" --write","generate:2025-07":"rimraf src/client/2025-07 && openapi-ts -i openapi-2025-07.json -o src/client/2025-07","generate:2026-01":"rimraf src/client/2026-01 && openapi-ts -i openapi-2026-01.json -o src/client/2026-01","generate:2026-07":"rimraf src/client/2026-07 && openapi-ts -i openapi-2026-07.json -o src/client/2026-07"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"11.11.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","mocha":"^11.1.0","dotenv":"^16.4.7","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","@hey-api/openapi-ts":"0.95.0"},"peerDependencies":{"puppeteer":">=22"},"peerDependenciesMeta":{"puppeteer":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.24_1787253140845_0.9125280954170478","host":"s3://npm-registry-packages-npm-production"}},"0.0.25":{"name":"shipbob-node-sdk","version":"0.0.25","author":{"name":"Brian Zinn"},"license":"0BSD","_id":"shipbob-node-sdk@0.0.25","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"d288efc4c7a98a131e6685bfce577e1842fdf2ac","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.25.tgz","fileCount":162,"integrity":"sha512-8yqiRwt/Aq0YOLEBwwnAWaGKnYEHJ4ezawmcOowTE2cxbRmHHm27tqixVy1xoebKTSl3uBp38xqUubEG//gkGA==","signatures":[{"sig":"MEUCIC13E1z4CzPeUlZnMcdn5yrNTNNTwbpp5FTGWmXz5NDsAiEAyfyzGnXsnTp7QcBHXvPOS1IVj4gpFysh6Sw07vlHlJU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1801266},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"ca2298c287b2c1c963b43e4f604ebc79ffe070a0","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc -p tsconfig.build.json","prebuild":"rimraf dist && prettier \"**/*.ts\" \"openapi-*.json\" --check","prepublishOnly":"yarn build","prettier:write":"prettier \"**/*.ts\" \"*.md\" \"openapi-*.json\" --write","generate:2025-07":"rimraf src/client/2025-07 && openapi-ts -i openapi-2025-07.json -o src/client/2025-07","generate:2026-01":"rimraf src/client/2026-01 && openapi-ts -i openapi-2026-01.json -o src/client/2026-01","generate:2026-07":"rimraf src/client/2026-07 && openapi-ts -i openapi-2026-07.json -o src/client/2026-07"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"11.11.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","mocha":"^11.1.0","dotenv":"^16.4.7","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","@hey-api/openapi-ts":"0.95.0"},"peerDependencies":{"puppeteer":">=22"},"peerDependenciesMeta":{"puppeteer":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.25_1787257409301_0.7802672696260711","host":"s3://npm-registry-packages-npm-production"}},"0.0.26":{"name":"shipbob-node-sdk","version":"0.0.26","author":{"name":"Brian Zinn"},"license":"0BSD","_id":"shipbob-node-sdk@0.0.26","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"d05ae5aaf2f8771ca6f1f574b323bca026f9d8bf","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.26.tgz","fileCount":162,"integrity":"sha512-725WKHdllid7BwKz4f7QixxJOSum1d7UtOBQoOV5PolU0fJpoDGUN3UQebgbwNXSDCkOGt3/VsQw2ofXmLhuOQ==","signatures":[{"sig":"MEQCIBghJvuxj8BFhp1zQHo00k3vkMNIHMzerDqWinp1wNI7AiA5EwBDZVwQG098eWYiL8fo9BQbq6ZHKElzWVVFrTy70w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1809358},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"4baa0c12e2dfb5cb58039e49c37d0463317d1c1c","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc -p tsconfig.build.json","prebuild":"rimraf dist && prettier \"**/*.ts\" \"openapi-*.json\" --check","prepublishOnly":"yarn build","prettier:write":"prettier \"**/*.ts\" \"*.md\" \"openapi-*.json\" --write","generate:2025-07":"rimraf src/client/2025-07 && openapi-ts -i openapi-2025-07.json -o src/client/2025-07","generate:2026-01":"rimraf src/client/2026-01 && openapi-ts -i openapi-2026-01.json -o src/client/2026-01","generate:2026-07":"rimraf src/client/2026-07 && openapi-ts -i openapi-2026-07.json -o src/client/2026-07"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"11.11.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","mocha":"^11.1.0","dotenv":"^16.4.7","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","@hey-api/openapi-ts":"0.95.0"},"peerDependencies":{"puppeteer":">=22"},"peerDependenciesMeta":{"puppeteer":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.26_1787930640889_0.15941712274259445","host":"s3://npm-registry-packages-npm-production"}},"0.0.27":{"name":"shipbob-node-sdk","version":"0.0.27","author":{"name":"Brian Zinn"},"license":"0BSD","_id":"shipbob-node-sdk@0.0.27","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"dist":{"shasum":"bbdab43e9403702219564562ccc8af25900f8ee1","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.27.tgz","fileCount":162,"integrity":"sha512-a0jdbRENR/eW7YDc7zuMB01nDe0eV9qx9Htq2UCsZC/RmdLKx0O/U5QavOIIRfAXnpXS6TEDJn4g5nwMUygs6w==","signatures":[{"sig":"MEUCIEIqgag++VsNtUgjC8ZHjGLOVu5jrfpjBgGK+zXRMCw9AiEAmSYxSaKwh5Cs1tlA+8ul7z4njg7w9UYhwH3Psxrtc8k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1841316},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"22ced39993818c943f693066383e4f7cb99df284","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc -p tsconfig.build.json","prebuild":"rimraf dist && prettier \"**/*.ts\" \"openapi-*.json\" --check","prepublishOnly":"yarn build","prettier:write":"prettier \"**/*.ts\" \"*.md\" \"openapi-*.json\" --write","generate:2025-07":"rimraf src/client/2025-07 && openapi-ts -i openapi-2025-07.json -o src/client/2025-07","generate:2026-01":"rimraf src/client/2026-01 && openapi-ts -i openapi-2026-01.json -o src/client/2026-01","generate:2026-07":"rimraf src/client/2026-07 && openapi-ts -i openapi-2026-07.json -o src/client/2026-07"},"_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"11.11.0","description":"ShipBob API node SDK","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","mocha":"^11.1.0","dotenv":"^16.4.7","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","@hey-api/openapi-ts":"0.95.0"},"peerDependencies":{"puppeteer":">=22"},"peerDependenciesMeta":{"puppeteer":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shipbob-node-sdk_0.0.27_1788233657365_0.8648112367844465","host":"s3://npm-registry-packages-npm-production"}},"0.0.28":{"_id":"shipbob-node-sdk@0.0.28","dist":{"shasum":"7ddbab01db0903ae6653fa885ff6fd4a5a2b5dbe","tarball":"https://registry.npmjs.org/shipbob-node-sdk/-/shipbob-node-sdk-0.0.28.tgz","fileCount":162,"integrity":"sha512-v4kVZeZDO0oSaHh/adupPfszOJRhe6ltEJkTcFPf5gBqlvh9QKUVf4exY6NlkXI6jC8Z69yWrTVujDXCJ4sFLA==","signatures":[{"sig":"MEUCIQC4ntLuow6uXGQJJLekd+lwg3pf1tzO4N37Zn0xyhT6uwIgFx3wmr5I6NfamovU1iV0W2l+volbXr/DufnmqJD++ys=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDUWhfdhoF47CEgJweNLNi9UR7MtPeW4hnjFF5FsW9lPwIgD+/MzCeLW3FuJ1tFR+DoNGUC29EPSNhldUlgCovsiog="}],"unpackedSize":1871131},"main":"dist/index.js","name":"shipbob-node-sdk","type":"commonjs","types":"dist/index.d.ts","author":{"name":"Brian Zinn"},"gitHead":"abe7b3ec387fcaf4c1d225a9b472d23a9f1d3c4d","license":"0BSD","scripts":{"lint":"eslint . --ignore-pattern generated/","test":"mocha","build":"tsc -p tsconfig.build.json","prebuild":"rimraf dist && prettier \"**/*.ts\" \"openapi-*.json\" --check && yarn typecheck","typecheck":"tsc -p tsconfig.json","prepublishOnly":"yarn build","prettier:write":"prettier \"**/*.ts\" \"*.md\" \"openapi-*.json\" --write","generate:2025-07":"rimraf src/client/2025-07 && openapi-ts -i openapi-2025-07.json -o src/client/2025-07","generate:2026-01":"rimraf src/client/2026-01 && openapi-ts -i openapi-2026-01.json -o src/client/2026-01","generate:2026-07":"rimraf src/client/2026-07 && openapi-ts -i openapi-2026-07.json -o src/client/2026-07"},"version":"0.0.28","_npmUser":{"name":"brianzinn","email":"npm@wakeskate.com"},"_npmVersion":"11.11.0","description":"ShipBob API node SDK","directories":{},"maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","mocha":"^11.1.0","dotenv":"^16.4.7","rimraf":"^6.0.1","prettier":"^3.5.1","puppeteer":"^24.5.0","typescript":"^5.7.3","@types/node":"20","@types/mocha":"^10.0.10","@hey-api/openapi-ts":"0.95.0"},"peerDependencies":{"puppeteer":">=22"},"peerDependenciesMeta":{"puppeteer":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/shipbob-node-sdk_0.0.28_1790375936271_0.7161544526000723"}}},"time":{"created":"2025-02-19T20:32:37.542Z","modified":"2026-09-25T22:38:56.525Z","0.0.1":"2025-02-19T20:32:37.709Z","0.0.2":"2025-02-19T20:55:13.056Z","0.0.3":"2025-02-20T01:15:48.942Z","0.0.4":"2025-02-26T16:03:31.133Z","0.0.5":"2025-03-01T00:16:34.535Z","0.0.6":"2025-03-05T03:15:50.713Z","0.0.7":"2025-03-20T17:40:21.300Z","0.0.8":"2025-03-20T17:54:41.020Z","0.0.9":"2025-03-25T15:06:17.197Z","0.0.10":"2025-03-29T01:11:15.996Z","0.0.11":"2025-04-02T04:20:38.629Z","0.0.12":"2025-04-09T00:45:54.509Z","0.0.13":"2025-05-22T02:07:58.178Z","0.0.14":"2025-11-05T02:08:48.931Z","0.0.15":"2026-02-02T23:45:52.884Z","0.0.16":"2026-02-03T02:18:39.909Z","0.0.17":"2026-02-03T02:23:41.074Z","0.0.18":"2026-04-09T06:22:57.088Z","0.0.19":"2026-04-09T17:41:41.888Z","0.0.20":"2026-04-09T20:32:36.812Z","0.0.21":"2026-04-21T02:43:37.529Z","0.0.22":"2026-08-20T02:15:01.981Z","0.0.23":"2026-08-20T15:38:19.717Z","0.0.24":"2026-08-20T19:12:21.007Z","0.0.25":"2026-08-20T20:23:29.476Z","0.0.26":"2026-08-28T15:24:01.064Z","0.0.27":"2026-09-01T03:34:17.550Z","0.0.28":"2026-09-25T22:38:56.361Z"},"author":{"name":"Brian Zinn"},"license":"0BSD","description":"ShipBob API node SDK","maintainers":[{"name":"brianzinn","email":"npm@wakeskate.com"}],"readme":"# ShipBob Node SDK\n\nThe ShipBob API is in a state of flux as their legacy `1.0` and `2.0` API versions are\n[officially deprecated](https://developer.shipbob.com/v2.0/versioning)\n\n> end of support for `1.0` and `2.0` was July 31, 2026, and requests are progressively blocked through August 2026 until\n> all `1.0` requests return `410 Gone` (August 29, 2026).\n\nFirst of all there are no official SDKs for ShipBob. I'm just dropping this here, in case it will speed up somebody else\ngetting started using their API.\n\nThis SDK supports multiple API versions, but being generated it is lower-level than a hand-written wrapper would be. You\nwill need to provide for \"POST\" a `body` and \"GET\" will use `query`. `path` will be needed when a parameter is part of\nthe url. So, you'll need to refer to\n<a href=\"https://developer.shipbob.com/api/\" target=\"_blank\" rel=\"noopener noreferrer\">their API reference</a> to be\nable to see how to pass parameters (the typings/intellisense shows them, too). Also, headers may be required as when you\nplace orders (even with sendChannel set to true) to satisfy the typings.\n\nRefering to the `/test` folder should provide enough examples to get started - there are inventory, create/update\nproducts and place order examples.\n\n<div align=\"center\">\n <a href=\"https://www.npmjs.com/package/shipbob-node-sdk\">\n  <img alt=\"Weekly downloads\" src=\"https://badgen.net/npm/dw/shipbob-node-sdk?color=blue\" />\n </a>\n</div>\n\n## install\n\n```bash\nnpm i shipbob-node-sdk\n# or\npnpm add shipbob-node-sdk\n# or\nyarn add shipbob-node-sdk\n```\n\n```typescript\nimport { createAPI } from 'shipbob-node-sdk';\n// generated functions live under their version - 2026-07 is newest, and what createAPI defaults to\nimport { get202607Product } from 'shipbob-node-sdk/dist/client/2026-07';\n\n// create your client like this (return object has extra functions/objects)\nconst client = await createAPI('<your-token-here>', 'https://sandbox-api.shipbob.com');\n// the generated functions are now authenticated - nothing to pass around\nconst productSearch = await get202607Product();\n```\n\n# API implementation\n\nEverything is implemented except for the `/simulate/*` endpoints, which are not in OpenAPI (see \"Follow URIs and\nsimulate\" below).\n\nGenerated clients ship for `2025-07`, `2026-01` and `2026-07` (import from `shipbob-node-sdk/dist/client/<version>`):\n\n- `createAPI(...)` applies your token/base URL/headers and the interceptors to every version's HTTP client, so generated\n  functions from any shipped version just work (ie: `get202601Product()`, `get202607Product()`). Their API version is\n  baked into their URL.\n- `options.apiVersion` selects which version's `GET /channel` retrieves the channels (unknown versions like\n  `experimental` fall back to the newest). It's also the default path prefix for the `get`/`post`/`put`/`patch`/`delete`\n  helpers (see \"Follow URIs and simulate\").\n- `options.channelLoadRetry` retries a failed `GET /channel` -\n  `{ retries?: number; delaySeconds?: number; maxRateLimitWaitSeconds?: number }`. Their gateway returns the occasional\n  ephemeral `401` (empty body) on a token that succeeds seconds either side, which without a retry fails `createAPI`\n  outright. A `403` is never retried - that one is a real missing `channels_read` scope. Skip the call entirely by\n  injecting `options.channel`. Each option is documented in full on `CreateOptions`.\n  - `retries` (default `1`, max `10`) - retries, not attempts, so the default is up to 2 calls. `0` disables.\n  - `delaySeconds` (default `0.5`, max `60`) - the wait before retrying a connection failure, `401` or `5xx`. A\n    [`retry-after`](https://developer.shipbob.com/2026-07/rate-limit) on those is logged but not obeyed - it is not\n    about your request rate.\n  - `maxRateLimitWaitSeconds` (default `5`, max `60`) - the longest `429` wait to sit through. A `429` is slept for its\n    full `x-retry-after` or not retried at all, since retrying into a window that has not cleared cannot succeed. Raise\n    it to wait longer ones out, at the cost of `createAPI` blocking that long.\n- One active `createAPI` at a time. Each version's generated client is a module-level singleton, so a second `createAPI`\n  re-points `baseUrl`/`auth` and replaces the interceptors - the newest call wins outright, and the earlier API object's\n  requests go out with the newer token. Sandbox and production side by side in one process are not supported.\n\n## Known OpenAPI spec deficiencies\n\nThe vendored `openapi-*.json` files are kept exactly as ShipBob publishes them, so their defects flow into the generated\ntypes. Cataloged here instead of patching the spec (a re-download would silently revert any patch). Sometimes their\nspecs even have issues that prevent them being used to generate code:\n\n- **Untyped schemas generate `unknown`.** 22 of `/product`'s 26 query param schemas (ie:\n  `Products.Get.Api.V5.Product.PageSize.Int`) are literally `{\"additionalProperties\":false}` - no `type` - in `2025-07`,\n  `2026-01` and `2026-07`, so `PageSize`, `SKU`, `Barcode`, `HasVariants` etc. compile with any value (`250`, `'250'`,\n  an object). Only `Search`, `SortBy`, `SortOrder` (and `IsInventorySyncEnabled`, below) have a type. The inventory\n  endpoints type theirs properly (`{\"type\":\"integer\"}`), which is why the compiler checks those but not these. Worse for\n  `2025-07` as of the 2026-09-25 download: its older export typed these params `string`, so they at least rejected\n  numbers and objects.\n- **`IsInventorySyncEnabled` cannot be sent.** The `/product` filter is declared `{\"type\":\"object\"}` with no properties,\n  which generates `{ [key: string]: never }` - only an empty object type-checks, and a boolean does not. Cast it, or use\n  the `get` helper. In `2026-01` and `2026-07`, and in `2025-07` as of the 2026-09-25 download (was `string`).\n- **List query params must be comma-separated.** The spec implies the OpenAPI default serialization (`explode: true`,\n  repeated keys ie: `InventoryIds=1&InventoryIds=2`), but the API silently honours only one key and returns partial\n  results instead of failing. `createAPI` forces `explode: false` (`InventoryIds=1,2`) on every client.\n- **Reserved characters must be sent unescaped.** Query values only match with literal `,` and `:` - the request\n  interceptor un-escapes `%2C`/`%3A` on every URL.\n- **Paging hrefs are missing the version prefix** (and use different casing, ie: `/Product?cursor=...` for `/product` -\n  their routing is case-insensitive). See \"Follow URIs and simulate\".\n- **Announced endpoints can be missing from the spec.** Their changelog lists the sandbox simulations with the `2026-01`\n  release (`POST /2026-01/simulate/shipment`, `GET /2026-01/simulate/status/{simulationId}`), but none of our spec\n  downloads has ever contained them - \"simulat\" appears in no `openapi-*.json` in this repo's history, including the\n  2026-09-25 downloads. Call them with the `get`/`post` helpers (see \"Follow URIs and simulate\").\n  `POST /inventory/history:query` from the same changelog entry did make it into `2026-01` and `2026-07`.\n- **Webhook payloads have no published schema at all.** The spec only covers webhook management\n  (subscribe/list/delete) - the delivered payloads are typed nowhere. They approximately mirror the resource view models\n  (ie: `OrdersShipmentViewModel`); the differences below were verified against live `2026-01` captures and are corrected\n  in `WebhookPayloadsByTopicV2`:\n  - shipment payloads carry `order_type` and `zone` (absent from `OrdersShipmentViewModel`); `zone.id` is `null` on a\n    cancelled shipment, and `tracking` is `null` until a label exists.\n  - `retailer_program_data` named its dates camelCase in the spec (`doNotShipBeforeDate`, `shipByDate`) but the wire\n    sends snake_case (`do_not_ship_before_date`, `ship_by_date`). **The spec now uses snake_case** - `2026-01` as of the\n    2026-08-19 download (the 2026-06-22 one was still camelCase), `2026-07` from its first download (2026-08-19), and\n    `2025-07` as of the 2026-09-25 download. 2026-09-25 payloads still send snake_case, so spec and wire now agree and\n    `WebhookPayloadsByTopicV2` no longer corrects them.\n  - several fields arrive `null` where the spec says optional-only: `status_details[].extra_information`,\n    `shipping_terms.carrier_type` / `payment_term`, and shipment `measurements` (on the `order.shipment.on_hold` and\n    `order.shipment.exception` captures, both 2026-09; the cancelled and delivered captures carried measurements).\n    `purchase_order_number` and `retailer_program_type` arrive `null` too, where the spec now says required (below).\n  - **The same spec fix tightened those two types.** The old specs' `required` listed `purchaseOrderNumber` /\n    `retailerProgramType` - camelCase names matching no property, so it was silently ignored and both generated\n    optional. The fixed `required` names the real properties, so `purchase_order_number` and `retailer_program_type` now\n    generate as required, non-null `string` (same downloads as the date fix). 2026-09-25 payloads still send `null` for\n    both, so the generated types are now wrong where they used to be merely loose - `WebhookPayloadsByTopicV2` overrides\n    them as `string | null`.\n  - no model exists for the `order.shipment.tracking.updated` payload (the `Tracking*` schemas are the public tracking\n    API - a different shape). The topic itself was missing from the spec's generated `WebhooksTopics` enum for `2026-01`\n    until the 2026-08-19 download - the enum `WebhookPayloadsByTopicV2` (hand-written) checks its topics against.\n\n  Verified 2026-09-25 by type-checking a live capture of every subscribed topic (`order.shipped`,\n  `order.shipment.delivered` / `cancelled` / `on_hold` / `exception` / `tracking.updated`) against\n  `WebhookPayloadsByTopicV2`: all pass, and the shipment and order captures fail against the raw generated types. The\n  scrubbed captures live in `test/webhook-payloads-v2.samples.ts` and are type-checked on every `yarn build`.\n\n- **The webhook create response is under-declared.** `200` is the spec's only success code; the `201` that means the\n  subscription was actually created appears in no `yyyy-mm` spec, and no spec has ever declared both (`1.0`/`2.0`\n  declare only `201`). See \"Undocumented behaviour\" below.\n- **Assorted wrong response types** - see the hand-written corrections in `src/types.ts` (ie:\n  `SetExternalSyncResponse`).\n\n## Undocumented behaviour (and where the docs are wrong)\n\nThe spec deficiencies above are at least machine-readable. These are things their published documentation states\nincorrectly, or does not state at all - each one below cost a support ticket or a live capture to establish, so they are\nrecorded here rather than rediscovered.\n\n- **Webhook subscriptions survive an API version's end-of-life.** Their team confirmed it on request; nothing documents\n  it. With a 6-month release cadence, this is what decides whether you need a migration job - you don't. A subscription\n  stops only when deleted. See \"Webhooks\".\n- **`POST /webhook` reports success for a subscription it did not create.** `201` means created; `200` means the\n  topic+url is already registered and nothing happened, so events never flow. Only `200` is documented and it is the\n  spec's sole success code, so the status that means \"it worked\" is undeclared and a generated client treats the no-op\n  as the happy path. Their\n  [old v2.0 page](https://developer.shipbob.com/v2.0/api/webhooks/create-a-new-webhook-subscription) had `201` right;\n  the [current page](https://developer.shipbob.com/api/webhooks/create-subscription) does not. Treat anything but `201`\n  as a failure.\n- **The `V2` webhook generation is named everywhere except the documentation.** `2025-07` is where their webhook schemas\n  first carry a version marker at all - `Webhooks.V2.*`, against a plainly unversioned\n  `Webhooks.Create.WebhookViewModel` in `1.0`/`2.0` (there is no V1). It is the same boundary where topics went\n  underscore to dot, the delivery header went `shipbob-topic` to `x-webhook-topic`, and the declared create status\n  changed. Four wire changes, one version bump, one name, and no page connecting them. It spans every `yyyy-mm` version,\n  which is why `WebhookPayloadsByTopicV2` has no per-version twin.\n- **ShipBob silently migrated existing subscriptions when V2 landed.** Unconfirmed by them - this is inferred from our\n  own API testing, but the behaviour is consistent. A subscription registered before `2025-07` should speak one\n  generation; a migrated one is a single \"frankenstein\" record living in both, and that explains every oddity below:\n  - it publishes **both** `shipbob-topic: order_shipped` and `x-webhook-topic: order.shipped`, so one event arrives\n    twice - handle both, or deduplicate.\n  - the management endpoints list it in dot notation with nothing marking its generation, so they cannot be used to tell\n    migrated from native.\n  - a create for a topic+url it already holds returns `200` (see above) even though nothing in the current view looks\n    like a conflict.\n  - deleting works normally and from either side: one `DELETE` against the legacy _or_ the current endpoint unsubscribes\n    both, confirming it really is one record.\n\n  Delivery is run through a third party (SVIX). Might explain why Shipbob's own support seem unable to answer questions\n  on how webhooks work.\n\n- **The [150/min rate limit](https://developer.shipbob.com/2026-07/rate-limit) is a default** - limits are raised per\n  account on request, so read `x-remaining-calls` rather than the documented number. Beware `x-remaining-calls-ip`, an\n  unmentioned per-IP counter that reads like the real one but isn't. They cannot or will not create a second account, so\n  you can separate writes vs. reads. ie: placing orders and syncing inventory must share the same rate limit, but they\n  will bump your rate limit! I suggest throttling your calls and using processing queues with managed concurrency.\n- **Ephemeral `401`s on a valid token are not acknowledged anywhere.** Their gateway intermittently returns a `401` with\n  an empty body on a token that succeeds seconds either side, with rate-limit headers showing plenty of budget\n  remaining. `options.channelLoadRetry` exists because of this.\n- **Some constants exist only in a PDF.** `packaging_material_type_id` is a bare `number` in the spec and the id-to-name\n  mapping is published only as a document (with a gap where value `4` should be), so `PackagingMaterial` in\n  `src/types.ts` is transcribed by hand. `GET /packaging-requirement` is the only runtime source of truth.\n\n## Webhooks\n\nAs a personal note. I regret implementing webhooks at all, since I needed to implement polling anyway. There are various\ngaps in the webhooks. Using their table is perhaps the best way to explain:\n\n| Shipment Status | Status Detail Name | Comment                                                                                         |\n| --------------- | ------------------ | ----------------------------------------------------------------------------------------------- |\n| Processing      | Labeled            | I think this maps to \"order.shipped\" webhook, doesn't always have tracking (or invoice amounts) |\n| Completed       | Delivered          | Does not always fire when delivered (seems to be carrier dependent)                             |\n| Completed       | Delivery Exception | No Webhook (need to poll for RTS, etc.)                                                         |\n| Exception       | \\*                 | These do fire, but are not useful for delivery                                                  |\n\nie: No webhooks for delivery exceptions ie: `Completed` -> `DeliveryException` when carrier needs more details. The\n`shipment_exception` webhook only applies to before the shipment leaves their FC (ie: inventory related issue).\n\nPartial rows of table from here: _(https://developer.shipbob.com/#shipment-statuses)_\n\nWebhook payload typings are exported as `WebhookPayloadsByTopicV2` for narrowing an incoming payload by its topic. It's\nbasically an order and the status is known. WRO and other webhooks were added sometime in 2026.\n\nThe topics are not versioned the way the REST endpoints are - there is no `...For202607` twin, and you subscribe through\nwhichever versioned `/webhook` endpoint you like. ShipBob have confirmed that a subscription outlives the API version\nthat created them: one made via `/2026-01/webhook` keeps delivering after 2026-01 reaches end of support, so you do not\nre-create subscriptions on their 6-month release cadence. A subscription stops only when you delete it.\n\nThat cuts both ways: subscriptions predating the 2025-07 rename are still delivering the older underscore topics, typed\nas `WebhookPayloadsByTopicLegacy`. Narrow on the header rather than the topic - legacy posts\n`shipbob-topic: order_shipped`, newer ones post `x-webhook-topic: order.shipped` - because `get202601Webhook` and the\ndashboard list every subscription in dot notation regardless of its generation. Subscriptions migrated when 2025-07\nlanded are one record in both systems and fire _both_ headers, so handle both or deduplicate.\n\n## Follow URIs and simulate\n\nThe returned `get`/`post`/`put`/`patch`/`delete` helpers cover endpoints outside the OpenAPI spec (ie: `/simulate/*` -\nsee `/test/shipbob-api.simulate.spec.ts`) and paging URIs (`next`/`prev`/`first`/`last` in the JSON responses - see the\npaging tests). The paging HATEOAS is not a full href - the API version prefix is missing (ie: `/Product?cursor=...`) -\nso the helpers prepend `options.apiVersion` (defaults to `2026-07`, the newest - longest support before the version\nsunsets), with a per-call override (ie: `api.get('/product', 'experimental')`):\n\n```typescript\nimport { createAPI } from 'shipbob-node-sdk';\nimport { get202601Product } from 'shipbob-node-sdk/dist/client/2026-01';\nimport {\n  type Get202601ProductResponses,\n  type Get202601ProductErrors,\n} from 'shipbob-node-sdk/dist/client/2026-01/types.gen';\n\nconst client = await createAPI('<your-token-here>', 'https://sandbox-api.shipbob.com', {\n  logTraffic: true,\n  // version prefix for the get/post helpers (and the channel load)\n  apiVersion: '2026-01',\n});\nconst productSearch = await get202601Product();\nassert.ok(productSearch.data, 'should have data');\nconst { next } = productSearch.data;\nassert.ok(next !== null && next !== undefined, 'should have more pages');\n// you can get these types by clicking ie: `get202601Product` function and look at typings parameters.\nconst pagedResult = await client.get<Get202601ProductResponses, Get202601ProductErrors>(next);\nassert.ok(pagedResult.data, 'should have paged data');\n```\n\n# Building locally\n\nFor making changes to this library locally - use `yarn link` to test out the changes easily. This is useful if you would\nlike to contribute. If you don't want an NPM dependency, it's easy to generate this yourself from OpenAPI spec and then\njust copy the index.ts file to your project.\n\nNOTE: I did not notice until I had written a custom implementation that ShipBob had published an Open API spec\n:facepunch:.\n\n```bash\n# this is how the clients are generated (see scripts in package.json)\n$ yarn generate:2026-01\n$ yarn generate:2026-07\n```\n\n# Testing\n\n## Running the tests in this repo\n\n`yarn test` (mocha + tsx). There are two kinds of spec in `/test`:\n\n- **Offline** - `channel-load-retry` and `send-channel-id` replace `fetch` with a stub, need no credentials and always\n  run.\n- **Live** - everything else calls the real ShipBob API and asserts on data belonging to one account (particular orders,\n  channels and webhook subscriptions), so they cannot pass against anyone else's. They **skip** when their credentials\n  are absent, printing which key was missing, so a clean checkout gets a green run rather than a confusing failure.\n\nTo actually run the live ones, uncomment the keys you need in `test/.env` (`test/.env.sample` is the template). **Doing\nso points them at whatever `SHIPBOB_API_URL` holds and they will issue real requests** - several create and delete\norders and webhook subscriptions.\n\n```bash\n# for the PAT (Personal Access Token) login (recommended)\nSHIPBOB_API_TOKEN=<redacted>\nSHIPBOB_API_URL=https://sandbox-api.shipbob.com\n# for the oAuth login\nSHIPBOB_CLIENT_ID=<redacted>\nSHIPBOB_CLIENT_SECRET=<redacted>\n# for the Web UI scraper (web.shipbob.com) login\nSHIPBOB_WEB_UI_EMAIL=email@company.com\nSHIPBOB_WEB_UI_PASSWORD=<redacted>\n```\n\nTo run a subset, use `--grep` - `.mocharc.json` sets a `spec` glob that both positional arguments and `--spec` merge\nwith rather than replace, so naming a file does not narrow anything:\n\n```bash\nnpx mocha --grep \"channelLoadRetry\"   # just the offline retry suite\n```\n\nYou can also run and debug any of these in VS Code.\n\n## Mocking this library in your own tests\n\nYou can fake out this library itself, or otherwise mocking the ShipBob API http calls are quite easy to simulate with\n`nock`. Here's a way to test creating an order verifying idempotent operation.\n\n```javascript\n// NOTE: nock > 14 with undici is needed to mock underlying \"fetch\" calls\nconst CHANNELS_RESPONSE = {\n  items: [{\n    id: 1,\n    application_name: 'SMA',\n    name: 'test',\n    scopes: []\n  }]\n};\n\nconst nockScope = nock('https://sandbox-api.shipbob.com')\n  .defaultReplyHeaders({ 'content-type': 'application/json' })\n  // createAPI loads channels following `options.apiVersion` (defaults to the newest API version)\n  .get('/2026-07/channel')\n  .once()\n  .reply(200, JSON.stringify(CHANNELS_RESPONSE))\n  .post('/2026-01/order')\n  .once()\n  .reply(422, JSON.stringify({\n    \"\": [\n      \"Cannot insert order with existing ReferenceId\"\n    ]\n  }))\n  .get('/2026-01/order?ReferenceIds=123')\n  .once()\n  .reply(200, JSON.stringify([{\n    id: 1,\n    order_number: '18743683',\n  }]))\n  ;\n...\nassert.ok(nockScope.isDone(), 'should have completed nock requests');\n```\n\n# Adding more events\n\nTo replace what could be considered \"missing\" webhooks, such as WRO completed (Receiving originally had no webhooks!).\n\nYou can follow the section `How to sync WROs` for a more robust solution. Read on if you are interested in how this\nworks, but also why it won't work!\n\nIf you want something more event driven, you can use the emails they send out with an inbound email processor: ie:\n\n```javascript\n// this is done using Mandrill/Mailchimp Inbound mail processor:\nfor (const event of events) {\n  const { subject } = event.msg;\n  switch (subject) {\n    case 'Your WRO is now complete':\n      // ie: Your WRO 756713 is now complete and all associated inventory is ready to ship! ...\n      //     https://web.shipbob.com/app/Merchant/#/inventory/receiving/756713/summary ...\n      const match = /Your WRO (?<wro>\\d+) is now complete/i.exec(event.msg.text);\n      if (match === null || match.groups === undefined || !('wro' in match.groups)) {\n        throw new Error(`cannot find wro in email '${taskStorageId}'`);\n      }\n      const wro = match.groups.wro;\n      console.log(` Got it!  Received WRO# '${wro}'`);\n      break;\n    case 'Your box/pallet is now complete!':\n      console.log(`Ignoring subject: '${subject}'`);\n      break;\n    default:\n      console.log(`Unsupported subject: '${subject}'.`);\n      break;\n  }\n}\n```\n\nYou can publish that as an event or push to a queue and it will act as a \"webhook\".\n\n**NOTE:** I discovered after writing the above inbound mail handler that a WRO you create may be split. ie: we created 1\nWRO and it was split into 6 more WROs by the ShipBob team, so it's not really possible to link back to your system when\nthat occurs. Also, they have indicated to me there's no link on these WROs or UROs (Unidentified Receiving Orders) that\nthey create. There's no hierarchical relationship with the split WROs they are creating. In other words, you will need\nto implement polling anyway, so adding this is probably not worthwhile.\n\n**UPDATE:** `2026-07` (in the spec since our first download, 2026-08-19) links UROs to WROs, one way only:\n\n- URO -> WRO: per the spec, every URO carries `linked_wro_id` (null/`0` when unlinked) and `linked_wro_date` - not yet\n  checked against a live response. `GET /2026-07/unidentified-receiving-order?isCompleted=true` lists linked UROs\n  (`false`, the default, lists unlinked), and `POST /2026-07/unidentified-receiving-order/{uroId}:associateWRO` links\n  one yourself. Not in `2026-01` or `2025-07`.\n- WRO -> URO: nothing. The WRO has no URO field and no receiving endpoint filters by URO, so to find a WRO's UROs, page\n  the linked UROs and match `linked_wro_id` yourself.\n- Split WROs are still unrelated to each other.\n\n**Broken in practice (2026-09-25, production):** `GET /2026-07/unidentified-receiving-order` returns `200` with an empty\narray for both `isCompleted=false` and `isCompleted=true` - page 1 of both unlinked and linked is `[]`, so the list\nendpoint returns no UROs either way. The link fields above are therefore unverified against any real URO. See the URO\ntest in `test/shipbob-api-2026-07.spec.ts`. Their website also seems to be broken \"on hold receiving\" has none either.\n\n# OAuth\n\nThere is no S2S (server-to-server) oAuth. User intervention is required. There are only helper methods to help with\nthat. You could bypass that with a webscraper (see next section).\n\n- `oAuthGetConnectUrl()` direct an end user to follow the generated URL. Use `offline_access` as part of scope to get a\n  refresh token.\n- `oAuthGetAccessToken()` call this with the `code` query string fragment\n  `https://yourname.ngrok.io/#code=...&id_token=...` the redirect_uri (and your client Id and secret from ShipBob App)\n- `oAuthRefreshAccessToken()` call this with the last `refresh_token` you received, otherwise the same as\n  `oAuthGetAccessToken()` without `code`.\n\nThe method to get/refresh access token both return `access_token`, so you provide that to `createAPI(...)` with your\napplication name (via `options.channelPredicateOrApplicationName`).\n\nIf you create products with your API, you will not be able to see them with an oAuth app. I went down a big rabbit hole\nhere - something to do with different channels. Try not to waste as much time as I did here and avoid using oAuth unless\nyou are building actually an app IMO.\n\n# Access APIs available to web.shipbob.com\n\nThe Web UI has a much broader set of unsupported APIs (ordersapi.shipbob.com, shippingservice.shipbob.com,\nmerchantpricingapi.shipbob.com, etc.). For example, you cannot \"patch\" a WRO on the public receiving API, but you can\nsomehow with a web login, so it unlocks extra functionality and has a separate rate limit from the API. You would need\nto create a ShipBob account and then use those credentials to login with a scraper (see /src/WebScraper.ts). The account\ncan only be logged with one session at a time. Look at `AuthScopesWeb` type and you can probably work backwards the\nscopes needed for each API. If you go this route then the peer dependency on puppeteer is not optional.\n\nThere is no documentation for these extra APIs - you can look through network tracing in the browser. See unit tests for\nfull example:\n\n```typescript\n// scrape web.shipbob.com website:\n// NOTE: not exported from the package root (that would make puppeteer a hard dependency)\nimport { getAccessTokenUI } from 'shipbob-node-sdk/dist/WebScraper';\nimport { createAPI } from 'shipbob-node-sdk';\nimport { get202601InventoryLevelLocations } from 'shipbob-node-sdk/dist/client/2026-01';\n\nconst authResponse = await getAccessTokenUI({ email, password }, 60 /* timeout seconds */);\n\nconst missingChannelScope = authResponse.scopes.indexOf('channels_read') === -1;\n\nconst extraHeaders = {\n  origin: 'https://web.shipbob.com',\n  referer: 'https://web.shipbob.com/',\n};\n\n// options are a discriminated union: load + select ('SMA'), inject a persisted `channel`, or skip entirely\nawait createAPI(\n  authResponse.accessToken,\n  'https://api.shipbob.com',\n  missingChannelScope\n    ? { skipChannelLoad: true, extraHeaders }\n    : { channelPredicateOrApplicationName: 'SMA', extraHeaders }\n);\n\nconst inventoryListResponse = await get202601InventoryLevelLocations({\n  query: { InventoryIds: [20104984] },\n});\n```\n\n# Polling Orders for tracking\n\nThis is a suggested way to track orders from ShipBob. This may be better than using the webhook, sometimes the\n`order_shipped` webhook fires with no tracking information.\n\n1. Poll GET `/2026-01/order?HasTracking=true&IsTrackingUploaded=false&startDate=03-25-2025`\n\n```typescript\n// right now for me I get error \"An unexpected database error occurred. Please try again later\", but it worked on 1.0 API\nconst result = await get202601Order({\n  query: {\n    HasTracking: true,\n    IsTrackingUploaded: false,\n    StartDate: '2025-03-25T14:15:22Z',\n  },\n});\n```\n\n2. Iterate through each order (and each shipment)\n3. Sync the tracking back to your platform\n4. Mark the order as shipped using this endpoint\n   (https://developer.shipbob.com/api-docs/#tag/Orders/paths/~11.0~1shipment~1%7BshipmentId%7D/put). Or, you can mark it\n   as shipped using the bulk mark as shipped endpoint\n   (https://developer.shipbob.com/api-docs/#tag/Orders/paths/~11.0~1shipment~1:bulkUpdateTrackingUpload/post).\n\n# How to sync WROs\n\nSyncing WROs (Warehouse Receiving Orders) back to your system has 2 options.\n\n## Option #1 - Simple (wait until the WRO status is Completed)\n\n- Poll our GET WRO endpoint for WROs in Completed status: GET\n  https://sandbox-api.shipbob.com/2026-01/receiving?Statuses=Completed&ExternalSync=false\n\n```typescript\n/**\n * this was /2.0/receiving-extended\n */\nconst response = await get202601Receiving({\n  query: {\n    Statuses: ['Completed'],\n    ExternalSync: false,\n  },\n});\n```\n\n- Iterate through each inventory id in the inventory_quantities array and sync the stowed_quantity back to your system\n- Mark the WRO as synced (see below for the endpoint to use and sample request)\n- Poll the GET WRO endpoint again and it will no longer show up as you already synced this and ExternalSync is now set\n  to true\n\nMark the WRO as synced (this is optional and a alternative option to continuously polling completed WROs that you may or\nmay not know you have already synced)\n\n```typescript\n// use Ids from \"getReceivingExtended\" with ExternalSync: false.\nconst response = await post202601ReceivingSetExternalSync({\n  body: {\n    ids: [918363],\n    is_external_sync: true,\n  },\n});\n```\n\n## Option #2 - Advanced (partial receiving)\n\n- Poll GET WRO endpoint for WROs with statuses \"processing\" and \"completed\":\n  https://sandbox-api.shipbob.com/2026-01/receiving?Statuses=Processing,Completed&ExternalSync=false.\n\n```typescript\nconst response = await get202601Receiving({\n  query: {\n    Statuses: ['Processing'],\n    ExternalSync: false,\n  },\n});\n```\n\n**Note:** When initially testing you can remove the statuses from the query params, and you will see the default status\nof \"AwaitingArrival\" whenever a WRO is created. There is no sandbox simulation to move these forward.\n\n- For each WRO, make a request to the Get Warehouse Receiving Order Boxes endpoint:\n  https://sandbox-api.shipbob.com/2026-01/receiving/442997/boxes\n- Iterate through each box\n- Iterate through each item in the box_items array\n- Sync the stowed_quantity for each item back to your system\n\n# Synchronizing inventory levels\n\nThere are no webhooks or easy way to sync. Plus once you place an order there is a delay (~1 minute) before the\ninventory levels are impacted.\n\nSo, if you have one FC, you can use total_sellable_quantity for each inventory item.\n\nFor multiple FCs - their recommendation is to use for each FC the fulfillable_quantity and subtract the\ntotal_exception_quantity (since it could be assigned to either FC).\n\nYou can't do this anymore in `2026-01` - it requires 2 separate API calls (`inventory-level` and\n`inventory-level/locations`). See the `get inventory for a SKU` test in `test/shipbob-api-2026-01.spec.ts` for a working\nexample of combining them.\n\n```json\n{\n  \"id\": 1234,\n  \"name\": \"...\",\n  \"total_fulfillable_quantity\": 1688,\n  \"total_onhand_quantity\": 1688,\n  \"total_committed_quantity\": 0,\n  \"total_sellable_quantity\": 1688,\n  \"total_exception_quantity\": 0,\n  \"fulfillable_quantity_by_fulfillment_center\": [\n    {\n      \"id\": 211,\n      \"name\": \"Fairburn (GA)\",\n      \"fulfillable_quantity\": 1688,\n      \"onhand_quantity\": 1688,\n      \"committed_quantity\": 0,\n      \"awaiting_quantity\": 0,\n      \"internal_transfer_quantity\": 0\n    }\n  ]\n}\n```\n\n# Background\n\nOriginally I wrote a library that had endpoints not available in OpenAPI spec ie:\n\n- `/2.0/receiving-extended`\n- `/experimental/product` :skull:\n- `/experimental/receiving` :skull:\n\nIt was originally cumbersome to keep up-to-date and their dated API versions expire on a schedule (currently supported\nfor 24 months, new release every 6 months), so it only made sense to use only their OpenAPI specs to generate version\nspecific clients.\n","readmeFilename":"README.md"}