@salesforce/b2c-tooling-sdk 0.3.0 → 0.4.1

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 (350) hide show
  1. package/README.md +180 -13
  2. package/data/scaffolds/cartridge/files/.project.ejs +17 -0
  3. package/data/scaffolds/cartridge/files/cartridge/cartridge.properties.ejs +4 -0
  4. package/data/scaffolds/cartridge/files/cartridge/controllers/Example.js.ejs +19 -0
  5. package/data/scaffolds/cartridge/files/cartridge/models/example.js.ejs +14 -0
  6. package/data/scaffolds/cartridge/files/cartridge/scripts/helpers/exampleHelpers.js.ejs +18 -0
  7. package/data/scaffolds/cartridge/files/cartridge/static/default/css/example.css +6 -0
  8. package/data/scaffolds/cartridge/files/cartridge/templates/default/example/show.isml.ejs +11 -0
  9. package/data/scaffolds/cartridge/scaffold.json +88 -0
  10. package/data/scaffolds/controller/files/controller.js.ejs +134 -0
  11. package/data/scaffolds/controller/files/template.isml.ejs +22 -0
  12. package/data/scaffolds/controller/scaffold.json +64 -0
  13. package/data/scaffolds/custom-api/files/api.json.ejs +11 -0
  14. package/data/scaffolds/custom-api/files/schema.yaml.ejs +188 -0
  15. package/data/scaffolds/custom-api/files/script.js.ejs +95 -0
  16. package/data/scaffolds/custom-api/scaffold.json +65 -0
  17. package/data/scaffolds/hook/files/hook.js.ejs +99 -0
  18. package/data/scaffolds/hook/files/hooks-entry.json.ejs +6 -0
  19. package/data/scaffolds/hook/scaffold.json +60 -0
  20. package/data/scaffolds/job-step/files/step-chunk.js.ejs +136 -0
  21. package/data/scaffolds/job-step/files/step-task.js.ejs +47 -0
  22. package/data/scaffolds/job-step/files/steptypes-entry.json.ejs +41 -0
  23. package/data/scaffolds/job-step/scaffold.json +64 -0
  24. package/data/scaffolds/page-designer-component/files/component.isml.ejs +23 -0
  25. package/data/scaffolds/page-designer-component/files/component.js.ejs +35 -0
  26. package/data/scaffolds/page-designer-component/files/component.json.ejs +50 -0
  27. package/data/scaffolds/page-designer-component/scaffold.json +66 -0
  28. package/data/scaffolds/service/files/service-http.js.ejs +245 -0
  29. package/data/scaffolds/service/files/service-sftp.js.ejs +371 -0
  30. package/data/scaffolds/service/files/service-soap.js.ejs +230 -0
  31. package/data/scaffolds/service/scaffold.json +83 -0
  32. package/data/script-api/dw.extensions.payments.SalesforcePaymentsMgr.md +48 -0
  33. package/data/script-api/dw.system.Request.md +5 -0
  34. package/data/script-api/dw.web.Cookie.md +108 -31
  35. package/data/script-api/index.json +2 -2
  36. package/data/script-api/index.md +1 -1
  37. package/dist/cjs/auth/oauth-implicit.d.ts +1 -0
  38. package/dist/cjs/auth/oauth-implicit.js +8 -3
  39. package/dist/cjs/auth/oauth-implicit.js.map +1 -1
  40. package/dist/cjs/auth/oauth.d.ts +1 -0
  41. package/dist/cjs/auth/oauth.js +8 -3
  42. package/dist/cjs/auth/oauth.js.map +1 -1
  43. package/dist/cjs/auth/types.d.ts +5 -0
  44. package/dist/cjs/auth/types.js.map +1 -1
  45. package/dist/cjs/cli/am-command.d.ts +74 -0
  46. package/dist/cjs/cli/am-command.js +191 -0
  47. package/dist/cjs/cli/am-command.js.map +1 -0
  48. package/dist/cjs/cli/base-command.d.ts +38 -0
  49. package/dist/cjs/cli/base-command.js +142 -0
  50. package/dist/cjs/cli/base-command.js.map +1 -1
  51. package/dist/cjs/cli/config.d.ts +9 -0
  52. package/dist/cjs/cli/config.js +20 -3
  53. package/dist/cjs/cli/config.js.map +1 -1
  54. package/dist/cjs/cli/index.d.ts +1 -0
  55. package/dist/cjs/cli/index.js +1 -0
  56. package/dist/cjs/cli/index.js.map +1 -1
  57. package/dist/cjs/cli/instance-command.d.ts +2 -1
  58. package/dist/cjs/cli/oauth-command.d.ts +22 -2
  59. package/dist/cjs/cli/oauth-command.js +53 -8
  60. package/dist/cjs/cli/oauth-command.js.map +1 -1
  61. package/dist/cjs/cli/ods-command.d.ts +6 -2
  62. package/dist/cjs/cli/ods-command.js +10 -4
  63. package/dist/cjs/cli/ods-command.js.map +1 -1
  64. package/dist/cjs/cli/webdav-command.d.ts +2 -1
  65. package/dist/cjs/clients/am-api.d.ts +521 -0
  66. package/dist/cjs/clients/am-api.js +986 -0
  67. package/dist/cjs/clients/am-api.js.map +1 -0
  68. package/dist/cjs/clients/am-apiclients-api.generated.d.ts +803 -0
  69. package/dist/cjs/clients/am-apiclients-api.generated.js +6 -0
  70. package/dist/cjs/clients/am-apiclients-api.generated.js.map +1 -0
  71. package/dist/cjs/clients/am-roles-api.generated.d.ts +298 -0
  72. package/dist/cjs/clients/am-roles-api.generated.js +6 -0
  73. package/dist/cjs/clients/am-roles-api.generated.js.map +1 -0
  74. package/dist/cjs/clients/am-users-api.generated.d.ts +954 -0
  75. package/dist/cjs/clients/am-users-api.generated.js +6 -0
  76. package/dist/cjs/clients/am-users-api.generated.js.map +1 -0
  77. package/dist/cjs/clients/index.d.ts +4 -2
  78. package/dist/cjs/clients/index.js +2 -1
  79. package/dist/cjs/clients/index.js.map +1 -1
  80. package/dist/cjs/clients/middleware-registry.d.ts +1 -1
  81. package/dist/cjs/clients/middleware-registry.js.map +1 -1
  82. package/dist/cjs/clients/middleware.d.ts +49 -2
  83. package/dist/cjs/clients/middleware.js +214 -2
  84. package/dist/cjs/clients/middleware.js.map +1 -1
  85. package/dist/cjs/clients/mrt.js +5 -1
  86. package/dist/cjs/clients/mrt.js.map +1 -1
  87. package/dist/cjs/config/dw-json.d.ts +104 -33
  88. package/dist/cjs/config/dw-json.js +167 -2
  89. package/dist/cjs/config/dw-json.js.map +1 -1
  90. package/dist/cjs/config/index.d.ts +6 -4
  91. package/dist/cjs/config/index.js +6 -2
  92. package/dist/cjs/config/index.js.map +1 -1
  93. package/dist/cjs/config/instance-manager.d.ts +97 -0
  94. package/dist/cjs/config/instance-manager.js +166 -0
  95. package/dist/cjs/config/instance-manager.js.map +1 -0
  96. package/dist/cjs/config/mapping.d.ts +63 -5
  97. package/dist/cjs/config/mapping.js +165 -20
  98. package/dist/cjs/config/mapping.js.map +1 -1
  99. package/dist/cjs/config/sources/dw-json-source.d.ts +17 -1
  100. package/dist/cjs/config/sources/dw-json-source.js +70 -3
  101. package/dist/cjs/config/sources/dw-json-source.js.map +1 -1
  102. package/dist/cjs/config/sources/package-json-source.js +6 -3
  103. package/dist/cjs/config/sources/package-json-source.js.map +1 -1
  104. package/dist/cjs/config/types.d.ts +72 -0
  105. package/dist/cjs/defaults.d.ts +6 -0
  106. package/dist/cjs/defaults.js +6 -0
  107. package/dist/cjs/defaults.js.map +1 -1
  108. package/dist/cjs/i18n/index.js +3 -0
  109. package/dist/cjs/i18n/index.js.map +1 -1
  110. package/dist/cjs/index.d.ts +8 -4
  111. package/dist/cjs/index.js +9 -3
  112. package/dist/cjs/index.js.map +1 -1
  113. package/dist/cjs/logging/logger.js +13 -1
  114. package/dist/cjs/logging/logger.js.map +1 -1
  115. package/dist/cjs/operations/content/asset-query.d.ts +22 -0
  116. package/dist/cjs/operations/content/asset-query.js +77 -0
  117. package/dist/cjs/operations/content/asset-query.js.map +1 -0
  118. package/dist/cjs/operations/content/export.d.ts +57 -0
  119. package/dist/cjs/operations/content/export.js +224 -0
  120. package/dist/cjs/operations/content/export.js.map +1 -0
  121. package/dist/cjs/operations/content/index.d.ts +43 -0
  122. package/dist/cjs/operations/content/index.js +48 -0
  123. package/dist/cjs/operations/content/index.js.map +1 -0
  124. package/dist/cjs/operations/content/library.d.ts +137 -0
  125. package/dist/cjs/operations/content/library.js +392 -0
  126. package/dist/cjs/operations/content/library.js.map +1 -0
  127. package/dist/cjs/operations/content/types.d.ts +144 -0
  128. package/dist/cjs/operations/content/types.js +7 -0
  129. package/dist/cjs/operations/content/types.js.map +1 -0
  130. package/dist/cjs/operations/mrt/b2c-config.js +19 -4
  131. package/dist/cjs/operations/mrt/b2c-config.js.map +1 -1
  132. package/dist/cjs/operations/mrt/index.d.ts +2 -0
  133. package/dist/cjs/operations/mrt/index.js +2 -0
  134. package/dist/cjs/operations/mrt/index.js.map +1 -1
  135. package/dist/cjs/operations/mrt/tail-logs.d.ts +130 -0
  136. package/dist/cjs/operations/mrt/tail-logs.js +223 -0
  137. package/dist/cjs/operations/mrt/tail-logs.js.map +1 -0
  138. package/dist/cjs/operations/ods/index.d.ts +2 -0
  139. package/dist/cjs/operations/ods/index.js +1 -0
  140. package/dist/cjs/operations/ods/index.js.map +1 -1
  141. package/dist/cjs/operations/ods/wait-for-sandbox.d.ts +64 -0
  142. package/dist/cjs/operations/ods/wait-for-sandbox.js +114 -0
  143. package/dist/cjs/operations/ods/wait-for-sandbox.js.map +1 -0
  144. package/dist/cjs/operations/orgs/index.d.ts +74 -0
  145. package/dist/cjs/operations/orgs/index.js +33 -0
  146. package/dist/cjs/operations/orgs/index.js.map +1 -0
  147. package/dist/cjs/operations/roles/index.d.ts +43 -0
  148. package/dist/cjs/operations/roles/index.js +48 -0
  149. package/dist/cjs/operations/roles/index.js.map +1 -0
  150. package/dist/cjs/operations/users/index.d.ts +153 -0
  151. package/dist/cjs/operations/users/index.js +139 -0
  152. package/dist/cjs/operations/users/index.js.map +1 -0
  153. package/dist/cjs/scaffold/engine.d.ts +68 -0
  154. package/dist/cjs/scaffold/engine.js +149 -0
  155. package/dist/cjs/scaffold/engine.js.map +1 -0
  156. package/dist/cjs/scaffold/executor.d.ts +36 -0
  157. package/dist/cjs/scaffold/executor.js +285 -0
  158. package/dist/cjs/scaffold/executor.js.map +1 -0
  159. package/dist/cjs/scaffold/index.d.ts +74 -0
  160. package/dist/cjs/scaffold/index.js +23 -0
  161. package/dist/cjs/scaffold/index.js.map +1 -0
  162. package/dist/cjs/scaffold/merge.d.ts +56 -0
  163. package/dist/cjs/scaffold/merge.js +183 -0
  164. package/dist/cjs/scaffold/merge.js.map +1 -0
  165. package/dist/cjs/scaffold/parameter-resolver.d.ts +86 -0
  166. package/dist/cjs/scaffold/parameter-resolver.js +179 -0
  167. package/dist/cjs/scaffold/parameter-resolver.js.map +1 -0
  168. package/dist/cjs/scaffold/registry.d.ts +45 -0
  169. package/dist/cjs/scaffold/registry.js +219 -0
  170. package/dist/cjs/scaffold/registry.js.map +1 -0
  171. package/dist/cjs/scaffold/sources.d.ts +45 -0
  172. package/dist/cjs/scaffold/sources.js +113 -0
  173. package/dist/cjs/scaffold/sources.js.map +1 -0
  174. package/dist/cjs/scaffold/types.d.ts +280 -0
  175. package/dist/cjs/scaffold/types.js +14 -0
  176. package/dist/cjs/scaffold/types.js.map +1 -0
  177. package/dist/cjs/scaffold/validation.d.ts +81 -0
  178. package/dist/cjs/scaffold/validation.js +250 -0
  179. package/dist/cjs/scaffold/validation.js.map +1 -0
  180. package/dist/cjs/scaffold/validators.d.ts +33 -0
  181. package/dist/cjs/scaffold/validators.js +334 -0
  182. package/dist/cjs/scaffold/validators.js.map +1 -0
  183. package/dist/cjs/telemetry/index.d.ts +26 -0
  184. package/dist/cjs/telemetry/index.js +32 -0
  185. package/dist/cjs/telemetry/index.js.map +1 -0
  186. package/dist/cjs/telemetry/telemetry.d.ts +90 -0
  187. package/dist/cjs/telemetry/telemetry.js +283 -0
  188. package/dist/cjs/telemetry/telemetry.js.map +1 -0
  189. package/dist/cjs/telemetry/types.d.ts +62 -0
  190. package/dist/cjs/telemetry/types.js +7 -0
  191. package/dist/cjs/telemetry/types.js.map +1 -0
  192. package/dist/esm/auth/oauth-implicit.d.ts +1 -0
  193. package/dist/esm/auth/oauth-implicit.js +8 -3
  194. package/dist/esm/auth/oauth-implicit.js.map +1 -1
  195. package/dist/esm/auth/oauth.d.ts +1 -0
  196. package/dist/esm/auth/oauth.js +8 -3
  197. package/dist/esm/auth/oauth.js.map +1 -1
  198. package/dist/esm/auth/types.d.ts +5 -0
  199. package/dist/esm/auth/types.js.map +1 -1
  200. package/dist/esm/cli/am-command.d.ts +74 -0
  201. package/dist/esm/cli/am-command.js +198 -0
  202. package/dist/esm/cli/am-command.js.map +1 -0
  203. package/dist/esm/cli/base-command.d.ts +38 -0
  204. package/dist/esm/cli/base-command.js +142 -0
  205. package/dist/esm/cli/base-command.js.map +1 -1
  206. package/dist/esm/cli/config.d.ts +9 -0
  207. package/dist/esm/cli/config.js +20 -3
  208. package/dist/esm/cli/config.js.map +1 -1
  209. package/dist/esm/cli/index.d.ts +1 -0
  210. package/dist/esm/cli/index.js +1 -0
  211. package/dist/esm/cli/index.js.map +1 -1
  212. package/dist/esm/cli/instance-command.d.ts +2 -1
  213. package/dist/esm/cli/oauth-command.d.ts +22 -2
  214. package/dist/esm/cli/oauth-command.js +53 -8
  215. package/dist/esm/cli/oauth-command.js.map +1 -1
  216. package/dist/esm/cli/ods-command.d.ts +6 -2
  217. package/dist/esm/cli/ods-command.js +10 -4
  218. package/dist/esm/cli/ods-command.js.map +1 -1
  219. package/dist/esm/cli/webdav-command.d.ts +2 -1
  220. package/dist/esm/clients/am-api.d.ts +521 -0
  221. package/dist/esm/clients/am-api.js +986 -0
  222. package/dist/esm/clients/am-api.js.map +1 -0
  223. package/dist/esm/clients/am-apiclients-api.generated.d.ts +803 -0
  224. package/dist/esm/clients/am-apiclients-api.generated.js +6 -0
  225. package/dist/esm/clients/am-apiclients-api.generated.js.map +1 -0
  226. package/dist/esm/clients/am-roles-api.generated.d.ts +298 -0
  227. package/dist/esm/clients/am-roles-api.generated.js +6 -0
  228. package/dist/esm/clients/am-roles-api.generated.js.map +1 -0
  229. package/dist/esm/clients/am-users-api.generated.d.ts +954 -0
  230. package/dist/esm/clients/am-users-api.generated.js +6 -0
  231. package/dist/esm/clients/am-users-api.generated.js.map +1 -0
  232. package/dist/esm/clients/index.d.ts +4 -2
  233. package/dist/esm/clients/index.js +2 -1
  234. package/dist/esm/clients/index.js.map +1 -1
  235. package/dist/esm/clients/middleware-registry.d.ts +1 -1
  236. package/dist/esm/clients/middleware-registry.js.map +1 -1
  237. package/dist/esm/clients/middleware.d.ts +49 -2
  238. package/dist/esm/clients/middleware.js +214 -2
  239. package/dist/esm/clients/middleware.js.map +1 -1
  240. package/dist/esm/clients/mrt.js +5 -1
  241. package/dist/esm/clients/mrt.js.map +1 -1
  242. package/dist/esm/config/dw-json.d.ts +104 -33
  243. package/dist/esm/config/dw-json.js +167 -2
  244. package/dist/esm/config/dw-json.js.map +1 -1
  245. package/dist/esm/config/index.d.ts +6 -4
  246. package/dist/esm/config/index.js +6 -2
  247. package/dist/esm/config/index.js.map +1 -1
  248. package/dist/esm/config/instance-manager.d.ts +97 -0
  249. package/dist/esm/config/instance-manager.js +166 -0
  250. package/dist/esm/config/instance-manager.js.map +1 -0
  251. package/dist/esm/config/mapping.d.ts +63 -5
  252. package/dist/esm/config/mapping.js +165 -20
  253. package/dist/esm/config/mapping.js.map +1 -1
  254. package/dist/esm/config/sources/dw-json-source.d.ts +17 -1
  255. package/dist/esm/config/sources/dw-json-source.js +70 -3
  256. package/dist/esm/config/sources/dw-json-source.js.map +1 -1
  257. package/dist/esm/config/sources/package-json-source.js +6 -3
  258. package/dist/esm/config/sources/package-json-source.js.map +1 -1
  259. package/dist/esm/config/types.d.ts +72 -0
  260. package/dist/esm/defaults.d.ts +6 -0
  261. package/dist/esm/defaults.js +6 -0
  262. package/dist/esm/defaults.js.map +1 -1
  263. package/dist/esm/i18n/index.js +3 -0
  264. package/dist/esm/i18n/index.js.map +1 -1
  265. package/dist/esm/index.d.ts +8 -4
  266. package/dist/esm/index.js +9 -3
  267. package/dist/esm/index.js.map +1 -1
  268. package/dist/esm/logging/logger.js +13 -1
  269. package/dist/esm/logging/logger.js.map +1 -1
  270. package/dist/esm/operations/content/asset-query.d.ts +22 -0
  271. package/dist/esm/operations/content/asset-query.js +77 -0
  272. package/dist/esm/operations/content/asset-query.js.map +1 -0
  273. package/dist/esm/operations/content/export.d.ts +57 -0
  274. package/dist/esm/operations/content/export.js +224 -0
  275. package/dist/esm/operations/content/export.js.map +1 -0
  276. package/dist/esm/operations/content/index.d.ts +43 -0
  277. package/dist/esm/operations/content/index.js +48 -0
  278. package/dist/esm/operations/content/index.js.map +1 -0
  279. package/dist/esm/operations/content/library.d.ts +137 -0
  280. package/dist/esm/operations/content/library.js +392 -0
  281. package/dist/esm/operations/content/library.js.map +1 -0
  282. package/dist/esm/operations/content/types.d.ts +144 -0
  283. package/dist/esm/operations/content/types.js +7 -0
  284. package/dist/esm/operations/content/types.js.map +1 -0
  285. package/dist/esm/operations/mrt/b2c-config.js +19 -4
  286. package/dist/esm/operations/mrt/b2c-config.js.map +1 -1
  287. package/dist/esm/operations/mrt/index.d.ts +2 -0
  288. package/dist/esm/operations/mrt/index.js +2 -0
  289. package/dist/esm/operations/mrt/index.js.map +1 -1
  290. package/dist/esm/operations/mrt/tail-logs.d.ts +130 -0
  291. package/dist/esm/operations/mrt/tail-logs.js +223 -0
  292. package/dist/esm/operations/mrt/tail-logs.js.map +1 -0
  293. package/dist/esm/operations/ods/index.d.ts +2 -0
  294. package/dist/esm/operations/ods/index.js +1 -0
  295. package/dist/esm/operations/ods/index.js.map +1 -1
  296. package/dist/esm/operations/ods/wait-for-sandbox.d.ts +64 -0
  297. package/dist/esm/operations/ods/wait-for-sandbox.js +114 -0
  298. package/dist/esm/operations/ods/wait-for-sandbox.js.map +1 -0
  299. package/dist/esm/operations/orgs/index.d.ts +74 -0
  300. package/dist/esm/operations/orgs/index.js +33 -0
  301. package/dist/esm/operations/orgs/index.js.map +1 -0
  302. package/dist/esm/operations/roles/index.d.ts +43 -0
  303. package/dist/esm/operations/roles/index.js +48 -0
  304. package/dist/esm/operations/roles/index.js.map +1 -0
  305. package/dist/esm/operations/users/index.d.ts +153 -0
  306. package/dist/esm/operations/users/index.js +139 -0
  307. package/dist/esm/operations/users/index.js.map +1 -0
  308. package/dist/esm/scaffold/engine.d.ts +68 -0
  309. package/dist/esm/scaffold/engine.js +149 -0
  310. package/dist/esm/scaffold/engine.js.map +1 -0
  311. package/dist/esm/scaffold/executor.d.ts +36 -0
  312. package/dist/esm/scaffold/executor.js +285 -0
  313. package/dist/esm/scaffold/executor.js.map +1 -0
  314. package/dist/esm/scaffold/index.d.ts +74 -0
  315. package/dist/esm/scaffold/index.js +23 -0
  316. package/dist/esm/scaffold/index.js.map +1 -0
  317. package/dist/esm/scaffold/merge.d.ts +56 -0
  318. package/dist/esm/scaffold/merge.js +183 -0
  319. package/dist/esm/scaffold/merge.js.map +1 -0
  320. package/dist/esm/scaffold/parameter-resolver.d.ts +86 -0
  321. package/dist/esm/scaffold/parameter-resolver.js +179 -0
  322. package/dist/esm/scaffold/parameter-resolver.js.map +1 -0
  323. package/dist/esm/scaffold/registry.d.ts +45 -0
  324. package/dist/esm/scaffold/registry.js +219 -0
  325. package/dist/esm/scaffold/registry.js.map +1 -0
  326. package/dist/esm/scaffold/sources.d.ts +45 -0
  327. package/dist/esm/scaffold/sources.js +113 -0
  328. package/dist/esm/scaffold/sources.js.map +1 -0
  329. package/dist/esm/scaffold/types.d.ts +280 -0
  330. package/dist/esm/scaffold/types.js +14 -0
  331. package/dist/esm/scaffold/types.js.map +1 -0
  332. package/dist/esm/scaffold/validation.d.ts +81 -0
  333. package/dist/esm/scaffold/validation.js +250 -0
  334. package/dist/esm/scaffold/validation.js.map +1 -0
  335. package/dist/esm/scaffold/validators.d.ts +33 -0
  336. package/dist/esm/scaffold/validators.js +334 -0
  337. package/dist/esm/scaffold/validators.js.map +1 -0
  338. package/dist/esm/telemetry/index.d.ts +26 -0
  339. package/dist/esm/telemetry/index.js +32 -0
  340. package/dist/esm/telemetry/index.js.map +1 -0
  341. package/dist/esm/telemetry/telemetry.d.ts +90 -0
  342. package/dist/esm/telemetry/telemetry.js +283 -0
  343. package/dist/esm/telemetry/telemetry.js.map +1 -0
  344. package/dist/esm/telemetry/types.d.ts +62 -0
  345. package/dist/esm/telemetry/types.js +7 -0
  346. package/dist/esm/telemetry/types.js.map +1 -0
  347. package/package.json +86 -17
  348. package/specs/am-apiclients-api-v1.yaml +965 -0
  349. package/specs/am-roles-api-v1.yaml +316 -0
  350. package/specs/am-users-api-v1.yaml +1142 -0
@@ -0,0 +1,188 @@
1
+ openapi: 3.0.0
2
+ info:
3
+ version: 1.0.0
4
+ title: <%= apiName %>
5
+ description: <%= apiDescription %>
6
+ components:
7
+ securitySchemes:
8
+ <% if (apiType === 'shopper') { %>
9
+ ShopperToken:
10
+ type: oauth2
11
+ flows:
12
+ clientCredentials:
13
+ tokenUrl: https://{shortCode}.api.commercecloud.salesforce.com/shopper/auth/v1/organizations/{organizationId}/oauth2/token
14
+ scopes:
15
+ c_<%= apiName.replace(/-/g, '_') %>: Access <%= apiName %> API
16
+ <% } else { %>
17
+ AmOAuth2:
18
+ type: oauth2
19
+ flows:
20
+ clientCredentials:
21
+ tokenUrl: https://account.demandware.com/dwsso/oauth2/access_token
22
+ scopes:
23
+ c_<%= apiName.replace(/-/g, '_') %>: Access <%= apiName %> API
24
+ <% } %>
25
+ <% if (includeExampleEndpoints) { %>
26
+ paths:
27
+ /hello:
28
+ get:
29
+ summary: Returns a hello message
30
+ operationId: getHello
31
+ <% if (apiType === 'shopper') { %>
32
+ parameters:
33
+ - in: query
34
+ name: siteId
35
+ required: true
36
+ schema:
37
+ type: string
38
+ minLength: 1
39
+ <% } %>
40
+ responses:
41
+ '200':
42
+ description: Success
43
+ content:
44
+ application/json:
45
+ schema:
46
+ type: object
47
+ properties:
48
+ message:
49
+ type: string
50
+ security:
51
+ <% if (apiType === 'shopper') { %>
52
+ - ShopperToken: [c_<%= apiName.replace(/-/g, '_') %>]
53
+ <% } else { %>
54
+ - AmOAuth2: [c_<%= apiName.replace(/-/g, '_') %>]
55
+ <% } %>
56
+ /items:
57
+ get:
58
+ summary: Get a list of items
59
+ operationId: getItems
60
+ parameters:
61
+ <% if (apiType === 'shopper') { %>
62
+ - in: query
63
+ name: siteId
64
+ required: true
65
+ schema:
66
+ type: string
67
+ minLength: 1
68
+ <% } %>
69
+ - in: query
70
+ name: c_limit
71
+ required: false
72
+ schema:
73
+ type: integer
74
+ default: 10
75
+ - in: query
76
+ name: c_offset
77
+ required: false
78
+ schema:
79
+ type: integer
80
+ default: 0
81
+ responses:
82
+ '200':
83
+ description: Success
84
+ content:
85
+ application/json:
86
+ schema:
87
+ type: object
88
+ properties:
89
+ count:
90
+ type: integer
91
+ total:
92
+ type: integer
93
+ data:
94
+ type: array
95
+ items:
96
+ type: object
97
+ properties:
98
+ id:
99
+ type: string
100
+ name:
101
+ type: string
102
+ security:
103
+ <% if (apiType === 'shopper') { %>
104
+ - ShopperToken: [c_<%= apiName.replace(/-/g, '_') %>]
105
+ <% } else { %>
106
+ - AmOAuth2: [c_<%= apiName.replace(/-/g, '_') %>]
107
+ <% } %>
108
+ /items/{itemId}:
109
+ get:
110
+ summary: Get a specific item by ID
111
+ operationId: getItem
112
+ parameters:
113
+ <% if (apiType === 'shopper') { %>
114
+ - in: query
115
+ name: siteId
116
+ required: true
117
+ schema:
118
+ type: string
119
+ minLength: 1
120
+ <% } %>
121
+ - in: path
122
+ name: itemId
123
+ required: true
124
+ schema:
125
+ type: string
126
+ responses:
127
+ '200':
128
+ description: Success
129
+ content:
130
+ application/json:
131
+ schema:
132
+ type: object
133
+ properties:
134
+ id:
135
+ type: string
136
+ name:
137
+ type: string
138
+ description:
139
+ type: string
140
+ '404':
141
+ description: Item not found
142
+ content:
143
+ application/json:
144
+ schema:
145
+ type: object
146
+ properties:
147
+ type:
148
+ type: string
149
+ message:
150
+ type: string
151
+ security:
152
+ <% if (apiType === 'shopper') { %>
153
+ - ShopperToken: [c_<%= apiName.replace(/-/g, '_') %>]
154
+ <% } else { %>
155
+ - AmOAuth2: [c_<%= apiName.replace(/-/g, '_') %>]
156
+ <% } %>
157
+ <% } else { %>
158
+ paths:
159
+ /example:
160
+ get:
161
+ summary: Example endpoint
162
+ operationId: getExample
163
+ <% if (apiType === 'shopper') { %>
164
+ parameters:
165
+ - in: query
166
+ name: siteId
167
+ required: true
168
+ schema:
169
+ type: string
170
+ minLength: 1
171
+ <% } %>
172
+ responses:
173
+ '200':
174
+ description: Success
175
+ content:
176
+ application/json:
177
+ schema:
178
+ type: object
179
+ properties:
180
+ message:
181
+ type: string
182
+ security:
183
+ <% if (apiType === 'shopper') { %>
184
+ - ShopperToken: [c_<%= apiName.replace(/-/g, '_') %>]
185
+ <% } else { %>
186
+ - AmOAuth2: [c_<%= apiName.replace(/-/g, '_') %>]
187
+ <% } %>
188
+ <% } %>
@@ -0,0 +1,95 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Custom SCAPI implementation for <%= apiName %>
5
+ *
6
+ * Each exported function corresponds to an operationId in schema.yaml.
7
+ * Functions must be marked as public: exports.functionName.public = true;
8
+ *
9
+ * Use RESTResponseMgr for proper SCAPI responses.
10
+ */
11
+
12
+ var RESTResponseMgr = require('dw/system/RESTResponseMgr');
13
+
14
+ <% if (includeExampleEndpoints) { %>
15
+ /**
16
+ * GET /hello
17
+ * Returns a hello message
18
+ */
19
+ exports.getHello = function () {
20
+ RESTResponseMgr
21
+ .createSuccess({
22
+ message: 'Hello from <%= apiName %>!'
23
+ })
24
+ .render();
25
+ };
26
+ exports.getHello.public = true;
27
+
28
+ /**
29
+ * GET /items
30
+ * Get a list of items with pagination
31
+ */
32
+ exports.getItems = function () {
33
+ var limit = request.httpParameterMap.get('c_limit').intValue || 10;
34
+ var offset = request.httpParameterMap.get('c_offset').intValue || 0;
35
+
36
+ // TODO: Replace with actual data retrieval logic
37
+ var allItems = [
38
+ { id: 'item-1', name: 'Example Item 1' },
39
+ { id: 'item-2', name: 'Example Item 2' },
40
+ { id: 'item-3', name: 'Example Item 3' }
41
+ ];
42
+
43
+ var items = allItems.slice(offset, offset + limit);
44
+
45
+ RESTResponseMgr
46
+ .createSuccess({
47
+ count: items.length,
48
+ total: allItems.length,
49
+ data: items
50
+ })
51
+ .render();
52
+ };
53
+ exports.getItems.public = true;
54
+
55
+ /**
56
+ * GET /items/{itemId}
57
+ * Get a specific item by ID
58
+ */
59
+ exports.getItem = function () {
60
+ var itemId = request.getSCAPIPathParameters().get('itemId');
61
+
62
+ // TODO: Replace with actual data retrieval logic
63
+ var items = {
64
+ 'item-1': { id: 'item-1', name: 'Example Item 1', description: 'First example item' },
65
+ 'item-2': { id: 'item-2', name: 'Example Item 2', description: 'Second example item' },
66
+ 'item-3': { id: 'item-3', name: 'Example Item 3', description: 'Third example item' }
67
+ };
68
+
69
+ var item = items[itemId];
70
+
71
+ if (item) {
72
+ RESTResponseMgr
73
+ .createSuccess(item)
74
+ .render();
75
+ } else {
76
+ RESTResponseMgr
77
+ .createError(404, 'item-not-found', 'Item Not Found', 'The requested item was not found.')
78
+ .render();
79
+ }
80
+ };
81
+ exports.getItem.public = true;
82
+ <% } else { %>
83
+ /**
84
+ * GET /example
85
+ * Example endpoint - replace with your implementation
86
+ */
87
+ exports.getExample = function () {
88
+ RESTResponseMgr
89
+ .createSuccess({
90
+ message: 'Hello from <%= apiName %>!'
91
+ })
92
+ .render();
93
+ };
94
+ exports.getExample.public = true;
95
+ <% } %>
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "custom-api",
3
+ "displayName": "Custom SCAPI",
4
+ "description": "Create a custom SCAPI endpoint with OAS 3.0 schema",
5
+ "category": "cartridge",
6
+ "parameters": [
7
+ {
8
+ "name": "apiName",
9
+ "prompt": "What is the API name?",
10
+ "type": "string",
11
+ "required": true,
12
+ "pattern": "^[a-z][a-z0-9-]*$",
13
+ "validationMessage": "API name must be kebab-case (lowercase letters, numbers, hyphens)"
14
+ },
15
+ {
16
+ "name": "apiType",
17
+ "prompt": "What type of API is this?",
18
+ "type": "choice",
19
+ "required": true,
20
+ "default": "shopper",
21
+ "choices": [
22
+ { "value": "shopper", "label": "Shopper API (requires siteId, customer-facing)" },
23
+ { "value": "admin", "label": "Admin API (no siteId, administrative)" }
24
+ ]
25
+ },
26
+ {
27
+ "name": "apiDescription",
28
+ "prompt": "Describe your API:",
29
+ "type": "string",
30
+ "required": false,
31
+ "default": "A custom B2C Commerce API"
32
+ },
33
+ {
34
+ "name": "cartridgeName",
35
+ "prompt": "Which cartridge should contain this API?",
36
+ "type": "string",
37
+ "required": true,
38
+ "source": "cartridges",
39
+ "pattern": "^[a-z][a-z0-9_]*$",
40
+ "validationMessage": "Cartridge name must start with a lowercase letter and contain only lowercase letters, numbers, and underscores"
41
+ },
42
+ {
43
+ "name": "includeExampleEndpoints",
44
+ "prompt": "Include example endpoints?",
45
+ "type": "boolean",
46
+ "required": false,
47
+ "default": true
48
+ }
49
+ ],
50
+ "files": [
51
+ {
52
+ "template": "schema.yaml.ejs",
53
+ "destination": "{{cartridgeNamePath}}/cartridge/rest-apis/{{apiName}}/schema.yaml"
54
+ },
55
+ {
56
+ "template": "api.json.ejs",
57
+ "destination": "{{cartridgeNamePath}}/cartridge/rest-apis/{{apiName}}/api.json"
58
+ },
59
+ {
60
+ "template": "script.js.ejs",
61
+ "destination": "{{cartridgeNamePath}}/cartridge/rest-apis/{{apiName}}/script.js"
62
+ }
63
+ ],
64
+ "postInstructions": "Custom API '<%= apiName %>' has been created in cartridge '<%= cartridgeName %>'.\n\nFiles created:\n- rest-apis/<%= apiName %>/schema.yaml (OAS 3.0 contract)\n- rest-apis/<%= apiName %>/api.json (endpoint mapping)\n- rest-apis/<%= apiName %>/script.js (implementation)\n\nNext steps:\n1. Deploy the cartridge to your instance\n2. Activate the code version to register the API\n3. The API will be available at:\n https://{shortCode}.api.commercecloud.salesforce.com/custom/<%= apiName %>/v1/organizations/{organizationId}/...\n<% if (apiType === 'shopper') { %>\nNote: Shopper APIs require the siteId query parameter and ShopperToken authentication.\n<% } else { %>\nNote: Admin APIs use AmOAuth2 authentication. Add cartridge to Business Manager site's cartridge path.\n<% } %>"
65
+ }
@@ -0,0 +1,99 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * <%= hookName %> Hook Implementation
5
+ *
6
+ * Hook point: <%= hookPoint %>
7
+ *
8
+ * @module scripts/hooks/<%= hookName %>
9
+ */
10
+
11
+ var Logger = require('dw/system/Logger');
12
+ var Status = require('dw/system/Status');
13
+
14
+ var log = Logger.getLogger('<%= hookName %>', '<%= cartridgeName %>');
15
+
16
+ <% if (hookType === 'ocapi') { %>
17
+ /**
18
+ * OCAPI Hook - Called before/after OCAPI operations
19
+ *
20
+ * @param {dw.order.Basket|dw.order.Order|Object} object - The object being processed
21
+ * @param {Object} doc - The OCAPI document
22
+ * @returns {dw.system.Status} - Status object
23
+ */
24
+ exports.<%= hookName %> = function (object, doc) {
25
+ log.info('<%= hookName %> hook called');
26
+
27
+ try {
28
+ // TODO: Implement hook logic
29
+ // - Modify doc to add/change response fields
30
+ // - Validate/modify object before processing
31
+
32
+ } catch (e) {
33
+ log.error('<%= hookName %> hook error: ' + e.message);
34
+ return new Status(
35
+ Status.ERROR,
36
+ '<%= hookName.toUpperCase() %>_ERROR',
37
+ e.message
38
+ );
39
+ }
40
+
41
+ return new Status(Status.OK);
42
+ };
43
+ <% } else if (hookType === 'scapi') { %>
44
+ /**
45
+ * SCAPI Hook - Called for Shopper API extensions
46
+ *
47
+ * @param {dw.order.Basket|dw.order.Order|Object} object - The object being processed
48
+ * @param {Object} scriptResponse - Response object to populate
49
+ * @returns {dw.system.Status} - Status object
50
+ */
51
+ exports.<%= hookName %> = function (object, scriptResponse) {
52
+ log.info('<%= hookName %> SCAPI hook called');
53
+
54
+ try {
55
+ // TODO: Implement hook logic
56
+ // - Add custom properties to scriptResponse
57
+ // - Validate/enrich the response
58
+
59
+ } catch (e) {
60
+ log.error('<%= hookName %> hook error: ' + e.message);
61
+ return new Status(
62
+ Status.ERROR,
63
+ '<%= hookName.toUpperCase() %>_ERROR',
64
+ e.message
65
+ );
66
+ }
67
+
68
+ return new Status(Status.OK);
69
+ };
70
+ <% } else { %>
71
+ /**
72
+ * System Hook Implementation
73
+ *
74
+ * @param {dw.order.Basket|dw.order.Order|dw.customer.Customer|Object} object - The object being processed
75
+ * @returns {dw.system.Status} - Status object
76
+ */
77
+ exports.<%= hookName %> = function (object) {
78
+ log.info('<%= hookName %> system hook called');
79
+
80
+ try {
81
+ // TODO: Implement hook logic based on extension point
82
+ // Common extension points:
83
+ // - dw.order.calculate: Basket/order calculation
84
+ // - dw.order.createOrder: Order creation
85
+ // - dw.customer.registration: Customer registration
86
+ // - dw.extensions.applepay: Apple Pay processing
87
+
88
+ } catch (e) {
89
+ log.error('<%= hookName %> hook error: ' + e.message);
90
+ return new Status(
91
+ Status.ERROR,
92
+ '<%= hookName.toUpperCase() %>_ERROR',
93
+ e.message
94
+ );
95
+ }
96
+
97
+ return new Status(Status.OK);
98
+ };
99
+ <% } %>
@@ -0,0 +1,6 @@
1
+ [
2
+ {
3
+ "name": "<%= hookPoint %>",
4
+ "script": "./scripts/hooks/<%= hookName %>"
5
+ }
6
+ ]
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "hook",
3
+ "displayName": "Hook Implementation",
4
+ "description": "Create a hook implementation with hooks.json registration",
5
+ "category": "cartridge",
6
+ "parameters": [
7
+ {
8
+ "name": "hookName",
9
+ "prompt": "What is the hook script name?",
10
+ "type": "string",
11
+ "required": true,
12
+ "pattern": "^[a-z][a-zA-Z0-9]*$",
13
+ "validationMessage": "Hook name must be camelCase (start with lowercase letter)"
14
+ },
15
+ {
16
+ "name": "hookType",
17
+ "prompt": "What type of hook is this?",
18
+ "type": "choice",
19
+ "required": true,
20
+ "choices": [
21
+ { "value": "ocapi", "label": "OCAPI Hook (shop/data API extension)" },
22
+ { "value": "scapi", "label": "SCAPI Hook (shopper API extension)" },
23
+ { "value": "system", "label": "System Hook (order, basket, etc.)" }
24
+ ],
25
+ "default": "system"
26
+ },
27
+ {
28
+ "name": "hookPoint",
29
+ "prompt": "What is the hook extension point?",
30
+ "type": "string",
31
+ "required": true,
32
+ "source": "hook-points",
33
+ "validationMessage": "Hook point is required (e.g., dw.order.calculate, dw.ocapi.shop.order.beforePOST)"
34
+ },
35
+ {
36
+ "name": "cartridgeName",
37
+ "prompt": "Which cartridge should contain this hook?",
38
+ "type": "string",
39
+ "required": true,
40
+ "source": "cartridges",
41
+ "pattern": "^[a-z][a-z0-9_]*$",
42
+ "validationMessage": "Cartridge name must start with a lowercase letter and contain only lowercase letters, numbers, and underscores"
43
+ }
44
+ ],
45
+ "files": [
46
+ {
47
+ "template": "hook.js.ejs",
48
+ "destination": "{{cartridgeNamePath}}/cartridge/scripts/hooks/{{hookName}}.js"
49
+ }
50
+ ],
51
+ "modifications": [
52
+ {
53
+ "target": "{{cartridgeNamePath}}/cartridge/hooks.json",
54
+ "type": "json-merge",
55
+ "contentTemplate": "hooks-entry.json.ejs",
56
+ "jsonPath": "hooks"
57
+ }
58
+ ],
59
+ "postInstructions": "Hook '<%= hookName %>' has been created in '<%= cartridgeName %>'.\n\nHook point: <%= hookPoint %>\n\nNext steps:\n1. Implement the hook logic in cartridge/scripts/hooks/<%= hookName %>.js\n2. Deploy the cartridge to your instance\n3. Ensure <%= cartridgeName %> is in your cartridge path"
60
+ }
@@ -0,0 +1,136 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * <%= stepId %> Job Step (Chunk-oriented)
5
+ *
6
+ * <%= stepDescription %>
7
+ *
8
+ * Chunk-oriented steps process data in batches with automatic
9
+ * transaction handling and checkpoint/restart capability.
10
+ *
11
+ * @module scripts/jobsteps/<%= camelCase(stepId) %>
12
+ */
13
+
14
+ var Status = require('dw/system/Status');
15
+ var Logger = require('dw/system/Logger');
16
+
17
+ var log = Logger.getLogger('<%= camelCase(stepId) %>', 'job');
18
+
19
+ /**
20
+ * Read the next item to process
21
+ *
22
+ * Called repeatedly until it returns null.
23
+ *
24
+ * @param {dw.job.JobStepExecution} stepExecution - The step execution context
25
+ * @param {Object} parameters - Step parameters from job configuration
26
+ * @returns {Object|null} - The next item to process, or null when done
27
+ */
28
+ exports.read = function (stepExecution, parameters) {
29
+ // TODO: Implement your read logic
30
+ // Examples:
31
+ // - Read next product from search results
32
+ // - Read next line from file
33
+ // - Read next record from database query
34
+
35
+ // Return null to signal end of data
36
+ return null;
37
+ };
38
+
39
+ /**
40
+ * Process a single item
41
+ *
42
+ * Called for each item returned by read().
43
+ * Processing happens within a transaction.
44
+ *
45
+ * @param {Object} item - The item to process (returned by read)
46
+ * @param {dw.job.JobStepExecution} stepExecution - The step execution context
47
+ * @param {Object} parameters - Step parameters from job configuration
48
+ * @returns {Object} - The processed item (passed to write)
49
+ */
50
+ exports.process = function (item, stepExecution, parameters) {
51
+ // TODO: Implement your processing logic
52
+ // Examples:
53
+ // - Transform product data
54
+ // - Validate and enrich records
55
+ // - Calculate values
56
+
57
+ return item;
58
+ };
59
+
60
+ /**
61
+ * Write processed items
62
+ *
63
+ * Called with a chunk of processed items.
64
+ * Chunk size is configured in steptypes.json.
65
+ *
66
+ * @param {dw.util.List} items - List of processed items
67
+ * @param {dw.job.JobStepExecution} stepExecution - The step execution context
68
+ * @param {Object} parameters - Step parameters from job configuration
69
+ */
70
+ exports.write = function (items, stepExecution, parameters) {
71
+ // TODO: Implement your write logic
72
+ // Examples:
73
+ // - Write records to database
74
+ // - Export to file
75
+ // - Send to external service
76
+
77
+ log.info('Wrote ' + items.size() + ' items');
78
+ };
79
+
80
+ /**
81
+ * Called before processing begins
82
+ *
83
+ * @param {dw.job.JobStepExecution} stepExecution - The step execution context
84
+ * @param {Object} parameters - Step parameters from job configuration
85
+ */
86
+ exports.beforeStep = function (stepExecution, parameters) {
87
+ log.info('<%= stepId %> chunk step started');
88
+ // TODO: Initialize resources (file handles, connections, etc.)
89
+ };
90
+
91
+ /**
92
+ * Called after all processing is complete
93
+ *
94
+ * @param {boolean} success - Whether the step completed successfully
95
+ * @param {dw.job.JobStepExecution} stepExecution - The step execution context
96
+ * @param {Object} parameters - Step parameters from job configuration
97
+ */
98
+ exports.afterStep = function (success, stepExecution, parameters) {
99
+ // TODO: Cleanup resources
100
+ log.info('<%= stepId %> chunk step ' + (success ? 'completed' : 'failed'));
101
+ };
102
+
103
+ /**
104
+ * Called before each chunk is processed
105
+ *
106
+ * @param {dw.job.JobStepExecution} stepExecution - The step execution context
107
+ * @param {Object} parameters - Step parameters from job configuration
108
+ */
109
+ exports.beforeChunk = function (stepExecution, parameters) {
110
+ // Optional: Pre-chunk initialization
111
+ };
112
+
113
+ /**
114
+ * Called after each chunk is processed
115
+ *
116
+ * @param {boolean} success - Whether the chunk completed successfully
117
+ * @param {dw.job.JobStepExecution} stepExecution - The step execution context
118
+ * @param {Object} parameters - Step parameters from job configuration
119
+ */
120
+ exports.afterChunk = function (success, stepExecution, parameters) {
121
+ // Optional: Post-chunk cleanup or logging
122
+ };
123
+
124
+ /**
125
+ * Get the total count of items to process (optional)
126
+ *
127
+ * Used for progress tracking in Business Manager.
128
+ *
129
+ * @param {dw.job.JobStepExecution} stepExecution - The step execution context
130
+ * @param {Object} parameters - Step parameters from job configuration
131
+ * @returns {Number} - Total number of items to process
132
+ */
133
+ exports.getTotalCount = function (stepExecution, parameters) {
134
+ // TODO: Return total count if known, -1 if unknown
135
+ return -1;
136
+ };
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * <%= stepId %> Job Step (Task-oriented)
5
+ *
6
+ * <%= stepDescription %>
7
+ *
8
+ * @module scripts/jobsteps/<%= camelCase(stepId) %>
9
+ */
10
+
11
+ var Status = require('dw/system/Status');
12
+ var Logger = require('dw/system/Logger');
13
+
14
+ var log = Logger.getLogger('<%= camelCase(stepId) %>', 'job');
15
+
16
+ /**
17
+ * Execute the job step
18
+ *
19
+ * Task-oriented steps run once per job execution.
20
+ * Use for simple operations that don't need chunked processing.
21
+ *
22
+ * @param {dw.job.JobStepExecution} stepExecution - The step execution context
23
+ * @param {Object} parameters - Step parameters from job configuration
24
+ * @returns {dw.system.Status} - Execution status
25
+ */
26
+ exports.execute = function (stepExecution, parameters) {
27
+ log.info('<%= stepId %> step started');
28
+
29
+ try {
30
+ // Access job parameters
31
+ // var myParam = parameters.get('MyParameter');
32
+
33
+ // TODO: Implement your step logic here
34
+ // Examples:
35
+ // - Export data to a file
36
+ // - Call an external service
37
+ // - Update records in bulk
38
+ // - Generate reports
39
+
40
+ log.info('<%= stepId %> step completed successfully');
41
+ return new Status(Status.OK);
42
+
43
+ } catch (e) {
44
+ log.error('<%= stepId %> step failed: ' + e.message);
45
+ return new Status(Status.ERROR, 'ERROR', e.message);
46
+ }
47
+ };