@revenexx/cover 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +39 -0
  3. package/app/api/account.ts +8 -0
  4. package/app/api/categories.ts +3 -0
  5. package/app/api/checkout.ts +6 -0
  6. package/app/api/images.ts +4 -0
  7. package/app/api/markets.ts +3 -0
  8. package/app/api/product.ts +3 -0
  9. package/app/api/products.ts +4 -0
  10. package/app/api/search.ts +4 -0
  11. package/app/app.config.ts +29 -0
  12. package/app/assets/css/cover.css +25 -0
  13. package/app/components/account/AccountMenu.vue +30 -0
  14. package/app/components/account/AccountShell.vue +18 -0
  15. package/app/components/account/AccountSidebar.vue +90 -0
  16. package/app/components/account/address/AccountAddressCard.vue +287 -0
  17. package/app/components/account/carts/AccountCartsTable.vue +284 -0
  18. package/app/components/account/dashboard/AccountDashboard.vue +351 -0
  19. package/app/components/account/directorder/AccountDirectOrder.vue +512 -0
  20. package/app/components/account/governance/AccountApprovalLimitsTable.vue +221 -0
  21. package/app/components/account/governance/AccountCostCenterDetail.vue +276 -0
  22. package/app/components/account/governance/AccountCostCentersTable.vue +252 -0
  23. package/app/components/account/governance/AccountRequisitionDetail.vue +295 -0
  24. package/app/components/account/governance/AccountRequisitionsTable.vue +255 -0
  25. package/app/components/account/governance/AccountWorkflowDetail.vue +215 -0
  26. package/app/components/account/governance/AccountWorkflowsTable.vue +168 -0
  27. package/app/components/account/governance/GovernanceApprovalLimitModal.vue +183 -0
  28. package/app/components/account/governance/GovernanceCostCenterModal.vue +188 -0
  29. package/app/components/account/governance/GovernanceWorkflowModal.vue +191 -0
  30. package/app/components/account/orderlists/AccountOrderListDetail.vue +349 -0
  31. package/app/components/account/orderlists/AccountOrderListsTable.vue +352 -0
  32. package/app/components/account/orders/AccountOrderDetail.vue +376 -0
  33. package/app/components/account/orders/AccountOrdersTable.vue +281 -0
  34. package/app/components/account/preferences/AccountPreferences.vue +50 -0
  35. package/app/components/auth/AuthForgotPasswordPanel.vue +88 -0
  36. package/app/components/auth/AuthLoginPanel.vue +103 -0
  37. package/app/components/auth/AuthLoginTeaser.vue +24 -0
  38. package/app/components/auth/AuthPageHeader.vue +21 -0
  39. package/app/components/auth/AuthRegisterPanel.vue +431 -0
  40. package/app/components/auth/AuthRegisterTeaser.vue +24 -0
  41. package/app/components/auth/AuthResetPasswordPanel.vue +115 -0
  42. package/app/components/cart/CartButton.vue +42 -0
  43. package/app/components/cart/actions/CartCostCenterModal.vue +110 -0
  44. package/app/components/cart/actions/CartExportModal.vue +82 -0
  45. package/app/components/cart/actions/CartPositionTextsModal.vue +92 -0
  46. package/app/components/cart/actions/CartSaveToListModal.vue +177 -0
  47. package/app/components/cart/actions/CartWorkflowPickerModal.vue +64 -0
  48. package/app/components/cart/drawer/CartDrawer.vue +49 -0
  49. package/app/components/cart/item/CartItem.vue +318 -0
  50. package/app/components/cart/manage/CartNameModal.vue +68 -0
  51. package/app/components/cart/position/CartPosition.vue +369 -0
  52. package/app/components/cart/quickadd/CartQuickAdd.vue +145 -0
  53. package/app/components/cart/recommend/CartCrossSell.vue +102 -0
  54. package/app/components/cart/recommend/CartRecommendCard.vue +59 -0
  55. package/app/components/cart/recommend/CartReorderStrip.vue +108 -0
  56. package/app/components/cart/requisition/CartRequisitionGroup.vue +74 -0
  57. package/app/components/cart/skeleton/CartSkeleton.vue +18 -0
  58. package/app/components/cart/summary/CartSummary.vue +25 -0
  59. package/app/components/cart/summary/CartSummaryBreakdown.vue +35 -0
  60. package/app/components/cart/switcher/CartSwitcher.vue +147 -0
  61. package/app/components/cart/target/CartTargetModal.vue +129 -0
  62. package/app/components/cart/view/CartApprovalsPanel.vue +89 -0
  63. package/app/components/cart/view/CartListHeader.vue +86 -0
  64. package/app/components/cart/view/CartPositionList.vue +94 -0
  65. package/app/components/cart/view/CartSummaryPanel.vue +254 -0
  66. package/app/components/cart/view/CartView.vue +310 -0
  67. package/app/components/category/info/CategoryPrice.vue +47 -0
  68. package/app/components/category/info/CategorySku.vue +15 -0
  69. package/app/components/category/info/CategoryStock.vue +25 -0
  70. package/app/components/category/list/CategoryItemCount.vue +27 -0
  71. package/app/components/category/list/CategoryListPagination.vue +81 -0
  72. package/app/components/category/skeleton/CategoryDetailSkeleton.vue +12 -0
  73. package/app/components/category/skeleton/CategoryListSkeleton.vue +65 -0
  74. package/app/components/category/view/CategoryViewToggle.vue +33 -0
  75. package/app/components/category/view/GridView.vue +78 -0
  76. package/app/components/category/view/ListView.vue +80 -0
  77. package/app/components/checkout/confirmation/CheckoutConfirmationView.vue +289 -0
  78. package/app/components/checkout/form/CheckoutSchemaForm.vue +72 -0
  79. package/app/components/checkout/onepage/CheckoutAddressPickerModal.vue +260 -0
  80. package/app/components/checkout/onepage/CheckoutAddressSection.vue +186 -0
  81. package/app/components/checkout/onepage/CheckoutDeliverySection.vue +158 -0
  82. package/app/components/checkout/onepage/CheckoutGate.vue +67 -0
  83. package/app/components/checkout/onepage/CheckoutGuestDetailsSection.vue +154 -0
  84. package/app/components/checkout/onepage/CheckoutNotesSection.vue +62 -0
  85. package/app/components/checkout/onepage/CheckoutOnePageView.vue +77 -0
  86. package/app/components/checkout/onepage/CheckoutPaymentSection.vue +181 -0
  87. package/app/components/checkout/onepage/CheckoutSectionTitle.vue +18 -0
  88. package/app/components/checkout/onepage/CheckoutSummarySection.vue +211 -0
  89. package/app/components/checkout/onepage/CheckoutWorkflowPanel.vue +38 -0
  90. package/app/components/layout/AppLogo.vue +21 -0
  91. package/app/components/layout/footer/Footer.vue +148 -0
  92. package/app/components/layout/header/AppBar.vue +75 -0
  93. package/app/components/layout/header/CategoryNav.vue +93 -0
  94. package/app/components/layout/header/HeaderActionItem.vue +81 -0
  95. package/app/components/layout/header/LocaleSwitcher.vue +123 -0
  96. package/app/components/layout/header/MainNav.vue +61 -0
  97. package/app/components/layout/header/MobileMenu.vue +81 -0
  98. package/app/components/layout/header/TopBar.vue +63 -0
  99. package/app/components/listing/ListingView.vue +227 -0
  100. package/app/components/product/detail/ProductDetailAddToCart.vue +188 -0
  101. package/app/components/product/detail/ProductDetailDescription.vue +20 -0
  102. package/app/components/product/detail/ProductDetailImageGallery.vue +58 -0
  103. package/app/components/product/detail/ProductDetailPricing.vue +108 -0
  104. package/app/components/product/detail/ProductDetailSaveToList.vue +291 -0
  105. package/app/components/product/detail/ProductDetailSpecifications.vue +33 -0
  106. package/app/components/product/detail/ProductDetailStock.vue +36 -0
  107. package/app/components/search/filter/SearchFacets.vue +256 -0
  108. package/app/components/search/filter/SearchFacetsDrawer.vue +58 -0
  109. package/app/components/ui/AppShell.vue +7 -0
  110. package/app/components/ui/debug/PiniaStateCard.vue +106 -0
  111. package/app/components/ui/feedback/EmptyState.vue +30 -0
  112. package/app/components/ui/feedback/ErrorBoundary.vue +44 -0
  113. package/app/components/ui/feedback/NotFound.vue +34 -0
  114. package/app/components/ui/forms/CountrySelection.vue +14 -0
  115. package/app/components/ui/forms/FormKitDatePicker.vue +124 -0
  116. package/app/components/ui/forms/PasswordInput.vue +136 -0
  117. package/app/components/ui/forms/SearchInput.vue +213 -0
  118. package/app/components/ui/table/TableSortButton.vue +51 -0
  119. package/app/components/ui/table/TableToolbar.vue +66 -0
  120. package/app/composables/useAccount.ts +27 -0
  121. package/app/composables/useAccountAddresses.ts +116 -0
  122. package/app/composables/useAccountOrders.ts +18 -0
  123. package/app/composables/useAppUrl.ts +38 -0
  124. package/app/composables/useAuthStore.ts +202 -0
  125. package/app/composables/useB2BContext.ts +23 -0
  126. package/app/composables/useCartActions.ts +25 -0
  127. package/app/composables/useCartCalculation.ts +90 -0
  128. package/app/composables/useCartSelection.ts +46 -0
  129. package/app/composables/useCartStore.ts +837 -0
  130. package/app/composables/useCartSummaryFormatting.ts +28 -0
  131. package/app/composables/useCategories.ts +29 -0
  132. package/app/composables/useCheckoutOnePage.ts +438 -0
  133. package/app/composables/useCheckoutProfileSource.ts +8 -0
  134. package/app/composables/useCheckoutSchema.ts +28 -0
  135. package/app/composables/useDataTable.ts +14 -0
  136. package/app/composables/useFormValidation.ts +29 -0
  137. package/app/composables/useIcons.ts +17 -0
  138. package/app/composables/useLocalePreferences.ts +45 -0
  139. package/app/composables/useMarkets.ts +15 -0
  140. package/app/composables/useProduct.ts +89 -0
  141. package/app/composables/useProductCard.ts +8 -0
  142. package/app/composables/useProductCardActions.ts +106 -0
  143. package/app/composables/useProductImage.ts +12 -0
  144. package/app/composables/useProductListing.ts +210 -0
  145. package/app/composables/useProductUrl.ts +17 -0
  146. package/app/composables/useProducts.ts +130 -0
  147. package/app/composables/useSearch.ts +12 -0
  148. package/app/composables/useThemeStore.ts +81 -0
  149. package/app/composables/useViewMode.ts +18 -0
  150. package/app/config/countries.ts +74 -0
  151. package/app/config/icons.ts +283 -0
  152. package/app/config/navigation.ts +191 -0
  153. package/app/config/palette.ts +13 -0
  154. package/app/config/themes.ts +20 -0
  155. package/app/formkit.config.ts +50 -0
  156. package/app/interfaces/account/address-list.ts +34 -0
  157. package/app/interfaces/account/order-list.ts +47 -0
  158. package/app/interfaces/account/order-lists.ts +35 -0
  159. package/app/interfaces/account/profile.ts +17 -0
  160. package/app/interfaces/account.ts +3 -0
  161. package/app/interfaces/address.ts +9 -0
  162. package/app/interfaces/auth.ts +104 -0
  163. package/app/interfaces/b2b.ts +234 -0
  164. package/app/interfaces/cart-calculation.ts +131 -0
  165. package/app/interfaces/cart-item.ts +45 -0
  166. package/app/interfaces/checkout-draft.ts +4 -0
  167. package/app/interfaces/checkout.ts +43 -0
  168. package/app/interfaces/delivery.ts +13 -0
  169. package/app/interfaces/market.ts +24 -0
  170. package/app/interfaces/payment.ts +19 -0
  171. package/app/interfaces/persisted-cart.ts +10 -0
  172. package/app/interfaces/product-detail.ts +54 -0
  173. package/app/interfaces/product-list.ts +33 -0
  174. package/app/interfaces/search-facets.ts +14 -0
  175. package/app/interfaces/validation.ts +14 -0
  176. package/app/layouts/default.vue +78 -0
  177. package/app/layouts/focus.vue +80 -0
  178. package/app/plugins/formkit-locale.client.ts +23 -0
  179. package/app/shared/constants.ts +1 -0
  180. package/app/validations/companyName.ts +18 -0
  181. package/app/validations/emailFormat.ts +10 -0
  182. package/app/validations/formValidationConfig.ts +50 -0
  183. package/app/validations/maxLength.ts +12 -0
  184. package/app/validations/minLength.ts +9 -0
  185. package/app/validations/optionalCompanyName.ts +23 -0
  186. package/app/validations/passwordsMatch.ts +5 -0
  187. package/app/validations/phoneNumber.ts +19 -0
  188. package/app/validations/required.ts +11 -0
  189. package/app/validations/termsRequired.ts +4 -0
  190. package/app/validations/types.ts +10 -0
  191. package/app/validations/zipCode.ts +15 -0
  192. package/i18n/locales/de/account.json +458 -0
  193. package/i18n/locales/de/auth.json +155 -0
  194. package/i18n/locales/de/cart.json +263 -0
  195. package/i18n/locales/de/checkout.json +217 -0
  196. package/i18n/locales/de/common.json +80 -0
  197. package/i18n/locales/de/cover.json +33 -0
  198. package/i18n/locales/de/order.json +1 -0
  199. package/i18n/locales/de/product.json +71 -0
  200. package/i18n/locales/de/search.json +54 -0
  201. package/i18n/locales/de/validation.json +12 -0
  202. package/i18n/locales/en/account.json +458 -0
  203. package/i18n/locales/en/auth.json +155 -0
  204. package/i18n/locales/en/cart.json +263 -0
  205. package/i18n/locales/en/checkout.json +217 -0
  206. package/i18n/locales/en/common.json +80 -0
  207. package/i18n/locales/en/cover.json +33 -0
  208. package/i18n/locales/en/order.json +1 -0
  209. package/i18n/locales/en/product.json +71 -0
  210. package/i18n/locales/en/search.json +54 -0
  211. package/i18n/locales/en/validation.json +12 -0
  212. package/nuxt.config.ts +109 -0
  213. package/package.json +65 -0
  214. package/public/img/product-placeholder.svg +8 -0
  215. package/public/templates/direct-order-template.csv +3 -0
  216. package/public/templates/direct-order-template.xlsx +0 -0
  217. package/server/api/account/address/[id].delete.ts +51 -0
  218. package/server/api/account/address/[id].put.ts +83 -0
  219. package/server/api/account/address/index.post.ts +60 -0
  220. package/server/api/account/addresses.get.ts +25 -0
  221. package/server/api/account/context.get.ts +16 -0
  222. package/server/api/account/governance/[domain]/[id].put.ts +57 -0
  223. package/server/api/account/governance/[domain].post.ts +111 -0
  224. package/server/api/account/order-lists/[id].delete.ts +22 -0
  225. package/server/api/account/order-lists/[id].get.ts +17 -0
  226. package/server/api/account/order-lists/[id].put.ts +46 -0
  227. package/server/api/account/order-lists/index.get.ts +14 -0
  228. package/server/api/account/order-lists/index.post.ts +38 -0
  229. package/server/api/account/orders/[id].get.ts +35 -0
  230. package/server/api/account/orders.get.ts +35 -0
  231. package/server/api/account/profile.get.ts +56 -0
  232. package/server/api/account/profile.put.ts +128 -0
  233. package/server/api/account/requisitions/[id].get.ts +15 -0
  234. package/server/api/account/requisitions.get.ts +23 -0
  235. package/server/api/auth/login.post.ts +37 -0
  236. package/server/api/auth/logout.post.ts +4 -0
  237. package/server/api/auth/me.get.ts +3 -0
  238. package/server/api/auth/personas.get.ts +7 -0
  239. package/server/api/auth/recovery.post.ts +32 -0
  240. package/server/api/auth/recovery.put.ts +37 -0
  241. package/server/api/auth/register.post.ts +126 -0
  242. package/server/api/cart/calculate.post.ts +25 -0
  243. package/server/api/cart/export.post.ts +81 -0
  244. package/server/api/cart/index.delete.ts +10 -0
  245. package/server/api/cart/index.get.ts +10 -0
  246. package/server/api/cart/sync.post.ts +14 -0
  247. package/server/api/carts/[id]/activate.post.ts +18 -0
  248. package/server/api/carts/[id]/index.delete.ts +18 -0
  249. package/server/api/carts/[id]/index.put.ts +19 -0
  250. package/server/api/carts/[id]/items.post.ts +21 -0
  251. package/server/api/carts/index.get.ts +14 -0
  252. package/server/api/carts/index.post.ts +14 -0
  253. package/server/api/categories/[slug].get.ts +22 -0
  254. package/server/api/categories/index.get.ts +11 -0
  255. package/server/api/checkout/profile.get.ts +21 -0
  256. package/server/api/checkout/schema/[key].get.ts +19 -0
  257. package/server/api/checkout/session.post.ts +8 -0
  258. package/server/api/images/detail/[filename].get.ts +18 -0
  259. package/server/api/images/list/[filename].get.ts +17 -0
  260. package/server/api/markets.get.ts +9 -0
  261. package/server/api/orders/index.post.ts +376 -0
  262. package/server/api/payment/methods.post.ts +65 -0
  263. package/server/api/product/[id].get.ts +29 -0
  264. package/server/api/products/[id].get.ts +30 -0
  265. package/server/api/products/index.get.ts +21 -0
  266. package/server/api/requisitions/index.post.ts +67 -0
  267. package/server/api/shipping/rates.post.ts +70 -0
  268. package/server/api/themes/index.get.ts +9 -0
  269. package/server/api/typesense/drop.get.ts +22 -0
  270. package/server/api/typesense/health.get.ts +9 -0
  271. package/server/api/typesense/search.post.ts +199 -0
  272. package/server/api/typesense/seed.get.ts +112 -0
  273. package/server/api/typesense/suggest.post.ts +69 -0
  274. package/server/config/account/organization.json +146 -0
  275. package/server/config/account/personas.json +169 -0
  276. package/server/config/account/user.json +8 -0
  277. package/server/config/account/workflows.json +19 -0
  278. package/server/data/account/address-list.json +103 -0
  279. package/server/data/account/order-list.json +491 -0
  280. package/server/data/account/order-lists.json +149 -0
  281. package/server/data/account/profile.json +9 -0
  282. package/server/data/account/registration-requests.json +3 -0
  283. package/server/data/account/requisitions.json +686 -0
  284. package/server/data/categories.json +186 -0
  285. package/server/data/forms/checkout/add-address.json +24 -0
  286. package/server/data/list/5137-1.png +0 -0
  287. package/server/data/list/5498-1.png +0 -0
  288. package/server/data/list/5498-2.png +0 -0
  289. package/server/data/list/5498-3.png +0 -0
  290. package/server/data/list/5498-4.png +0 -0
  291. package/server/data/list/5498-5.png +0 -0
  292. package/server/data/list/5498-6.png +0 -0
  293. package/server/data/list/5519-1.png +0 -0
  294. package/server/data/list/5713-1.png +0 -0
  295. package/server/data/list/5789-1.png +0 -0
  296. package/server/data/list/5930-1.png +0 -0
  297. package/server/data/list/6127-1.png +0 -0
  298. package/server/data/list/6234-1.png +0 -0
  299. package/server/data/list/6238-1.png +0 -0
  300. package/server/data/list/6246-1.png +0 -0
  301. package/server/data/list/6270-1.png +0 -0
  302. package/server/data/list/6330-1.png +0 -0
  303. package/server/data/list/6336-1.png +0 -0
  304. package/server/data/list/6360-1.png +0 -0
  305. package/server/data/list/6363-1.png +0 -0
  306. package/server/data/list/6375-1.png +0 -0
  307. package/server/data/list/6385-1.png +0 -0
  308. package/server/data/list/6413-1.png +0 -0
  309. package/server/data/list/6418-1.png +0 -0
  310. package/server/data/list/6465-1.png +0 -0
  311. package/server/data/list/6477-1.png +0 -0
  312. package/server/data/list/6509-1.png +0 -0
  313. package/server/data/list/6545-1.png +0 -0
  314. package/server/data/list/6548-1.png +0 -0
  315. package/server/data/list/6566-1.png +0 -0
  316. package/server/data/list/6581-1.png +0 -0
  317. package/server/data/list/6609-1.png +0 -0
  318. package/server/data/list/6611-1.png +0 -0
  319. package/server/data/list/6641-1.png +0 -0
  320. package/server/data/list/6659-1.png +0 -0
  321. package/server/data/list/6662-1.png +0 -0
  322. package/server/data/list/6689-1.png +0 -0
  323. package/server/data/list/6698-1.png +0 -0
  324. package/server/data/list/6701-1.png +0 -0
  325. package/server/data/list/6752-1.png +0 -0
  326. package/server/data/list/6755-1.png +0 -0
  327. package/server/data/list/6837-1.png +0 -0
  328. package/server/data/list/6841-1.png +0 -0
  329. package/server/data/list/6844-1.png +0 -0
  330. package/server/data/list/6846-1.png +0 -0
  331. package/server/data/list/6886-1.png +0 -0
  332. package/server/data/list/6895-1.png +0 -0
  333. package/server/data/list/6897-1.png +0 -0
  334. package/server/data/list/6919-1.png +0 -0
  335. package/server/data/list/6977-1.png +0 -0
  336. package/server/data/list/6983-1.png +0 -0
  337. package/server/data/list/6984-1.png +0 -0
  338. package/server/data/list/6985-1.png +0 -0
  339. package/server/data/list/6986-1.png +0 -0
  340. package/server/data/list/6989-1.png +0 -0
  341. package/server/data/list/6995-1.png +0 -0
  342. package/server/data/list/6998-1.png +0 -0
  343. package/server/data/markets.json +24 -0
  344. package/server/data/product-detail.json +2450 -0
  345. package/server/data/product-list.json +2450 -0
  346. package/server/data/themes.json +8 -0
  347. package/server/interfaces/account.ts +20 -0
  348. package/server/interfaces/auth.ts +32 -0
  349. package/server/interfaces/b2bContext.ts +23 -0
  350. package/server/interfaces/cart.ts +46 -0
  351. package/server/interfaces/cartCalculation.ts +17 -0
  352. package/server/interfaces/category.ts +12 -0
  353. package/server/interfaces/checkoutProfile.ts +5 -0
  354. package/server/interfaces/log.ts +3 -0
  355. package/server/interfaces/market.ts +10 -0
  356. package/server/interfaces/product.ts +21 -0
  357. package/server/interfaces/schema.ts +20 -0
  358. package/server/interfaces/theme.ts +10 -0
  359. package/server/services/ApiAuthService.ts +138 -0
  360. package/server/services/ApiCartService.ts +254 -0
  361. package/server/services/ApiCategoryService.ts +25 -0
  362. package/server/services/ApiMarketService.ts +71 -0
  363. package/server/services/ApiProductService.ts +53 -0
  364. package/server/services/LocalFileCategoryService.ts +23 -0
  365. package/server/services/LocalFileCheckoutProfileService.ts +117 -0
  366. package/server/services/LocalFileProductService.ts +128 -0
  367. package/server/services/LocalFileSchemaService.ts +70 -0
  368. package/server/services/LocalFileThemeService.ts +18 -0
  369. package/server/services/LogService.ts +28 -0
  370. package/server/services/MockAccountService.ts +58 -0
  371. package/server/services/MockAuthService.ts +105 -0
  372. package/server/services/MockB2BContextService.ts +149 -0
  373. package/server/services/MockCartCalculationService.ts +395 -0
  374. package/server/services/MockMarketService.ts +18 -0
  375. package/server/services/SdkAccountService.ts +56 -0
  376. package/server/services/SdkAuthService.ts +83 -0
  377. package/server/services/SessionCartService.ts +31 -0
  378. package/server/utils/accountService.ts +30 -0
  379. package/server/utils/authCookie.ts +13 -0
  380. package/server/utils/authService.ts +43 -0
  381. package/server/utils/b2bService.ts +49 -0
  382. package/server/utils/cartService.ts +59 -0
  383. package/server/utils/categoryService.ts +19 -0
  384. package/server/utils/checkoutProfileService.ts +9 -0
  385. package/server/utils/checkoutSession.ts +38 -0
  386. package/server/utils/coverData.ts +84 -0
  387. package/server/utils/governanceStore.ts +38 -0
  388. package/server/utils/i18n.ts +76 -0
  389. package/server/utils/inventoryService.ts +14 -0
  390. package/server/utils/liveCatalog.ts +234 -0
  391. package/server/utils/liveInventories.ts +76 -0
  392. package/server/utils/liveOrders.ts +139 -0
  393. package/server/utils/livePrices.ts +93 -0
  394. package/server/utils/locale.ts +39 -0
  395. package/server/utils/logService.ts +19 -0
  396. package/server/utils/marketService.ts +24 -0
  397. package/server/utils/orderService.ts +14 -0
  398. package/server/utils/paymentService.ts +14 -0
  399. package/server/utils/priceService.ts +14 -0
  400. package/server/utils/productService.ts +28 -0
  401. package/server/utils/productsSchema.ts +30 -0
  402. package/server/utils/revenexxApi.ts +136 -0
  403. package/server/utils/schemaService.ts +25 -0
  404. package/server/utils/serviceMode.ts +70 -0
  405. package/server/utils/shippingService.ts +14 -0
  406. package/server/utils/shopSdk.ts +88 -0
  407. package/server/utils/themeService.ts +16 -0
  408. package/server/utils/typesense.ts +27 -0
@@ -0,0 +1,686 @@
1
+ [
2
+ {
3
+ "id": "REQ-2026-0218",
4
+ "workflowId": "wf-1",
5
+ "workflowName": "Standardbestellung Einkauf",
6
+ "requestedBy": {
7
+ "id": "persona-requester",
8
+ "name": "Rita Requester"
9
+ },
10
+ "requestedAt": "2026-06-09T15:42:00Z",
11
+ "status": "open",
12
+ "totalValue": 3488,
13
+ "items": [
14
+ {
15
+ "id": 6919,
16
+ "sku": "NK-G42-001-6919",
17
+ "name": "Nokia G42 128 GB Purple",
18
+ "image": "6919-1.png",
19
+ "unit": "Stück",
20
+ "price": 249,
21
+ "taxRate": 0.19,
22
+ "categorySlug": "mobile-phones",
23
+ "subcategorySlug": "nokia",
24
+ "quantity": 10,
25
+ "costCenterId": "cc-2",
26
+ "positionTexts": [
27
+ "Ersatzgeräte Lager Süd"
28
+ ]
29
+ },
30
+ {
31
+ "id": 6755,
32
+ "sku": "OP-N4-001-6755",
33
+ "name": "OnePlus Nord 4 256 GB Mercurial Silver",
34
+ "image": "6755-1.png",
35
+ "unit": "Stück",
36
+ "price": 499,
37
+ "taxRate": 0.07,
38
+ "categorySlug": "mobile-phones",
39
+ "subcategorySlug": "oneplus",
40
+ "quantity": 2,
41
+ "costCenterId": "cc-2"
42
+ }
43
+ ],
44
+ "history": [
45
+ {
46
+ "id": "wh-1",
47
+ "stepSequence": 1,
48
+ "action": "submitted",
49
+ "actorName": "Rita Requester",
50
+ "actionDate": "2026-06-09T15:42:00Z",
51
+ "comment": "Dringend — Lagerbestand kritisch"
52
+ }
53
+ ],
54
+ "deliveryAddress": {
55
+ "company": "Demo GmbH",
56
+ "street": "Musterstraße 1",
57
+ "postalCode": "10115",
58
+ "city": "Berlin",
59
+ "country": "DE"
60
+ }
61
+ },
62
+ {
63
+ "id": "REQ-2026-0215",
64
+ "workflowId": "wf-2",
65
+ "workflowName": "IT-Beschaffung",
66
+ "requestedBy": {
67
+ "id": "persona-requester",
68
+ "name": "Rita Requester"
69
+ },
70
+ "requestedAt": "2026-06-08T09:24:00Z",
71
+ "status": "open",
72
+ "totalValue": 3798,
73
+ "items": [
74
+ {
75
+ "id": 6984,
76
+ "sku": "DL-XPS15-001-6984",
77
+ "name": "Dell XPS 15 Laptop 512 GB Silver",
78
+ "image": "6984-1.png",
79
+ "unit": "Stück",
80
+ "price": 1899,
81
+ "taxRate": 0.07,
82
+ "categorySlug": "technology",
83
+ "subcategorySlug": "laptops",
84
+ "quantity": 2,
85
+ "costCenterId": "cc-5",
86
+ "positionTexts": [
87
+ "Arbeitsplätze Entwicklung",
88
+ "Projekt Phoenix"
89
+ ]
90
+ }
91
+ ],
92
+ "history": [
93
+ {
94
+ "id": "wh-2",
95
+ "stepSequence": 1,
96
+ "action": "submitted",
97
+ "actorName": "Rita Requester",
98
+ "actionDate": "2026-06-08T09:24:00Z"
99
+ },
100
+ {
101
+ "id": "wh-3",
102
+ "stepSequence": 2,
103
+ "action": "forwarded",
104
+ "actorName": "Achim Approver",
105
+ "actionDate": "2026-06-08T14:10:00Z",
106
+ "comment": "Fachlich geprüft"
107
+ }
108
+ ],
109
+ "deliveryAddress": {
110
+ "company": "Demo GmbH",
111
+ "street": "Musterstraße 1",
112
+ "postalCode": "10115",
113
+ "city": "Berlin",
114
+ "country": "DE"
115
+ }
116
+ },
117
+ {
118
+ "id": "REQ-2026-0212",
119
+ "workflowId": "wf-1",
120
+ "workflowName": "Standardbestellung Einkauf",
121
+ "requestedBy": {
122
+ "id": "persona-requester",
123
+ "name": "Rita Requester"
124
+ },
125
+ "requestedAt": "2026-06-06T11:05:00Z",
126
+ "status": "open",
127
+ "totalValue": 899,
128
+ "items": [
129
+ {
130
+ "id": 6659,
131
+ "sku": "GP-9-001-6659",
132
+ "name": "Google Pixel 9 128 GB Peony",
133
+ "image": "6659-1.png",
134
+ "unit": "Stück",
135
+ "price": 899,
136
+ "taxRate": 0.07,
137
+ "categorySlug": "mobile-phones",
138
+ "subcategorySlug": "google",
139
+ "quantity": 1,
140
+ "costCenterId": "cc-1",
141
+ "customSku": "INT-PX9-001"
142
+ }
143
+ ],
144
+ "history": [
145
+ {
146
+ "id": "wh-4",
147
+ "stepSequence": 1,
148
+ "action": "submitted",
149
+ "actorName": "Rita Requester",
150
+ "actionDate": "2026-06-06T11:05:00Z"
151
+ }
152
+ ],
153
+ "deliveryAddress": {
154
+ "company": "Demo GmbH",
155
+ "street": "Musterstraße 1",
156
+ "postalCode": "10115",
157
+ "city": "Berlin",
158
+ "country": "DE"
159
+ }
160
+ },
161
+ {
162
+ "id": "REQ-2026-0208",
163
+ "workflowId": "wf-2",
164
+ "workflowName": "IT-Beschaffung",
165
+ "requestedBy": {
166
+ "id": "persona-requester",
167
+ "name": "Rita Requester"
168
+ },
169
+ "requestedAt": "2026-06-04T16:30:00Z",
170
+ "status": "open",
171
+ "totalValue": 5446,
172
+ "items": [
173
+ {
174
+ "id": 6986,
175
+ "sku": "AP-IPD129-001-6986",
176
+ "name": "Apple iPad Pro 12.9 1TB Space Gray",
177
+ "image": "6986-1.png",
178
+ "unit": "Stück",
179
+ "price": 1499,
180
+ "taxRate": 0.07,
181
+ "categorySlug": "technology",
182
+ "subcategorySlug": "tablets",
183
+ "quantity": 3,
184
+ "costCenterId": "cc-5"
185
+ },
186
+ {
187
+ "id": 6360,
188
+ "sku": "IP-16-001-6360",
189
+ "name": "Apple iPhone 16 128 GB Black",
190
+ "image": "6360-1.png",
191
+ "unit": "Stück",
192
+ "price": 949,
193
+ "taxRate": 0.07,
194
+ "categorySlug": "mobile-phones",
195
+ "subcategorySlug": "apple",
196
+ "quantity": 1,
197
+ "costCenterId": "cc-5"
198
+ }
199
+ ],
200
+ "history": [
201
+ {
202
+ "id": "wh-5",
203
+ "stepSequence": 1,
204
+ "action": "submitted",
205
+ "actorName": "Rita Requester",
206
+ "actionDate": "2026-06-04T16:30:00Z",
207
+ "comment": "Onboarding neue Kollegen KW 25"
208
+ }
209
+ ],
210
+ "deliveryAddress": {
211
+ "company": "Demo GmbH Werk 2",
212
+ "street": "Industrieweg 12",
213
+ "postalCode": "20095",
214
+ "city": "Hamburg",
215
+ "country": "DE"
216
+ }
217
+ },
218
+ {
219
+ "id": "REQ-2026-0203",
220
+ "workflowId": "wf-1",
221
+ "workflowName": "Standardbestellung Einkauf",
222
+ "requestedBy": {
223
+ "id": "persona-requester",
224
+ "name": "Rita Requester"
225
+ },
226
+ "requestedAt": "2026-06-02T08:15:00Z",
227
+ "status": "ordered",
228
+ "totalValue": 1898,
229
+ "items": [
230
+ {
231
+ "id": 6360,
232
+ "sku": "IP-16-001-6360",
233
+ "name": "Apple iPhone 16 128 GB Black",
234
+ "image": "6360-1.png",
235
+ "unit": "Stück",
236
+ "price": 949,
237
+ "taxRate": 0.07,
238
+ "categorySlug": "mobile-phones",
239
+ "subcategorySlug": "apple",
240
+ "quantity": 2,
241
+ "costCenterId": "cc-1"
242
+ }
243
+ ],
244
+ "history": [
245
+ {
246
+ "id": "wh-6",
247
+ "stepSequence": 1,
248
+ "action": "submitted",
249
+ "actorName": "Rita Requester",
250
+ "actionDate": "2026-06-02T08:15:00Z"
251
+ },
252
+ {
253
+ "id": "wh-7",
254
+ "stepSequence": 2,
255
+ "action": "approved",
256
+ "actorName": "Bea Buyer",
257
+ "actionDate": "2026-06-02T13:00:00Z",
258
+ "comment": "Budget geprüft"
259
+ },
260
+ {
261
+ "id": "wh-8",
262
+ "stepSequence": 3,
263
+ "action": "ordered",
264
+ "actorName": "Bea Buyer",
265
+ "actionDate": "2026-06-02T13:05:00Z",
266
+ "comment": "Bestellung ORD-2026-1041"
267
+ }
268
+ ],
269
+ "deliveryAddress": {
270
+ "company": "Demo GmbH",
271
+ "street": "Musterstraße 1",
272
+ "postalCode": "10115",
273
+ "city": "Berlin",
274
+ "country": "DE"
275
+ }
276
+ },
277
+ {
278
+ "id": "REQ-2026-0199",
279
+ "workflowId": "wf-1",
280
+ "workflowName": "Standardbestellung Einkauf",
281
+ "requestedBy": {
282
+ "id": "persona-requester",
283
+ "name": "Rita Requester"
284
+ },
285
+ "requestedAt": "2026-05-28T10:45:00Z",
286
+ "status": "ordered",
287
+ "totalValue": 5678,
288
+ "items": [
289
+ {
290
+ "id": 6919,
291
+ "sku": "NK-G42-001-6919",
292
+ "name": "Nokia G42 128 GB Purple",
293
+ "image": "6919-1.png",
294
+ "unit": "Stück",
295
+ "price": 249,
296
+ "taxRate": 0.19,
297
+ "categorySlug": "mobile-phones",
298
+ "subcategorySlug": "nokia",
299
+ "quantity": 20,
300
+ "costCenterId": "cc-2"
301
+ },
302
+ {
303
+ "id": 6545,
304
+ "sku": "XI-RN13P-001-6545",
305
+ "name": "Xiaomi Redmi Note 13 Pro 256 GB Midnight Black",
306
+ "image": "6545-1.png",
307
+ "unit": "Stück",
308
+ "price": 349,
309
+ "taxRate": 0.07,
310
+ "categorySlug": "mobile-phones",
311
+ "subcategorySlug": "xiaomi",
312
+ "quantity": 2,
313
+ "costCenterId": "cc-2"
314
+ }
315
+ ],
316
+ "history": [
317
+ {
318
+ "id": "wh-9",
319
+ "stepSequence": 1,
320
+ "action": "submitted",
321
+ "actorName": "Rita Requester",
322
+ "actionDate": "2026-05-28T10:45:00Z"
323
+ },
324
+ {
325
+ "id": "wh-10",
326
+ "stepSequence": 2,
327
+ "action": "approved",
328
+ "actorName": "Bea Buyer",
329
+ "actionDate": "2026-05-29T09:30:00Z"
330
+ },
331
+ {
332
+ "id": "wh-11",
333
+ "stepSequence": 3,
334
+ "action": "ordered",
335
+ "actorName": "Bea Buyer",
336
+ "actionDate": "2026-05-29T09:32:00Z",
337
+ "comment": "Bestellung ORD-2026-1037"
338
+ }
339
+ ],
340
+ "deliveryAddress": {
341
+ "company": "Demo GmbH",
342
+ "street": "Musterstraße 1",
343
+ "postalCode": "10115",
344
+ "city": "Berlin",
345
+ "country": "DE"
346
+ }
347
+ },
348
+ {
349
+ "id": "REQ-2026-0195",
350
+ "workflowId": "wf-2",
351
+ "workflowName": "IT-Beschaffung",
352
+ "requestedBy": {
353
+ "id": "persona-requester",
354
+ "name": "Rita Requester"
355
+ },
356
+ "requestedAt": "2026-05-24T13:20:00Z",
357
+ "status": "ordered",
358
+ "totalValue": 1099,
359
+ "items": [
360
+ {
361
+ "id": 6477,
362
+ "sku": "XI-14P-001-6477",
363
+ "name": "Xiaomi 14 Pro 512 GB Black",
364
+ "image": "6477-1.png",
365
+ "unit": "Stück",
366
+ "price": 1099,
367
+ "taxRate": 0.07,
368
+ "categorySlug": "mobile-phones",
369
+ "subcategorySlug": "xiaomi",
370
+ "quantity": 1,
371
+ "costCenterId": "cc-5"
372
+ }
373
+ ],
374
+ "history": [
375
+ {
376
+ "id": "wh-12",
377
+ "stepSequence": 1,
378
+ "action": "submitted",
379
+ "actorName": "Rita Requester",
380
+ "actionDate": "2026-05-24T13:20:00Z"
381
+ },
382
+ {
383
+ "id": "wh-13",
384
+ "stepSequence": 2,
385
+ "action": "forwarded",
386
+ "actorName": "Achim Approver",
387
+ "actionDate": "2026-05-25T08:00:00Z"
388
+ },
389
+ {
390
+ "id": "wh-14",
391
+ "stepSequence": 3,
392
+ "action": "ordered",
393
+ "actorName": "Ada Admin",
394
+ "actionDate": "2026-05-26T11:15:00Z"
395
+ }
396
+ ],
397
+ "deliveryAddress": {
398
+ "company": "Demo GmbH",
399
+ "street": "Musterstraße 1",
400
+ "postalCode": "10115",
401
+ "city": "Berlin",
402
+ "country": "DE"
403
+ }
404
+ },
405
+ {
406
+ "id": "REQ-2026-0190",
407
+ "workflowId": "wf-2",
408
+ "workflowName": "IT-Beschaffung",
409
+ "requestedBy": {
410
+ "id": "persona-requester",
411
+ "name": "Rita Requester"
412
+ },
413
+ "requestedAt": "2026-05-20T10:30:00Z",
414
+ "status": "cancelled",
415
+ "totalValue": 1499,
416
+ "items": [
417
+ {
418
+ "id": 6986,
419
+ "sku": "AP-IPD129-001-6986",
420
+ "name": "Apple iPad Pro 12.9 1TB Space Gray",
421
+ "image": "6986-1.png",
422
+ "unit": "Stück",
423
+ "price": 1499,
424
+ "taxRate": 0.07,
425
+ "categorySlug": "technology",
426
+ "subcategorySlug": "tablets",
427
+ "quantity": 1,
428
+ "costCenterId": "cc-5"
429
+ }
430
+ ],
431
+ "history": [
432
+ {
433
+ "id": "wh-15",
434
+ "stepSequence": 1,
435
+ "action": "submitted",
436
+ "actorName": "Rita Requester",
437
+ "actionDate": "2026-05-20T10:30:00Z"
438
+ },
439
+ {
440
+ "id": "wh-16",
441
+ "stepSequence": 2,
442
+ "action": "escalated",
443
+ "actorName": "System",
444
+ "actionDate": "2026-05-22T10:30:00Z",
445
+ "comment": "Frist überschritten — an Stellvertreter eskaliert"
446
+ },
447
+ {
448
+ "id": "wh-17",
449
+ "stepSequence": 3,
450
+ "action": "rejected",
451
+ "actorName": "Ada Admin",
452
+ "actionDate": "2026-05-23T09:05:00Z",
453
+ "comment": "Budget für Q2 ausgeschöpft"
454
+ }
455
+ ],
456
+ "deliveryAddress": {
457
+ "company": "Demo GmbH",
458
+ "street": "Musterstraße 1",
459
+ "postalCode": "10115",
460
+ "city": "Berlin",
461
+ "country": "DE"
462
+ }
463
+ },
464
+ {
465
+ "id": "REQ-2026-0186",
466
+ "workflowId": "wf-1",
467
+ "workflowName": "Standardbestellung Einkauf",
468
+ "requestedBy": {
469
+ "id": "persona-requester",
470
+ "name": "Rita Requester"
471
+ },
472
+ "requestedAt": "2026-05-16T09:00:00Z",
473
+ "status": "ordered",
474
+ "totalValue": 1798,
475
+ "items": [
476
+ {
477
+ "id": 6701,
478
+ "sku": "OP-12-001-6701",
479
+ "name": "OnePlus 12 512 GB Silky Black",
480
+ "image": "6701-1.png",
481
+ "unit": "Stück",
482
+ "price": 899,
483
+ "taxRate": 0.07,
484
+ "categorySlug": "mobile-phones",
485
+ "subcategorySlug": "oneplus",
486
+ "quantity": 2,
487
+ "costCenterId": "cc-3"
488
+ }
489
+ ],
490
+ "history": [
491
+ {
492
+ "id": "wh-18",
493
+ "stepSequence": 1,
494
+ "action": "submitted",
495
+ "actorName": "Rita Requester",
496
+ "actionDate": "2026-05-16T09:00:00Z"
497
+ },
498
+ {
499
+ "id": "wh-19",
500
+ "stepSequence": 2,
501
+ "action": "approved",
502
+ "actorName": "Bea Buyer",
503
+ "actionDate": "2026-05-16T15:40:00Z"
504
+ },
505
+ {
506
+ "id": "wh-20",
507
+ "stepSequence": 3,
508
+ "action": "ordered",
509
+ "actorName": "Bea Buyer",
510
+ "actionDate": "2026-05-16T15:41:00Z"
511
+ }
512
+ ],
513
+ "deliveryAddress": {
514
+ "company": "Demo GmbH",
515
+ "street": "Musterstraße 1",
516
+ "postalCode": "10115",
517
+ "city": "Berlin",
518
+ "country": "DE"
519
+ }
520
+ },
521
+ {
522
+ "id": "REQ-2026-0181",
523
+ "workflowId": "wf-1",
524
+ "workflowName": "Standardbestellung Einkauf",
525
+ "requestedBy": {
526
+ "id": "persona-requester",
527
+ "name": "Rita Requester"
528
+ },
529
+ "requestedAt": "2026-05-12T14:10:00Z",
530
+ "status": "cancelled",
531
+ "totalValue": 1299,
532
+ "items": [
533
+ {
534
+ "id": 6841,
535
+ "sku": "SY-X1VI-001-6841",
536
+ "name": "Sony Xperia 1 VI 256 GB Black",
537
+ "image": "6841-1.png",
538
+ "unit": "Stück",
539
+ "price": 1299,
540
+ "taxRate": 0.19,
541
+ "categorySlug": "mobile-phones",
542
+ "subcategorySlug": "sony",
543
+ "quantity": 1,
544
+ "costCenterId": "cc-1"
545
+ }
546
+ ],
547
+ "history": [
548
+ {
549
+ "id": "wh-21",
550
+ "stepSequence": 1,
551
+ "action": "submitted",
552
+ "actorName": "Rita Requester",
553
+ "actionDate": "2026-05-12T14:10:00Z"
554
+ },
555
+ {
556
+ "id": "wh-22",
557
+ "stepSequence": 2,
558
+ "action": "rejected",
559
+ "actorName": "Bea Buyer",
560
+ "actionDate": "2026-05-13T10:25:00Z",
561
+ "comment": "Preis auf Anfrage — bitte Angebot einholen"
562
+ }
563
+ ],
564
+ "deliveryAddress": {
565
+ "company": "Demo GmbH",
566
+ "street": "Musterstraße 1",
567
+ "postalCode": "10115",
568
+ "city": "Berlin",
569
+ "country": "DE"
570
+ }
571
+ },
572
+ {
573
+ "id": "REQ-2026-0177",
574
+ "workflowId": "wf-2",
575
+ "workflowName": "IT-Beschaffung",
576
+ "requestedBy": {
577
+ "id": "persona-requester",
578
+ "name": "Rita Requester"
579
+ },
580
+ "requestedAt": "2026-05-08T11:55:00Z",
581
+ "status": "ordered",
582
+ "totalValue": 4041,
583
+ "items": [
584
+ {
585
+ "id": 6509,
586
+ "sku": "XI-13TP-001-6509",
587
+ "name": "Xiaomi 13T Pro 256 GB Meadow Green",
588
+ "image": "6509-1.png",
589
+ "unit": "Stück",
590
+ "price": 699,
591
+ "taxRate": 0.07,
592
+ "categorySlug": "mobile-phones",
593
+ "subcategorySlug": "xiaomi",
594
+ "quantity": 4,
595
+ "costCenterId": "cc-5"
596
+ },
597
+ {
598
+ "id": 6919,
599
+ "sku": "NK-G42-001-6919",
600
+ "name": "Nokia G42 128 GB Purple",
601
+ "image": "6919-1.png",
602
+ "unit": "Stück",
603
+ "price": 249,
604
+ "taxRate": 0.19,
605
+ "categorySlug": "mobile-phones",
606
+ "subcategorySlug": "nokia",
607
+ "quantity": 5,
608
+ "costCenterId": "cc-5"
609
+ }
610
+ ],
611
+ "history": [
612
+ {
613
+ "id": "wh-23",
614
+ "stepSequence": 1,
615
+ "action": "submitted",
616
+ "actorName": "Rita Requester",
617
+ "actionDate": "2026-05-08T11:55:00Z"
618
+ },
619
+ {
620
+ "id": "wh-24",
621
+ "stepSequence": 2,
622
+ "action": "forwarded",
623
+ "actorName": "Achim Approver",
624
+ "actionDate": "2026-05-09T09:00:00Z"
625
+ },
626
+ {
627
+ "id": "wh-25",
628
+ "stepSequence": 3,
629
+ "action": "ordered",
630
+ "actorName": "Ada Admin",
631
+ "actionDate": "2026-05-09T16:20:00Z"
632
+ }
633
+ ],
634
+ "deliveryAddress": {
635
+ "company": "Demo GmbH",
636
+ "street": "Musterstraße 1",
637
+ "postalCode": "10115",
638
+ "city": "Berlin",
639
+ "country": "DE"
640
+ }
641
+ },
642
+ {
643
+ "id": "REQ-2026-0172",
644
+ "workflowId": "wf-1",
645
+ "workflowName": "Standardbestellung Einkauf",
646
+ "requestedBy": {
647
+ "id": "persona-requester",
648
+ "name": "Rita Requester"
649
+ },
650
+ "requestedAt": "2026-05-04T08:40:00Z",
651
+ "status": "open",
652
+ "totalValue": 1229,
653
+ "items": [
654
+ {
655
+ "id": 6336,
656
+ "sku": "IP-16P-001-6336",
657
+ "name": "Apple iPhone 16 Pro 256 GB Desert Titanium",
658
+ "image": "6336-1.png",
659
+ "unit": "Stück",
660
+ "price": 1229,
661
+ "taxRate": 0.07,
662
+ "categorySlug": "mobile-phones",
663
+ "subcategorySlug": "apple",
664
+ "quantity": 1,
665
+ "costCenterId": "cc-4"
666
+ }
667
+ ],
668
+ "history": [
669
+ {
670
+ "id": "wh-26",
671
+ "stepSequence": 1,
672
+ "action": "submitted",
673
+ "actorName": "Rita Requester",
674
+ "actionDate": "2026-05-04T08:40:00Z",
675
+ "comment": "Ersatz für defektes Gerät (Ticket #4711)"
676
+ }
677
+ ],
678
+ "deliveryAddress": {
679
+ "company": "Demo GmbH",
680
+ "street": "Musterstraße 1",
681
+ "postalCode": "10115",
682
+ "city": "Berlin",
683
+ "country": "DE"
684
+ }
685
+ }
686
+ ]