{"_id":"@buun_group/interparcel-api-sdk","_rev":"7-4a871662549d0cfb0d91d78a9503c15c","name":"@buun_group/interparcel-api-sdk","dist-tags":{"latest":"1.7.0"},"versions":{"1.2.0":{"name":"@buun_group/interparcel-api-sdk","version":"1.2.0","keywords":[],"author":{"name":"Sacha Roussakis-Notter"},"license":"MIT","_id":"@buun_group/interparcel-api-sdk@1.2.0","maintainers":[{"name":"buun_group","email":"sacha.roussakis-notter@buungroup.com"}],"dist":{"shasum":"f0d2eeff1b28cb0058b9c3aa8c75ddcd54c51993","tarball":"https://registry.npmjs.org/@buun_group/interparcel-api-sdk/-/interparcel-api-sdk-1.2.0.tgz","fileCount":3,"integrity":"sha512-Pc7vF74ZB46qyZ57S4ESAIIIlrb2dsnTAOtqQwh/9OyndYdzdbVO1MuJDaPmCk60jG9j/AU8ZUnFl1G4zk3F5w==","signatures":[{"sig":"MEUCIQD3On12Ls7y0Eo3aPkiLCY7qvL6asyLX0alYCX/j7Nh2gIgKQKEgkIq0Q3PaIumhatInCrR39tP7Ot3a29jKELscTw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9184},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"090e503b98b06308ddc503f28e53348e9ec29314","private":false,"release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"assets":["CHANGELOG.md","package.json"],"message":"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}]],"branches":["main"]},"scripts":{"lint":"eslint \"src/**/*.{ts,tsx}\" --fix","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\""},"_npmUser":{"name":"buun_group","email":"sacha.roussakis-notter@buungroup.com"},"_npmVersion":"10.9.2","description":"Interparcel API SDK for Node.js","directories":{},"_nodeVersion":"22.15.0","dependencies":{"axios":"^1.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^9.1.7","eslint":"^9.27.0","ts-jest":"^29.3.4","prettier":"^3.5.3","@eslint/js":"^9.27.0","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.21","semantic-release":"^24.2.4","axios-mock-adapter":"^2.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.2","@typescript-eslint/parser":"^8.32.1","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^8.32.1"},"_npmOperationalInternal":{"tmp":"tmp/interparcel-api-sdk_1.2.0_1747973590478_0.8935801463927358","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@buun_group/interparcel-api-sdk","version":"1.3.0","keywords":[],"author":{"name":"Sacha Roussakis-Notter"},"license":"MIT","_id":"@buun_group/interparcel-api-sdk@1.3.0","maintainers":[{"name":"buun_group","email":"sacha.roussakis-notter@buungroup.com"}],"dist":{"shasum":"3b4c4d99aa576b1ad05038ee6f14a9acc7951e8c","tarball":"https://registry.npmjs.org/@buun_group/interparcel-api-sdk/-/interparcel-api-sdk-1.3.0.tgz","fileCount":16,"integrity":"sha512-9yzdbs3/tyBc6Z3MW6HQe2gb39i6L7KkhwsUvVBvmcPokxUUG3xxYyPbwOx6b41ENuVgel8ckg3+Nq7PIVwrAg==","signatures":[{"sig":"MEUCIBTjCSfw6ROfwlvId2D5gS75z2b7Leyg1oLscDn3W3o6AiEAtNAkCB+4JSzxRAgD3yqwkzoVvqivhpOcIm+XcDfcOyw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18326},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"e1d27cc7e99729916a94dabcf614a48d8bf7a79d","private":false,"release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"assets":["CHANGELOG.md","package.json"],"message":"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}]],"branches":["main"]},"scripts":{"lint":"eslint \"src/**/*.{ts,tsx}\" --fix","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\""},"_npmUser":{"name":"buun_group","email":"sacha.roussakis-notter@buungroup.com"},"_npmVersion":"10.9.2","description":"Interparcel API SDK for Node.js","directories":{},"_nodeVersion":"22.15.0","dependencies":{"axios":"^1.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^9.1.7","eslint":"^9.27.0","ts-jest":"^29.3.4","prettier":"^3.5.3","@eslint/js":"^9.27.0","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.21","semantic-release":"^24.2.4","axios-mock-adapter":"^2.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.2","@typescript-eslint/parser":"^8.32.1","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^8.32.1"},"_npmOperationalInternal":{"tmp":"tmp/interparcel-api-sdk_1.3.0_1747975211126_0.5271129403033907","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@buun_group/interparcel-api-sdk","version":"1.4.0","keywords":[],"author":{"name":"Sacha Roussakis-Notter"},"license":"MIT","_id":"@buun_group/interparcel-api-sdk@1.4.0","maintainers":[{"name":"buun_group","email":"sacha.roussakis-notter@buungroup.com"}],"dist":{"shasum":"db95c1744c65ef600855ac0a937ea636dd7c9188","tarball":"https://registry.npmjs.org/@buun_group/interparcel-api-sdk/-/interparcel-api-sdk-1.4.0.tgz","fileCount":16,"integrity":"sha512-p8bYuZODhH43S2WRPj1VnCFjlPqz3ULNsLmFT/APfZk0Aa31viAKFKD2FxwyCviHvaYrGK8q1VejgGqANba5fQ==","signatures":[{"sig":"MEUCIQDanJkwPOe7cvA3F62wf9Z/M1wQbe1VfIXTkeE9XRIvlwIgOxEQbLgjwGp9nrDeCSq3tCsbQmPtoIdIqaf1dSieFIs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18433},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"2a1bbfdbb3c38812a9b56e3915825bb51e0090e6","private":false,"release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"assets":["CHANGELOG.md","package.json"],"message":"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}]],"branches":["main"]},"scripts":{"lint":"eslint \"src/**/*.{ts,tsx}\" --fix","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\""},"_npmUser":{"name":"buun_group","email":"sacha.roussakis-notter@buungroup.com"},"_npmVersion":"10.9.2","description":"Interparcel API SDK for Node.js","directories":{},"_nodeVersion":"22.15.0","dependencies":{"axios":"^1.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^9.1.7","eslint":"^9.27.0","ts-jest":"^29.3.4","prettier":"^3.5.3","@eslint/js":"^9.27.0","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.21","semantic-release":"^24.2.4","axios-mock-adapter":"^2.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.2","@typescript-eslint/parser":"^8.32.1","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^8.32.1"},"_npmOperationalInternal":{"tmp":"tmp/interparcel-api-sdk_1.4.0_1747976833782_0.5938260893525213","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@buun_group/interparcel-api-sdk","version":"1.4.1","keywords":[],"author":{"name":"Sacha Roussakis-Notter"},"license":"MIT","_id":"@buun_group/interparcel-api-sdk@1.4.1","maintainers":[{"name":"buun_group","email":"sacha.roussakis-notter@buungroup.com"}],"dist":{"shasum":"d58dbcfc13f925f8383856fb3afaf8451f918cfc","tarball":"https://registry.npmjs.org/@buun_group/interparcel-api-sdk/-/interparcel-api-sdk-1.4.1.tgz","fileCount":42,"integrity":"sha512-+DHigMjZP9XDtKtkN93Lif49bL8w0ErFmugRnhz64LwceY79yEGLu23ssswFL0VbTQhtABzydVJaJ1ajx5s6qg==","signatures":[{"sig":"MEUCIEpyh9GKi2e/VyvyeIE4HNPXM6HMwXPJMvmaOtywfnzOAiEA2TuoXbtNhVOSJYUuRmCq1zObY3OlRd+JPGSoo2jgtAY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36772},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"683d017ba6922facdc59b40a5068d83cb997afb8","private":false,"release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"assets":["CHANGELOG.md","package.json"],"message":"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}]],"branches":["main"]},"scripts":{"lint":"eslint \"src/**/*.{ts,tsx}\" --fix","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"buun_group","email":"sacha.roussakis-notter@buungroup.com"},"_npmVersion":"10.9.2","description":"Interparcel API SDK for Node.js","directories":{},"_nodeVersion":"22.15.0","dependencies":{"axios":"^1.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^9.1.7","eslint":"^9.27.0","ts-jest":"^29.3.4","prettier":"^3.5.3","@eslint/js":"^9.27.0","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.21","semantic-release":"^24.2.4","axios-mock-adapter":"^2.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.2","@typescript-eslint/parser":"^8.32.1","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^8.32.1"},"_npmOperationalInternal":{"tmp":"tmp/interparcel-api-sdk_1.4.1_1747977700534_0.14665377066508323","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@buun_group/interparcel-api-sdk","version":"1.5.0","keywords":["interparcel","shipping","api","sdk","typescript","quotes","tracking","shipment","australia","logistics"],"author":{"name":"Sacha Roussakis-Notter"},"license":"MIT","_id":"@buun_group/interparcel-api-sdk@1.5.0","maintainers":[{"name":"buun_group","email":"sacha.roussakis-notter@buungroup.com"}],"dist":{"shasum":"27008d409d55a2696cb879929d42341cf85852ec","tarball":"https://registry.npmjs.org/@buun_group/interparcel-api-sdk/-/interparcel-api-sdk-1.5.0.tgz","fileCount":42,"integrity":"sha512-A9LvO6LF7X8LRW9MJY/Vw/D4/Zb/ubZpu2/vcpsy4kvWs+lJNdZ3CMGSoHRYQgVO3rE4z4eFeLuOQA9/TX6GwQ==","signatures":[{"sig":"MEUCIBEKrPI+L25ECqdIaq8NSsNqwzve95/5b12/UvC1XNNHAiEAvQ7rcg9YLFWOh54ojrHK4m67KLvaIEhaeYu8QLEthsk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50720},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"422080278be75872fdd80270602e7a56d8d2aaf2","private":false,"release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"assets":["CHANGELOG.md","package.json"],"message":"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}]],"branches":["main"]},"scripts":{"lint":"eslint \"src/**/*.{ts,tsx}\" --fix","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"buun_group","email":"sacha.roussakis-notter@buungroup.com"},"_npmVersion":"10.9.2","description":"Interparcel API SDK for Node.js","directories":{},"_nodeVersion":"22.15.0","dependencies":{"axios":"^1.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","husky":"^9.1.7","eslint":"^9.27.0","ts-jest":"^29.3.4","prettier":"^3.5.3","@eslint/js":"^9.27.0","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.21","semantic-release":"^24.2.4","axios-mock-adapter":"^2.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.2","@typescript-eslint/parser":"^8.32.1","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^8.32.1"},"_npmOperationalInternal":{"tmp":"tmp/interparcel-api-sdk_1.5.0_1747985195168_0.21118798178624654","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@buun_group/interparcel-api-sdk","version":"1.6.0","keywords":["interparcel","shipping","api","sdk","typescript","quotes","tracking","shipment","australia","logistics"],"author":{"name":"Sacha Roussakis-Notter"},"license":"MIT","_id":"@buun_group/interparcel-api-sdk@1.6.0","maintainers":[{"name":"buun_group","email":"sacha.roussakis-notter@buungroup.com"}],"dist":{"shasum":"0055997148856d7bbc2138ada01a2363f3cb07b0","tarball":"https://registry.npmjs.org/@buun_group/interparcel-api-sdk/-/interparcel-api-sdk-1.6.0.tgz","fileCount":22,"integrity":"sha512-iQgJSecGUpBkLw7FwjgXTTWEFErv5a15riZtbYrwnj0rD6QYrbzDJ+Y2/OLeIc8RbpZJUfSF9z70XOp1HWo6kA==","signatures":[{"sig":"MEYCIQDk7xzaOqb38EvIY/8Crr4MRINf7gASEQON+zmKJQLF9AIhAIF9Mu7GB/it3quGOoQsBAuborScqAovb8Q/33jwnNXg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48811},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"719aa7c14580eca4a07504f714f15d49fd4a540f","private":false,"release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"assets":["CHANGELOG.md","package.json"],"message":"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}]],"branches":["main"]},"scripts":{"lint":"eslint \"src/**/*.{ts,tsx}\" --fix","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"buun_group","email":"sacha.roussakis-notter@buungroup.com"},"_npmVersion":"10.9.2","description":"Interparcel API SDK for Node.js","directories":{},"_nodeVersion":"22.15.0","dependencies":{"axios":"^1.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.1.7","eslint":"^9.27.0","ts-jest":"^29.3.4","prettier":"^3.5.3","@eslint/js":"^9.27.0","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.21","semantic-release":"^24.2.4","axios-mock-adapter":"^2.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.2","@typescript-eslint/parser":"^8.32.1","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^8.32.1"},"_npmOperationalInternal":{"tmp":"tmp/interparcel-api-sdk_1.6.0_1747988202727_0.11031097375957266","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@buun_group/interparcel-api-sdk","type":"module","version":"1.7.0","private":false,"publishConfig":{"access":"public"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"build":"tsup","test":"jest","lint":"eslint \"src/**/*.{ts,tsx}\" --fix","format":"prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"","prepublishOnly":"npm run build"},"keywords":["interparcel","shipping","api","sdk","typescript","quotes","tracking","shipment","australia","logistics"],"author":{"name":"Sacha Roussakis-Notter"},"license":"MIT","description":"Interparcel API SDK for Node.js","dependencies":{"axios":"^1.9.0"},"devDependencies":{"@eslint/js":"^9.27.0","@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^11.0.2","@semantic-release/npm":"^12.0.1","@types/jest":"^29.5.14","@types/node":"^22.15.21","@typescript-eslint/eslint-plugin":"^8.32.1","@typescript-eslint/parser":"^8.32.1","axios-mock-adapter":"^2.1.0","eslint":"^9.27.0","husky":"^9.1.7","jest":"^29.7.0","prettier":"^3.5.3","semantic-release":"^24.2.4","ts-jest":"^29.3.4","tsup":"^8.0.2","typescript":"^5.8.3"},"release":{"branches":["main"],"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"assets":["CHANGELOG.md","package.json"],"message":"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}]]},"_id":"@buun_group/interparcel-api-sdk@1.7.0","gitHead":"a7b05325bc8fc4fc72d4701856bcd1cb30280ba3","_nodeVersion":"22.15.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-RCcimV7166v4Y7faYNqqj6LM7KnexjXzJ4nxXIwTMNEjyDAi36+mAz+rxHDgwgZymAcn0xQ7sUr8Gdg+tQKbrQ==","shasum":"6918d8b91a858cd86d927d34d1ef8409e282f587","tarball":"https://registry.npmjs.org/@buun_group/interparcel-api-sdk/-/interparcel-api-sdk-1.7.0.tgz","fileCount":26,"unpackedSize":188559,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC1P8QZCi3LTSeQ1cJxbIuIdSB/usVdvcIfW3AmzwgJywIgJdOj5wcwhWta2b4oSvi1Q6wAMALl4Am6hzh2K38u1Q8="}]},"_npmUser":{"name":"buun_group","email":"sacha.roussakis-notter@buungroup.com"},"directories":{},"maintainers":[{"name":"buun_group","email":"sacha.roussakis-notter@buungroup.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/interparcel-api-sdk_1.7.0_1748000660908_0.8087186505732793"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-23T04:13:10.405Z","modified":"2025-05-23T11:44:21.300Z","1.2.0":"2025-05-23T04:13:10.656Z","1.3.0":"2025-05-23T04:40:11.308Z","1.4.0":"2025-05-23T05:07:13.979Z","1.4.1":"2025-05-23T05:21:40.740Z","1.5.0":"2025-05-23T07:26:35.359Z","1.6.0":"2025-05-23T08:16:42.946Z","1.7.0":"2025-05-23T11:44:21.123Z"},"author":{"name":"Sacha Roussakis-Notter"},"license":"MIT","keywords":["interparcel","shipping","api","sdk","typescript","quotes","tracking","shipment","australia","logistics"],"description":"Interparcel API SDK for Node.js","maintainers":[{"name":"buun_group","email":"sacha.roussakis-notter@buungroup.com"}],"readme":"# Interparcel API Client\n\nA TypeScript-based Node.js client for interacting with the [Interparcel API](https://au.interparcel.com/docs/api).  \nSupports quoting, shipment creation, and parcel tracking.\n\n---\n\n## ✨ Features\n\n- 📦 Get shipping quotes (API v3)\n- 🚚 Create shipments (API v3)\n- 📍 Track parcels (API v1)\n- 🔐 Built-in API key authentication\n- 🧪 Unit tests with Jest\n- 💡 Written in TypeScript with full type safety\n\n---\n\n## 📁 Project Structure\n\n```\ninterparcel-api-client/\n├── src/\n│   ├── index.ts                  # Entry point exports all modules\n│   ├── quote/\n│   │   ├── getQuote.ts           # Quote API logic (v3)\n│   │   ├── types.ts              # Quote request/response types\n│   │   ├── index.ts              # Index\n│   │   └── __tests__/            # Unit tests for quotes\n│   ├── shipment/\n│   │   ├── createShipment.ts     # Shipment creation logic (v3)\n│   │   ├── types.ts              # Shipment request/response types\n│   │   ├── index.ts              # Index\n│   │   └── __tests__/            # Unit tests for shipment\n│   └── tracking/\n│       ├── trackShipment.ts      # Tracking endpoint logic (v1)\n│       ├── types.ts              # Tracking request/response types\n│       └── __tests__/            # Unit tests for tracking\n├── dist/                         # Compiled output\n├── test/                         # Global test setup/utils\n├── .github/workflows/ci.yml     # GitHub Actions CI workflow\n├── .npmignore\n├── .gitignore\n├── tsconfig.json\n├── jest.config.js\n├── package.json\n└── README.md\n```\n\n---\n\n## 🚀 Installation\n\n```\nnpm install @buun_group/interparcel-api-sdk\n```\n\n> **See the full usage guide:** [docs/getting-started.md](./docs/getting-started.md)\n\n> **Optional:** You can use the included `Makefile` to run all checks and commands with simple `make` commands (requires GNU Make, standard on Linux/macOS, available for Windows via WSL or MinGW). For example:\n>\n> - `make install` — install dependencies\n> - `make build` — build the project\n> - `make test` — run tests\n> - `make lint` — lint code\n> - `make format` — format code\n> - `make check` — run lint, format check, build, and test in sequence\n\n---\n\n## 🛠 Git Hooks with Husky\n\nThis project uses [Husky](https://typicode.github.io/husky/how-to.html) to enforce code quality via Git hooks.\n\nAfter installing dependencies, **run the following command to enable Git hooks**:\n\n```\nnpx husky\n```\n\nThis will set up the following hooks:\n\n- **pre-commit:** Runs lint and format check\n  ```\n  npm run lint && npm run format-check\n  ```\n- **pre-push:** Runs tests\n  ```\n  npm test\n  ```\n\nIf you skip this step, code quality checks will not run automatically before commits or pushes.\n\nFor more details, see the [Husky documentation](https://typicode.github.io/husky/how-to.html).\n\n---\n\n## 📦 Usage\n\n```\nimport {\n  getQuote,\n  trackParcel,\n  addShipment,\n  QuoteRequest,\n} from '@buungroup/interparcel-api-sdk';\n\nconst apiKey = process.env.INTERPARCEL_API_KEY;\n\nconst quoteRequest: QuoteRequest = {\n  collection: {\n    city: 'Sydney',\n    postcode: '2000',\n    country: 'AU',\n  },\n  delivery: {\n    city: 'Melbourne',\n    postcode: '3000',\n    country: 'AU',\n  },\n  parcels: [\n    {\n      weight: 2,\n      length: 10,\n      width: 20,\n      height: 15,\n    },\n  ],\n};\n\nconst quote = await getQuote(apiKey, quoteRequest);\nconsole.log(quote);\n```\n\n---\n\n## 📄 Documentation Links\n\n- 📘 [Get a Quote API](https://au.interparcel.com/docs/api/quote/get-a-quote)\n- 📘 [Track Parcel API](https://au.interparcel.com/docs/api/tracking/track)\n- 📘 [Add Shipment API](https://au.interparcel.com/docs/api/shipments/add)\n- 📘 [Full Interparcel API Docs](https://au.interparcel.com/docs/api)\n\n---\n\n## 🔐 Environment Variables\n\nSet your Interparcel API key in a `.env.local` file or export it in your environment:\n\n```\nINTERPARCEL_API_KEY=your_api_key_here\n```\n\n---\n\n## 🧪 Running Tests\n\n```\nnpm test\n```\n\nTest files are colocated in `__tests__/` folders inside each module (quote, shipment, tracking).  \nUses [jest](https://jestjs.io) with axios mocking for API behavior simulation.\n\n---\n\n## 🛠 Build\n\n```\nnpm run build\n```\n\nCompiles TypeScript code into the `dist/` directory.\n\n---\n\n## 🧹 Code Formatting & Linting\n\nThis project uses **Prettier** for code formatting and **ESLint** for linting. All code must be properly formatted and linted before submitting a PR.\n\n- To check and fix linting issues:\n  ```\n  npm run lint\n  ```\n- To format code with Prettier:\n  ```\n  npm run format\n  ```\n- To check formatting without writing changes:\n  ```\n  npm run format -- --check\n  ```\n\nThe CI pipeline will fail if code is not properly linted or formatted.\n\n---\n\n## 🤖 CI/CD\n\nThis project includes a GitHub Actions workflow in `.github/workflows/ci.yml` that runs:\n\n- Linting (`npm run lint`)\n- Build (`npm run build`)\n- Unit tests (`npm test`)\n- Security audit (`npm audit --omit dev`)\n\nAll workflows run on PRs and pushes to `main`.\n\n\n---\n\n## 📚 Dependencies\n\n| Package         | Purpose                           |\n|-----------------|-----------------------------------|\n| axios           | HTTP client for API requests      |\n| typescript      | Type-safe development             |\n| jest            | Testing framework                 |\n| axios-mock-adapter | Mocking axios for unit tests  |\n| @types/node     | Node.js type definitions          |\n| ts-jest         | TypeScript support for Jest       |\n\n\n---\n\n## 🤝 Contributing\n\n1. Fork the repository  \n2. Create a branch (`git checkout -b feature/foo`)  \n3. Commit changes (`git commit -am 'Add foo feature'`)  \n4. Push to GitHub (`git push origin feature/foo`)  \n5. Create a Pull Request  \n\nPlease lint and format TypeScript code before submitting a PR.\n\n---\n\n## 👤 Authors\n\nCreated by [**Buun Group**](https://buungroup.com) <br>\nLead Developer: [**Sacha Roussakis-Notter**](https://www.linkedin.com/in/sacha-roussakis-notter-b6903095/)\n\n---\n\n## ⚠️ Disclaimer\n\nThis package is an **unofficial community-developed** client for the Interparcel API.  \nWe are **not affiliated, associated, authorized, endorsed by, or in any way officially connected** with Interparcel.  \nAll product and company names are trademarks™ or registered® trademarks of their respective holders.","readmeFilename":"README.md"}