{"_id":"@devx-retailos/store-details","_rev":"9-9aadd42ba8c3a3df8e13471a9948e39a","name":"@devx-retailos/store-details","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"@devx-retailos/store-details","version":"0.0.1","keywords":["medusa-plugin"],"license":"MIT","_id":"@devx-retailos/store-details@0.0.1","maintainers":[{"name":"brijeshagarwal","email":"brijesh@devxlabs.ai"},{"name":"milanghoghari","email":"milan.ghoghari@devxlabs.ai"}],"dist":{"shasum":"fa95780377ccdee2f1e4c2e754c439b57a574cdc","tarball":"https://registry.npmjs.org/@devx-retailos/store-details/-/store-details-0.0.1.tgz","fileCount":28,"integrity":"sha512-Kfbhy+sTgQKgWoWdzfU5Gq2GMRKWlcbqzNZs1KvDJ63/22L5tGpnporKzPayR+iO3RReD4KNPgB34qxIVzNOSg==","signatures":[{"sig":"MEUCIQC3bOQdfqP1Lq7a1p96hu5s5uVdeVDBAgMMIJwUrl2IUgIgWH4pWXFH5u0mXbS11pCwPxvGZqCFBpn4YGlow7/8QAg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76043},"main":"./.medusa/server/src/modules/store-details/index.js","_from":"file:devx-retailos-store-details-0.0.1.tgz","types":"./.medusa/server/src/modules/store-details/index.d.ts","exports":{".":{"types":"./.medusa/server/src/modules/store-details/index.d.ts","import":"./.medusa/server/src/modules/store-details/index.js","require":"./.medusa/server/src/modules/store-details/index.js"},"./admin":{"import":"./.medusa/server/src/admin/index.mjs","default":"./.medusa/server/src/admin/index.js","require":"./.medusa/server/src/admin/index.js"},"./permissions":{"types":"./.medusa/server/src/modules/store-details/permissions.d.ts","import":"./.medusa/server/src/modules/store-details/permissions.js","require":"./.medusa/server/src/modules/store-details/permissions.js"},"./package.json":"./package.json","./.medusa/server/src/modules/store-details":"./.medusa/server/src/modules/store-details/index.js","./.medusa/server/src/modules/store-details/*":"./.medusa/server/src/modules/store-details/*"},"scripts":{"test":"vitest run","build":"medusa plugin:build","clean":"rm -rf .medusa dist .turbo *.tsbuildinfo","develop":"medusa plugin:develop","typecheck":"tsc --noEmit","db:generate":"medusa plugin:db:generate"},"_npmUser":{"name":"milanghoghari","email":"milan.ghoghari@devxlabs.ai"},"_resolved":"/tmp/5c4c1f66e496894a3bee62092d3e29ff/devx-retailos-store-details-0.0.1.tgz","_integrity":"sha512-Kfbhy+sTgQKgWoWdzfU5Gq2GMRKWlcbqzNZs1KvDJ63/22L5tGpnporKzPayR+iO3RReD4KNPgB34qxIVzNOSg==","_npmVersion":"10.8.2","description":"Extended store metadata for retailOS: address, contact, tax info, and a metadata escape hatch for brand-specific extensions. 1:1 with retailos_store.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@devx-retailos/core":"0.0.1","@devx-retailos/rbac":"0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.23.0","react":"^18.3.0","typescript":"^5.7.2","@medusajs/ui":"4.1.15","@types/react":"^18.3.0","@medusajs/cli":"2.15.5","@medusajs/icons":"2.15.5","@medusajs/medusa":"2.15.5","@medusajs/admin-sdk":"2.15.5","@medusajs/framework":"2.15.5","@medusajs/admin-shared":"2.15.5"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@medusajs/ui":"^4.0.0","@medusajs/medusa":"^2.15.0","@medusajs/admin-sdk":"^2.15.0","@medusajs/framework":"^2.15.0","@medusajs/admin-shared":"^2.15.0"},"_npmOperationalInternal":{"tmp":"tmp/store-details_0.0.1_1781164530789_0.21446223457894198","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@devx-retailos/store-details","version":"0.0.2","keywords":["medusa-plugin"],"license":"MIT","_id":"@devx-retailos/store-details@0.0.2","maintainers":[{"name":"brijeshagarwal","email":"brijesh@devxlabs.ai"},{"name":"milanghoghari","email":"milan.ghoghari@devxlabs.ai"}],"dist":{"shasum":"020239ba434b3c1016c7a49c040215687ba2daba","tarball":"https://registry.npmjs.org/@devx-retailos/store-details/-/store-details-0.0.2.tgz","fileCount":29,"integrity":"sha512-XrmiqRu/o9FbEqXiesOAB0DDa9JgSXxZ2dHtj5qcsWJU7q/9uAzDCSovSRcw5vzNCWU7+wx6194xHmo4Apa7Bg==","signatures":[{"sig":"MEYCIQC/qapaEYWEVR7KFlPjC1OA5Y1BThz5kXrjXJ6fVJFkFAIhAJHnsnRhAEFOkJB8Mr5h6HVWoOgG3Satrv2AFdckcFHx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79847},"main":"./.medusa/server/src/modules/store-details/index.js","_from":"file:devx-retailos-store-details-0.0.2.tgz","types":"./.medusa/server/src/modules/store-details/index.d.ts","exports":{".":{"types":"./.medusa/server/src/modules/store-details/index.d.ts","import":"./.medusa/server/src/modules/store-details/index.js","require":"./.medusa/server/src/modules/store-details/index.js"},"./admin":{"import":"./.medusa/server/src/admin/index.mjs","default":"./.medusa/server/src/admin/index.js","require":"./.medusa/server/src/admin/index.js"},"./permissions":{"types":"./.medusa/server/src/modules/store-details/permissions.d.ts","import":"./.medusa/server/src/modules/store-details/permissions.js","require":"./.medusa/server/src/modules/store-details/permissions.js"},"./package.json":"./package.json","./.medusa/server/src/modules/store-details":"./.medusa/server/src/modules/store-details/index.js","./.medusa/server/src/modules/store-details/*":"./.medusa/server/src/modules/store-details/*"},"scripts":{"test":"vitest run","build":"medusa plugin:build","clean":"rm -rf .medusa dist .turbo *.tsbuildinfo","develop":"medusa plugin:develop","typecheck":"tsc --noEmit","db:generate":"medusa plugin:db:generate"},"_npmUser":{"name":"milanghoghari","email":"milan.ghoghari@devxlabs.ai"},"_resolved":"/tmp/d286091e4a82823e259bbd51568d7d73/devx-retailos-store-details-0.0.2.tgz","_integrity":"sha512-XrmiqRu/o9FbEqXiesOAB0DDa9JgSXxZ2dHtj5qcsWJU7q/9uAzDCSovSRcw5vzNCWU7+wx6194xHmo4Apa7Bg==","_npmVersion":"10.8.2","description":"Extended store metadata for retailOS: address, contact, tax info, and a metadata escape hatch for brand-specific extensions. 1:1 with retailos_store.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@devx-retailos/core":"0.0.2","@devx-retailos/rbac":"0.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.23.0","react":"^18.3.0","typescript":"^5.7.2","@medusajs/ui":"4.1.15","@types/react":"^18.3.0","@medusajs/cli":"2.15.5","@medusajs/icons":"2.15.5","@medusajs/medusa":"2.15.5","@medusajs/admin-sdk":"2.15.5","@medusajs/framework":"2.15.5","@medusajs/admin-shared":"2.15.5"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@medusajs/ui":"^4.0.0","@medusajs/medusa":"^2.15.0","@medusajs/admin-sdk":"^2.15.0","@medusajs/framework":"^2.15.0","@medusajs/admin-shared":"^2.15.0"},"_npmOperationalInternal":{"tmp":"tmp/store-details_0.0.2_1781166336979_0.9830570501825775","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@devx-retailos/store-details","version":"0.0.3","keywords":["medusa-plugin"],"license":"MIT","_id":"@devx-retailos/store-details@0.0.3","maintainers":[{"name":"jinangvohera","email":"jinang.vohera@devxlabs.ai"},{"name":"nayan-devx","email":"nayan@devxlabs.ai"},{"name":"kaushal_1717","email":"kaushal.padaliya@devxlabs.ai"},{"name":"karandevx","email":"karan.desai@devxlabs.ai"},{"name":"brijeshagarwal","email":"brijesh@devxlabs.ai"},{"name":"milanghoghari","email":"milan.ghoghari@devxlabs.ai"}],"dist":{"shasum":"e7e5d5f7a083a7ec916473956b47ca2b92a9c2cc","tarball":"https://registry.npmjs.org/@devx-retailos/store-details/-/store-details-0.0.3.tgz","fileCount":32,"integrity":"sha512-ZwBv1grQ+3EO2NlR5EZSXTfdyXwcLVfRrcvE/3eP+zIouWFf+8ylhZ4ZtDKl9PfDqb9qDFWGYn4m6JrThFmB1w==","signatures":[{"sig":"MEQCIBjE/3SesjUFzMYHPAabKKDe3VuHWDA2WG2SHBlWlm6OAiBWhRa1uJCNeIwbaKFQzVC8H09nLokZ/CLBzJ/jGansaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92967},"main":"./.medusa/server/src/modules/store-details/index.js","_from":"file:devx-retailos-store-details-0.0.3.tgz","types":"./.medusa/server/src/modules/store-details/index.d.ts","exports":{".":{"types":"./.medusa/server/src/modules/store-details/index.d.ts","import":"./.medusa/server/src/modules/store-details/index.js","require":"./.medusa/server/src/modules/store-details/index.js"},"./admin":{"import":"./.medusa/server/src/admin/index.mjs","default":"./.medusa/server/src/admin/index.js","require":"./.medusa/server/src/admin/index.js"},"./permissions":{"types":"./.medusa/server/src/modules/store-details/permissions.d.ts","import":"./.medusa/server/src/modules/store-details/permissions.js","require":"./.medusa/server/src/modules/store-details/permissions.js"},"./package.json":"./package.json","./.medusa/server/src/modules/store-details":"./.medusa/server/src/modules/store-details/index.js","./.medusa/server/src/modules/store-details/*":"./.medusa/server/src/modules/store-details/*"},"scripts":{"test":"vitest run","build":"medusa plugin:build","clean":"rm -rf .medusa dist .turbo *.tsbuildinfo","develop":"medusa plugin:develop","typecheck":"tsc --noEmit","db:generate":"medusa plugin:db:generate"},"_npmUser":{"name":"milanghoghari","email":"milan.ghoghari@devxlabs.ai"},"_resolved":"/tmp/b314f269d21f3a401d0246cad7286b0d/devx-retailos-store-details-0.0.3.tgz","_integrity":"sha512-ZwBv1grQ+3EO2NlR5EZSXTfdyXwcLVfRrcvE/3eP+zIouWFf+8ylhZ4ZtDKl9PfDqb9qDFWGYn4m6JrThFmB1w==","_npmVersion":"10.8.2","description":"Extended store metadata for retailOS: address, contact, tax info, and a metadata escape hatch for brand-specific extensions. 1:1 with retailos_store.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@devx-retailos/core":"0.0.2","@devx-retailos/rbac":"0.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.23.0","react":"^18.3.0","typescript":"^5.7.2","@medusajs/ui":"4.1.15","@types/react":"^18.3.0","@medusajs/cli":"2.15.5","@medusajs/icons":"2.15.5","@medusajs/medusa":"2.15.5","@medusajs/admin-sdk":"2.15.5","@medusajs/framework":"2.15.5","@medusajs/admin-shared":"2.15.5"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@medusajs/ui":"^4.0.0","@medusajs/medusa":"^2.15.0","@medusajs/admin-sdk":"^2.15.0","@medusajs/framework":"^2.15.0","@medusajs/admin-shared":"^2.15.0"},"_npmOperationalInternal":{"tmp":"tmp/store-details_0.0.3_1785330475158_0.4997956165050743","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@devx-retailos/store-details","version":"0.0.4","keywords":["medusa-plugin"],"license":"MIT","_id":"@devx-retailos/store-details@0.0.4","maintainers":[{"name":"jinangvohera","email":"jinang.vohera@devxlabs.ai"},{"name":"nayan-devx","email":"nayan@devxlabs.ai"},{"name":"kaushal_1717","email":"kaushal.padaliya@devxlabs.ai"},{"name":"karandevx","email":"karan.desai@devxlabs.ai"},{"name":"brijeshagarwal","email":"brijesh@devxlabs.ai"},{"name":"milanghoghari","email":"milan.ghoghari@devxlabs.ai"}],"dist":{"shasum":"520576963109f56ed26b9353bb48c1db430a70dc","tarball":"https://registry.npmjs.org/@devx-retailos/store-details/-/store-details-0.0.4.tgz","fileCount":32,"integrity":"sha512-59+o2n1DON33Jkk2vsc/sP5QMqsQkW5Npc8knVypn27adHAUa0itbwJpxIcTATMYwbQiK/d/D2Bn46kI2LIFYQ==","signatures":[{"sig":"MEQCICdnOil4z779ov1H7s5ARINMVWoXRNDwul9FBcB0XDqzAiBTkEuCa05nLmijxe5/DVOTubt4U4/RoQxHgrbXuQ17AQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92967},"main":"./.medusa/server/src/modules/store-details/index.js","_from":"file:devx-retailos-store-details-0.0.4.tgz","types":"./.medusa/server/src/modules/store-details/index.d.ts","exports":{".":{"types":"./.medusa/server/src/modules/store-details/index.d.ts","import":"./.medusa/server/src/modules/store-details/index.js","require":"./.medusa/server/src/modules/store-details/index.js"},"./admin":{"import":"./.medusa/server/src/admin/index.mjs","default":"./.medusa/server/src/admin/index.js","require":"./.medusa/server/src/admin/index.js"},"./permissions":{"types":"./.medusa/server/src/modules/store-details/permissions.d.ts","import":"./.medusa/server/src/modules/store-details/permissions.js","require":"./.medusa/server/src/modules/store-details/permissions.js"},"./package.json":"./package.json","./.medusa/server/src/modules/store-details":"./.medusa/server/src/modules/store-details/index.js","./.medusa/server/src/modules/store-details/*":"./.medusa/server/src/modules/store-details/*"},"scripts":{"test":"vitest run","build":"medusa plugin:build","clean":"rm -rf .medusa dist .turbo *.tsbuildinfo","develop":"medusa plugin:develop","typecheck":"tsc --noEmit","db:generate":"medusa plugin:db:generate"},"_npmUser":{"name":"milanghoghari","email":"milan.ghoghari@devxlabs.ai"},"_resolved":"/tmp/2713e0bc63e95d64f7b41054192818b9/devx-retailos-store-details-0.0.4.tgz","_integrity":"sha512-59+o2n1DON33Jkk2vsc/sP5QMqsQkW5Npc8knVypn27adHAUa0itbwJpxIcTATMYwbQiK/d/D2Bn46kI2LIFYQ==","_npmVersion":"10.8.2","description":"Extended store metadata for retailOS: address, contact, tax info, and a metadata escape hatch for brand-specific extensions. 1:1 with retailos_store.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@devx-retailos/core":"0.0.2","@devx-retailos/rbac":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.23.0","react":"^18.3.0","typescript":"^5.7.2","@medusajs/ui":"4.1.15","@types/react":"^18.3.0","@medusajs/cli":"2.15.5","@medusajs/icons":"2.15.5","@medusajs/medusa":"2.15.5","@medusajs/admin-sdk":"2.15.5","@medusajs/framework":"2.15.5","@medusajs/admin-shared":"2.15.5"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@medusajs/ui":"^4.0.0","@medusajs/medusa":"^2.15.0","@medusajs/admin-sdk":"^2.15.0","@medusajs/framework":"^2.15.0","@medusajs/admin-shared":"^2.15.0"},"_npmOperationalInternal":{"tmp":"tmp/store-details_0.0.4_1785407388880_0.91995159535209","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@devx-retailos/store-details","version":"0.1.0","description":"Extended store metadata for retailOS: address, contact, tax info, and a metadata escape hatch for brand-specific extensions. 1:1 with retailos_store.","license":"MIT","main":"./.medusa/server/src/modules/store-details/index.js","types":"./.medusa/server/src/modules/store-details/index.d.ts","exports":{".":{"types":"./.medusa/server/src/modules/store-details/index.d.ts","import":"./.medusa/server/src/modules/store-details/index.js","require":"./.medusa/server/src/modules/store-details/index.js"},"./permissions":{"types":"./.medusa/server/src/modules/store-details/permissions.d.ts","import":"./.medusa/server/src/modules/store-details/permissions.js","require":"./.medusa/server/src/modules/store-details/permissions.js"},"./package.json":"./package.json","./admin":{"import":"./.medusa/server/src/admin/index.mjs","require":"./.medusa/server/src/admin/index.js","default":"./.medusa/server/src/admin/index.js"},"./.medusa/server/src/modules/store-details":"./.medusa/server/src/modules/store-details/index.js","./.medusa/server/src/modules/store-details/*":"./.medusa/server/src/modules/store-details/*"},"dependencies":{"@devx-retailos/core":"0.0.2","@devx-retailos/rbac":"0.1.0"},"peerDependencies":{"@medusajs/admin-sdk":"^2.15.0","@medusajs/admin-shared":"^2.15.0","@medusajs/framework":"^2.15.0","@medusajs/medusa":"^2.15.0","@medusajs/ui":"^4.0.0","react":"^18.0.0 || ^19.0.0"},"devDependencies":{"@medusajs/admin-sdk":"2.15.5","@medusajs/admin-shared":"2.15.5","@medusajs/cli":"2.15.5","@medusajs/framework":"2.15.5","@medusajs/icons":"2.15.5","@medusajs/medusa":"2.15.5","@medusajs/ui":"4.1.15","@types/pg":"8.20.0","@types/react":"^18.3.0","pg":"8.21.0","react":"^18.3.0","typescript":"^5.7.2","zod":"^3.23.0"},"publishConfig":{"access":"public"},"sideEffects":false,"keywords":["medusa-plugin"],"scripts":{"build":"medusa plugin:build","develop":"medusa plugin:develop","db:generate":"medusa plugin:db:generate","test":"vitest run","typecheck":"tsc --noEmit","clean":"rm -rf .medusa dist .turbo *.tsbuildinfo"},"_id":"@devx-retailos/store-details@0.1.0","_integrity":"sha512-D4VUaQe272k0YzP6emXBtZmYRo3ATxRXr1iGQ6qfHy33FVBF4u+ILW6UQYHL8sw6bDE1RLNFCN0TYDSfUCtQOg==","_resolved":"/tmp/be33aeb7019ef824c1b84fdee44b1393/devx-retailos-store-details-0.1.0.tgz","_from":"file:devx-retailos-store-details-0.1.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-D4VUaQe272k0YzP6emXBtZmYRo3ATxRXr1iGQ6qfHy33FVBF4u+ILW6UQYHL8sw6bDE1RLNFCN0TYDSfUCtQOg==","shasum":"c7bcf4b60c9e712a21f501d444b90c697dc13d6d","tarball":"https://registry.npmjs.org/@devx-retailos/store-details/-/store-details-0.1.0.tgz","fileCount":35,"unpackedSize":150541,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICcoPp5nVEKFNRDs0alcsXnnuiiz+ZkUbBl4ERuwB2PGAiEAsk5hC8RoeQAMmy0A5K7IrzN0frx55UEFF9IjSnNMM5E="}]},"_npmUser":{"name":"milanghoghari","email":"milan.ghoghari@devxlabs.ai"},"directories":{},"maintainers":[{"name":"jinangvohera","email":"jinang.vohera@devxlabs.ai"},{"name":"nayan-devx","email":"nayan@devxlabs.ai"},{"name":"kaushal_1717","email":"kaushal.padaliya@devxlabs.ai"},{"name":"karandevx","email":"karan.desai@devxlabs.ai"},{"name":"brijeshagarwal","email":"brijesh@devxlabs.ai"},{"name":"milanghoghari","email":"milan.ghoghari@devxlabs.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/store-details_0.1.0_1786534946957_0.40119443760105145"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-11T07:55:30.633Z","modified":"2026-08-12T11:42:27.307Z","0.0.1":"2026-06-11T07:55:31.985Z","0.0.2":"2026-06-11T08:25:37.131Z","0.0.3":"2026-07-29T13:07:55.308Z","0.0.4":"2026-07-30T10:29:49.018Z","0.1.0":"2026-08-12T11:42:27.093Z"},"license":"MIT","keywords":["medusa-plugin"],"description":"Extended store metadata for retailOS: address, contact, tax info, and a metadata escape hatch for brand-specific extensions. 1:1 with retailos_store.","maintainers":[{"name":"jinangvohera","email":"jinang.vohera@devxlabs.ai"},{"name":"nayan-devx","email":"nayan@devxlabs.ai"},{"name":"kaushal_1717","email":"kaushal.padaliya@devxlabs.ai"},{"name":"karandevx","email":"karan.desai@devxlabs.ai"},{"name":"brijeshagarwal","email":"brijesh@devxlabs.ai"},{"name":"milanghoghari","email":"milan.ghoghari@devxlabs.ai"}],"readme":"# @devx-retailos/store-details\n\nExtended store metadata for POS backends: address, contact, tax info, opening hours, and a JSON `metadata` escape hatch — stored 1:1 against a `retailos_store`.\n\nPart of **retailOS**, a Medusa v2 SDK for offline-store POS systems. Each `@devx-retailos/*` package is an independently installable Medusa plugin that you compose in your brand's Medusa backend.\n\n## Installation\n\n```bash\nnpm install @devx-retailos/store-details\n```\n\nRequires a Medusa v2 project (`@medusajs/framework` / `@medusajs/medusa` `^2.15.0` as peers, plus `@medusajs/admin-sdk`, `@medusajs/ui`, and React for the bundled admin page). `@devx-retailos/core` and `@devx-retailos/rbac` are installed automatically as dependencies — the module links each details record to the RBAC `retailos_store` entity.\n\n## Setup\n\n```ts\n// medusa-config.ts\nmodule.exports = defineConfig({\n  // ...\n  plugins: [\n    {\n      resolve: \"@devx-retailos/rbac\",\n      options: {},\n    },\n    {\n      resolve: \"@devx-retailos/store-details\",\n      options: {},\n    },\n  ],\n})\n```\n\nThen run migrations to create the `retailos_store_details` table:\n\n```bash\nnpx medusa db:migrate\n```\n\n## Usage\n\nResolve the service from the Medusa container using the exported module key:\n\n```ts\nimport {\n  STORE_DETAILS_MODULE,\n  type StoreDetailsModuleService,\n  type UpsertStoreDetailsInput,\n} from \"@devx-retailos/store-details\"\n\nconst storeDetails: StoreDetailsModuleService =\n  container.resolve(STORE_DETAILS_MODULE)\n\n// Create-or-update the single details record for a store\nawait storeDetails.upsertForStore({\n  store_id: \"store_123\",\n  email: \"ops@example.com\",\n  phone_number: \"+91 9876543210\",\n  address_line_1: \"12 Market Road\",\n  city: \"Bengaluru\",\n  state: \"Karnataka\",\n  pin_code: \"560001\",\n  country: \"India\",\n  gst_number: \"29ABCDE1234F1Z5\",\n  store_timings: \"10:00-21:00\",\n  metadata: { floor: \"G\" },\n} satisfies UpsertStoreDetailsInput)\n\n// Fetch by store id (returns null if none exists)\nconst details = await storeDetails.findByStoreId(\"store_123\")\n```\n\nThe service extends Medusa's `MedusaService`, so the generated CRUD methods (`listStoreDetails`, `retrieveStoreDetails`, `createStoreDetails`, `updateStoreDetails`, ...) are also available.\n\nFields: `email`, `phone_number`, `address_line_1/2`, `pin_code`, `city`, `state`, `state_code`, `country`, `store_timings`, `gst_number`, `gst_owner_name`, `billing_address` (JSON), `metadata` (JSON). All nullable.\n\n## Permissions\n\nThe module exports `STORE_DETAILS_PERMISSIONS` (a `PermissionRegistration[]`, also importable from `@devx-retailos/store-details/permissions`) for registration into the RBAC permission table:\n\n| Key | Description |\n| --- | --- |\n| `store_details.read` | View store details |\n| `store_details.update` | Update store details |\n\n## API routes\n\nAll routes live under the authenticated Medusa admin scope:\n\n| Method | Path | Description |\n| --- | --- | --- |\n| `GET` | `/admin/retailos/stores` | List all store-details records (newest first) |\n| `GET` | `/admin/retailos/stores/:id/details` | Get details for a store by store id (404 if none) |\n| `POST` | `/admin/retailos/stores/:id/details` | Upsert details for a store (Zod-validated body) |\n\n## Admin UI\n\nShips a \"Stores\" page in Medusa Admin (sidebar route) that lists store-details records and provides a form to create and edit a store's address, contact, GST, and timing fields.\n\n## Related packages\n\n- `@devx-retailos/core` — shared types, `Logger`, errors, permission registry.\n- `@devx-retailos/rbac` — organizations, stores, roles, permissions; this module links to its `retailos_store`.\n- `@devx-retailos/store-config` — typed org/store-scoped configuration entries and sequence counters.\n- `@devx-retailos/footfall` — time-series visitor footfall per store.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}