@revenexx/node 0.1.0 → 0.1.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 (342) hide show
  1. package/README.md +3 -0
  2. package/dist/client.d.mts +25 -0
  3. package/dist/client.d.ts +25 -0
  4. package/dist/client.js +39 -18
  5. package/dist/client.js.map +1 -1
  6. package/dist/client.mjs +35 -14
  7. package/dist/client.mjs.map +1 -1
  8. package/dist/enums/approval-rule-approver-type.d.mts +7 -0
  9. package/dist/enums/approval-rule-approver-type.d.ts +7 -0
  10. package/dist/enums/approval-rule-approver-type.js +12 -0
  11. package/dist/enums/approval-rule-approver-type.js.map +1 -0
  12. package/dist/enums/approval-rule-approver-type.mjs +11 -0
  13. package/dist/enums/approval-rule-approver-type.mjs.map +1 -0
  14. package/dist/enums/approval-rule-condition.d.mts +10 -0
  15. package/dist/enums/approval-rule-condition.d.ts +10 -0
  16. package/dist/enums/approval-rule-condition.js +15 -0
  17. package/dist/enums/approval-rule-condition.js.map +1 -0
  18. package/dist/enums/approval-rule-condition.mjs +14 -0
  19. package/dist/enums/approval-rule-condition.mjs.map +1 -0
  20. package/dist/enums/approval-rule-create-request-approver-type.d.mts +7 -0
  21. package/dist/enums/approval-rule-create-request-approver-type.d.ts +7 -0
  22. package/dist/enums/approval-rule-create-request-approver-type.js +12 -0
  23. package/dist/enums/approval-rule-create-request-approver-type.js.map +1 -0
  24. package/dist/enums/approval-rule-create-request-approver-type.mjs +11 -0
  25. package/dist/enums/approval-rule-create-request-approver-type.mjs.map +1 -0
  26. package/dist/enums/approval-rule-create-request-condition.d.mts +10 -0
  27. package/dist/enums/approval-rule-create-request-condition.d.ts +10 -0
  28. package/dist/enums/approval-rule-create-request-condition.js +15 -0
  29. package/dist/enums/approval-rule-create-request-condition.js.map +1 -0
  30. package/dist/enums/approval-rule-create-request-condition.mjs +14 -0
  31. package/dist/enums/approval-rule-create-request-condition.mjs.map +1 -0
  32. package/dist/enums/approval-rule-create-request-effect.d.mts +7 -0
  33. package/dist/enums/approval-rule-create-request-effect.d.ts +7 -0
  34. package/dist/enums/approval-rule-create-request-effect.js +12 -0
  35. package/dist/enums/approval-rule-create-request-effect.js.map +1 -0
  36. package/dist/enums/approval-rule-create-request-effect.mjs +11 -0
  37. package/dist/enums/approval-rule-create-request-effect.mjs.map +1 -0
  38. package/dist/enums/approval-rule-effect.d.mts +7 -0
  39. package/dist/enums/approval-rule-effect.d.ts +7 -0
  40. package/dist/enums/approval-rule-effect.js +12 -0
  41. package/dist/enums/approval-rule-effect.js.map +1 -0
  42. package/dist/enums/approval-rule-effect.mjs +11 -0
  43. package/dist/enums/approval-rule-effect.mjs.map +1 -0
  44. package/dist/enums/approval-rule-update-request-approver-type.d.mts +7 -0
  45. package/dist/enums/approval-rule-update-request-approver-type.d.ts +7 -0
  46. package/dist/enums/approval-rule-update-request-approver-type.js +12 -0
  47. package/dist/enums/approval-rule-update-request-approver-type.js.map +1 -0
  48. package/dist/enums/approval-rule-update-request-approver-type.mjs +11 -0
  49. package/dist/enums/approval-rule-update-request-approver-type.mjs.map +1 -0
  50. package/dist/enums/approval-rule-update-request-condition.d.mts +10 -0
  51. package/dist/enums/approval-rule-update-request-condition.d.ts +10 -0
  52. package/dist/enums/approval-rule-update-request-condition.js +15 -0
  53. package/dist/enums/approval-rule-update-request-condition.js.map +1 -0
  54. package/dist/enums/approval-rule-update-request-condition.mjs +14 -0
  55. package/dist/enums/approval-rule-update-request-condition.mjs.map +1 -0
  56. package/dist/enums/approval-rule-update-request-effect.d.mts +7 -0
  57. package/dist/enums/approval-rule-update-request-effect.d.ts +7 -0
  58. package/dist/enums/approval-rule-update-request-effect.js +12 -0
  59. package/dist/enums/approval-rule-update-request-effect.js.map +1 -0
  60. package/dist/enums/approval-rule-update-request-effect.mjs +11 -0
  61. package/dist/enums/approval-rule-update-request-effect.mjs.map +1 -0
  62. package/dist/enums/approver-type.d.mts +7 -0
  63. package/dist/enums/approver-type.d.ts +7 -0
  64. package/dist/enums/approver-type.js +12 -0
  65. package/dist/enums/approver-type.js.map +1 -0
  66. package/dist/enums/approver-type.mjs +11 -0
  67. package/dist/enums/approver-type.mjs.map +1 -0
  68. package/dist/enums/condition.d.mts +10 -0
  69. package/dist/enums/condition.d.ts +10 -0
  70. package/dist/enums/condition.js +15 -0
  71. package/dist/enums/condition.js.map +1 -0
  72. package/dist/enums/condition.mjs +14 -0
  73. package/dist/enums/condition.mjs.map +1 -0
  74. package/dist/enums/effect.d.mts +7 -0
  75. package/dist/enums/effect.d.ts +7 -0
  76. package/dist/enums/effect.js +12 -0
  77. package/dist/enums/effect.js.map +1 -0
  78. package/dist/enums/effect.mjs +11 -0
  79. package/dist/enums/effect.mjs.map +1 -0
  80. package/dist/enums/pending-approval-approver-type.d.mts +7 -0
  81. package/dist/enums/pending-approval-approver-type.d.ts +7 -0
  82. package/dist/enums/pending-approval-approver-type.js +12 -0
  83. package/dist/enums/pending-approval-approver-type.js.map +1 -0
  84. package/dist/enums/pending-approval-approver-type.mjs +11 -0
  85. package/dist/enums/pending-approval-approver-type.mjs.map +1 -0
  86. package/dist/enums/pending-approval-status.d.mts +7 -0
  87. package/dist/enums/pending-approval-status.d.ts +7 -0
  88. package/dist/enums/pending-approval-status.js +12 -0
  89. package/dist/enums/pending-approval-status.js.map +1 -0
  90. package/dist/enums/pending-approval-status.mjs +11 -0
  91. package/dist/enums/pending-approval-status.mjs.map +1 -0
  92. package/dist/enums/procurement-purchase-request-items-create-type.d.mts +7 -0
  93. package/dist/enums/procurement-purchase-request-items-create-type.d.ts +7 -0
  94. package/dist/enums/procurement-purchase-request-items-create-type.js +12 -0
  95. package/dist/enums/procurement-purchase-request-items-create-type.js.map +1 -0
  96. package/dist/enums/procurement-purchase-request-items-create-type.mjs +11 -0
  97. package/dist/enums/procurement-purchase-request-items-create-type.mjs.map +1 -0
  98. package/dist/enums/purchase-request-event-name.d.mts +12 -0
  99. package/dist/enums/purchase-request-event-name.d.ts +12 -0
  100. package/dist/enums/purchase-request-event-name.js +17 -0
  101. package/dist/enums/purchase-request-event-name.js.map +1 -0
  102. package/dist/enums/purchase-request-event-name.mjs +16 -0
  103. package/dist/enums/purchase-request-event-name.mjs.map +1 -0
  104. package/dist/enums/purchase-request-item-create-request-type.d.mts +7 -0
  105. package/dist/enums/purchase-request-item-create-request-type.d.ts +7 -0
  106. package/dist/enums/purchase-request-item-create-request-type.js +12 -0
  107. package/dist/enums/purchase-request-item-create-request-type.js.map +1 -0
  108. package/dist/enums/purchase-request-item-create-request-type.mjs +11 -0
  109. package/dist/enums/purchase-request-item-create-request-type.mjs.map +1 -0
  110. package/dist/enums/purchase-request-item-type.d.mts +7 -0
  111. package/dist/enums/purchase-request-item-type.d.ts +7 -0
  112. package/dist/enums/purchase-request-item-type.js +12 -0
  113. package/dist/enums/purchase-request-item-type.js.map +1 -0
  114. package/dist/enums/purchase-request-item-type.mjs +11 -0
  115. package/dist/enums/purchase-request-item-type.mjs.map +1 -0
  116. package/dist/enums/purchase-request-item-update-request-type.d.mts +7 -0
  117. package/dist/enums/purchase-request-item-update-request-type.d.ts +7 -0
  118. package/dist/enums/purchase-request-item-update-request-type.js +12 -0
  119. package/dist/enums/purchase-request-item-update-request-type.js.map +1 -0
  120. package/dist/enums/purchase-request-item-update-request-type.mjs +11 -0
  121. package/dist/enums/purchase-request-item-update-request-type.mjs.map +1 -0
  122. package/dist/enums/purchase-request-status.d.mts +9 -0
  123. package/dist/enums/purchase-request-status.d.ts +9 -0
  124. package/dist/enums/purchase-request-status.js +14 -0
  125. package/dist/enums/purchase-request-status.js.map +1 -0
  126. package/dist/enums/purchase-request-status.mjs +13 -0
  127. package/dist/enums/purchase-request-status.mjs.map +1 -0
  128. package/dist/enums/submit-item-type.d.mts +7 -0
  129. package/dist/enums/submit-item-type.d.ts +7 -0
  130. package/dist/enums/submit-item-type.js +12 -0
  131. package/dist/enums/submit-item-type.js.map +1 -0
  132. package/dist/enums/submit-item-type.mjs +11 -0
  133. package/dist/enums/submit-item-type.mjs.map +1 -0
  134. package/dist/enums/submit-result-outcome.d.mts +9 -0
  135. package/dist/enums/submit-result-outcome.d.ts +9 -0
  136. package/dist/enums/submit-result-outcome.js +14 -0
  137. package/dist/enums/submit-result-outcome.js.map +1 -0
  138. package/dist/enums/submit-result-outcome.mjs +13 -0
  139. package/dist/enums/submit-result-outcome.mjs.map +1 -0
  140. package/dist/index.d.mts +23 -0
  141. package/dist/index.d.ts +23 -0
  142. package/dist/index.js +115 -0
  143. package/dist/index.js.map +1 -1
  144. package/dist/index.mjs +23 -0
  145. package/dist/index.mjs.map +1 -1
  146. package/dist/inputFile.js +1 -2
  147. package/dist/inputFile.js.map +1 -1
  148. package/dist/inputFile.mjs +0 -1
  149. package/dist/inputFile.mjs.map +1 -1
  150. package/dist/models.d.mts +1027 -36
  151. package/dist/models.d.ts +1027 -36
  152. package/dist/operator.js +243 -204
  153. package/dist/operator.js.map +1 -1
  154. package/dist/operator.mjs +242 -203
  155. package/dist/operator.mjs.map +1 -1
  156. package/dist/permission.js +58 -48
  157. package/dist/permission.js.map +1 -1
  158. package/dist/permission.mjs +58 -48
  159. package/dist/permission.mjs.map +1 -1
  160. package/dist/query.js +525 -422
  161. package/dist/query.js.map +1 -1
  162. package/dist/query.mjs +524 -421
  163. package/dist/query.mjs.map +1 -1
  164. package/dist/services/apps.d.mts +18 -0
  165. package/dist/services/apps.d.ts +18 -0
  166. package/dist/services/avatars.d.mts +18 -0
  167. package/dist/services/avatars.d.ts +18 -0
  168. package/dist/services/carts-io.d.mts +46 -28
  169. package/dist/services/carts-io.d.ts +46 -28
  170. package/dist/services/carts-io.js.map +1 -1
  171. package/dist/services/carts-io.mjs.map +1 -1
  172. package/dist/services/carts-items.d.mts +42 -24
  173. package/dist/services/carts-items.d.ts +42 -24
  174. package/dist/services/carts-items.js.map +1 -1
  175. package/dist/services/carts-items.mjs.map +1 -1
  176. package/dist/services/carts.d.mts +70 -52
  177. package/dist/services/carts.d.ts +70 -52
  178. package/dist/services/carts.js.map +1 -1
  179. package/dist/services/carts.mjs.map +1 -1
  180. package/dist/services/channels.d.mts +64 -46
  181. package/dist/services/channels.d.ts +64 -46
  182. package/dist/services/channels.js +1 -1
  183. package/dist/services/channels.js.map +1 -1
  184. package/dist/services/channels.mjs +1 -1
  185. package/dist/services/channels.mjs.map +1 -1
  186. package/dist/services/cost-centers.d.mts +18 -0
  187. package/dist/services/cost-centers.d.ts +18 -0
  188. package/dist/services/customers-contacts.d.mts +62 -44
  189. package/dist/services/customers-contacts.d.ts +62 -44
  190. package/dist/services/customers-contacts.js.map +1 -1
  191. package/dist/services/customers-contacts.mjs.map +1 -1
  192. package/dist/services/customers-organizations.d.mts +58 -40
  193. package/dist/services/customers-organizations.d.ts +58 -40
  194. package/dist/services/customers-organizations.js.map +1 -1
  195. package/dist/services/customers-organizations.mjs.map +1 -1
  196. package/dist/services/customers-roles.d.mts +26 -8
  197. package/dist/services/customers-roles.d.ts +26 -8
  198. package/dist/services/customers-roles.js.map +1 -1
  199. package/dist/services/customers-roles.mjs.map +1 -1
  200. package/dist/services/customers-segments.d.mts +62 -44
  201. package/dist/services/customers-segments.d.ts +62 -44
  202. package/dist/services/customers-segments.js.map +1 -1
  203. package/dist/services/customers-segments.mjs.map +1 -1
  204. package/dist/services/customers-value-lists.d.mts +90 -72
  205. package/dist/services/customers-value-lists.d.ts +90 -72
  206. package/dist/services/customers-value-lists.js.map +1 -1
  207. package/dist/services/customers-value-lists.mjs.map +1 -1
  208. package/dist/services/customers.d.mts +78 -60
  209. package/dist/services/customers.d.ts +78 -60
  210. package/dist/services/customers.js.map +1 -1
  211. package/dist/services/customers.mjs.map +1 -1
  212. package/dist/services/events.d.mts +18 -0
  213. package/dist/services/events.d.ts +18 -0
  214. package/dist/services/forms.d.mts +66 -48
  215. package/dist/services/forms.d.ts +66 -48
  216. package/dist/services/forms.js.map +1 -1
  217. package/dist/services/forms.mjs.map +1 -1
  218. package/dist/services/health.d.mts +18 -0
  219. package/dist/services/health.d.ts +18 -0
  220. package/dist/services/inventories-locations.d.mts +38 -20
  221. package/dist/services/inventories-locations.d.ts +38 -20
  222. package/dist/services/inventories-locations.js.map +1 -1
  223. package/dist/services/inventories-locations.mjs.map +1 -1
  224. package/dist/services/inventories-reservations.d.mts +38 -20
  225. package/dist/services/inventories-reservations.d.ts +38 -20
  226. package/dist/services/inventories-reservations.js.map +1 -1
  227. package/dist/services/inventories-reservations.mjs.map +1 -1
  228. package/dist/services/inventories-stock.d.mts +70 -52
  229. package/dist/services/inventories-stock.d.ts +70 -52
  230. package/dist/services/inventories-stock.js.map +1 -1
  231. package/dist/services/inventories-stock.mjs.map +1 -1
  232. package/dist/services/io.d.mts +66 -48
  233. package/dist/services/io.d.ts +66 -48
  234. package/dist/services/io.js +2 -2
  235. package/dist/services/io.js.map +1 -1
  236. package/dist/services/io.mjs +2 -2
  237. package/dist/services/io.mjs.map +1 -1
  238. package/dist/services/locale.d.mts +18 -0
  239. package/dist/services/locale.d.ts +18 -0
  240. package/dist/services/markets.d.mts +122 -104
  241. package/dist/services/markets.d.ts +122 -104
  242. package/dist/services/markets.js.map +1 -1
  243. package/dist/services/markets.mjs.map +1 -1
  244. package/dist/services/messaging.d.mts +194 -176
  245. package/dist/services/messaging.d.ts +194 -176
  246. package/dist/services/messaging.js +3 -3
  247. package/dist/services/messaging.js.map +1 -1
  248. package/dist/services/messaging.mjs +3 -3
  249. package/dist/services/messaging.mjs.map +1 -1
  250. package/dist/services/orderlists.d.mts +96 -78
  251. package/dist/services/orderlists.d.ts +96 -78
  252. package/dist/services/orderlists.js +1 -1
  253. package/dist/services/orderlists.js.map +1 -1
  254. package/dist/services/orderlists.mjs +1 -1
  255. package/dist/services/orderlists.mjs.map +1 -1
  256. package/dist/services/orders.d.mts +114 -96
  257. package/dist/services/orders.d.ts +114 -96
  258. package/dist/services/orders.js.map +1 -1
  259. package/dist/services/orders.mjs.map +1 -1
  260. package/dist/services/pages-collaboration.d.mts +34 -16
  261. package/dist/services/pages-collaboration.d.ts +34 -16
  262. package/dist/services/pages-collaboration.js.map +1 -1
  263. package/dist/services/pages-collaboration.mjs.map +1 -1
  264. package/dist/services/pages-delivery.d.mts +26 -8
  265. package/dist/services/pages-delivery.d.ts +26 -8
  266. package/dist/services/pages-delivery.js.map +1 -1
  267. package/dist/services/pages-delivery.mjs.map +1 -1
  268. package/dist/services/pages-editor.d.mts +34 -16
  269. package/dist/services/pages-editor.d.ts +34 -16
  270. package/dist/services/pages-editor.js.map +1 -1
  271. package/dist/services/pages-editor.mjs.map +1 -1
  272. package/dist/services/pages.d.mts +82 -64
  273. package/dist/services/pages.d.ts +82 -64
  274. package/dist/services/pages.js.map +1 -1
  275. package/dist/services/pages.mjs.map +1 -1
  276. package/dist/services/payments-ledger.d.mts +54 -36
  277. package/dist/services/payments-ledger.d.ts +54 -36
  278. package/dist/services/payments-ledger.js.map +1 -1
  279. package/dist/services/payments-ledger.mjs.map +1 -1
  280. package/dist/services/payments-methods.d.mts +34 -16
  281. package/dist/services/payments-methods.d.ts +34 -16
  282. package/dist/services/payments-methods.js.map +1 -1
  283. package/dist/services/payments-methods.mjs.map +1 -1
  284. package/dist/services/payments-providers.d.mts +38 -20
  285. package/dist/services/payments-providers.d.ts +38 -20
  286. package/dist/services/payments-providers.js.map +1 -1
  287. package/dist/services/payments-providers.mjs.map +1 -1
  288. package/dist/services/prices.d.mts +86 -68
  289. package/dist/services/prices.d.ts +86 -68
  290. package/dist/services/prices.js.map +1 -1
  291. package/dist/services/prices.mjs.map +1 -1
  292. package/dist/services/procurement.d.mts +991 -0
  293. package/dist/services/procurement.d.ts +991 -0
  294. package/dist/services/procurement.js +1185 -0
  295. package/dist/services/procurement.js.map +1 -0
  296. package/dist/services/procurement.mjs +1184 -0
  297. package/dist/services/procurement.mjs.map +1 -0
  298. package/dist/services/products-assets.d.mts +34 -16
  299. package/dist/services/products-assets.d.ts +34 -16
  300. package/dist/services/products-assets.js.map +1 -1
  301. package/dist/services/products-assets.mjs.map +1 -1
  302. package/dist/services/products-categories.d.mts +66 -48
  303. package/dist/services/products-categories.d.ts +66 -48
  304. package/dist/services/products-categories.js.map +1 -1
  305. package/dist/services/products-categories.mjs.map +1 -1
  306. package/dist/services/products-data-model.d.mts +166 -148
  307. package/dist/services/products-data-model.d.ts +166 -148
  308. package/dist/services/products-data-model.js.map +1 -1
  309. package/dist/services/products-data-model.mjs.map +1 -1
  310. package/dist/services/products-references.d.mts +50 -32
  311. package/dist/services/products-references.d.ts +50 -32
  312. package/dist/services/products-references.js.map +1 -1
  313. package/dist/services/products-references.mjs.map +1 -1
  314. package/dist/services/products.d.mts +70 -52
  315. package/dist/services/products.d.ts +70 -52
  316. package/dist/services/products.js.map +1 -1
  317. package/dist/services/products.mjs.map +1 -1
  318. package/dist/services/search.d.mts +40 -22
  319. package/dist/services/search.d.ts +40 -22
  320. package/dist/services/search.js +1 -1
  321. package/dist/services/search.js.map +1 -1
  322. package/dist/services/search.mjs +1 -1
  323. package/dist/services/search.mjs.map +1 -1
  324. package/dist/services/settings.d.mts +18 -0
  325. package/dist/services/settings.d.ts +18 -0
  326. package/dist/services/shipping-carriers.d.mts +42 -24
  327. package/dist/services/shipping-carriers.d.ts +42 -24
  328. package/dist/services/shipping-carriers.js.map +1 -1
  329. package/dist/services/shipping-carriers.mjs.map +1 -1
  330. package/dist/services/shipping-methods.d.mts +70 -52
  331. package/dist/services/shipping-methods.d.ts +70 -52
  332. package/dist/services/shipping-methods.js.map +1 -1
  333. package/dist/services/shipping-methods.mjs.map +1 -1
  334. package/dist/services/shipping-value-lists.d.mts +62 -44
  335. package/dist/services/shipping-value-lists.d.ts +62 -44
  336. package/dist/services/shipping-value-lists.js.map +1 -1
  337. package/dist/services/shipping-value-lists.mjs.map +1 -1
  338. package/dist/services/sites.d.mts +18 -0
  339. package/dist/services/sites.d.ts +18 -0
  340. package/dist/services/storage.d.mts +18 -0
  341. package/dist/services/storage.d.ts +18 -0
  342. package/package.json +6 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/services/customers-contacts.ts"],"names":[],"mappings":"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","sourcesContent":["import { RevenexxException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\n\nimport { Status } from '../enums/status';\nimport { RegistrationStatus } from '../enums/registration-status';\nimport { CustomersContactsCreateRegistrationStatus } from '../enums/customers-contacts-create-registration-status';\nimport { ContactStatus } from '../enums/contact-status';\nimport { ContactActivityKind } from '../enums/contact-activity-kind';\n\nexport class CustomersContacts {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * A contact event is one entry on a customer's timeline: an activity somebody logged (a call, a visit, a meeting, a note) or a registration decision this app recorded itself. Every entry is keyed by a CONTACT and stamped with the organization derived from that contact, so a company's history is one indexed read rather than a join. Append-only — there is no update and no delete, which is what makes it usable as evidence. The activity feed, filtered by whichever column the question needs: `contact_id` for one person, `organization_id` for a whole company, `kind` for one type of activity. `kind: \"system\"` is this app's own registration decision trail (`registration.submitted` / `.approved` / `.rejected`), and no caller may file one of those. Paged with `limit`/`offset`/`order`; newest first is `order=occurred_at.desc`.\n *\n * @param {string} params.id - Filter to rows whose `id` is exactly this value. Primary key of the timeline entry.\n * @param {string} params.contactId - Filter to one person's timeline.\n * @param {string} params.organizationId - Filter to one company timeline — the whole history, without fanning out over its people.\n * @param {string} params.kind - Filter by entry kind. One of the tenant's own activity types (GET /customers/contact-event-kinds); 'system' is the registration decision trail and is the one a caller may not file.\n * @param {string} params.name - Filter by event name — registration.submitted | registration.approved | registration.rejected | activity.<kind>. This one IS this app's own vocabulary, not the tenant's.\n * @param {string} params.subject - Filter to rows whose `subject` is exactly this value. One line a person can scan in a timeline. Required for an activity; a decision row carries the app's own wording.\n * @param {string} params.actor - Filter to rows whose `actor` is exactly this value. Who logged the entry — free text as the client supplied it (operator id or email). Null for a row the app wrote itself.\n * @param {string} params.occurredAt - Exact timestamp equality on when it happened — there is no range filter on this API. Use `order=occurred_at.desc` with limit/offset to walk a timeline.\n * @param {string} params.createdAt - Exact timestamp equality — this API has no range filter. To bound a period, sort with `order` and page. When the row was written. Together with `occurred_at` this is what tells a late entry from a live one.\n * @param {number} params.limit - Page size (default 50, max 200).\n * @param {number} params.offset - Row offset for pagination (default 0).\n * @param {string} params.order - Sort by one column: 'column' | 'column.asc' | 'column.desc'. A bare column sorts ascending. Anything else is refused with 400.\n * @throws {RevenexxException}\n * @returns {Promise<{}>}\n */\n customersContactEventsList(params?: { id?: string, contactId?: string, organizationId?: string, kind?: string, name?: string, subject?: string, actor?: string, occurredAt?: string, createdAt?: string, limit?: number, offset?: number, order?: string }): Promise<{}>;\n /**\n * A contact event is one entry on a customer's timeline: an activity somebody logged (a call, a visit, a meeting, a note) or a registration decision this app recorded itself. Every entry is keyed by a CONTACT and stamped with the organization derived from that contact, so a company's history is one indexed read rather than a join. Append-only — there is no update and no delete, which is what makes it usable as evidence. The activity feed, filtered by whichever column the question needs: `contact_id` for one person, `organization_id` for a whole company, `kind` for one type of activity. `kind: \"system\"` is this app's own registration decision trail (`registration.submitted` / `.approved` / `.rejected`), and no caller may file one of those. Paged with `limit`/`offset`/`order`; newest first is `order=occurred_at.desc`.\n *\n * @param {string} id - Filter to rows whose `id` is exactly this value. Primary key of the timeline entry.\n * @param {string} contactId - Filter to one person's timeline.\n * @param {string} organizationId - Filter to one company timeline — the whole history, without fanning out over its people.\n * @param {string} kind - Filter by entry kind. One of the tenant's own activity types (GET /customers/contact-event-kinds); 'system' is the registration decision trail and is the one a caller may not file.\n * @param {string} name - Filter by event name — registration.submitted | registration.approved | registration.rejected | activity.<kind>. This one IS this app's own vocabulary, not the tenant's.\n * @param {string} subject - Filter to rows whose `subject` is exactly this value. One line a person can scan in a timeline. Required for an activity; a decision row carries the app's own wording.\n * @param {string} actor - Filter to rows whose `actor` is exactly this value. Who logged the entry — free text as the client supplied it (operator id or email). Null for a row the app wrote itself.\n * @param {string} occurredAt - Exact timestamp equality on when it happened — there is no range filter on this API. Use `order=occurred_at.desc` with limit/offset to walk a timeline.\n * @param {string} createdAt - Exact timestamp equality — this API has no range filter. To bound a period, sort with `order` and page. When the row was written. Together with `occurred_at` this is what tells a late entry from a live one.\n * @param {number} limit - Page size (default 50, max 200).\n * @param {number} offset - Row offset for pagination (default 0).\n * @param {string} order - Sort by one column: 'column' | 'column.asc' | 'column.desc'. A bare column sorts ascending. Anything else is refused with 400.\n * @throws {RevenexxException}\n * @returns {Promise<{}>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactEventsList(id?: string, contactId?: string, organizationId?: string, kind?: string, name?: string, subject?: string, actor?: string, occurredAt?: string, createdAt?: string, limit?: number, offset?: number, order?: string): Promise<{}>;\n customersContactEventsList(\n paramsOrFirst?: { id?: string, contactId?: string, organizationId?: string, kind?: string, name?: string, subject?: string, actor?: string, occurredAt?: string, createdAt?: string, limit?: number, offset?: number, order?: string } | string,\n ...rest: [(string)?, (string)?, (string)?, (string)?, (string)?, (string)?, (string)?, (string)?, (number)?, (number)?, (string)?] \n ): Promise<{}> {\n let params: { id?: string, contactId?: string, organizationId?: string, kind?: string, name?: string, subject?: string, actor?: string, occurredAt?: string, createdAt?: string, limit?: number, offset?: number, order?: string };\n \n if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { id?: string, contactId?: string, organizationId?: string, kind?: string, name?: string, subject?: string, actor?: string, occurredAt?: string, createdAt?: string, limit?: number, offset?: number, order?: string };\n } else {\n params = {\n id: paramsOrFirst as string,\n contactId: rest[0] as string,\n organizationId: rest[1] as string,\n kind: rest[2] as string,\n name: rest[3] as string,\n subject: rest[4] as string,\n actor: rest[5] as string,\n occurredAt: rest[6] as string,\n createdAt: rest[7] as string,\n limit: rest[8] as number,\n offset: rest[9] as number,\n order: rest[10] as string \n };\n }\n \n const id = params.id;\n const contactId = params.contactId;\n const organizationId = params.organizationId;\n const kind = params.kind;\n const name = params.name;\n const subject = params.subject;\n const actor = params.actor;\n const occurredAt = params.occurredAt;\n const createdAt = params.createdAt;\n const limit = params.limit;\n const offset = params.offset;\n const order = params.order;\n\n\n const apiPath = '/v1/customers/contact_events';\n const apiPayload: Payload = {};\n if (typeof id !== 'undefined') {\n apiPayload['id'] = id;\n }\n if (typeof contactId !== 'undefined') {\n apiPayload['contact_id'] = contactId;\n }\n if (typeof organizationId !== 'undefined') {\n apiPayload['organization_id'] = organizationId;\n }\n if (typeof kind !== 'undefined') {\n apiPayload['kind'] = kind;\n }\n if (typeof name !== 'undefined') {\n apiPayload['name'] = name;\n }\n if (typeof subject !== 'undefined') {\n apiPayload['subject'] = subject;\n }\n if (typeof actor !== 'undefined') {\n apiPayload['actor'] = actor;\n }\n if (typeof occurredAt !== 'undefined') {\n apiPayload['occurred_at'] = occurredAt;\n }\n if (typeof createdAt !== 'undefined') {\n apiPayload['created_at'] = createdAt;\n }\n if (typeof limit !== 'undefined') {\n apiPayload['limit'] = limit;\n }\n if (typeof offset !== 'undefined') {\n apiPayload['offset'] = offset;\n }\n if (typeof order !== 'undefined') {\n apiPayload['order'] = order;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * A contact event is one entry on a customer's timeline: an activity somebody logged (a call, a visit, a meeting, a note) or a registration decision this app recorded itself. Every entry is keyed by a CONTACT and stamped with the organization derived from that contact, so a company's history is one indexed read rather than a join. Append-only — there is no update and no delete, which is what makes it usable as evidence. One timeline entry by id, as it was written. Entries are never edited, so what this answers is what was recorded at the time.\n *\n * @param {string} params.id - The contact event to read.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n */\n customersContactEventsGet(params: { id: string }): Promise<Models.Error>;\n /**\n * A contact event is one entry on a customer's timeline: an activity somebody logged (a call, a visit, a meeting, a note) or a registration decision this app recorded itself. Every entry is keyed by a CONTACT and stamped with the organization derived from that contact, so a company's history is one indexed read rather than a join. Append-only — there is no update and no delete, which is what makes it usable as evidence. One timeline entry by id, as it was written. Entries are never edited, so what this answers is what was recorded at the time.\n *\n * @param {string} id - The contact event to read.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactEventsGet(id: string): Promise<Models.Error>;\n customersContactEventsGet(\n paramsOrFirst: { id: string } | string \n ): Promise<Models.Error> {\n let params: { id: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { id: string };\n } else {\n params = {\n id: paramsOrFirst as string \n };\n }\n \n const id = params.id;\n\n if (typeof id === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"id\"');\n }\n\n const apiPath = '/v1/customers/contact_events/{id}'.replace('{id}', id);\n const apiPayload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. The people list, and the read behind an approval queue: `registration_status=pending` is every application waiting for a decision. Every column is a filter — `external_user_id` in particular is how a storefront turns a platform auth id back into a customer — and the page is `limit`/`offset`/`order`.\n *\n * @param {string} params.id - Filter to exactly one person.\n * @param {string} params.organizationId - Filter to one company's people. The company address book.\n * @param {string} params.email - Filter by exact email — the one lookup that is guaranteed to return at most one person, because the address is unique per tenant.\n * @param {string} params.firstName - Filter to rows whose `first_name` is exactly this value. Given name. Optional: an ERP import often has only a mailbox.\n * @param {string} params.lastName - Filter to rows whose `last_name` is exactly this value. Family name. Optional for the same reason.\n * @param {string} params.phone - Filter to rows whose `phone` is exactly this value. Direct number of this person, as somebody typed it — free text, no format is enforced or normalized. E.164 is what an integration should send.\n * @param {string} params.jobTitle - Filter to rows whose `job_title` is exactly this value. What this person does at the company — free text on purpose, because it is a title and not a grant. The permission ladder is `role`; overloading a job title with authority silently un-grants everyone the day the ledger is enforced.\n * @param {string} params.role - Filter by role. One of the tenant's own roles (GET /customers/roles) — a tenant that never edited the ledger has viewer, requester, buyer, approver, admin.\n * @param {Status} params.status - Filter by status.\n * @param {number} params.orderApprovalLimit - Filter to rows whose `order_approval_limit` is exactly this value. Amount ceiling for this person, in the market's currency: with the `orders.approve` permission it is the most they may sign off. Null means no ceiling. An amount, never a grant — the grant comes from the role.\n * @param {RegistrationStatus} params.registrationStatus - Filter by registration state. `pending` IS the approval inbox — there is no second entity for it.\n * @param {string} params.registrationDecidedAt - Exact timestamp equality — this API has no range filter. To bound a period, sort with `order` and page. When a merchant approved or rejected the application. Null while nobody has decided.\n * @param {string} params.registrationDecidedBy - Filter to rows whose `registration_decided_by` is exactly this value. Who decided — free text as the deciding client supplied it (an operator id or an email address), not a resolvable user reference.\n * @param {string} params.registrationReason - Filter to rows whose `registration_reason` is exactly this value. Why the application was declined. Always recorded here; whether the APPLICANT is ever told it is the tenant's `registration_reason_disclosed` setting, because that is a legal decision and not a template one.\n * @param {string} params.locale - Filter to rows whose `locale` is exactly this value. The language this person is written to in — BCP 47, and one of the store's configured locales. Null falls back to the store default.\n * @param {boolean} params.isPrimary - Filter to the primary contacts — with `organization_id`, the one person a merchant calls first at that company.\n * @param {string} params.externalUserId - Find the contact behind a platform user id. What a storefront session resolves with when it has an auth id and needs the customer record.\n * @param {string} params.createdAt - Exact timestamp equality — this API has no range filter. To bound a period, sort with `order` and page. When this person record was created in this app.\n * @param {string} params.updatedAt - Exact timestamp equality — this API has no range filter. To bound a period, sort with `order` and page. When any column of this row last changed.\n * @param {number} params.limit - Page size (default 50, max 200).\n * @param {number} params.offset - Row offset for pagination (default 0).\n * @param {string} params.order - Sort by one column: 'column' | 'column.asc' | 'column.desc'. A bare column sorts ascending. Anything else is refused with 400.\n * @throws {RevenexxException}\n * @returns {Promise<{}>}\n */\n customersContactsList(params?: { id?: string, organizationId?: string, email?: string, firstName?: string, lastName?: string, phone?: string, jobTitle?: string, role?: string, status?: Status, orderApprovalLimit?: number, registrationStatus?: RegistrationStatus, registrationDecidedAt?: string, registrationDecidedBy?: string, registrationReason?: string, locale?: string, isPrimary?: boolean, externalUserId?: string, createdAt?: string, updatedAt?: string, limit?: number, offset?: number, order?: string }): Promise<{}>;\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. The people list, and the read behind an approval queue: `registration_status=pending` is every application waiting for a decision. Every column is a filter — `external_user_id` in particular is how a storefront turns a platform auth id back into a customer — and the page is `limit`/`offset`/`order`.\n *\n * @param {string} id - Filter to exactly one person.\n * @param {string} organizationId - Filter to one company's people. The company address book.\n * @param {string} email - Filter by exact email — the one lookup that is guaranteed to return at most one person, because the address is unique per tenant.\n * @param {string} firstName - Filter to rows whose `first_name` is exactly this value. Given name. Optional: an ERP import often has only a mailbox.\n * @param {string} lastName - Filter to rows whose `last_name` is exactly this value. Family name. Optional for the same reason.\n * @param {string} phone - Filter to rows whose `phone` is exactly this value. Direct number of this person, as somebody typed it — free text, no format is enforced or normalized. E.164 is what an integration should send.\n * @param {string} jobTitle - Filter to rows whose `job_title` is exactly this value. What this person does at the company — free text on purpose, because it is a title and not a grant. The permission ladder is `role`; overloading a job title with authority silently un-grants everyone the day the ledger is enforced.\n * @param {string} role - Filter by role. One of the tenant's own roles (GET /customers/roles) — a tenant that never edited the ledger has viewer, requester, buyer, approver, admin.\n * @param {Status} status - Filter by status.\n * @param {number} orderApprovalLimit - Filter to rows whose `order_approval_limit` is exactly this value. Amount ceiling for this person, in the market's currency: with the `orders.approve` permission it is the most they may sign off. Null means no ceiling. An amount, never a grant — the grant comes from the role.\n * @param {RegistrationStatus} registrationStatus - Filter by registration state. `pending` IS the approval inbox — there is no second entity for it.\n * @param {string} registrationDecidedAt - Exact timestamp equality — this API has no range filter. To bound a period, sort with `order` and page. When a merchant approved or rejected the application. Null while nobody has decided.\n * @param {string} registrationDecidedBy - Filter to rows whose `registration_decided_by` is exactly this value. Who decided — free text as the deciding client supplied it (an operator id or an email address), not a resolvable user reference.\n * @param {string} registrationReason - Filter to rows whose `registration_reason` is exactly this value. Why the application was declined. Always recorded here; whether the APPLICANT is ever told it is the tenant's `registration_reason_disclosed` setting, because that is a legal decision and not a template one.\n * @param {string} locale - Filter to rows whose `locale` is exactly this value. The language this person is written to in — BCP 47, and one of the store's configured locales. Null falls back to the store default.\n * @param {boolean} isPrimary - Filter to the primary contacts — with `organization_id`, the one person a merchant calls first at that company.\n * @param {string} externalUserId - Find the contact behind a platform user id. What a storefront session resolves with when it has an auth id and needs the customer record.\n * @param {string} createdAt - Exact timestamp equality — this API has no range filter. To bound a period, sort with `order` and page. When this person record was created in this app.\n * @param {string} updatedAt - Exact timestamp equality — this API has no range filter. To bound a period, sort with `order` and page. When any column of this row last changed.\n * @param {number} limit - Page size (default 50, max 200).\n * @param {number} offset - Row offset for pagination (default 0).\n * @param {string} order - Sort by one column: 'column' | 'column.asc' | 'column.desc'. A bare column sorts ascending. Anything else is refused with 400.\n * @throws {RevenexxException}\n * @returns {Promise<{}>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactsList(id?: string, organizationId?: string, email?: string, firstName?: string, lastName?: string, phone?: string, jobTitle?: string, role?: string, status?: Status, orderApprovalLimit?: number, registrationStatus?: RegistrationStatus, registrationDecidedAt?: string, registrationDecidedBy?: string, registrationReason?: string, locale?: string, isPrimary?: boolean, externalUserId?: string, createdAt?: string, updatedAt?: string, limit?: number, offset?: number, order?: string): Promise<{}>;\n customersContactsList(\n paramsOrFirst?: { id?: string, organizationId?: string, email?: string, firstName?: string, lastName?: string, phone?: string, jobTitle?: string, role?: string, status?: Status, orderApprovalLimit?: number, registrationStatus?: RegistrationStatus, registrationDecidedAt?: string, registrationDecidedBy?: string, registrationReason?: string, locale?: string, isPrimary?: boolean, externalUserId?: string, createdAt?: string, updatedAt?: string, limit?: number, offset?: number, order?: string } | string,\n ...rest: [(string)?, (string)?, (string)?, (string)?, (string)?, (string)?, (string)?, (Status)?, (number)?, (RegistrationStatus)?, (string)?, (string)?, (string)?, (string)?, (boolean)?, (string)?, (string)?, (string)?, (number)?, (number)?, (string)?] \n ): Promise<{}> {\n let params: { id?: string, organizationId?: string, email?: string, firstName?: string, lastName?: string, phone?: string, jobTitle?: string, role?: string, status?: Status, orderApprovalLimit?: number, registrationStatus?: RegistrationStatus, registrationDecidedAt?: string, registrationDecidedBy?: string, registrationReason?: string, locale?: string, isPrimary?: boolean, externalUserId?: string, createdAt?: string, updatedAt?: string, limit?: number, offset?: number, order?: string };\n \n if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { id?: string, organizationId?: string, email?: string, firstName?: string, lastName?: string, phone?: string, jobTitle?: string, role?: string, status?: Status, orderApprovalLimit?: number, registrationStatus?: RegistrationStatus, registrationDecidedAt?: string, registrationDecidedBy?: string, registrationReason?: string, locale?: string, isPrimary?: boolean, externalUserId?: string, createdAt?: string, updatedAt?: string, limit?: number, offset?: number, order?: string };\n } else {\n params = {\n id: paramsOrFirst as string,\n organizationId: rest[0] as string,\n email: rest[1] as string,\n firstName: rest[2] as string,\n lastName: rest[3] as string,\n phone: rest[4] as string,\n jobTitle: rest[5] as string,\n role: rest[6] as string,\n status: rest[7] as Status,\n orderApprovalLimit: rest[8] as number,\n registrationStatus: rest[9] as RegistrationStatus,\n registrationDecidedAt: rest[10] as string,\n registrationDecidedBy: rest[11] as string,\n registrationReason: rest[12] as string,\n locale: rest[13] as string,\n isPrimary: rest[14] as boolean,\n externalUserId: rest[15] as string,\n createdAt: rest[16] as string,\n updatedAt: rest[17] as string,\n limit: rest[18] as number,\n offset: rest[19] as number,\n order: rest[20] as string \n };\n }\n \n const id = params.id;\n const organizationId = params.organizationId;\n const email = params.email;\n const firstName = params.firstName;\n const lastName = params.lastName;\n const phone = params.phone;\n const jobTitle = params.jobTitle;\n const role = params.role;\n const status = params.status;\n const orderApprovalLimit = params.orderApprovalLimit;\n const registrationStatus = params.registrationStatus;\n const registrationDecidedAt = params.registrationDecidedAt;\n const registrationDecidedBy = params.registrationDecidedBy;\n const registrationReason = params.registrationReason;\n const locale = params.locale;\n const isPrimary = params.isPrimary;\n const externalUserId = params.externalUserId;\n const createdAt = params.createdAt;\n const updatedAt = params.updatedAt;\n const limit = params.limit;\n const offset = params.offset;\n const order = params.order;\n\n\n const apiPath = '/v1/customers/contacts';\n const apiPayload: Payload = {};\n if (typeof id !== 'undefined') {\n apiPayload['id'] = id;\n }\n if (typeof organizationId !== 'undefined') {\n apiPayload['organization_id'] = organizationId;\n }\n if (typeof email !== 'undefined') {\n apiPayload['email'] = email;\n }\n if (typeof firstName !== 'undefined') {\n apiPayload['first_name'] = firstName;\n }\n if (typeof lastName !== 'undefined') {\n apiPayload['last_name'] = lastName;\n }\n if (typeof phone !== 'undefined') {\n apiPayload['phone'] = phone;\n }\n if (typeof jobTitle !== 'undefined') {\n apiPayload['job_title'] = jobTitle;\n }\n if (typeof role !== 'undefined') {\n apiPayload['role'] = role;\n }\n if (typeof status !== 'undefined') {\n apiPayload['status'] = status;\n }\n if (typeof orderApprovalLimit !== 'undefined') {\n apiPayload['order_approval_limit'] = orderApprovalLimit;\n }\n if (typeof registrationStatus !== 'undefined') {\n apiPayload['registration_status'] = registrationStatus;\n }\n if (typeof registrationDecidedAt !== 'undefined') {\n apiPayload['registration_decided_at'] = registrationDecidedAt;\n }\n if (typeof registrationDecidedBy !== 'undefined') {\n apiPayload['registration_decided_by'] = registrationDecidedBy;\n }\n if (typeof registrationReason !== 'undefined') {\n apiPayload['registration_reason'] = registrationReason;\n }\n if (typeof locale !== 'undefined') {\n apiPayload['locale'] = locale;\n }\n if (typeof isPrimary !== 'undefined') {\n apiPayload['is_primary'] = isPrimary;\n }\n if (typeof externalUserId !== 'undefined') {\n apiPayload['external_user_id'] = externalUserId;\n }\n if (typeof createdAt !== 'undefined') {\n apiPayload['created_at'] = createdAt;\n }\n if (typeof updatedAt !== 'undefined') {\n apiPayload['updated_at'] = updatedAt;\n }\n if (typeof limit !== 'undefined') {\n apiPayload['limit'] = limit;\n }\n if (typeof offset !== 'undefined') {\n apiPayload['offset'] = offset;\n }\n if (typeof order !== 'undefined') {\n apiPayload['order'] = order;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. Creates the person and their platform login together, so a contact that exists can always sign in. `role` names one of this tenant's own roles and decides what they may do; `registration_status` may only be set to `pending` or `approved` here, because a rejection has to carry a reason and that is the reject route's job. `email` is the only field a create cannot omit; everything else is optional or defaulted by the database. Two rows of this tenant may not share `email` or `external_user_id` (while external_user_id IS NOT NULL).\n *\n * @param {string} params.email - Login identity and the unique key of a person within the tenant. Changing it changes the platform login with it. Two people at the same company therefore need two addresses — a shared purchasing mailbox is one contact, not several.\n * @param {string} params.firstName - Given name. Optional: an ERP import often has only a mailbox.\n * @param {boolean} params.isPrimary - The main contact of its organization — who a merchant calls first. At most one per company is the intent; the tenant's `primary_contact_required` setting decides whether the last one may be demoted or deleted.\n * @param {string} params.jobTitle - What this person does at the company — free text on purpose, because it is a title and not a grant. The permission ladder is `role`; overloading a job title with authority silently un-grants everyone the day the ledger is enforced.\n * @param {string} params.lastName - Family name. Optional for the same reason.\n * @param {string} params.locale - The language this person is written to in — BCP 47, and one of the store's configured locales. Null falls back to the store default.\n * @param {number} params.orderApprovalLimit - Amount ceiling for this person, in the market's currency: with the `orders.approve` permission it is the most they may sign off. Null means no ceiling. An amount, never a grant — the grant comes from the role.\n * @param {string} params.organizationId - The company this person belongs to. NULL is a legitimate state, not a defect: a standalone buyer with no company behind them. Deleting the organization sets this null and keeps the person. Membership is mirrored to the platform team.\n * @param {string} params.phone - Direct number of this person, as somebody typed it — free text, no format is enforced or normalized. E.164 is what an integration should send.\n * @param {CustomersContactsCreateRegistrationStatus} params.registrationStatus - Where this person's own application stands: 'approved' (the default, and what an open store creates), 'pending' while a merchant has yet to decide, 'rejected' once they declined. Only the approve/reject routes move it; it is ignored on an ordinary update. On CREATE only, and only to file the contact as an application: 'pending' creates the platform user disabled and routes the contact through approve/reject. Ignored on update.\n * @param {string} params.role - The person's role INSIDE its organization, and the only thing permissions are derived from. One of the tenant's own roles (GET /customers/roles); a tenant that never edited the ledger has viewer, requester, buyer, approver, admin. Also the team role on the platform mirror. There is no global role — the same person in two companies is two contacts. A tenant that never edited the ledger has viewer, requester, buyer, approver, admin; a create without a role gets the one flagged as default, and a role the tenant does not keep is a 400.\n * @param {ContactStatus} params.status - Whether this person may act: 'invited' has been created but has not accepted, 'active' works, 'blocked' cannot log in. A create through the API defaults to 'invited'; a self-registration in an open store lands 'active'. Default 'invited' on create.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n */\n customersContactsCreate(params: { email: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus }): Promise<Models.Error>;\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. Creates the person and their platform login together, so a contact that exists can always sign in. `role` names one of this tenant's own roles and decides what they may do; `registration_status` may only be set to `pending` or `approved` here, because a rejection has to carry a reason and that is the reject route's job. `email` is the only field a create cannot omit; everything else is optional or defaulted by the database. Two rows of this tenant may not share `email` or `external_user_id` (while external_user_id IS NOT NULL).\n *\n * @param {string} email - Login identity and the unique key of a person within the tenant. Changing it changes the platform login with it. Two people at the same company therefore need two addresses — a shared purchasing mailbox is one contact, not several.\n * @param {string} firstName - Given name. Optional: an ERP import often has only a mailbox.\n * @param {boolean} isPrimary - The main contact of its organization — who a merchant calls first. At most one per company is the intent; the tenant's `primary_contact_required` setting decides whether the last one may be demoted or deleted.\n * @param {string} jobTitle - What this person does at the company — free text on purpose, because it is a title and not a grant. The permission ladder is `role`; overloading a job title with authority silently un-grants everyone the day the ledger is enforced.\n * @param {string} lastName - Family name. Optional for the same reason.\n * @param {string} locale - The language this person is written to in — BCP 47, and one of the store's configured locales. Null falls back to the store default.\n * @param {number} orderApprovalLimit - Amount ceiling for this person, in the market's currency: with the `orders.approve` permission it is the most they may sign off. Null means no ceiling. An amount, never a grant — the grant comes from the role.\n * @param {string} organizationId - The company this person belongs to. NULL is a legitimate state, not a defect: a standalone buyer with no company behind them. Deleting the organization sets this null and keeps the person. Membership is mirrored to the platform team.\n * @param {string} phone - Direct number of this person, as somebody typed it — free text, no format is enforced or normalized. E.164 is what an integration should send.\n * @param {CustomersContactsCreateRegistrationStatus} registrationStatus - Where this person's own application stands: 'approved' (the default, and what an open store creates), 'pending' while a merchant has yet to decide, 'rejected' once they declined. Only the approve/reject routes move it; it is ignored on an ordinary update. On CREATE only, and only to file the contact as an application: 'pending' creates the platform user disabled and routes the contact through approve/reject. Ignored on update.\n * @param {string} role - The person's role INSIDE its organization, and the only thing permissions are derived from. One of the tenant's own roles (GET /customers/roles); a tenant that never edited the ledger has viewer, requester, buyer, approver, admin. Also the team role on the platform mirror. There is no global role — the same person in two companies is two contacts. A tenant that never edited the ledger has viewer, requester, buyer, approver, admin; a create without a role gets the one flagged as default, and a role the tenant does not keep is a 400.\n * @param {ContactStatus} status - Whether this person may act: 'invited' has been created but has not accepted, 'active' works, 'blocked' cannot log in. A create through the API defaults to 'invited'; a self-registration in an open store lands 'active'. Default 'invited' on create.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactsCreate(email: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus): Promise<Models.Error>;\n customersContactsCreate(\n paramsOrFirst: { email: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus } | string,\n ...rest: [(string)?, (boolean)?, (string)?, (string)?, (string)?, (number)?, (string)?, (string)?, (CustomersContactsCreateRegistrationStatus)?, (string)?, (ContactStatus)?] \n ): Promise<Models.Error> {\n let params: { email: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { email: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus };\n } else {\n params = {\n email: paramsOrFirst as string,\n firstName: rest[0] as string,\n isPrimary: rest[1] as boolean,\n jobTitle: rest[2] as string,\n lastName: rest[3] as string,\n locale: rest[4] as string,\n orderApprovalLimit: rest[5] as number,\n organizationId: rest[6] as string,\n phone: rest[7] as string,\n registrationStatus: rest[8] as CustomersContactsCreateRegistrationStatus,\n role: rest[9] as string,\n status: rest[10] as ContactStatus \n };\n }\n \n const email = params.email;\n const firstName = params.firstName;\n const isPrimary = params.isPrimary;\n const jobTitle = params.jobTitle;\n const lastName = params.lastName;\n const locale = params.locale;\n const orderApprovalLimit = params.orderApprovalLimit;\n const organizationId = params.organizationId;\n const phone = params.phone;\n const registrationStatus = params.registrationStatus;\n const role = params.role;\n const status = params.status;\n\n if (typeof email === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"email\"');\n }\n\n const apiPath = '/v1/customers/contacts';\n const apiPayload: Payload = {};\n if (typeof email !== 'undefined') {\n apiPayload['email'] = email;\n }\n if (typeof firstName !== 'undefined') {\n apiPayload['first_name'] = firstName;\n }\n if (typeof isPrimary !== 'undefined') {\n apiPayload['is_primary'] = isPrimary;\n }\n if (typeof jobTitle !== 'undefined') {\n apiPayload['job_title'] = jobTitle;\n }\n if (typeof lastName !== 'undefined') {\n apiPayload['last_name'] = lastName;\n }\n if (typeof locale !== 'undefined') {\n apiPayload['locale'] = locale;\n }\n if (typeof orderApprovalLimit !== 'undefined') {\n apiPayload['order_approval_limit'] = orderApprovalLimit;\n }\n if (typeof organizationId !== 'undefined') {\n apiPayload['organization_id'] = organizationId;\n }\n if (typeof phone !== 'undefined') {\n apiPayload['phone'] = phone;\n }\n if (typeof registrationStatus !== 'undefined') {\n apiPayload['registration_status'] = registrationStatus;\n }\n if (typeof role !== 'undefined') {\n apiPayload['role'] = role;\n }\n if (typeof status !== 'undefined') {\n apiPayload['status'] = status;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * This is how a call, a visit, a meeting, an email or a plain note reaches one person's timeline. It writes a contact_events row with kind != 'system' and emits contact_event.created, so an activity travels on the same bus as a registration decision and a timeline is one query rather than a union. organization_id is DERIVED from the contact, never taken from the body — an activity cannot be filed under a company the person does not belong to.\n *\n * @param {string} params.contactId - The person the entry is about. The organization is derived from them.\n * @param {string} params.subject - One line a person can scan in a timeline. Required — an entry nobody can read at a glance is not worth the row.\n * @param {string} params.actor - Who logged it (operator id or email). Free text; this app does not resolve it.\n * @param {ContactActivityKind} params.kind - What happened. 'system' is deliberately NOT accepted — those rows are the registration decision trail and are written by the approve/reject routes. Default 'note'.\n * @param {string} params.note - The long form. Stored inside the event payload as `note`, not as a column of its own.\n * @param {string} params.occurredAt - When it actually happened. Defaults to now — a call logged on Monday about Friday should say Friday.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n */\n customersContactsEventsCreate(params: { contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string }): Promise<Models.Error>;\n /**\n * This is how a call, a visit, a meeting, an email or a plain note reaches one person's timeline. It writes a contact_events row with kind != 'system' and emits contact_event.created, so an activity travels on the same bus as a registration decision and a timeline is one query rather than a union. organization_id is DERIVED from the contact, never taken from the body — an activity cannot be filed under a company the person does not belong to.\n *\n * @param {string} contactId - The person the entry is about. The organization is derived from them.\n * @param {string} subject - One line a person can scan in a timeline. Required — an entry nobody can read at a glance is not worth the row.\n * @param {string} actor - Who logged it (operator id or email). Free text; this app does not resolve it.\n * @param {ContactActivityKind} kind - What happened. 'system' is deliberately NOT accepted — those rows are the registration decision trail and are written by the approve/reject routes. Default 'note'.\n * @param {string} note - The long form. Stored inside the event payload as `note`, not as a column of its own.\n * @param {string} occurredAt - When it actually happened. Defaults to now — a call logged on Monday about Friday should say Friday.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactsEventsCreate(contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string): Promise<Models.Error>;\n customersContactsEventsCreate(\n paramsOrFirst: { contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string } | string,\n ...rest: [(string)?, (string)?, (ContactActivityKind)?, (string)?, (string)?] \n ): Promise<Models.Error> {\n let params: { contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string };\n } else {\n params = {\n contactId: paramsOrFirst as string,\n subject: rest[0] as string,\n actor: rest[1] as string,\n kind: rest[2] as ContactActivityKind,\n note: rest[3] as string,\n occurredAt: rest[4] as string \n };\n }\n \n const contactId = params.contactId;\n const subject = params.subject;\n const actor = params.actor;\n const kind = params.kind;\n const note = params.note;\n const occurredAt = params.occurredAt;\n\n if (typeof contactId === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"contactId\"');\n }\n if (typeof subject === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"subject\"');\n }\n\n const apiPath = '/v1/customers/contacts/{contact_id}/events'.replace('{contact_id}', contactId);\n const apiPayload: Payload = {};\n if (typeof actor !== 'undefined') {\n apiPayload['actor'] = actor;\n }\n if (typeof kind !== 'undefined') {\n apiPayload['kind'] = kind;\n }\n if (typeof note !== 'undefined') {\n apiPayload['note'] = note;\n }\n if (typeof occurredAt !== 'undefined') {\n apiPayload['occurred_at'] = occurredAt;\n }\n if (typeof subject !== 'undefined') {\n apiPayload['subject'] = subject;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * Tell somebody they were added to a company. A deliberate act rather than a side effect of creating the contact: a merchant entering a colleague from a business card is not always ready to mail them, and \"added\" and \"told\" are different decisions. No secret travels — the platform team membership is confirmed as it is created, so there is nothing to accept; the message says \"you are in, here is the way in\". Unlike the auth mails, a failure here IS a failure: the identity service sends nothing for this occasion, so this is the only message the person gets.\n *\n * @param {string} params.contactId - The person being told. They are already a member — this only sends the message.\n * @param {string} params.url - Where the invitation points — the storefront sign-in, normally. There is no token in it: the person is already a member and only has to sign in.\n * @param {string} params.invitedBy - Who did the inviting, as the recipient should read it. Absent, the company name is used — \"Beispiel GmbH invited you\" reads better than the name of somebody they have never heard of.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n */\n customersContactsInvite(params: { contactId: string, url: string, invitedBy?: string }): Promise<Models.Error>;\n /**\n * Tell somebody they were added to a company. A deliberate act rather than a side effect of creating the contact: a merchant entering a colleague from a business card is not always ready to mail them, and \"added\" and \"told\" are different decisions. No secret travels — the platform team membership is confirmed as it is created, so there is nothing to accept; the message says \"you are in, here is the way in\". Unlike the auth mails, a failure here IS a failure: the identity service sends nothing for this occasion, so this is the only message the person gets.\n *\n * @param {string} contactId - The person being told. They are already a member — this only sends the message.\n * @param {string} url - Where the invitation points — the storefront sign-in, normally. There is no token in it: the person is already a member and only has to sign in.\n * @param {string} invitedBy - Who did the inviting, as the recipient should read it. Absent, the company name is used — \"Beispiel GmbH invited you\" reads better than the name of somebody they have never heard of.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactsInvite(contactId: string, url: string, invitedBy?: string): Promise<Models.Error>;\n customersContactsInvite(\n paramsOrFirst: { contactId: string, url: string, invitedBy?: string } | string,\n ...rest: [(string)?, (string)?] \n ): Promise<Models.Error> {\n let params: { contactId: string, url: string, invitedBy?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { contactId: string, url: string, invitedBy?: string };\n } else {\n params = {\n contactId: paramsOrFirst as string,\n url: rest[0] as string,\n invitedBy: rest[1] as string \n };\n }\n \n const contactId = params.contactId;\n const url = params.url;\n const invitedBy = params.invitedBy;\n\n if (typeof contactId === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"contactId\"');\n }\n if (typeof url === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"url\"');\n }\n\n const apiPath = '/v1/customers/contacts/{contact_id}/invite'.replace('{contact_id}', contactId);\n const apiPayload: Payload = {};\n if (typeof invitedBy !== 'undefined') {\n apiPayload['invited_by'] = invitedBy;\n }\n if (typeof url !== 'undefined') {\n apiPayload['url'] = url;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * Computed from contacts.role on every call — the grants are never persisted, so this always reflects the role the contact holds right now.\n *\n * @param {string} params.contactId - The person whose grants are being read.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n */\n customersContactsPermissions(params: { contactId: string }): Promise<Models.Error>;\n /**\n * Computed from contacts.role on every call — the grants are never persisted, so this always reflects the role the contact holds right now.\n *\n * @param {string} contactId - The person whose grants are being read.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactsPermissions(contactId: string): Promise<Models.Error>;\n customersContactsPermissions(\n paramsOrFirst: { contactId: string } | string \n ): Promise<Models.Error> {\n let params: { contactId: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { contactId: string };\n } else {\n params = {\n contactId: paramsOrFirst as string \n };\n }\n \n const contactId = params.contactId;\n\n if (typeof contactId === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"contactId\"');\n }\n\n const apiPath = '/v1/customers/contacts/{contact_id}/permissions'.replace('{contact_id}', contactId);\n const apiPayload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * Only reachable for a contact whose registration_status is 'pending' or 'rejected' (approving a rejection reinstates it). Enables the platform user FIRST — the password the applicant chose at submit time works immediately, no new credential is issued — then sets registration_status='approved' and status='active', and un-blocks the organization this registration itself founded. Approving an already-approved registration is a no-op that emits nothing, so a retry is safe. Writes a contact_events row named 'registration.approved'.\n *\n * @param {string} params.contactId - The applicant. It is the CONTACT that is approved — the organization it founded is unblocked with it.\n * @param {string} params.decidedBy - Who approved it — recorded on the contact and carried in the event. Free text (operator id or email); this app does not resolve it.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n */\n customersRegistrationsApprove(params: { contactId: string, decidedBy?: string }): Promise<Models.Error>;\n /**\n * Only reachable for a contact whose registration_status is 'pending' or 'rejected' (approving a rejection reinstates it). Enables the platform user FIRST — the password the applicant chose at submit time works immediately, no new credential is issued — then sets registration_status='approved' and status='active', and un-blocks the organization this registration itself founded. Approving an already-approved registration is a no-op that emits nothing, so a retry is safe. Writes a contact_events row named 'registration.approved'.\n *\n * @param {string} contactId - The applicant. It is the CONTACT that is approved — the organization it founded is unblocked with it.\n * @param {string} decidedBy - Who approved it — recorded on the contact and carried in the event. Free text (operator id or email); this app does not resolve it.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersRegistrationsApprove(contactId: string, decidedBy?: string): Promise<Models.Error>;\n customersRegistrationsApprove(\n paramsOrFirst: { contactId: string, decidedBy?: string } | string,\n ...rest: [(string)?] \n ): Promise<Models.Error> {\n let params: { contactId: string, decidedBy?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { contactId: string, decidedBy?: string };\n } else {\n params = {\n contactId: paramsOrFirst as string,\n decidedBy: rest[0] as string \n };\n }\n \n const contactId = params.contactId;\n const decidedBy = params.decidedBy;\n\n if (typeof contactId === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"contactId\"');\n }\n\n const apiPath = '/v1/customers/contacts/{contact_id}/registration/approve'.replace('{contact_id}', contactId);\n const apiPayload: Payload = {};\n if (typeof decidedBy !== 'undefined') {\n apiPayload['decided_by'] = decidedBy;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * Only reachable from 'pending'. Sets registration_status='rejected' and status='blocked', keeps the platform user in place but disabled — the email must not fall free for a silent second identity, and the merchant keeps the record. Delete the contact to remove both. 'reason' is mandatory and is stored on the contact plus carried in the event payload, so the applicant can be told why. Rejecting an already-rejected registration is a no-op. Writes a contact_events row named 'registration.rejected'.\n *\n * @param {string} params.contactId - The applicant being declined.\n * @param {string} params.reason - Why the application was declined. Always stored on the contact. It only reaches the APPLICANT when the tenant's registration_reason_disclosed setting is on — the event payload then carries it, and so does the 403 the login answers.\n * @param {string} params.decidedBy - Who rejected it — recorded on the contact and carried in the event.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n */\n customersRegistrationsReject(params: { contactId: string, reason: string, decidedBy?: string }): Promise<Models.Error>;\n /**\n * Only reachable from 'pending'. Sets registration_status='rejected' and status='blocked', keeps the platform user in place but disabled — the email must not fall free for a silent second identity, and the merchant keeps the record. Delete the contact to remove both. 'reason' is mandatory and is stored on the contact plus carried in the event payload, so the applicant can be told why. Rejecting an already-rejected registration is a no-op. Writes a contact_events row named 'registration.rejected'.\n *\n * @param {string} contactId - The applicant being declined.\n * @param {string} reason - Why the application was declined. Always stored on the contact. It only reaches the APPLICANT when the tenant's registration_reason_disclosed setting is on — the event payload then carries it, and so does the 403 the login answers.\n * @param {string} decidedBy - Who rejected it — recorded on the contact and carried in the event.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersRegistrationsReject(contactId: string, reason: string, decidedBy?: string): Promise<Models.Error>;\n customersRegistrationsReject(\n paramsOrFirst: { contactId: string, reason: string, decidedBy?: string } | string,\n ...rest: [(string)?, (string)?] \n ): Promise<Models.Error> {\n let params: { contactId: string, reason: string, decidedBy?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { contactId: string, reason: string, decidedBy?: string };\n } else {\n params = {\n contactId: paramsOrFirst as string,\n reason: rest[0] as string,\n decidedBy: rest[1] as string \n };\n }\n \n const contactId = params.contactId;\n const reason = params.reason;\n const decidedBy = params.decidedBy;\n\n if (typeof contactId === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"contactId\"');\n }\n if (typeof reason === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"reason\"');\n }\n\n const apiPath = '/v1/customers/contacts/{contact_id}/registration/reject'.replace('{contact_id}', contactId);\n const apiPayload: Payload = {};\n if (typeof decidedBy !== 'undefined') {\n apiPayload['decided_by'] = decidedBy;\n }\n if (typeof reason !== 'undefined') {\n apiPayload['reason'] = reason;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. Removes the person and their platform login, so they can no longer sign in anywhere. Their company keeps trading; use `status: \"blocked\"` instead when the intent is to stop one person without erasing what they did. Deleting one takes every `contact_events` and `addresses` row that points at it with it — the foreign keys decide, not this route.\n *\n * @param {string} params.id - The contact to delete.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n */\n customersContactsDelete(params: { id: string }): Promise<Models.Error>;\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. Removes the person and their platform login, so they can no longer sign in anywhere. Their company keeps trading; use `status: \"blocked\"` instead when the intent is to stop one person without erasing what they did. Deleting one takes every `contact_events` and `addresses` row that points at it with it — the foreign keys decide, not this route.\n *\n * @param {string} id - The contact to delete.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactsDelete(id: string): Promise<Models.Error>;\n customersContactsDelete(\n paramsOrFirst: { id: string } | string \n ): Promise<Models.Error> {\n let params: { id: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { id: string };\n } else {\n params = {\n id: paramsOrFirst as string \n };\n }\n \n const id = params.id;\n\n if (typeof id === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"id\"');\n }\n\n const apiPath = '/v1/customers/contacts/{id}'.replace('{id}', id);\n const apiPayload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'delete',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. One person by id. What they are ALLOWED to do is not in here: permissions are derived from `role` at read time and answered by `GET /customers/contacts/{contact_id}/permissions`.\n *\n * @param {string} params.id - The contact to read.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n */\n customersContactsGet(params: { id: string }): Promise<Models.Error>;\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. One person by id. What they are ALLOWED to do is not in here: permissions are derived from `role` at read time and answered by `GET /customers/contacts/{contact_id}/permissions`.\n *\n * @param {string} id - The contact to read.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactsGet(id: string): Promise<Models.Error>;\n customersContactsGet(\n paramsOrFirst: { id: string } | string \n ): Promise<Models.Error> {\n let params: { id: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { id: string };\n } else {\n params = {\n id: paramsOrFirst as string \n };\n }\n \n const id = params.id;\n\n if (typeof id === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"id\"');\n }\n\n const apiPath = '/v1/customers/contacts/{id}'.replace('{id}', id);\n const apiPayload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. A partial update — send only what changes. `external_user_id` and every `registration_*` column are ignored: the link to platform auth is mirror-managed, and registration state is only ever moved by the approve and reject routes, which record why. Two rows of this tenant may not share `email` or `external_user_id` (while external_user_id IS NOT NULL).\n *\n * @param {string} params.id - The contact to update.\n * @param {string} params.email - Login identity and the unique key of a person within the tenant. Changing it changes the platform login with it. Two people at the same company therefore need two addresses — a shared purchasing mailbox is one contact, not several.\n * @param {string} params.firstName - Given name. Optional: an ERP import often has only a mailbox.\n * @param {boolean} params.isPrimary - The main contact of its organization — who a merchant calls first. At most one per company is the intent; the tenant's `primary_contact_required` setting decides whether the last one may be demoted or deleted.\n * @param {string} params.jobTitle - What this person does at the company — free text on purpose, because it is a title and not a grant. The permission ladder is `role`; overloading a job title with authority silently un-grants everyone the day the ledger is enforced.\n * @param {string} params.lastName - Family name. Optional for the same reason.\n * @param {string} params.locale - The language this person is written to in — BCP 47, and one of the store's configured locales. Null falls back to the store default.\n * @param {number} params.orderApprovalLimit - Amount ceiling for this person, in the market's currency: with the `orders.approve` permission it is the most they may sign off. Null means no ceiling. An amount, never a grant — the grant comes from the role.\n * @param {string} params.organizationId - The company this person belongs to. NULL is a legitimate state, not a defect: a standalone buyer with no company behind them. Deleting the organization sets this null and keeps the person. Membership is mirrored to the platform team.\n * @param {string} params.phone - Direct number of this person, as somebody typed it — free text, no format is enforced or normalized. E.164 is what an integration should send.\n * @param {CustomersContactsCreateRegistrationStatus} params.registrationStatus - Where this person's own application stands: 'approved' (the default, and what an open store creates), 'pending' while a merchant has yet to decide, 'rejected' once they declined. Only the approve/reject routes move it; it is ignored on an ordinary update. On CREATE only, and only to file the contact as an application: 'pending' creates the platform user disabled and routes the contact through approve/reject. Ignored on update.\n * @param {string} params.role - The person's role INSIDE its organization, and the only thing permissions are derived from. One of the tenant's own roles (GET /customers/roles); a tenant that never edited the ledger has viewer, requester, buyer, approver, admin. Also the team role on the platform mirror. There is no global role — the same person in two companies is two contacts. A tenant that never edited the ledger has viewer, requester, buyer, approver, admin; a create without a role gets the one flagged as default, and a role the tenant does not keep is a 400.\n * @param {ContactStatus} params.status - Whether this person may act: 'invited' has been created but has not accepted, 'active' works, 'blocked' cannot log in. A create through the API defaults to 'invited'; a self-registration in an open store lands 'active'. Default 'invited' on create.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n */\n customersContactsUpdate(params: { id: string, email?: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus }): Promise<Models.Error>;\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. A partial update — send only what changes. `external_user_id` and every `registration_*` column are ignored: the link to platform auth is mirror-managed, and registration state is only ever moved by the approve and reject routes, which record why. Two rows of this tenant may not share `email` or `external_user_id` (while external_user_id IS NOT NULL).\n *\n * @param {string} id - The contact to update.\n * @param {string} email - Login identity and the unique key of a person within the tenant. Changing it changes the platform login with it. Two people at the same company therefore need two addresses — a shared purchasing mailbox is one contact, not several.\n * @param {string} firstName - Given name. Optional: an ERP import often has only a mailbox.\n * @param {boolean} isPrimary - The main contact of its organization — who a merchant calls first. At most one per company is the intent; the tenant's `primary_contact_required` setting decides whether the last one may be demoted or deleted.\n * @param {string} jobTitle - What this person does at the company — free text on purpose, because it is a title and not a grant. The permission ladder is `role`; overloading a job title with authority silently un-grants everyone the day the ledger is enforced.\n * @param {string} lastName - Family name. Optional for the same reason.\n * @param {string} locale - The language this person is written to in — BCP 47, and one of the store's configured locales. Null falls back to the store default.\n * @param {number} orderApprovalLimit - Amount ceiling for this person, in the market's currency: with the `orders.approve` permission it is the most they may sign off. Null means no ceiling. An amount, never a grant — the grant comes from the role.\n * @param {string} organizationId - The company this person belongs to. NULL is a legitimate state, not a defect: a standalone buyer with no company behind them. Deleting the organization sets this null and keeps the person. Membership is mirrored to the platform team.\n * @param {string} phone - Direct number of this person, as somebody typed it — free text, no format is enforced or normalized. E.164 is what an integration should send.\n * @param {CustomersContactsCreateRegistrationStatus} registrationStatus - Where this person's own application stands: 'approved' (the default, and what an open store creates), 'pending' while a merchant has yet to decide, 'rejected' once they declined. Only the approve/reject routes move it; it is ignored on an ordinary update. On CREATE only, and only to file the contact as an application: 'pending' creates the platform user disabled and routes the contact through approve/reject. Ignored on update.\n * @param {string} role - The person's role INSIDE its organization, and the only thing permissions are derived from. One of the tenant's own roles (GET /customers/roles); a tenant that never edited the ledger has viewer, requester, buyer, approver, admin. Also the team role on the platform mirror. There is no global role — the same person in two companies is two contacts. A tenant that never edited the ledger has viewer, requester, buyer, approver, admin; a create without a role gets the one flagged as default, and a role the tenant does not keep is a 400.\n * @param {ContactStatus} status - Whether this person may act: 'invited' has been created but has not accepted, 'active' works, 'blocked' cannot log in. A create through the API defaults to 'invited'; a self-registration in an open store lands 'active'. Default 'invited' on create.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactsUpdate(id: string, email?: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus): Promise<Models.Error>;\n customersContactsUpdate(\n paramsOrFirst: { id: string, email?: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (string)?, (string)?, (string)?, (number)?, (string)?, (string)?, (CustomersContactsCreateRegistrationStatus)?, (string)?, (ContactStatus)?] \n ): Promise<Models.Error> {\n let params: { id: string, email?: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { id: string, email?: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus };\n } else {\n params = {\n id: paramsOrFirst as string,\n email: rest[0] as string,\n firstName: rest[1] as string,\n isPrimary: rest[2] as boolean,\n jobTitle: rest[3] as string,\n lastName: rest[4] as string,\n locale: rest[5] as string,\n orderApprovalLimit: rest[6] as number,\n organizationId: rest[7] as string,\n phone: rest[8] as string,\n registrationStatus: rest[9] as CustomersContactsCreateRegistrationStatus,\n role: rest[10] as string,\n status: rest[11] as ContactStatus \n };\n }\n \n const id = params.id;\n const email = params.email;\n const firstName = params.firstName;\n const isPrimary = params.isPrimary;\n const jobTitle = params.jobTitle;\n const lastName = params.lastName;\n const locale = params.locale;\n const orderApprovalLimit = params.orderApprovalLimit;\n const organizationId = params.organizationId;\n const phone = params.phone;\n const registrationStatus = params.registrationStatus;\n const role = params.role;\n const status = params.status;\n\n if (typeof id === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"id\"');\n }\n\n const apiPath = '/v1/customers/contacts/{id}'.replace('{id}', id);\n const apiPayload: Payload = {};\n if (typeof email !== 'undefined') {\n apiPayload['email'] = email;\n }\n if (typeof firstName !== 'undefined') {\n apiPayload['first_name'] = firstName;\n }\n if (typeof isPrimary !== 'undefined') {\n apiPayload['is_primary'] = isPrimary;\n }\n if (typeof jobTitle !== 'undefined') {\n apiPayload['job_title'] = jobTitle;\n }\n if (typeof lastName !== 'undefined') {\n apiPayload['last_name'] = lastName;\n }\n if (typeof locale !== 'undefined') {\n apiPayload['locale'] = locale;\n }\n if (typeof orderApprovalLimit !== 'undefined') {\n apiPayload['order_approval_limit'] = orderApprovalLimit;\n }\n if (typeof organizationId !== 'undefined') {\n apiPayload['organization_id'] = organizationId;\n }\n if (typeof phone !== 'undefined') {\n apiPayload['phone'] = phone;\n }\n if (typeof registrationStatus !== 'undefined') {\n apiPayload['registration_status'] = registrationStatus;\n }\n if (typeof role !== 'undefined') {\n apiPayload['role'] = role;\n }\n if (typeof status !== 'undefined') {\n apiPayload['status'] = status;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'put',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * Same row as the contact route, reached from the organization. 'contact_id' is required and must belong to THIS organization — the picker offering the contacts is not filtered, so the membership check here is what stops a call with one company being filed under someone else's person.\n *\n * @param {string} params.organizationId - The company the entry is filed under. The `contact_id` in the body has to belong to it.\n * @param {string} params.contactId - The person dealt with. Must be a contact of this organization.\n * @param {string} params.subject - One line a person can scan in a timeline. Required — an entry nobody can read at a glance is not worth the row.\n * @param {string} params.actor - Who logged it (operator id or email). Free text; this app does not resolve it.\n * @param {ContactActivityKind} params.kind - What happened. 'system' is deliberately NOT accepted — those rows are the registration decision trail and are written by the approve/reject routes. Default 'note'.\n * @param {string} params.note - The long form. Stored inside the event payload as `note`, not as a column of its own.\n * @param {string} params.occurredAt - When it actually happened. Defaults to now — a call logged on Monday about Friday should say Friday.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n */\n customersOrganizationsEventsCreate(params: { organizationId: string, contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string }): Promise<Models.Error>;\n /**\n * Same row as the contact route, reached from the organization. 'contact_id' is required and must belong to THIS organization — the picker offering the contacts is not filtered, so the membership check here is what stops a call with one company being filed under someone else's person.\n *\n * @param {string} organizationId - The company the entry is filed under. The `contact_id` in the body has to belong to it.\n * @param {string} contactId - The person dealt with. Must be a contact of this organization.\n * @param {string} subject - One line a person can scan in a timeline. Required — an entry nobody can read at a glance is not worth the row.\n * @param {string} actor - Who logged it (operator id or email). Free text; this app does not resolve it.\n * @param {ContactActivityKind} kind - What happened. 'system' is deliberately NOT accepted — those rows are the registration decision trail and are written by the approve/reject routes. Default 'note'.\n * @param {string} note - The long form. Stored inside the event payload as `note`, not as a column of its own.\n * @param {string} occurredAt - When it actually happened. Defaults to now — a call logged on Monday about Friday should say Friday.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Error>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersOrganizationsEventsCreate(organizationId: string, contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string): Promise<Models.Error>;\n customersOrganizationsEventsCreate(\n paramsOrFirst: { organizationId: string, contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string } | string,\n ...rest: [(string)?, (string)?, (string)?, (ContactActivityKind)?, (string)?, (string)?] \n ): Promise<Models.Error> {\n let params: { organizationId: string, contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { organizationId: string, contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string };\n } else {\n params = {\n organizationId: paramsOrFirst as string,\n contactId: rest[0] as string,\n subject: rest[1] as string,\n actor: rest[2] as string,\n kind: rest[3] as ContactActivityKind,\n note: rest[4] as string,\n occurredAt: rest[5] as string \n };\n }\n \n const organizationId = params.organizationId;\n const contactId = params.contactId;\n const subject = params.subject;\n const actor = params.actor;\n const kind = params.kind;\n const note = params.note;\n const occurredAt = params.occurredAt;\n\n if (typeof organizationId === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"organizationId\"');\n }\n if (typeof contactId === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"contactId\"');\n }\n if (typeof subject === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"subject\"');\n }\n\n const apiPath = '/v1/customers/organizations/{organization_id}/events'.replace('{organization_id}', organizationId);\n const apiPayload: Payload = {};\n if (typeof actor !== 'undefined') {\n apiPayload['actor'] = actor;\n }\n if (typeof contactId !== 'undefined') {\n apiPayload['contact_id'] = contactId;\n }\n if (typeof kind !== 'undefined') {\n apiPayload['kind'] = kind;\n }\n if (typeof note !== 'undefined') {\n apiPayload['note'] = note;\n }\n if (typeof occurredAt !== 'undefined') {\n apiPayload['occurred_at'] = occurredAt;\n }\n if (typeof subject !== 'undefined') {\n apiPayload['subject'] = subject;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/services/customers-contacts.ts"],"names":[],"mappings":"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","sourcesContent":["import { RevenexxException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\n\nimport { Status } from '../enums/status';\nimport { RegistrationStatus } from '../enums/registration-status';\nimport { CustomersContactsCreateRegistrationStatus } from '../enums/customers-contacts-create-registration-status';\nimport { ContactStatus } from '../enums/contact-status';\nimport { ContactActivityKind } from '../enums/contact-activity-kind';\n\nexport class CustomersContacts {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * A contact event is one entry on a customer's timeline: an activity somebody logged (a call, a visit, a meeting, a note) or a registration decision this app recorded itself. Every entry is keyed by a CONTACT and stamped with the organization derived from that contact, so a company's history is one indexed read rather than a join. Append-only — there is no update and no delete, which is what makes it usable as evidence. The activity feed, filtered by whichever column the question needs: `contact_id` for one person, `organization_id` for a whole company, `kind` for one type of activity. `kind: \"system\"` is this app's own registration decision trail (`registration.submitted` / `.approved` / `.rejected`), and no caller may file one of those. Paged with `limit`/`offset`/`order`; newest first is `order=occurred_at.desc`.\n *\n * @param {string} params.id - Filter to rows whose `id` is exactly this value. Primary key of the timeline entry.\n * @param {string} params.contactId - Filter to one person's timeline.\n * @param {string} params.organizationId - Filter to one company timeline — the whole history, without fanning out over its people.\n * @param {string} params.kind - Filter by entry kind. One of the tenant's own activity types (GET /customers/contact-event-kinds); 'system' is the registration decision trail and is the one a caller may not file.\n * @param {string} params.name - Filter by event name — registration.submitted | registration.approved | registration.rejected | activity.<kind>. This one IS this app's own vocabulary, not the tenant's.\n * @param {string} params.subject - Filter to rows whose `subject` is exactly this value. One line a person can scan in a timeline. Required for an activity; a decision row carries the app's own wording.\n * @param {string} params.actor - Filter to rows whose `actor` is exactly this value. Who logged the entry — free text as the client supplied it (operator id or email). Null for a row the app wrote itself.\n * @param {string} params.occurredAt - Exact timestamp equality on when it happened — there is no range filter on this API. Use `order=occurred_at.desc` with limit/offset to walk a timeline.\n * @param {string} params.createdAt - Exact timestamp equality — this API has no range filter. To bound a period, sort with `order` and page. When the row was written. Together with `occurred_at` this is what tells a late entry from a live one.\n * @param {number} params.limit - Page size (default 50, max 200).\n * @param {number} params.offset - Row offset for pagination (default 0).\n * @param {string} params.order - Sort by one column: 'column' | 'column.asc' | 'column.desc'. A bare column sorts ascending. Anything else is refused with 400.\n * @throws {RevenexxException}\n * @returns {Promise<{}>}\n */\n customersContactEventsList(params?: { id?: string, contactId?: string, organizationId?: string, kind?: string, name?: string, subject?: string, actor?: string, occurredAt?: string, createdAt?: string, limit?: number, offset?: number, order?: string }): Promise<{}>;\n /**\n * A contact event is one entry on a customer's timeline: an activity somebody logged (a call, a visit, a meeting, a note) or a registration decision this app recorded itself. Every entry is keyed by a CONTACT and stamped with the organization derived from that contact, so a company's history is one indexed read rather than a join. Append-only — there is no update and no delete, which is what makes it usable as evidence. The activity feed, filtered by whichever column the question needs: `contact_id` for one person, `organization_id` for a whole company, `kind` for one type of activity. `kind: \"system\"` is this app's own registration decision trail (`registration.submitted` / `.approved` / `.rejected`), and no caller may file one of those. Paged with `limit`/`offset`/`order`; newest first is `order=occurred_at.desc`.\n *\n * @param {string} id - Filter to rows whose `id` is exactly this value. Primary key of the timeline entry.\n * @param {string} contactId - Filter to one person's timeline.\n * @param {string} organizationId - Filter to one company timeline — the whole history, without fanning out over its people.\n * @param {string} kind - Filter by entry kind. One of the tenant's own activity types (GET /customers/contact-event-kinds); 'system' is the registration decision trail and is the one a caller may not file.\n * @param {string} name - Filter by event name — registration.submitted | registration.approved | registration.rejected | activity.<kind>. This one IS this app's own vocabulary, not the tenant's.\n * @param {string} subject - Filter to rows whose `subject` is exactly this value. One line a person can scan in a timeline. Required for an activity; a decision row carries the app's own wording.\n * @param {string} actor - Filter to rows whose `actor` is exactly this value. Who logged the entry — free text as the client supplied it (operator id or email). Null for a row the app wrote itself.\n * @param {string} occurredAt - Exact timestamp equality on when it happened — there is no range filter on this API. Use `order=occurred_at.desc` with limit/offset to walk a timeline.\n * @param {string} createdAt - Exact timestamp equality — this API has no range filter. To bound a period, sort with `order` and page. When the row was written. Together with `occurred_at` this is what tells a late entry from a live one.\n * @param {number} limit - Page size (default 50, max 200).\n * @param {number} offset - Row offset for pagination (default 0).\n * @param {string} order - Sort by one column: 'column' | 'column.asc' | 'column.desc'. A bare column sorts ascending. Anything else is refused with 400.\n * @throws {RevenexxException}\n * @returns {Promise<{}>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactEventsList(id?: string, contactId?: string, organizationId?: string, kind?: string, name?: string, subject?: string, actor?: string, occurredAt?: string, createdAt?: string, limit?: number, offset?: number, order?: string): Promise<{}>;\n customersContactEventsList(\n paramsOrFirst?: { id?: string, contactId?: string, organizationId?: string, kind?: string, name?: string, subject?: string, actor?: string, occurredAt?: string, createdAt?: string, limit?: number, offset?: number, order?: string } | string,\n ...rest: [(string)?, (string)?, (string)?, (string)?, (string)?, (string)?, (string)?, (string)?, (number)?, (number)?, (string)?] \n ): Promise<{}> {\n let params: { id?: string, contactId?: string, organizationId?: string, kind?: string, name?: string, subject?: string, actor?: string, occurredAt?: string, createdAt?: string, limit?: number, offset?: number, order?: string };\n \n if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { id?: string, contactId?: string, organizationId?: string, kind?: string, name?: string, subject?: string, actor?: string, occurredAt?: string, createdAt?: string, limit?: number, offset?: number, order?: string };\n } else {\n params = {\n id: paramsOrFirst as string,\n contactId: rest[0] as string,\n organizationId: rest[1] as string,\n kind: rest[2] as string,\n name: rest[3] as string,\n subject: rest[4] as string,\n actor: rest[5] as string,\n occurredAt: rest[6] as string,\n createdAt: rest[7] as string,\n limit: rest[8] as number,\n offset: rest[9] as number,\n order: rest[10] as string \n };\n }\n \n const id = params.id;\n const contactId = params.contactId;\n const organizationId = params.organizationId;\n const kind = params.kind;\n const name = params.name;\n const subject = params.subject;\n const actor = params.actor;\n const occurredAt = params.occurredAt;\n const createdAt = params.createdAt;\n const limit = params.limit;\n const offset = params.offset;\n const order = params.order;\n\n\n const apiPath = '/v1/customers/contact_events';\n const apiPayload: Payload = {};\n if (typeof id !== 'undefined') {\n apiPayload['id'] = id;\n }\n if (typeof contactId !== 'undefined') {\n apiPayload['contact_id'] = contactId;\n }\n if (typeof organizationId !== 'undefined') {\n apiPayload['organization_id'] = organizationId;\n }\n if (typeof kind !== 'undefined') {\n apiPayload['kind'] = kind;\n }\n if (typeof name !== 'undefined') {\n apiPayload['name'] = name;\n }\n if (typeof subject !== 'undefined') {\n apiPayload['subject'] = subject;\n }\n if (typeof actor !== 'undefined') {\n apiPayload['actor'] = actor;\n }\n if (typeof occurredAt !== 'undefined') {\n apiPayload['occurred_at'] = occurredAt;\n }\n if (typeof createdAt !== 'undefined') {\n apiPayload['created_at'] = createdAt;\n }\n if (typeof limit !== 'undefined') {\n apiPayload['limit'] = limit;\n }\n if (typeof offset !== 'undefined') {\n apiPayload['offset'] = offset;\n }\n if (typeof order !== 'undefined') {\n apiPayload['order'] = order;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * A contact event is one entry on a customer's timeline: an activity somebody logged (a call, a visit, a meeting, a note) or a registration decision this app recorded itself. Every entry is keyed by a CONTACT and stamped with the organization derived from that contact, so a company's history is one indexed read rather than a join. Append-only — there is no update and no delete, which is what makes it usable as evidence. One timeline entry by id, as it was written. Entries are never edited, so what this answers is what was recorded at the time.\n *\n * @param {string} params.id - The contact event to read.\n * @throws {RevenexxException}\n * @returns {Promise<Models.ContactEvent>}\n */\n customersContactEventsGet(params: { id: string }): Promise<Models.ContactEvent>;\n /**\n * A contact event is one entry on a customer's timeline: an activity somebody logged (a call, a visit, a meeting, a note) or a registration decision this app recorded itself. Every entry is keyed by a CONTACT and stamped with the organization derived from that contact, so a company's history is one indexed read rather than a join. Append-only — there is no update and no delete, which is what makes it usable as evidence. One timeline entry by id, as it was written. Entries are never edited, so what this answers is what was recorded at the time.\n *\n * @param {string} id - The contact event to read.\n * @throws {RevenexxException}\n * @returns {Promise<Models.ContactEvent>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactEventsGet(id: string): Promise<Models.ContactEvent>;\n customersContactEventsGet(\n paramsOrFirst: { id: string } | string \n ): Promise<Models.ContactEvent> {\n let params: { id: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { id: string };\n } else {\n params = {\n id: paramsOrFirst as string \n };\n }\n \n const id = params.id;\n\n if (typeof id === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"id\"');\n }\n\n const apiPath = '/v1/customers/contact_events/{id}'.replace('{id}', id);\n const apiPayload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. The people list, and the read behind an approval queue: `registration_status=pending` is every application waiting for a decision. Every column is a filter — `external_user_id` in particular is how a storefront turns a platform auth id back into a customer — and the page is `limit`/`offset`/`order`.\n *\n * @param {string} params.id - Filter to exactly one person.\n * @param {string} params.organizationId - Filter to one company's people. The company address book.\n * @param {string} params.email - Filter by exact email — the one lookup that is guaranteed to return at most one person, because the address is unique per tenant.\n * @param {string} params.firstName - Filter to rows whose `first_name` is exactly this value. Given name. Optional: an ERP import often has only a mailbox.\n * @param {string} params.lastName - Filter to rows whose `last_name` is exactly this value. Family name. Optional for the same reason.\n * @param {string} params.phone - Filter to rows whose `phone` is exactly this value. Direct number of this person, as somebody typed it — free text, no format is enforced or normalized. E.164 is what an integration should send.\n * @param {string} params.jobTitle - Filter to rows whose `job_title` is exactly this value. What this person does at the company — free text on purpose, because it is a title and not a grant. The permission ladder is `role`; overloading a job title with authority silently un-grants everyone the day the ledger is enforced.\n * @param {string} params.role - Filter by role. One of the tenant's own roles (GET /customers/roles) — a tenant that never edited the ledger has viewer, requester, buyer, approver, admin.\n * @param {Status} params.status - Filter by status.\n * @param {number} params.orderApprovalLimit - Filter to rows whose `order_approval_limit` is exactly this value. Amount ceiling for this person, in the market's currency: with the `orders.approve` permission it is the most they may sign off. Null means no ceiling. An amount, never a grant — the grant comes from the role.\n * @param {RegistrationStatus} params.registrationStatus - Filter by registration state. `pending` IS the approval inbox — there is no second entity for it.\n * @param {string} params.registrationDecidedAt - Exact timestamp equality — this API has no range filter. To bound a period, sort with `order` and page. When a merchant approved or rejected the application. Null while nobody has decided.\n * @param {string} params.registrationDecidedBy - Filter to rows whose `registration_decided_by` is exactly this value. Who decided — free text as the deciding client supplied it (an operator id or an email address), not a resolvable user reference.\n * @param {string} params.registrationReason - Filter to rows whose `registration_reason` is exactly this value. Why the application was declined. Always recorded here; whether the APPLICANT is ever told it is the tenant's `registration_reason_disclosed` setting, because that is a legal decision and not a template one.\n * @param {string} params.locale - Filter to rows whose `locale` is exactly this value. The language this person is written to in — BCP 47, and one of the store's configured locales. Null falls back to the store default.\n * @param {boolean} params.isPrimary - Filter to the primary contacts — with `organization_id`, the one person a merchant calls first at that company.\n * @param {string} params.externalUserId - Find the contact behind a platform user id. What a storefront session resolves with when it has an auth id and needs the customer record.\n * @param {string} params.createdAt - Exact timestamp equality — this API has no range filter. To bound a period, sort with `order` and page. When this person record was created in this app.\n * @param {string} params.updatedAt - Exact timestamp equality — this API has no range filter. To bound a period, sort with `order` and page. When any column of this row last changed.\n * @param {number} params.limit - Page size (default 50, max 200).\n * @param {number} params.offset - Row offset for pagination (default 0).\n * @param {string} params.order - Sort by one column: 'column' | 'column.asc' | 'column.desc'. A bare column sorts ascending. Anything else is refused with 400.\n * @throws {RevenexxException}\n * @returns {Promise<{}>}\n */\n customersContactsList(params?: { id?: string, organizationId?: string, email?: string, firstName?: string, lastName?: string, phone?: string, jobTitle?: string, role?: string, status?: Status, orderApprovalLimit?: number, registrationStatus?: RegistrationStatus, registrationDecidedAt?: string, registrationDecidedBy?: string, registrationReason?: string, locale?: string, isPrimary?: boolean, externalUserId?: string, createdAt?: string, updatedAt?: string, limit?: number, offset?: number, order?: string }): Promise<{}>;\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. The people list, and the read behind an approval queue: `registration_status=pending` is every application waiting for a decision. Every column is a filter — `external_user_id` in particular is how a storefront turns a platform auth id back into a customer — and the page is `limit`/`offset`/`order`.\n *\n * @param {string} id - Filter to exactly one person.\n * @param {string} organizationId - Filter to one company's people. The company address book.\n * @param {string} email - Filter by exact email — the one lookup that is guaranteed to return at most one person, because the address is unique per tenant.\n * @param {string} firstName - Filter to rows whose `first_name` is exactly this value. Given name. Optional: an ERP import often has only a mailbox.\n * @param {string} lastName - Filter to rows whose `last_name` is exactly this value. Family name. Optional for the same reason.\n * @param {string} phone - Filter to rows whose `phone` is exactly this value. Direct number of this person, as somebody typed it — free text, no format is enforced or normalized. E.164 is what an integration should send.\n * @param {string} jobTitle - Filter to rows whose `job_title` is exactly this value. What this person does at the company — free text on purpose, because it is a title and not a grant. The permission ladder is `role`; overloading a job title with authority silently un-grants everyone the day the ledger is enforced.\n * @param {string} role - Filter by role. One of the tenant's own roles (GET /customers/roles) — a tenant that never edited the ledger has viewer, requester, buyer, approver, admin.\n * @param {Status} status - Filter by status.\n * @param {number} orderApprovalLimit - Filter to rows whose `order_approval_limit` is exactly this value. Amount ceiling for this person, in the market's currency: with the `orders.approve` permission it is the most they may sign off. Null means no ceiling. An amount, never a grant — the grant comes from the role.\n * @param {RegistrationStatus} registrationStatus - Filter by registration state. `pending` IS the approval inbox — there is no second entity for it.\n * @param {string} registrationDecidedAt - Exact timestamp equality — this API has no range filter. To bound a period, sort with `order` and page. When a merchant approved or rejected the application. Null while nobody has decided.\n * @param {string} registrationDecidedBy - Filter to rows whose `registration_decided_by` is exactly this value. Who decided — free text as the deciding client supplied it (an operator id or an email address), not a resolvable user reference.\n * @param {string} registrationReason - Filter to rows whose `registration_reason` is exactly this value. Why the application was declined. Always recorded here; whether the APPLICANT is ever told it is the tenant's `registration_reason_disclosed` setting, because that is a legal decision and not a template one.\n * @param {string} locale - Filter to rows whose `locale` is exactly this value. The language this person is written to in — BCP 47, and one of the store's configured locales. Null falls back to the store default.\n * @param {boolean} isPrimary - Filter to the primary contacts — with `organization_id`, the one person a merchant calls first at that company.\n * @param {string} externalUserId - Find the contact behind a platform user id. What a storefront session resolves with when it has an auth id and needs the customer record.\n * @param {string} createdAt - Exact timestamp equality — this API has no range filter. To bound a period, sort with `order` and page. When this person record was created in this app.\n * @param {string} updatedAt - Exact timestamp equality — this API has no range filter. To bound a period, sort with `order` and page. When any column of this row last changed.\n * @param {number} limit - Page size (default 50, max 200).\n * @param {number} offset - Row offset for pagination (default 0).\n * @param {string} order - Sort by one column: 'column' | 'column.asc' | 'column.desc'. A bare column sorts ascending. Anything else is refused with 400.\n * @throws {RevenexxException}\n * @returns {Promise<{}>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactsList(id?: string, organizationId?: string, email?: string, firstName?: string, lastName?: string, phone?: string, jobTitle?: string, role?: string, status?: Status, orderApprovalLimit?: number, registrationStatus?: RegistrationStatus, registrationDecidedAt?: string, registrationDecidedBy?: string, registrationReason?: string, locale?: string, isPrimary?: boolean, externalUserId?: string, createdAt?: string, updatedAt?: string, limit?: number, offset?: number, order?: string): Promise<{}>;\n customersContactsList(\n paramsOrFirst?: { id?: string, organizationId?: string, email?: string, firstName?: string, lastName?: string, phone?: string, jobTitle?: string, role?: string, status?: Status, orderApprovalLimit?: number, registrationStatus?: RegistrationStatus, registrationDecidedAt?: string, registrationDecidedBy?: string, registrationReason?: string, locale?: string, isPrimary?: boolean, externalUserId?: string, createdAt?: string, updatedAt?: string, limit?: number, offset?: number, order?: string } | string,\n ...rest: [(string)?, (string)?, (string)?, (string)?, (string)?, (string)?, (string)?, (Status)?, (number)?, (RegistrationStatus)?, (string)?, (string)?, (string)?, (string)?, (boolean)?, (string)?, (string)?, (string)?, (number)?, (number)?, (string)?] \n ): Promise<{}> {\n let params: { id?: string, organizationId?: string, email?: string, firstName?: string, lastName?: string, phone?: string, jobTitle?: string, role?: string, status?: Status, orderApprovalLimit?: number, registrationStatus?: RegistrationStatus, registrationDecidedAt?: string, registrationDecidedBy?: string, registrationReason?: string, locale?: string, isPrimary?: boolean, externalUserId?: string, createdAt?: string, updatedAt?: string, limit?: number, offset?: number, order?: string };\n \n if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { id?: string, organizationId?: string, email?: string, firstName?: string, lastName?: string, phone?: string, jobTitle?: string, role?: string, status?: Status, orderApprovalLimit?: number, registrationStatus?: RegistrationStatus, registrationDecidedAt?: string, registrationDecidedBy?: string, registrationReason?: string, locale?: string, isPrimary?: boolean, externalUserId?: string, createdAt?: string, updatedAt?: string, limit?: number, offset?: number, order?: string };\n } else {\n params = {\n id: paramsOrFirst as string,\n organizationId: rest[0] as string,\n email: rest[1] as string,\n firstName: rest[2] as string,\n lastName: rest[3] as string,\n phone: rest[4] as string,\n jobTitle: rest[5] as string,\n role: rest[6] as string,\n status: rest[7] as Status,\n orderApprovalLimit: rest[8] as number,\n registrationStatus: rest[9] as RegistrationStatus,\n registrationDecidedAt: rest[10] as string,\n registrationDecidedBy: rest[11] as string,\n registrationReason: rest[12] as string,\n locale: rest[13] as string,\n isPrimary: rest[14] as boolean,\n externalUserId: rest[15] as string,\n createdAt: rest[16] as string,\n updatedAt: rest[17] as string,\n limit: rest[18] as number,\n offset: rest[19] as number,\n order: rest[20] as string \n };\n }\n \n const id = params.id;\n const organizationId = params.organizationId;\n const email = params.email;\n const firstName = params.firstName;\n const lastName = params.lastName;\n const phone = params.phone;\n const jobTitle = params.jobTitle;\n const role = params.role;\n const status = params.status;\n const orderApprovalLimit = params.orderApprovalLimit;\n const registrationStatus = params.registrationStatus;\n const registrationDecidedAt = params.registrationDecidedAt;\n const registrationDecidedBy = params.registrationDecidedBy;\n const registrationReason = params.registrationReason;\n const locale = params.locale;\n const isPrimary = params.isPrimary;\n const externalUserId = params.externalUserId;\n const createdAt = params.createdAt;\n const updatedAt = params.updatedAt;\n const limit = params.limit;\n const offset = params.offset;\n const order = params.order;\n\n\n const apiPath = '/v1/customers/contacts';\n const apiPayload: Payload = {};\n if (typeof id !== 'undefined') {\n apiPayload['id'] = id;\n }\n if (typeof organizationId !== 'undefined') {\n apiPayload['organization_id'] = organizationId;\n }\n if (typeof email !== 'undefined') {\n apiPayload['email'] = email;\n }\n if (typeof firstName !== 'undefined') {\n apiPayload['first_name'] = firstName;\n }\n if (typeof lastName !== 'undefined') {\n apiPayload['last_name'] = lastName;\n }\n if (typeof phone !== 'undefined') {\n apiPayload['phone'] = phone;\n }\n if (typeof jobTitle !== 'undefined') {\n apiPayload['job_title'] = jobTitle;\n }\n if (typeof role !== 'undefined') {\n apiPayload['role'] = role;\n }\n if (typeof status !== 'undefined') {\n apiPayload['status'] = status;\n }\n if (typeof orderApprovalLimit !== 'undefined') {\n apiPayload['order_approval_limit'] = orderApprovalLimit;\n }\n if (typeof registrationStatus !== 'undefined') {\n apiPayload['registration_status'] = registrationStatus;\n }\n if (typeof registrationDecidedAt !== 'undefined') {\n apiPayload['registration_decided_at'] = registrationDecidedAt;\n }\n if (typeof registrationDecidedBy !== 'undefined') {\n apiPayload['registration_decided_by'] = registrationDecidedBy;\n }\n if (typeof registrationReason !== 'undefined') {\n apiPayload['registration_reason'] = registrationReason;\n }\n if (typeof locale !== 'undefined') {\n apiPayload['locale'] = locale;\n }\n if (typeof isPrimary !== 'undefined') {\n apiPayload['is_primary'] = isPrimary;\n }\n if (typeof externalUserId !== 'undefined') {\n apiPayload['external_user_id'] = externalUserId;\n }\n if (typeof createdAt !== 'undefined') {\n apiPayload['created_at'] = createdAt;\n }\n if (typeof updatedAt !== 'undefined') {\n apiPayload['updated_at'] = updatedAt;\n }\n if (typeof limit !== 'undefined') {\n apiPayload['limit'] = limit;\n }\n if (typeof offset !== 'undefined') {\n apiPayload['offset'] = offset;\n }\n if (typeof order !== 'undefined') {\n apiPayload['order'] = order;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. Creates the person and their platform login together, so a contact that exists can always sign in. `role` names one of this tenant's own roles and decides what they may do; `registration_status` may only be set to `pending` or `approved` here, because a rejection has to carry a reason and that is the reject route's job. `email` is the only field a create cannot omit; everything else is optional or defaulted by the database. Two rows of this tenant may not share `email` or `external_user_id` (while external_user_id IS NOT NULL).\n *\n * @param {string} params.email - Login identity and the unique key of a person within the tenant. Changing it changes the platform login with it. Two people at the same company therefore need two addresses — a shared purchasing mailbox is one contact, not several.\n * @param {string} params.firstName - Given name. Optional: an ERP import often has only a mailbox.\n * @param {boolean} params.isPrimary - The main contact of its organization — who a merchant calls first. At most one per company is the intent; the tenant's `primary_contact_required` setting decides whether the last one may be demoted or deleted.\n * @param {string} params.jobTitle - What this person does at the company — free text on purpose, because it is a title and not a grant. The permission ladder is `role`; overloading a job title with authority silently un-grants everyone the day the ledger is enforced.\n * @param {string} params.lastName - Family name. Optional for the same reason.\n * @param {string} params.locale - The language this person is written to in — BCP 47, and one of the store's configured locales. Null falls back to the store default.\n * @param {number} params.orderApprovalLimit - Amount ceiling for this person, in the market's currency: with the `orders.approve` permission it is the most they may sign off. Null means no ceiling. An amount, never a grant — the grant comes from the role.\n * @param {string} params.organizationId - The company this person belongs to. NULL is a legitimate state, not a defect: a standalone buyer with no company behind them. Deleting the organization sets this null and keeps the person. Membership is mirrored to the platform team.\n * @param {string} params.phone - Direct number of this person, as somebody typed it — free text, no format is enforced or normalized. E.164 is what an integration should send.\n * @param {CustomersContactsCreateRegistrationStatus} params.registrationStatus - Where this person's own application stands: 'approved' (the default, and what an open store creates), 'pending' while a merchant has yet to decide, 'rejected' once they declined. Only the approve/reject routes move it; it is ignored on an ordinary update. On CREATE only, and only to file the contact as an application: 'pending' creates the platform user disabled and routes the contact through approve/reject. Ignored on update.\n * @param {string} params.role - The person's role INSIDE its organization, and the only thing permissions are derived from. One of the tenant's own roles (GET /customers/roles); a tenant that never edited the ledger has viewer, requester, buyer, approver, admin. Also the team role on the platform mirror. There is no global role — the same person in two companies is two contacts. A tenant that never edited the ledger has viewer, requester, buyer, approver, admin; a create without a role gets the one flagged as default, and a role the tenant does not keep is a 400.\n * @param {ContactStatus} params.status - Whether this person may act: 'invited' has been created but has not accepted, 'active' works, 'blocked' cannot log in. A create through the API defaults to 'invited'; a self-registration in an open store lands 'active'. Default 'invited' on create.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Contact>}\n */\n customersContactsCreate(params: { email: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus }): Promise<Models.Contact>;\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. Creates the person and their platform login together, so a contact that exists can always sign in. `role` names one of this tenant's own roles and decides what they may do; `registration_status` may only be set to `pending` or `approved` here, because a rejection has to carry a reason and that is the reject route's job. `email` is the only field a create cannot omit; everything else is optional or defaulted by the database. Two rows of this tenant may not share `email` or `external_user_id` (while external_user_id IS NOT NULL).\n *\n * @param {string} email - Login identity and the unique key of a person within the tenant. Changing it changes the platform login with it. Two people at the same company therefore need two addresses — a shared purchasing mailbox is one contact, not several.\n * @param {string} firstName - Given name. Optional: an ERP import often has only a mailbox.\n * @param {boolean} isPrimary - The main contact of its organization — who a merchant calls first. At most one per company is the intent; the tenant's `primary_contact_required` setting decides whether the last one may be demoted or deleted.\n * @param {string} jobTitle - What this person does at the company — free text on purpose, because it is a title and not a grant. The permission ladder is `role`; overloading a job title with authority silently un-grants everyone the day the ledger is enforced.\n * @param {string} lastName - Family name. Optional for the same reason.\n * @param {string} locale - The language this person is written to in — BCP 47, and one of the store's configured locales. Null falls back to the store default.\n * @param {number} orderApprovalLimit - Amount ceiling for this person, in the market's currency: with the `orders.approve` permission it is the most they may sign off. Null means no ceiling. An amount, never a grant — the grant comes from the role.\n * @param {string} organizationId - The company this person belongs to. NULL is a legitimate state, not a defect: a standalone buyer with no company behind them. Deleting the organization sets this null and keeps the person. Membership is mirrored to the platform team.\n * @param {string} phone - Direct number of this person, as somebody typed it — free text, no format is enforced or normalized. E.164 is what an integration should send.\n * @param {CustomersContactsCreateRegistrationStatus} registrationStatus - Where this person's own application stands: 'approved' (the default, and what an open store creates), 'pending' while a merchant has yet to decide, 'rejected' once they declined. Only the approve/reject routes move it; it is ignored on an ordinary update. On CREATE only, and only to file the contact as an application: 'pending' creates the platform user disabled and routes the contact through approve/reject. Ignored on update.\n * @param {string} role - The person's role INSIDE its organization, and the only thing permissions are derived from. One of the tenant's own roles (GET /customers/roles); a tenant that never edited the ledger has viewer, requester, buyer, approver, admin. Also the team role on the platform mirror. There is no global role — the same person in two companies is two contacts. A tenant that never edited the ledger has viewer, requester, buyer, approver, admin; a create without a role gets the one flagged as default, and a role the tenant does not keep is a 400.\n * @param {ContactStatus} status - Whether this person may act: 'invited' has been created but has not accepted, 'active' works, 'blocked' cannot log in. A create through the API defaults to 'invited'; a self-registration in an open store lands 'active'. Default 'invited' on create.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Contact>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactsCreate(email: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus): Promise<Models.Contact>;\n customersContactsCreate(\n paramsOrFirst: { email: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus } | string,\n ...rest: [(string)?, (boolean)?, (string)?, (string)?, (string)?, (number)?, (string)?, (string)?, (CustomersContactsCreateRegistrationStatus)?, (string)?, (ContactStatus)?] \n ): Promise<Models.Contact> {\n let params: { email: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { email: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus };\n } else {\n params = {\n email: paramsOrFirst as string,\n firstName: rest[0] as string,\n isPrimary: rest[1] as boolean,\n jobTitle: rest[2] as string,\n lastName: rest[3] as string,\n locale: rest[4] as string,\n orderApprovalLimit: rest[5] as number,\n organizationId: rest[6] as string,\n phone: rest[7] as string,\n registrationStatus: rest[8] as CustomersContactsCreateRegistrationStatus,\n role: rest[9] as string,\n status: rest[10] as ContactStatus \n };\n }\n \n const email = params.email;\n const firstName = params.firstName;\n const isPrimary = params.isPrimary;\n const jobTitle = params.jobTitle;\n const lastName = params.lastName;\n const locale = params.locale;\n const orderApprovalLimit = params.orderApprovalLimit;\n const organizationId = params.organizationId;\n const phone = params.phone;\n const registrationStatus = params.registrationStatus;\n const role = params.role;\n const status = params.status;\n\n if (typeof email === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"email\"');\n }\n\n const apiPath = '/v1/customers/contacts';\n const apiPayload: Payload = {};\n if (typeof email !== 'undefined') {\n apiPayload['email'] = email;\n }\n if (typeof firstName !== 'undefined') {\n apiPayload['first_name'] = firstName;\n }\n if (typeof isPrimary !== 'undefined') {\n apiPayload['is_primary'] = isPrimary;\n }\n if (typeof jobTitle !== 'undefined') {\n apiPayload['job_title'] = jobTitle;\n }\n if (typeof lastName !== 'undefined') {\n apiPayload['last_name'] = lastName;\n }\n if (typeof locale !== 'undefined') {\n apiPayload['locale'] = locale;\n }\n if (typeof orderApprovalLimit !== 'undefined') {\n apiPayload['order_approval_limit'] = orderApprovalLimit;\n }\n if (typeof organizationId !== 'undefined') {\n apiPayload['organization_id'] = organizationId;\n }\n if (typeof phone !== 'undefined') {\n apiPayload['phone'] = phone;\n }\n if (typeof registrationStatus !== 'undefined') {\n apiPayload['registration_status'] = registrationStatus;\n }\n if (typeof role !== 'undefined') {\n apiPayload['role'] = role;\n }\n if (typeof status !== 'undefined') {\n apiPayload['status'] = status;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * This is how a call, a visit, a meeting, an email or a plain note reaches one person's timeline. It writes a contact_events row with kind != 'system' and emits contact_event.created, so an activity travels on the same bus as a registration decision and a timeline is one query rather than a union. organization_id is DERIVED from the contact, never taken from the body — an activity cannot be filed under a company the person does not belong to.\n *\n * @param {string} params.contactId - The person the entry is about. The organization is derived from them.\n * @param {string} params.subject - One line a person can scan in a timeline. Required — an entry nobody can read at a glance is not worth the row.\n * @param {string} params.actor - Who logged it (operator id or email). Free text; this app does not resolve it.\n * @param {ContactActivityKind} params.kind - What happened. 'system' is deliberately NOT accepted — those rows are the registration decision trail and are written by the approve/reject routes. Default 'note'.\n * @param {string} params.note - The long form. Stored inside the event payload as `note`, not as a column of its own.\n * @param {string} params.occurredAt - When it actually happened. Defaults to now — a call logged on Monday about Friday should say Friday.\n * @throws {RevenexxException}\n * @returns {Promise<Models.ContactEvent>}\n */\n customersContactsEventsCreate(params: { contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string }): Promise<Models.ContactEvent>;\n /**\n * This is how a call, a visit, a meeting, an email or a plain note reaches one person's timeline. It writes a contact_events row with kind != 'system' and emits contact_event.created, so an activity travels on the same bus as a registration decision and a timeline is one query rather than a union. organization_id is DERIVED from the contact, never taken from the body — an activity cannot be filed under a company the person does not belong to.\n *\n * @param {string} contactId - The person the entry is about. The organization is derived from them.\n * @param {string} subject - One line a person can scan in a timeline. Required — an entry nobody can read at a glance is not worth the row.\n * @param {string} actor - Who logged it (operator id or email). Free text; this app does not resolve it.\n * @param {ContactActivityKind} kind - What happened. 'system' is deliberately NOT accepted — those rows are the registration decision trail and are written by the approve/reject routes. Default 'note'.\n * @param {string} note - The long form. Stored inside the event payload as `note`, not as a column of its own.\n * @param {string} occurredAt - When it actually happened. Defaults to now — a call logged on Monday about Friday should say Friday.\n * @throws {RevenexxException}\n * @returns {Promise<Models.ContactEvent>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactsEventsCreate(contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string): Promise<Models.ContactEvent>;\n customersContactsEventsCreate(\n paramsOrFirst: { contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string } | string,\n ...rest: [(string)?, (string)?, (ContactActivityKind)?, (string)?, (string)?] \n ): Promise<Models.ContactEvent> {\n let params: { contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string };\n } else {\n params = {\n contactId: paramsOrFirst as string,\n subject: rest[0] as string,\n actor: rest[1] as string,\n kind: rest[2] as ContactActivityKind,\n note: rest[3] as string,\n occurredAt: rest[4] as string \n };\n }\n \n const contactId = params.contactId;\n const subject = params.subject;\n const actor = params.actor;\n const kind = params.kind;\n const note = params.note;\n const occurredAt = params.occurredAt;\n\n if (typeof contactId === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"contactId\"');\n }\n if (typeof subject === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"subject\"');\n }\n\n const apiPath = '/v1/customers/contacts/{contact_id}/events'.replace('{contact_id}', contactId);\n const apiPayload: Payload = {};\n if (typeof actor !== 'undefined') {\n apiPayload['actor'] = actor;\n }\n if (typeof kind !== 'undefined') {\n apiPayload['kind'] = kind;\n }\n if (typeof note !== 'undefined') {\n apiPayload['note'] = note;\n }\n if (typeof occurredAt !== 'undefined') {\n apiPayload['occurred_at'] = occurredAt;\n }\n if (typeof subject !== 'undefined') {\n apiPayload['subject'] = subject;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * Tell somebody they were added to a company. A deliberate act rather than a side effect of creating the contact: a merchant entering a colleague from a business card is not always ready to mail them, and \"added\" and \"told\" are different decisions. No secret travels — the platform team membership is confirmed as it is created, so there is nothing to accept; the message says \"you are in, here is the way in\". Unlike the auth mails, a failure here IS a failure: the identity service sends nothing for this occasion, so this is the only message the person gets.\n *\n * @param {string} params.contactId - The person being told. They are already a member — this only sends the message.\n * @param {string} params.url - Where the invitation points — the storefront sign-in, normally. There is no token in it: the person is already a member and only has to sign in.\n * @param {string} params.invitedBy - Who did the inviting, as the recipient should read it. Absent, the company name is used — \"Beispiel GmbH invited you\" reads better than the name of somebody they have never heard of.\n * @throws {RevenexxException}\n * @returns {Promise<Models.ContactInviteResponse>}\n */\n customersContactsInvite(params: { contactId: string, url: string, invitedBy?: string }): Promise<Models.ContactInviteResponse>;\n /**\n * Tell somebody they were added to a company. A deliberate act rather than a side effect of creating the contact: a merchant entering a colleague from a business card is not always ready to mail them, and \"added\" and \"told\" are different decisions. No secret travels — the platform team membership is confirmed as it is created, so there is nothing to accept; the message says \"you are in, here is the way in\". Unlike the auth mails, a failure here IS a failure: the identity service sends nothing for this occasion, so this is the only message the person gets.\n *\n * @param {string} contactId - The person being told. They are already a member — this only sends the message.\n * @param {string} url - Where the invitation points — the storefront sign-in, normally. There is no token in it: the person is already a member and only has to sign in.\n * @param {string} invitedBy - Who did the inviting, as the recipient should read it. Absent, the company name is used — \"Beispiel GmbH invited you\" reads better than the name of somebody they have never heard of.\n * @throws {RevenexxException}\n * @returns {Promise<Models.ContactInviteResponse>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactsInvite(contactId: string, url: string, invitedBy?: string): Promise<Models.ContactInviteResponse>;\n customersContactsInvite(\n paramsOrFirst: { contactId: string, url: string, invitedBy?: string } | string,\n ...rest: [(string)?, (string)?] \n ): Promise<Models.ContactInviteResponse> {\n let params: { contactId: string, url: string, invitedBy?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { contactId: string, url: string, invitedBy?: string };\n } else {\n params = {\n contactId: paramsOrFirst as string,\n url: rest[0] as string,\n invitedBy: rest[1] as string \n };\n }\n \n const contactId = params.contactId;\n const url = params.url;\n const invitedBy = params.invitedBy;\n\n if (typeof contactId === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"contactId\"');\n }\n if (typeof url === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"url\"');\n }\n\n const apiPath = '/v1/customers/contacts/{contact_id}/invite'.replace('{contact_id}', contactId);\n const apiPayload: Payload = {};\n if (typeof invitedBy !== 'undefined') {\n apiPayload['invited_by'] = invitedBy;\n }\n if (typeof url !== 'undefined') {\n apiPayload['url'] = url;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * Computed from contacts.role on every call — the grants are never persisted, so this always reflects the role the contact holds right now.\n *\n * @param {string} params.contactId - The person whose grants are being read.\n * @throws {RevenexxException}\n * @returns {Promise<Models.ContactPermissions>}\n */\n customersContactsPermissions(params: { contactId: string }): Promise<Models.ContactPermissions>;\n /**\n * Computed from contacts.role on every call — the grants are never persisted, so this always reflects the role the contact holds right now.\n *\n * @param {string} contactId - The person whose grants are being read.\n * @throws {RevenexxException}\n * @returns {Promise<Models.ContactPermissions>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactsPermissions(contactId: string): Promise<Models.ContactPermissions>;\n customersContactsPermissions(\n paramsOrFirst: { contactId: string } | string \n ): Promise<Models.ContactPermissions> {\n let params: { contactId: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { contactId: string };\n } else {\n params = {\n contactId: paramsOrFirst as string \n };\n }\n \n const contactId = params.contactId;\n\n if (typeof contactId === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"contactId\"');\n }\n\n const apiPath = '/v1/customers/contacts/{contact_id}/permissions'.replace('{contact_id}', contactId);\n const apiPayload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * Only reachable for a contact whose registration_status is 'pending' or 'rejected' (approving a rejection reinstates it). Enables the platform user FIRST — the password the applicant chose at submit time works immediately, no new credential is issued — then sets registration_status='approved' and status='active', and un-blocks the organization this registration itself founded. Approving an already-approved registration is a no-op that emits nothing, so a retry is safe. Writes a contact_events row named 'registration.approved'.\n *\n * @param {string} params.contactId - The applicant. It is the CONTACT that is approved — the organization it founded is unblocked with it.\n * @param {string} params.decidedBy - Who approved it — recorded on the contact and carried in the event. Free text (operator id or email); this app does not resolve it.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Contact>}\n */\n customersRegistrationsApprove(params: { contactId: string, decidedBy?: string }): Promise<Models.Contact>;\n /**\n * Only reachable for a contact whose registration_status is 'pending' or 'rejected' (approving a rejection reinstates it). Enables the platform user FIRST — the password the applicant chose at submit time works immediately, no new credential is issued — then sets registration_status='approved' and status='active', and un-blocks the organization this registration itself founded. Approving an already-approved registration is a no-op that emits nothing, so a retry is safe. Writes a contact_events row named 'registration.approved'.\n *\n * @param {string} contactId - The applicant. It is the CONTACT that is approved — the organization it founded is unblocked with it.\n * @param {string} decidedBy - Who approved it — recorded on the contact and carried in the event. Free text (operator id or email); this app does not resolve it.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Contact>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersRegistrationsApprove(contactId: string, decidedBy?: string): Promise<Models.Contact>;\n customersRegistrationsApprove(\n paramsOrFirst: { contactId: string, decidedBy?: string } | string,\n ...rest: [(string)?] \n ): Promise<Models.Contact> {\n let params: { contactId: string, decidedBy?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { contactId: string, decidedBy?: string };\n } else {\n params = {\n contactId: paramsOrFirst as string,\n decidedBy: rest[0] as string \n };\n }\n \n const contactId = params.contactId;\n const decidedBy = params.decidedBy;\n\n if (typeof contactId === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"contactId\"');\n }\n\n const apiPath = '/v1/customers/contacts/{contact_id}/registration/approve'.replace('{contact_id}', contactId);\n const apiPayload: Payload = {};\n if (typeof decidedBy !== 'undefined') {\n apiPayload['decided_by'] = decidedBy;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * Only reachable from 'pending'. Sets registration_status='rejected' and status='blocked', keeps the platform user in place but disabled — the email must not fall free for a silent second identity, and the merchant keeps the record. Delete the contact to remove both. 'reason' is mandatory and is stored on the contact plus carried in the event payload, so the applicant can be told why. Rejecting an already-rejected registration is a no-op. Writes a contact_events row named 'registration.rejected'.\n *\n * @param {string} params.contactId - The applicant being declined.\n * @param {string} params.reason - Why the application was declined. Always stored on the contact. It only reaches the APPLICANT when the tenant's registration_reason_disclosed setting is on — the event payload then carries it, and so does the 403 the login answers.\n * @param {string} params.decidedBy - Who rejected it — recorded on the contact and carried in the event.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Contact>}\n */\n customersRegistrationsReject(params: { contactId: string, reason: string, decidedBy?: string }): Promise<Models.Contact>;\n /**\n * Only reachable from 'pending'. Sets registration_status='rejected' and status='blocked', keeps the platform user in place but disabled — the email must not fall free for a silent second identity, and the merchant keeps the record. Delete the contact to remove both. 'reason' is mandatory and is stored on the contact plus carried in the event payload, so the applicant can be told why. Rejecting an already-rejected registration is a no-op. Writes a contact_events row named 'registration.rejected'.\n *\n * @param {string} contactId - The applicant being declined.\n * @param {string} reason - Why the application was declined. Always stored on the contact. It only reaches the APPLICANT when the tenant's registration_reason_disclosed setting is on — the event payload then carries it, and so does the 403 the login answers.\n * @param {string} decidedBy - Who rejected it — recorded on the contact and carried in the event.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Contact>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersRegistrationsReject(contactId: string, reason: string, decidedBy?: string): Promise<Models.Contact>;\n customersRegistrationsReject(\n paramsOrFirst: { contactId: string, reason: string, decidedBy?: string } | string,\n ...rest: [(string)?, (string)?] \n ): Promise<Models.Contact> {\n let params: { contactId: string, reason: string, decidedBy?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { contactId: string, reason: string, decidedBy?: string };\n } else {\n params = {\n contactId: paramsOrFirst as string,\n reason: rest[0] as string,\n decidedBy: rest[1] as string \n };\n }\n \n const contactId = params.contactId;\n const reason = params.reason;\n const decidedBy = params.decidedBy;\n\n if (typeof contactId === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"contactId\"');\n }\n if (typeof reason === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"reason\"');\n }\n\n const apiPath = '/v1/customers/contacts/{contact_id}/registration/reject'.replace('{contact_id}', contactId);\n const apiPayload: Payload = {};\n if (typeof decidedBy !== 'undefined') {\n apiPayload['decided_by'] = decidedBy;\n }\n if (typeof reason !== 'undefined') {\n apiPayload['reason'] = reason;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. Removes the person and their platform login, so they can no longer sign in anywhere. Their company keeps trading; use `status: \"blocked\"` instead when the intent is to stop one person without erasing what they did. Deleting one takes every `contact_events` and `addresses` row that points at it with it — the foreign keys decide, not this route.\n *\n * @param {string} params.id - The contact to delete.\n * @throws {RevenexxException}\n * @returns {Promise<{}>}\n */\n customersContactsDelete(params: { id: string }): Promise<{}>;\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. Removes the person and their platform login, so they can no longer sign in anywhere. Their company keeps trading; use `status: \"blocked\"` instead when the intent is to stop one person without erasing what they did. Deleting one takes every `contact_events` and `addresses` row that points at it with it — the foreign keys decide, not this route.\n *\n * @param {string} id - The contact to delete.\n * @throws {RevenexxException}\n * @returns {Promise<{}>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactsDelete(id: string): Promise<{}>;\n customersContactsDelete(\n paramsOrFirst: { id: string } | string \n ): Promise<{}> {\n let params: { id: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { id: string };\n } else {\n params = {\n id: paramsOrFirst as string \n };\n }\n \n const id = params.id;\n\n if (typeof id === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"id\"');\n }\n\n const apiPath = '/v1/customers/contacts/{id}'.replace('{id}', id);\n const apiPayload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'delete',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. One person by id. What they are ALLOWED to do is not in here: permissions are derived from `role` at read time and answered by `GET /customers/contacts/{contact_id}/permissions`.\n *\n * @param {string} params.id - The contact to read.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Contact>}\n */\n customersContactsGet(params: { id: string }): Promise<Models.Contact>;\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. One person by id. What they are ALLOWED to do is not in here: permissions are derived from `role` at read time and answered by `GET /customers/contacts/{contact_id}/permissions`.\n *\n * @param {string} id - The contact to read.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Contact>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactsGet(id: string): Promise<Models.Contact>;\n customersContactsGet(\n paramsOrFirst: { id: string } | string \n ): Promise<Models.Contact> {\n let params: { id: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { id: string };\n } else {\n params = {\n id: paramsOrFirst as string \n };\n }\n \n const id = params.id;\n\n if (typeof id === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"id\"');\n }\n\n const apiPath = '/v1/customers/contacts/{id}'.replace('{id}', id);\n const apiPayload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n }\n\n return this.client.call(\n 'get',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. A partial update — send only what changes. `external_user_id` and every `registration_*` column are ignored: the link to platform auth is mirror-managed, and registration state is only ever moved by the approve and reject routes, which record why. Two rows of this tenant may not share `email` or `external_user_id` (while external_user_id IS NOT NULL).\n *\n * @param {string} params.id - The contact to update.\n * @param {string} params.email - Login identity and the unique key of a person within the tenant. Changing it changes the platform login with it. Two people at the same company therefore need two addresses — a shared purchasing mailbox is one contact, not several.\n * @param {string} params.firstName - Given name. Optional: an ERP import often has only a mailbox.\n * @param {boolean} params.isPrimary - The main contact of its organization — who a merchant calls first. At most one per company is the intent; the tenant's `primary_contact_required` setting decides whether the last one may be demoted or deleted.\n * @param {string} params.jobTitle - What this person does at the company — free text on purpose, because it is a title and not a grant. The permission ladder is `role`; overloading a job title with authority silently un-grants everyone the day the ledger is enforced.\n * @param {string} params.lastName - Family name. Optional for the same reason.\n * @param {string} params.locale - The language this person is written to in — BCP 47, and one of the store's configured locales. Null falls back to the store default.\n * @param {number} params.orderApprovalLimit - Amount ceiling for this person, in the market's currency: with the `orders.approve` permission it is the most they may sign off. Null means no ceiling. An amount, never a grant — the grant comes from the role.\n * @param {string} params.organizationId - The company this person belongs to. NULL is a legitimate state, not a defect: a standalone buyer with no company behind them. Deleting the organization sets this null and keeps the person. Membership is mirrored to the platform team.\n * @param {string} params.phone - Direct number of this person, as somebody typed it — free text, no format is enforced or normalized. E.164 is what an integration should send.\n * @param {CustomersContactsCreateRegistrationStatus} params.registrationStatus - Where this person's own application stands: 'approved' (the default, and what an open store creates), 'pending' while a merchant has yet to decide, 'rejected' once they declined. Only the approve/reject routes move it; it is ignored on an ordinary update. On CREATE only, and only to file the contact as an application: 'pending' creates the platform user disabled and routes the contact through approve/reject. Ignored on update.\n * @param {string} params.role - The person's role INSIDE its organization, and the only thing permissions are derived from. One of the tenant's own roles (GET /customers/roles); a tenant that never edited the ledger has viewer, requester, buyer, approver, admin. Also the team role on the platform mirror. There is no global role — the same person in two companies is two contacts. A tenant that never edited the ledger has viewer, requester, buyer, approver, admin; a create without a role gets the one flagged as default, and a role the tenant does not keep is a 400.\n * @param {ContactStatus} params.status - Whether this person may act: 'invited' has been created but has not accepted, 'active' works, 'blocked' cannot log in. A create through the API defaults to 'invited'; a self-registration in an open store lands 'active'. Default 'invited' on create.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Contact>}\n */\n customersContactsUpdate(params: { id: string, email?: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus }): Promise<Models.Contact>;\n /**\n * A contact is a PERSON, and the unit that logs in: one platform user, one email address, one role held inside its organization. A contact without an organization is a standalone buyer rather than an error, and two people at the same company are two contacts sharing an `organization_id`. A partial update — send only what changes. `external_user_id` and every `registration_*` column are ignored: the link to platform auth is mirror-managed, and registration state is only ever moved by the approve and reject routes, which record why. Two rows of this tenant may not share `email` or `external_user_id` (while external_user_id IS NOT NULL).\n *\n * @param {string} id - The contact to update.\n * @param {string} email - Login identity and the unique key of a person within the tenant. Changing it changes the platform login with it. Two people at the same company therefore need two addresses — a shared purchasing mailbox is one contact, not several.\n * @param {string} firstName - Given name. Optional: an ERP import often has only a mailbox.\n * @param {boolean} isPrimary - The main contact of its organization — who a merchant calls first. At most one per company is the intent; the tenant's `primary_contact_required` setting decides whether the last one may be demoted or deleted.\n * @param {string} jobTitle - What this person does at the company — free text on purpose, because it is a title and not a grant. The permission ladder is `role`; overloading a job title with authority silently un-grants everyone the day the ledger is enforced.\n * @param {string} lastName - Family name. Optional for the same reason.\n * @param {string} locale - The language this person is written to in — BCP 47, and one of the store's configured locales. Null falls back to the store default.\n * @param {number} orderApprovalLimit - Amount ceiling for this person, in the market's currency: with the `orders.approve` permission it is the most they may sign off. Null means no ceiling. An amount, never a grant — the grant comes from the role.\n * @param {string} organizationId - The company this person belongs to. NULL is a legitimate state, not a defect: a standalone buyer with no company behind them. Deleting the organization sets this null and keeps the person. Membership is mirrored to the platform team.\n * @param {string} phone - Direct number of this person, as somebody typed it — free text, no format is enforced or normalized. E.164 is what an integration should send.\n * @param {CustomersContactsCreateRegistrationStatus} registrationStatus - Where this person's own application stands: 'approved' (the default, and what an open store creates), 'pending' while a merchant has yet to decide, 'rejected' once they declined. Only the approve/reject routes move it; it is ignored on an ordinary update. On CREATE only, and only to file the contact as an application: 'pending' creates the platform user disabled and routes the contact through approve/reject. Ignored on update.\n * @param {string} role - The person's role INSIDE its organization, and the only thing permissions are derived from. One of the tenant's own roles (GET /customers/roles); a tenant that never edited the ledger has viewer, requester, buyer, approver, admin. Also the team role on the platform mirror. There is no global role — the same person in two companies is two contacts. A tenant that never edited the ledger has viewer, requester, buyer, approver, admin; a create without a role gets the one flagged as default, and a role the tenant does not keep is a 400.\n * @param {ContactStatus} status - Whether this person may act: 'invited' has been created but has not accepted, 'active' works, 'blocked' cannot log in. A create through the API defaults to 'invited'; a self-registration in an open store lands 'active'. Default 'invited' on create.\n * @throws {RevenexxException}\n * @returns {Promise<Models.Contact>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersContactsUpdate(id: string, email?: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus): Promise<Models.Contact>;\n customersContactsUpdate(\n paramsOrFirst: { id: string, email?: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus } | string,\n ...rest: [(string)?, (string)?, (boolean)?, (string)?, (string)?, (string)?, (number)?, (string)?, (string)?, (CustomersContactsCreateRegistrationStatus)?, (string)?, (ContactStatus)?] \n ): Promise<Models.Contact> {\n let params: { id: string, email?: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { id: string, email?: string, firstName?: string, isPrimary?: boolean, jobTitle?: string, lastName?: string, locale?: string, orderApprovalLimit?: number, organizationId?: string, phone?: string, registrationStatus?: CustomersContactsCreateRegistrationStatus, role?: string, status?: ContactStatus };\n } else {\n params = {\n id: paramsOrFirst as string,\n email: rest[0] as string,\n firstName: rest[1] as string,\n isPrimary: rest[2] as boolean,\n jobTitle: rest[3] as string,\n lastName: rest[4] as string,\n locale: rest[5] as string,\n orderApprovalLimit: rest[6] as number,\n organizationId: rest[7] as string,\n phone: rest[8] as string,\n registrationStatus: rest[9] as CustomersContactsCreateRegistrationStatus,\n role: rest[10] as string,\n status: rest[11] as ContactStatus \n };\n }\n \n const id = params.id;\n const email = params.email;\n const firstName = params.firstName;\n const isPrimary = params.isPrimary;\n const jobTitle = params.jobTitle;\n const lastName = params.lastName;\n const locale = params.locale;\n const orderApprovalLimit = params.orderApprovalLimit;\n const organizationId = params.organizationId;\n const phone = params.phone;\n const registrationStatus = params.registrationStatus;\n const role = params.role;\n const status = params.status;\n\n if (typeof id === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"id\"');\n }\n\n const apiPath = '/v1/customers/contacts/{id}'.replace('{id}', id);\n const apiPayload: Payload = {};\n if (typeof email !== 'undefined') {\n apiPayload['email'] = email;\n }\n if (typeof firstName !== 'undefined') {\n apiPayload['first_name'] = firstName;\n }\n if (typeof isPrimary !== 'undefined') {\n apiPayload['is_primary'] = isPrimary;\n }\n if (typeof jobTitle !== 'undefined') {\n apiPayload['job_title'] = jobTitle;\n }\n if (typeof lastName !== 'undefined') {\n apiPayload['last_name'] = lastName;\n }\n if (typeof locale !== 'undefined') {\n apiPayload['locale'] = locale;\n }\n if (typeof orderApprovalLimit !== 'undefined') {\n apiPayload['order_approval_limit'] = orderApprovalLimit;\n }\n if (typeof organizationId !== 'undefined') {\n apiPayload['organization_id'] = organizationId;\n }\n if (typeof phone !== 'undefined') {\n apiPayload['phone'] = phone;\n }\n if (typeof registrationStatus !== 'undefined') {\n apiPayload['registration_status'] = registrationStatus;\n }\n if (typeof role !== 'undefined') {\n apiPayload['role'] = role;\n }\n if (typeof status !== 'undefined') {\n apiPayload['status'] = status;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'put',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n\n /**\n * Same row as the contact route, reached from the organization. 'contact_id' is required and must belong to THIS organization — the picker offering the contacts is not filtered, so the membership check here is what stops a call with one company being filed under someone else's person.\n *\n * @param {string} params.organizationId - The company the entry is filed under. The `contact_id` in the body has to belong to it.\n * @param {string} params.contactId - The person dealt with. Must be a contact of this organization.\n * @param {string} params.subject - One line a person can scan in a timeline. Required — an entry nobody can read at a glance is not worth the row.\n * @param {string} params.actor - Who logged it (operator id or email). Free text; this app does not resolve it.\n * @param {ContactActivityKind} params.kind - What happened. 'system' is deliberately NOT accepted — those rows are the registration decision trail and are written by the approve/reject routes. Default 'note'.\n * @param {string} params.note - The long form. Stored inside the event payload as `note`, not as a column of its own.\n * @param {string} params.occurredAt - When it actually happened. Defaults to now — a call logged on Monday about Friday should say Friday.\n * @throws {RevenexxException}\n * @returns {Promise<Models.ContactEvent>}\n */\n customersOrganizationsEventsCreate(params: { organizationId: string, contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string }): Promise<Models.ContactEvent>;\n /**\n * Same row as the contact route, reached from the organization. 'contact_id' is required and must belong to THIS organization — the picker offering the contacts is not filtered, so the membership check here is what stops a call with one company being filed under someone else's person.\n *\n * @param {string} organizationId - The company the entry is filed under. The `contact_id` in the body has to belong to it.\n * @param {string} contactId - The person dealt with. Must be a contact of this organization.\n * @param {string} subject - One line a person can scan in a timeline. Required — an entry nobody can read at a glance is not worth the row.\n * @param {string} actor - Who logged it (operator id or email). Free text; this app does not resolve it.\n * @param {ContactActivityKind} kind - What happened. 'system' is deliberately NOT accepted — those rows are the registration decision trail and are written by the approve/reject routes. Default 'note'.\n * @param {string} note - The long form. Stored inside the event payload as `note`, not as a column of its own.\n * @param {string} occurredAt - When it actually happened. Defaults to now — a call logged on Monday about Friday should say Friday.\n * @throws {RevenexxException}\n * @returns {Promise<Models.ContactEvent>}\n * @deprecated Use the object parameter style method for a better developer experience.\n */\n customersOrganizationsEventsCreate(organizationId: string, contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string): Promise<Models.ContactEvent>;\n customersOrganizationsEventsCreate(\n paramsOrFirst: { organizationId: string, contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string } | string,\n ...rest: [(string)?, (string)?, (string)?, (ContactActivityKind)?, (string)?, (string)?] \n ): Promise<Models.ContactEvent> {\n let params: { organizationId: string, contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string };\n \n if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n params = (paramsOrFirst || {}) as { organizationId: string, contactId: string, subject: string, actor?: string, kind?: ContactActivityKind, note?: string, occurredAt?: string };\n } else {\n params = {\n organizationId: paramsOrFirst as string,\n contactId: rest[0] as string,\n subject: rest[1] as string,\n actor: rest[2] as string,\n kind: rest[3] as ContactActivityKind,\n note: rest[4] as string,\n occurredAt: rest[5] as string \n };\n }\n \n const organizationId = params.organizationId;\n const contactId = params.contactId;\n const subject = params.subject;\n const actor = params.actor;\n const kind = params.kind;\n const note = params.note;\n const occurredAt = params.occurredAt;\n\n if (typeof organizationId === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"organizationId\"');\n }\n if (typeof contactId === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"contactId\"');\n }\n if (typeof subject === 'undefined') {\n throw new RevenexxException('Missing required parameter: \"subject\"');\n }\n\n const apiPath = '/v1/customers/organizations/{organization_id}/events'.replace('{organization_id}', organizationId);\n const apiPayload: Payload = {};\n if (typeof actor !== 'undefined') {\n apiPayload['actor'] = actor;\n }\n if (typeof contactId !== 'undefined') {\n apiPayload['contact_id'] = contactId;\n }\n if (typeof kind !== 'undefined') {\n apiPayload['kind'] = kind;\n }\n if (typeof note !== 'undefined') {\n apiPayload['note'] = note;\n }\n if (typeof occurredAt !== 'undefined') {\n apiPayload['occurred_at'] = occurredAt;\n }\n if (typeof subject !== 'undefined') {\n apiPayload['subject'] = subject;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return this.client.call(\n 'post',\n uri,\n apiHeaders,\n apiPayload,\n );\n }\n}\n"]}