kintsugi_sdk 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. checksums.yaml +7 -0
  2. data/lib/crystalline/metadata_fields.rb +209 -0
  3. data/lib/crystalline/module.rb +92 -0
  4. data/lib/crystalline/types.rb +78 -0
  5. data/lib/crystalline/utils.rb +56 -0
  6. data/lib/crystalline.rb +13 -0
  7. data/lib/kintsugi_sdk/addressvalidation.rb +350 -0
  8. data/lib/kintsugi_sdk/customers.rb +981 -0
  9. data/lib/kintsugi_sdk/exemptions.rb +779 -0
  10. data/lib/kintsugi_sdk/models/callbacks.rb +12 -0
  11. data/lib/kintsugi_sdk/models/errors/apierror.rb +37 -0
  12. data/lib/kintsugi_sdk/models/errors/apierror.rbi +16 -0
  13. data/lib/kintsugi_sdk/models/errors/backend_src_address_validation_responses_validationerrorresponse.rb +33 -0
  14. data/lib/kintsugi_sdk/models/errors/backend_src_address_validation_responses_validationerrorresponse.rbi +13 -0
  15. data/lib/kintsugi_sdk/models/errors/backend_src_customers_responses_validationerrorresponse.rb +33 -0
  16. data/lib/kintsugi_sdk/models/errors/backend_src_customers_responses_validationerrorresponse.rbi +13 -0
  17. data/lib/kintsugi_sdk/models/errors/backend_src_exemptions_responses_validationerrorresponse.rb +33 -0
  18. data/lib/kintsugi_sdk/models/errors/backend_src_exemptions_responses_validationerrorresponse.rbi +13 -0
  19. data/lib/kintsugi_sdk/models/errors/backend_src_products_responses_validationerrorresponse.rb +33 -0
  20. data/lib/kintsugi_sdk/models/errors/backend_src_products_responses_validationerrorresponse.rbi +13 -0
  21. data/lib/kintsugi_sdk/models/errors/backend_src_tax_estimation_responses_validationerrorresponse.rb +33 -0
  22. data/lib/kintsugi_sdk/models/errors/backend_src_tax_estimation_responses_validationerrorresponse.rbi +13 -0
  23. data/lib/kintsugi_sdk/models/errors/backend_src_transactions_responses_validationerrorresponse.rb +33 -0
  24. data/lib/kintsugi_sdk/models/errors/backend_src_transactions_responses_validationerrorresponse.rbi +13 -0
  25. data/lib/kintsugi_sdk/models/errors/errorresponse.rb +33 -0
  26. data/lib/kintsugi_sdk/models/errors/errorresponse.rbi +13 -0
  27. data/lib/kintsugi_sdk/models/errors/httpvalidationerror.rb +33 -0
  28. data/lib/kintsugi_sdk/models/errors/httpvalidationerror.rbi +13 -0
  29. data/lib/kintsugi_sdk/models/errors.rb +20 -0
  30. data/lib/kintsugi_sdk/models/ops/createtransactionbycustomer_request.rb +37 -0
  31. data/lib/kintsugi_sdk/models/ops/createtransactionbycustomer_request.rbi +15 -0
  32. data/lib/kintsugi_sdk/models/ops/estimate_tax_v1_tax_estimate_post_request.rb +39 -0
  33. data/lib/kintsugi_sdk/models/ops/estimate_tax_v1_tax_estimate_post_request.rbi +15 -0
  34. data/lib/kintsugi_sdk/models/ops/get_customer_by_external_id_v1_customers_external_external_id_get_request.rb +33 -0
  35. data/lib/kintsugi_sdk/models/ops/get_customer_by_external_id_v1_customers_external_external_id_get_request.rbi +13 -0
  36. data/lib/kintsugi_sdk/models/ops/get_customer_by_id_v1_customers_customer_id_get_request.rb +33 -0
  37. data/lib/kintsugi_sdk/models/ops/get_customer_by_id_v1_customers_customer_id_get_request.rbi +13 -0
  38. data/lib/kintsugi_sdk/models/ops/get_customers_v1_request.rb +57 -0
  39. data/lib/kintsugi_sdk/models/ops/get_customers_v1_request.rbi +25 -0
  40. data/lib/kintsugi_sdk/models/ops/get_exemption_by_id_v1_exemptions_exemption_id_get_request.rb +33 -0
  41. data/lib/kintsugi_sdk/models/ops/get_exemption_by_id_v1_exemptions_exemption_id_get_request.rbi +13 -0
  42. data/lib/kintsugi_sdk/models/ops/get_exemptions_v1_exemptions_get_request.rb +73 -0
  43. data/lib/kintsugi_sdk/models/ops/get_exemptions_v1_exemptions_get_request.rbi +33 -0
  44. data/lib/kintsugi_sdk/models/ops/get_nexus_for_org_v1_nexus_get_request.rb +57 -0
  45. data/lib/kintsugi_sdk/models/ops/get_nexus_for_org_v1_nexus_get_request.rbi +25 -0
  46. data/lib/kintsugi_sdk/models/ops/get_product_by_id_v1_products_product_id_get_request.rb +33 -0
  47. data/lib/kintsugi_sdk/models/ops/get_product_by_id_v1_products_product_id_get_request.rbi +13 -0
  48. data/lib/kintsugi_sdk/models/ops/get_products_v1_products_get_request.rb +61 -0
  49. data/lib/kintsugi_sdk/models/ops/get_products_v1_products_get_request.rbi +27 -0
  50. data/lib/kintsugi_sdk/models/ops/get_transaction_by_id_v1_transactions_transaction_id_get_request.rb +33 -0
  51. data/lib/kintsugi_sdk/models/ops/get_transaction_by_id_v1_transactions_transaction_id_get_request.rbi +13 -0
  52. data/lib/kintsugi_sdk/models/ops/get_transactions_v1_transactions_get_request.rb +107 -0
  53. data/lib/kintsugi_sdk/models/ops/get_transactions_v1_transactions_get_request.rbi +45 -0
  54. data/lib/kintsugi_sdk/models/ops/getexemptionattachments_request.rb +34 -0
  55. data/lib/kintsugi_sdk/models/ops/getexemptionattachments_request.rbi +13 -0
  56. data/lib/kintsugi_sdk/models/ops/gettransactionbyexternalid_request.rb +33 -0
  57. data/lib/kintsugi_sdk/models/ops/gettransactionbyexternalid_request.rbi +13 -0
  58. data/lib/kintsugi_sdk/models/ops/gettransactionsbycustomer_request.rb +33 -0
  59. data/lib/kintsugi_sdk/models/ops/gettransactionsbycustomer_request.rbi +13 -0
  60. data/lib/kintsugi_sdk/models/ops/gettransactionsbyfiling_request.rb +35 -0
  61. data/lib/kintsugi_sdk/models/ops/gettransactionsbyfiling_request.rbi +13 -0
  62. data/lib/kintsugi_sdk/models/ops/search_v1_address_validation_search_post_security.rb +33 -0
  63. data/lib/kintsugi_sdk/models/ops/search_v1_address_validation_search_post_security.rbi +13 -0
  64. data/lib/kintsugi_sdk/models/ops/update_customer_v1_customers_customer_id_put_request.rb +37 -0
  65. data/lib/kintsugi_sdk/models/ops/update_customer_v1_customers_customer_id_put_request.rbi +15 -0
  66. data/lib/kintsugi_sdk/models/ops/update_product_v1_products_product_id_put_request.rb +37 -0
  67. data/lib/kintsugi_sdk/models/ops/update_product_v1_products_product_id_put_request.rbi +15 -0
  68. data/lib/kintsugi_sdk/models/ops/update_transaction_v1_transactions_transaction_id_put_request.rb +37 -0
  69. data/lib/kintsugi_sdk/models/ops/update_transaction_v1_transactions_transaction_id_put_request.rbi +15 -0
  70. data/lib/kintsugi_sdk/models/ops/uploadexemptioncert_request.rb +37 -0
  71. data/lib/kintsugi_sdk/models/ops/uploadexemptioncert_request.rbi +15 -0
  72. data/lib/kintsugi_sdk/models/ops.rb +32 -0
  73. data/lib/kintsugi_sdk/models/shared/addressbase.rb +65 -0
  74. data/lib/kintsugi_sdk/models/shared/addressbase.rbi +29 -0
  75. data/lib/kintsugi_sdk/models/shared/addresses.rb +76 -0
  76. data/lib/kintsugi_sdk/models/shared/addresses.rbi +33 -0
  77. data/lib/kintsugi_sdk/models/shared/addressresponsedata.rb +61 -0
  78. data/lib/kintsugi_sdk/models/shared/addressresponsedata.rbi +27 -0
  79. data/lib/kintsugi_sdk/models/shared/addresssearchresponse.rb +45 -0
  80. data/lib/kintsugi_sdk/models/shared/addresssearchresponse.rbi +19 -0
  81. data/lib/kintsugi_sdk/models/shared/addressstatus.rb +26 -0
  82. data/lib/kintsugi_sdk/models/shared/addressstatus.rbi +11 -0
  83. data/lib/kintsugi_sdk/models/shared/addresssubmittedresponse.rb +61 -0
  84. data/lib/kintsugi_sdk/models/shared/addresssubmittedresponse.rbi +27 -0
  85. data/lib/kintsugi_sdk/models/shared/addresstype.rb +24 -0
  86. data/lib/kintsugi_sdk/models/shared/addresstype.rbi +11 -0
  87. data/lib/kintsugi_sdk/models/shared/appliedto.rb +22 -0
  88. data/lib/kintsugi_sdk/models/shared/appliedto.rbi +11 -0
  89. data/lib/kintsugi_sdk/models/shared/attachmentread.rb +42 -0
  90. data/lib/kintsugi_sdk/models/shared/attachmentread.rbi +17 -0
  91. data/lib/kintsugi_sdk/models/shared/backend_src_address_validation_responses_validationerroritem.rb +49 -0
  92. data/lib/kintsugi_sdk/models/shared/backend_src_address_validation_responses_validationerroritem.rbi +21 -0
  93. data/lib/kintsugi_sdk/models/shared/backend_src_customers_responses_validationerroritem.rb +49 -0
  94. data/lib/kintsugi_sdk/models/shared/backend_src_customers_responses_validationerroritem.rbi +21 -0
  95. data/lib/kintsugi_sdk/models/shared/backend_src_exemptions_models_exemptionread.rb +87 -0
  96. data/lib/kintsugi_sdk/models/shared/backend_src_exemptions_models_exemptionread.rbi +39 -0
  97. data/lib/kintsugi_sdk/models/shared/backend_src_exemptions_responses_validationerroritem.rb +50 -0
  98. data/lib/kintsugi_sdk/models/shared/backend_src_exemptions_responses_validationerroritem.rbi +21 -0
  99. data/lib/kintsugi_sdk/models/shared/backend_src_exemptions_serializers_exemptionread.rb +81 -0
  100. data/lib/kintsugi_sdk/models/shared/backend_src_exemptions_serializers_exemptionread.rbi +37 -0
  101. data/lib/kintsugi_sdk/models/shared/backend_src_products_responses_validationerroritem.rb +50 -0
  102. data/lib/kintsugi_sdk/models/shared/backend_src_products_responses_validationerroritem.rbi +21 -0
  103. data/lib/kintsugi_sdk/models/shared/backend_src_tax_estimation_responses_validationerroritem.rb +49 -0
  104. data/lib/kintsugi_sdk/models/shared/backend_src_tax_estimation_responses_validationerroritem.rbi +21 -0
  105. data/lib/kintsugi_sdk/models/shared/backend_src_transactions_responses_validationerroritem.rb +50 -0
  106. data/lib/kintsugi_sdk/models/shared/backend_src_transactions_responses_validationerroritem.rbi +21 -0
  107. data/lib/kintsugi_sdk/models/shared/body_upload_exemption_certificate_v1_exemptions_exemption_id_attachments_post.rb +33 -0
  108. data/lib/kintsugi_sdk/models/shared/body_upload_exemption_certificate_v1_exemptions_exemption_id_attachments_post.rbi +13 -0
  109. data/lib/kintsugi_sdk/models/shared/countrycodeenum.rb +270 -0
  110. data/lib/kintsugi_sdk/models/shared/countrycodeenum.rbi +11 -0
  111. data/lib/kintsugi_sdk/models/shared/currencyenum.rb +182 -0
  112. data/lib/kintsugi_sdk/models/shared/currencyenum.rbi +11 -0
  113. data/lib/kintsugi_sdk/models/shared/customerbase.rb +97 -0
  114. data/lib/kintsugi_sdk/models/shared/customerbase.rbi +45 -0
  115. data/lib/kintsugi_sdk/models/shared/customerbasebase.rb +109 -0
  116. data/lib/kintsugi_sdk/models/shared/customerbasebase.rbi +51 -0
  117. data/lib/kintsugi_sdk/models/shared/customerbasepublic.rb +97 -0
  118. data/lib/kintsugi_sdk/models/shared/customerbasepublic.rbi +45 -0
  119. data/lib/kintsugi_sdk/models/shared/customercreate.rb +97 -0
  120. data/lib/kintsugi_sdk/models/shared/customercreate.rbi +45 -0
  121. data/lib/kintsugi_sdk/models/shared/customerread.rb +105 -0
  122. data/lib/kintsugi_sdk/models/shared/customerread.rbi +49 -0
  123. data/lib/kintsugi_sdk/models/shared/customerupdate.rb +89 -0
  124. data/lib/kintsugi_sdk/models/shared/customerupdate.rbi +41 -0
  125. data/lib/kintsugi_sdk/models/shared/discountbuilder.rb +41 -0
  126. data/lib/kintsugi_sdk/models/shared/discountbuilder.rbi +17 -0
  127. data/lib/kintsugi_sdk/models/shared/exemption.rb +91 -0
  128. data/lib/kintsugi_sdk/models/shared/exemption.rbi +41 -0
  129. data/lib/kintsugi_sdk/models/shared/exemptioncreate.rb +73 -0
  130. data/lib/kintsugi_sdk/models/shared/exemptioncreate.rbi +33 -0
  131. data/lib/kintsugi_sdk/models/shared/exemptionrequired.rb +57 -0
  132. data/lib/kintsugi_sdk/models/shared/exemptionrequired.rbi +25 -0
  133. data/lib/kintsugi_sdk/models/shared/exemptionstatus.rb +25 -0
  134. data/lib/kintsugi_sdk/models/shared/exemptionstatus.rbi +11 -0
  135. data/lib/kintsugi_sdk/models/shared/exemptiontype.rb +23 -0
  136. data/lib/kintsugi_sdk/models/shared/exemptiontype.rbi +11 -0
  137. data/lib/kintsugi_sdk/models/shared/fastapi_pagination_default_page_exemptionread_2.rb +49 -0
  138. data/lib/kintsugi_sdk/models/shared/fastapi_pagination_default_page_exemptionread_2.rbi +21 -0
  139. data/lib/kintsugi_sdk/models/shared/file.rb +37 -0
  140. data/lib/kintsugi_sdk/models/shared/file.rbi +15 -0
  141. data/lib/kintsugi_sdk/models/shared/jurisdictiontype.rb +28 -0
  142. data/lib/kintsugi_sdk/models/shared/jurisdictiontype.rbi +11 -0
  143. data/lib/kintsugi_sdk/models/shared/nexusresponse.rb +253 -0
  144. data/lib/kintsugi_sdk/models/shared/nexusresponse.rbi +121 -0
  145. data/lib/kintsugi_sdk/models/shared/nexusstateenum.rb +27 -0
  146. data/lib/kintsugi_sdk/models/shared/nexusstateenum.rbi +11 -0
  147. data/lib/kintsugi_sdk/models/shared/nexusstatusenum.rb +23 -0
  148. data/lib/kintsugi_sdk/models/shared/nexusstatusenum.rbi +11 -0
  149. data/lib/kintsugi_sdk/models/shared/nexustypeenum.rb +24 -0
  150. data/lib/kintsugi_sdk/models/shared/nexustypeenum.rbi +11 -0
  151. data/lib/kintsugi_sdk/models/shared/page_customerread_.rb +49 -0
  152. data/lib/kintsugi_sdk/models/shared/page_customerread_.rbi +21 -0
  153. data/lib/kintsugi_sdk/models/shared/page_nexusresponse_.rb +49 -0
  154. data/lib/kintsugi_sdk/models/shared/page_nexusresponse_.rbi +21 -0
  155. data/lib/kintsugi_sdk/models/shared/page_productread_.rb +49 -0
  156. data/lib/kintsugi_sdk/models/shared/page_productread_.rbi +21 -0
  157. data/lib/kintsugi_sdk/models/shared/page_transactionestimateresponse_.rb +49 -0
  158. data/lib/kintsugi_sdk/models/shared/page_transactionestimateresponse_.rbi +21 -0
  159. data/lib/kintsugi_sdk/models/shared/page_transactionread_.rb +49 -0
  160. data/lib/kintsugi_sdk/models/shared/page_transactionread_.rbi +21 -0
  161. data/lib/kintsugi_sdk/models/shared/periodmodelenum.rb +29 -0
  162. data/lib/kintsugi_sdk/models/shared/periodmodelenum.rbi +11 -0
  163. data/lib/kintsugi_sdk/models/shared/processingstatusenum.rb +34 -0
  164. data/lib/kintsugi_sdk/models/shared/processingstatusenum.rbi +11 -0
  165. data/lib/kintsugi_sdk/models/shared/productcategories.rb +38 -0
  166. data/lib/kintsugi_sdk/models/shared/productcategories.rbi +15 -0
  167. data/lib/kintsugi_sdk/models/shared/productcategoryenum.rb +25 -0
  168. data/lib/kintsugi_sdk/models/shared/productcategoryenum.rbi +11 -0
  169. data/lib/kintsugi_sdk/models/shared/productcodeenum.rb +82 -0
  170. data/lib/kintsugi_sdk/models/shared/productcodeenum.rbi +11 -0
  171. data/lib/kintsugi_sdk/models/shared/productcreatemanual.rb +61 -0
  172. data/lib/kintsugi_sdk/models/shared/productcreatemanual.rbi +27 -0
  173. data/lib/kintsugi_sdk/models/shared/productread.rb +81 -0
  174. data/lib/kintsugi_sdk/models/shared/productread.rbi +37 -0
  175. data/lib/kintsugi_sdk/models/shared/productstatusenum.rb +23 -0
  176. data/lib/kintsugi_sdk/models/shared/productstatusenum.rbi +11 -0
  177. data/lib/kintsugi_sdk/models/shared/productsubcategory.rb +46 -0
  178. data/lib/kintsugi_sdk/models/shared/productsubcategory.rbi +19 -0
  179. data/lib/kintsugi_sdk/models/shared/productsubcategoryenum.rb +83 -0
  180. data/lib/kintsugi_sdk/models/shared/productsubcategoryenum.rbi +11 -0
  181. data/lib/kintsugi_sdk/models/shared/productupdate.rb +70 -0
  182. data/lib/kintsugi_sdk/models/shared/productupdate.rbi +31 -0
  183. data/lib/kintsugi_sdk/models/shared/registration.rb +28 -0
  184. data/lib/kintsugi_sdk/models/shared/registration.rbi +11 -0
  185. data/lib/kintsugi_sdk/models/shared/registrationsregimeenum.rb +22 -0
  186. data/lib/kintsugi_sdk/models/shared/registrationsregimeenum.rbi +11 -0
  187. data/lib/kintsugi_sdk/models/shared/relatedentitytype.rb +24 -0
  188. data/lib/kintsugi_sdk/models/shared/relatedentitytype.rbi +11 -0
  189. data/lib/kintsugi_sdk/models/shared/salesortransactionsenum.rb +24 -0
  190. data/lib/kintsugi_sdk/models/shared/salesortransactionsenum.rbi +11 -0
  191. data/lib/kintsugi_sdk/models/shared/security.rb +37 -0
  192. data/lib/kintsugi_sdk/models/shared/security.rbi +15 -0
  193. data/lib/kintsugi_sdk/models/shared/sourceenum.rb +70 -0
  194. data/lib/kintsugi_sdk/models/shared/sourceenum.rbi +11 -0
  195. data/lib/kintsugi_sdk/models/shared/statusenum.rb +22 -0
  196. data/lib/kintsugi_sdk/models/shared/statusenum.rbi +11 -0
  197. data/lib/kintsugi_sdk/models/shared/taxexemptionenum.rb +31 -0
  198. data/lib/kintsugi_sdk/models/shared/taxexemptionenum.rbi +11 -0
  199. data/lib/kintsugi_sdk/models/shared/taxitembuilder.rb +77 -0
  200. data/lib/kintsugi_sdk/models/shared/taxitembuilder.rbi +35 -0
  201. data/lib/kintsugi_sdk/models/shared/taxitemestimate.rb +53 -0
  202. data/lib/kintsugi_sdk/models/shared/taxitemestimate.rbi +23 -0
  203. data/lib/kintsugi_sdk/models/shared/taxitemread.rb +73 -0
  204. data/lib/kintsugi_sdk/models/shared/taxitemread.rbi +33 -0
  205. data/lib/kintsugi_sdk/models/shared/taxitemreturnreasonenum.rb +25 -0
  206. data/lib/kintsugi_sdk/models/shared/taxitemreturnreasonenum.rbi +11 -0
  207. data/lib/kintsugi_sdk/models/shared/taxitemtypeenum.rb +23 -0
  208. data/lib/kintsugi_sdk/models/shared/taxitemtypeenum.rbi +11 -0
  209. data/lib/kintsugi_sdk/models/shared/taxliabilitysourceenum.rb +22 -0
  210. data/lib/kintsugi_sdk/models/shared/taxliabilitysourceenum.rbi +11 -0
  211. data/lib/kintsugi_sdk/models/shared/transactionaddressbuilder.rb +81 -0
  212. data/lib/kintsugi_sdk/models/shared/transactionaddressbuilder.rbi +37 -0
  213. data/lib/kintsugi_sdk/models/shared/transactionaddresspublic.rb +69 -0
  214. data/lib/kintsugi_sdk/models/shared/transactionaddresspublic.rbi +31 -0
  215. data/lib/kintsugi_sdk/models/shared/transactionaddressread_output.rb +85 -0
  216. data/lib/kintsugi_sdk/models/shared/transactionaddressread_output.rbi +39 -0
  217. data/lib/kintsugi_sdk/models/shared/transactioncreate.rb +235 -0
  218. data/lib/kintsugi_sdk/models/shared/transactioncreate.rbi +111 -0
  219. data/lib/kintsugi_sdk/models/shared/transactionestimatepublicrequest.rb +70 -0
  220. data/lib/kintsugi_sdk/models/shared/transactionestimatepublicrequest.rbi +31 -0
  221. data/lib/kintsugi_sdk/models/shared/transactionestimateresponse.rb +91 -0
  222. data/lib/kintsugi_sdk/models/shared/transactionestimateresponse.rbi +41 -0
  223. data/lib/kintsugi_sdk/models/shared/transactionestimateresponse_addresses.rb +80 -0
  224. data/lib/kintsugi_sdk/models/shared/transactionestimateresponse_addresses.rbi +35 -0
  225. data/lib/kintsugi_sdk/models/shared/transactionestimateresponse_type.rb +23 -0
  226. data/lib/kintsugi_sdk/models/shared/transactionestimateresponse_type.rbi +11 -0
  227. data/lib/kintsugi_sdk/models/shared/transactionexemptstatusenum.rb +26 -0
  228. data/lib/kintsugi_sdk/models/shared/transactionexemptstatusenum.rbi +11 -0
  229. data/lib/kintsugi_sdk/models/shared/transactionitembuilder.rb +141 -0
  230. data/lib/kintsugi_sdk/models/shared/transactionitembuilder.rbi +67 -0
  231. data/lib/kintsugi_sdk/models/shared/transactionitemcreateupdate.rb +141 -0
  232. data/lib/kintsugi_sdk/models/shared/transactionitemcreateupdate.rbi +67 -0
  233. data/lib/kintsugi_sdk/models/shared/transactionitemestimatebase.rb +78 -0
  234. data/lib/kintsugi_sdk/models/shared/transactionitemestimatebase.rbi +35 -0
  235. data/lib/kintsugi_sdk/models/shared/transactionitemestimateresponse.rb +98 -0
  236. data/lib/kintsugi_sdk/models/shared/transactionitemestimateresponse.rbi +45 -0
  237. data/lib/kintsugi_sdk/models/shared/transactionitemread.rb +149 -0
  238. data/lib/kintsugi_sdk/models/shared/transactionitemread.rbi +71 -0
  239. data/lib/kintsugi_sdk/models/shared/transactionpublicrequest.rb +194 -0
  240. data/lib/kintsugi_sdk/models/shared/transactionpublicrequest.rbi +91 -0
  241. data/lib/kintsugi_sdk/models/shared/transactionread.rb +259 -0
  242. data/lib/kintsugi_sdk/models/shared/transactionread.rbi +123 -0
  243. data/lib/kintsugi_sdk/models/shared/transactionrefundstatus.rb +24 -0
  244. data/lib/kintsugi_sdk/models/shared/transactionrefundstatus.rbi +11 -0
  245. data/lib/kintsugi_sdk/models/shared/transactionstatusenum.rb +27 -0
  246. data/lib/kintsugi_sdk/models/shared/transactionstatusenum.rbi +11 -0
  247. data/lib/kintsugi_sdk/models/shared/transactiontypeenum.rb +25 -0
  248. data/lib/kintsugi_sdk/models/shared/transactiontypeenum.rbi +11 -0
  249. data/lib/kintsugi_sdk/models/shared/transactionupdate.rb +235 -0
  250. data/lib/kintsugi_sdk/models/shared/transactionupdate.rbi +111 -0
  251. data/lib/kintsugi_sdk/models/shared/treatmentenum.rb +25 -0
  252. data/lib/kintsugi_sdk/models/shared/treatmentenum.rbi +11 -0
  253. data/lib/kintsugi_sdk/models/shared/type.rb +23 -0
  254. data/lib/kintsugi_sdk/models/shared/type.rbi +11 -0
  255. data/lib/kintsugi_sdk/models/shared/validationaddress.rb +73 -0
  256. data/lib/kintsugi_sdk/models/shared/validationaddress.rbi +31 -0
  257. data/lib/kintsugi_sdk/models/shared/validationerror.rb +41 -0
  258. data/lib/kintsugi_sdk/models/shared/validationerror.rbi +17 -0
  259. data/lib/kintsugi_sdk/models/shared.rb +104 -0
  260. data/lib/kintsugi_sdk/nexus.rb +155 -0
  261. data/lib/kintsugi_sdk/openapisdk.rb +104 -0
  262. data/lib/kintsugi_sdk/products.rb +756 -0
  263. data/lib/kintsugi_sdk/sdk_hooks/hooks.rb +95 -0
  264. data/lib/kintsugi_sdk/sdk_hooks/types.rb +170 -0
  265. data/lib/kintsugi_sdk/sdkconfiguration.rb +104 -0
  266. data/lib/kintsugi_sdk/sdkconfiguration.rbi +57 -0
  267. data/lib/kintsugi_sdk/taxestimation.rb +197 -0
  268. data/lib/kintsugi_sdk/transactions.rb +902 -0
  269. data/lib/kintsugi_sdk/utils/forms.rb +206 -0
  270. data/lib/kintsugi_sdk/utils/headers.rb +77 -0
  271. data/lib/kintsugi_sdk/utils/query_params.rb +131 -0
  272. data/lib/kintsugi_sdk/utils/request_bodies.rb +61 -0
  273. data/lib/kintsugi_sdk/utils/retries.rb +95 -0
  274. data/lib/kintsugi_sdk/utils/security.rb +130 -0
  275. data/lib/kintsugi_sdk/utils/url.rb +100 -0
  276. data/lib/kintsugi_sdk/utils/utils.rb +187 -0
  277. data/lib/kintsugi_sdk.rb +31 -0
  278. metadata +492 -0
@@ -0,0 +1,981 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ require 'faraday'
7
+ require 'faraday/multipart'
8
+ require 'faraday/retry'
9
+ require 'sorbet-runtime'
10
+ require_relative 'sdk_hooks/hooks'
11
+ require_relative 'utils/retries'
12
+
13
+ module KintsugiSDK
14
+ extend T::Sig
15
+ class Customers
16
+ extend T::Sig
17
+
18
+
19
+
20
+ sig { params(sdk_config: SDKConfiguration).void }
21
+ def initialize(sdk_config)
22
+ @sdk_configuration = sdk_config
23
+
24
+ end
25
+
26
+ sig { params(base_url: String, url_variables: T.nilable(T::Hash[Symbol, T.any(String, T::Enum)])).returns(String) }
27
+ def get_url(base_url:, url_variables: nil)
28
+ sd_base_url, sd_options = @sdk_configuration.get_server_details
29
+
30
+ if base_url.nil?
31
+ base_url = sd_base_url
32
+ end
33
+
34
+ if url_variables.nil?
35
+ url_variables = sd_options
36
+ end
37
+
38
+ return Utils.template_url base_url, url_variables
39
+ end
40
+
41
+
42
+ sig { params(request: Models::Ops::GetCustomersV1Request, timeout_ms: T.nilable(Integer)).returns(Models::Shared::PageCustomerRead) }
43
+ def list(request:, timeout_ms: nil)
44
+ # list - Get Customers
45
+ # The Get Customers API retrieves
46
+ # a paginated list of customers based on specified filters.
47
+ # This API allows searching, filtering by country and state, and sorting the results.
48
+ url, params = @sdk_configuration.get_server_details
49
+ base_url = Utils.template_url(url, params)
50
+ url = "#{base_url}/v1/customers"
51
+ headers = {}
52
+ headers = T.cast(headers, T::Hash[String, String])
53
+ query_params = Utils.get_query_params(Models::Ops::GetCustomersV1Request, request, nil)
54
+ headers['Accept'] = 'application/json'
55
+ headers['user-agent'] = @sdk_configuration.user_agent
56
+
57
+ security = @sdk_configuration.security_source&.call
58
+
59
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
60
+ timeout ||= @sdk_configuration.timeout
61
+
62
+
63
+ connection = @sdk_configuration.client
64
+
65
+ hook_ctx = SDKHooks::HookContext.new(
66
+ config: @sdk_configuration,
67
+ base_url: base_url,
68
+ oauth2_scopes: [],
69
+ operation_id: 'get_customers_v1',
70
+ security_source: @sdk_configuration.security_source
71
+ )
72
+
73
+ error = T.let(nil, T.nilable(StandardError))
74
+ http_response = T.let(nil, T.nilable(Faraday::Response))
75
+
76
+
77
+ begin
78
+ http_response = T.must(connection).get(url) do |req|
79
+ req.headers.merge!(headers)
80
+ req.options.timeout = timeout unless timeout.nil?
81
+ req.params = query_params
82
+ Utils.configure_request_security(req, security)
83
+
84
+ @sdk_configuration.hooks.before_request(
85
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
86
+ hook_ctx: hook_ctx
87
+ ),
88
+ request: req
89
+ )
90
+ end
91
+ rescue StandardError => e
92
+ error = e
93
+ ensure
94
+ if http_response.nil? || Utils.error_status?(http_response.status)
95
+ http_response = @sdk_configuration.hooks.after_error(
96
+ error: error,
97
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
98
+ hook_ctx: hook_ctx
99
+ ),
100
+ response: http_response
101
+ )
102
+ else
103
+ http_response = @sdk_configuration.hooks.after_success(
104
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
105
+ hook_ctx: hook_ctx
106
+ ),
107
+ response: http_response
108
+ )
109
+ end
110
+
111
+ if http_response.nil?
112
+ raise error if !error.nil?
113
+ raise 'no response'
114
+ end
115
+ end
116
+
117
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
118
+ if Utils.match_status_code(http_response.status, ['200'])
119
+ if Utils.match_content_type(content_type, 'application/json')
120
+ @sdk_configuration.hooks.after_success(
121
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
122
+ hook_ctx: hook_ctx
123
+ ),
124
+ response: http_response
125
+ )
126
+ response_data = http_response.env.response_body
127
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::PageCustomerRead)
128
+
129
+ return obj
130
+ else
131
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
132
+ end
133
+ elsif Utils.match_status_code(http_response.status, ['401', '404'])
134
+ if Utils.match_content_type(content_type, 'application/json')
135
+ @sdk_configuration.hooks.after_success(
136
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
137
+ hook_ctx: hook_ctx
138
+ ),
139
+ response: http_response
140
+ )
141
+ response_data = http_response.env.response_body
142
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
143
+ throw obj
144
+ else
145
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
146
+ end
147
+ elsif Utils.match_status_code(http_response.status, ['422'])
148
+ if Utils.match_content_type(content_type, 'application/json')
149
+ @sdk_configuration.hooks.after_success(
150
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
151
+ hook_ctx: hook_ctx
152
+ ),
153
+ response: http_response
154
+ )
155
+ response_data = http_response.env.response_body
156
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BackendSrcCustomersResponsesValidationErrorResponse)
157
+ throw obj
158
+ else
159
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
160
+ end
161
+ elsif Utils.match_status_code(http_response.status, ['500'])
162
+ if Utils.match_content_type(content_type, 'application/json')
163
+ @sdk_configuration.hooks.after_success(
164
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
165
+ hook_ctx: hook_ctx
166
+ ),
167
+ response: http_response
168
+ )
169
+ response_data = http_response.env.response_body
170
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
171
+ throw obj
172
+ else
173
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
174
+ end
175
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
176
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
177
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
178
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
179
+ else
180
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
181
+
182
+ end
183
+ end
184
+
185
+
186
+ sig { params(request: Models::Shared::CustomerCreate, timeout_ms: T.nilable(Integer)).returns(Models::Shared::CustomerRead) }
187
+ def create(request:, timeout_ms: nil)
188
+ # create - Create Customer
189
+ # The Create Customer API enables the creation of a new customer record with essential
190
+ # details like name, contact information, and address, along with optional metadata.
191
+ url, params = @sdk_configuration.get_server_details
192
+ base_url = Utils.template_url(url, params)
193
+ url = "#{base_url}/v1/customers"
194
+ headers = {}
195
+ headers = T.cast(headers, T::Hash[String, String])
196
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :request, :json)
197
+ headers['content-type'] = req_content_type
198
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
199
+
200
+ if form
201
+ body = Utils.encode_form(form)
202
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
203
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
204
+ else
205
+ body = data
206
+ end
207
+ headers['Accept'] = 'application/json'
208
+ headers['user-agent'] = @sdk_configuration.user_agent
209
+
210
+ security = @sdk_configuration.security_source&.call
211
+
212
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
213
+ timeout ||= @sdk_configuration.timeout
214
+
215
+
216
+ connection = @sdk_configuration.client
217
+
218
+ hook_ctx = SDKHooks::HookContext.new(
219
+ config: @sdk_configuration,
220
+ base_url: base_url,
221
+ oauth2_scopes: [],
222
+ operation_id: 'create_customer_v1_customers_post',
223
+ security_source: @sdk_configuration.security_source
224
+ )
225
+
226
+ error = T.let(nil, T.nilable(StandardError))
227
+ http_response = T.let(nil, T.nilable(Faraday::Response))
228
+
229
+
230
+ begin
231
+ http_response = T.must(connection).post(url) do |req|
232
+ req.body = body
233
+ req.headers.merge!(headers)
234
+ req.options.timeout = timeout unless timeout.nil?
235
+ Utils.configure_request_security(req, security)
236
+
237
+ @sdk_configuration.hooks.before_request(
238
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
239
+ hook_ctx: hook_ctx
240
+ ),
241
+ request: req
242
+ )
243
+ end
244
+ rescue StandardError => e
245
+ error = e
246
+ ensure
247
+ if http_response.nil? || Utils.error_status?(http_response.status)
248
+ http_response = @sdk_configuration.hooks.after_error(
249
+ error: error,
250
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
251
+ hook_ctx: hook_ctx
252
+ ),
253
+ response: http_response
254
+ )
255
+ else
256
+ http_response = @sdk_configuration.hooks.after_success(
257
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
258
+ hook_ctx: hook_ctx
259
+ ),
260
+ response: http_response
261
+ )
262
+ end
263
+
264
+ if http_response.nil?
265
+ raise error if !error.nil?
266
+ raise 'no response'
267
+ end
268
+ end
269
+
270
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
271
+ if Utils.match_status_code(http_response.status, ['200'])
272
+ if Utils.match_content_type(content_type, 'application/json')
273
+ @sdk_configuration.hooks.after_success(
274
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
275
+ hook_ctx: hook_ctx
276
+ ),
277
+ response: http_response
278
+ )
279
+ response_data = http_response.env.response_body
280
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::CustomerRead)
281
+
282
+ return obj
283
+ else
284
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
285
+ end
286
+ elsif Utils.match_status_code(http_response.status, ['401', '404'])
287
+ if Utils.match_content_type(content_type, 'application/json')
288
+ @sdk_configuration.hooks.after_success(
289
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
290
+ hook_ctx: hook_ctx
291
+ ),
292
+ response: http_response
293
+ )
294
+ response_data = http_response.env.response_body
295
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
296
+ throw obj
297
+ else
298
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
299
+ end
300
+ elsif Utils.match_status_code(http_response.status, ['422'])
301
+ if Utils.match_content_type(content_type, 'application/json')
302
+ @sdk_configuration.hooks.after_success(
303
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
304
+ hook_ctx: hook_ctx
305
+ ),
306
+ response: http_response
307
+ )
308
+ response_data = http_response.env.response_body
309
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BackendSrcCustomersResponsesValidationErrorResponse)
310
+ throw obj
311
+ else
312
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
313
+ end
314
+ elsif Utils.match_status_code(http_response.status, ['500'])
315
+ if Utils.match_content_type(content_type, 'application/json')
316
+ @sdk_configuration.hooks.after_success(
317
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
318
+ hook_ctx: hook_ctx
319
+ ),
320
+ response: http_response
321
+ )
322
+ response_data = http_response.env.response_body
323
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
324
+ throw obj
325
+ else
326
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
327
+ end
328
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
329
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
330
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
331
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
332
+ else
333
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
334
+
335
+ end
336
+ end
337
+
338
+
339
+ sig { params(request: Models::Ops::GetCustomerByIdV1CustomersCustomerIdGetRequest, timeout_ms: T.nilable(Integer)).returns(Models::Shared::CustomerRead) }
340
+ def get(request:, timeout_ms: nil)
341
+ # get - Get Customer By Id
342
+ # The Get Customer By ID API retrieves the details of a single customer
343
+ # using their unique identifier. It returns customer-specific data,
344
+ # including contact information, address, name and metadata, etc.
345
+ url, params = @sdk_configuration.get_server_details
346
+ base_url = Utils.template_url(url, params)
347
+ url = Utils.generate_url(
348
+ Models::Ops::GetCustomerByIdV1CustomersCustomerIdGetRequest,
349
+ base_url,
350
+ '/v1/customers/{customer_id}',
351
+ request
352
+ )
353
+ headers = {}
354
+ headers = T.cast(headers, T::Hash[String, String])
355
+ headers['Accept'] = 'application/json'
356
+ headers['user-agent'] = @sdk_configuration.user_agent
357
+
358
+ security = @sdk_configuration.security_source&.call
359
+
360
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
361
+ timeout ||= @sdk_configuration.timeout
362
+
363
+
364
+ connection = @sdk_configuration.client
365
+
366
+ hook_ctx = SDKHooks::HookContext.new(
367
+ config: @sdk_configuration,
368
+ base_url: base_url,
369
+ oauth2_scopes: [],
370
+ operation_id: 'get_customer_by_id_v1_customers__customer_id__get',
371
+ security_source: @sdk_configuration.security_source
372
+ )
373
+
374
+ error = T.let(nil, T.nilable(StandardError))
375
+ http_response = T.let(nil, T.nilable(Faraday::Response))
376
+
377
+
378
+ begin
379
+ http_response = T.must(connection).get(url) do |req|
380
+ req.headers.merge!(headers)
381
+ req.options.timeout = timeout unless timeout.nil?
382
+ Utils.configure_request_security(req, security)
383
+
384
+ @sdk_configuration.hooks.before_request(
385
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
386
+ hook_ctx: hook_ctx
387
+ ),
388
+ request: req
389
+ )
390
+ end
391
+ rescue StandardError => e
392
+ error = e
393
+ ensure
394
+ if http_response.nil? || Utils.error_status?(http_response.status)
395
+ http_response = @sdk_configuration.hooks.after_error(
396
+ error: error,
397
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
398
+ hook_ctx: hook_ctx
399
+ ),
400
+ response: http_response
401
+ )
402
+ else
403
+ http_response = @sdk_configuration.hooks.after_success(
404
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
405
+ hook_ctx: hook_ctx
406
+ ),
407
+ response: http_response
408
+ )
409
+ end
410
+
411
+ if http_response.nil?
412
+ raise error if !error.nil?
413
+ raise 'no response'
414
+ end
415
+ end
416
+
417
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
418
+ if Utils.match_status_code(http_response.status, ['200'])
419
+ if Utils.match_content_type(content_type, 'application/json')
420
+ @sdk_configuration.hooks.after_success(
421
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
422
+ hook_ctx: hook_ctx
423
+ ),
424
+ response: http_response
425
+ )
426
+ response_data = http_response.env.response_body
427
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::CustomerRead)
428
+
429
+ return obj
430
+ else
431
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
432
+ end
433
+ elsif Utils.match_status_code(http_response.status, ['422'])
434
+ if Utils.match_content_type(content_type, 'application/json')
435
+ @sdk_configuration.hooks.after_success(
436
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
437
+ hook_ctx: hook_ctx
438
+ ),
439
+ response: http_response
440
+ )
441
+ response_data = http_response.env.response_body
442
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::HTTPValidationError)
443
+ throw obj
444
+ else
445
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
446
+ end
447
+ elsif Utils.match_status_code(http_response.status, ['404', '4XX'])
448
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
449
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
450
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
451
+ else
452
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
453
+
454
+ end
455
+ end
456
+
457
+
458
+ sig { params(request: Models::Ops::UpdateCustomerV1CustomersCustomerIdPutRequest, timeout_ms: T.nilable(Integer)).returns(Models::Shared::CustomerRead) }
459
+ def update(request:, timeout_ms: nil)
460
+ # update - Update Customer
461
+ # The Update Customer API allows you to modify an existing customer's
462
+ # information using their unique identifier,
463
+ # enabling updates to their details as needed.
464
+ url, params = @sdk_configuration.get_server_details
465
+ base_url = Utils.template_url(url, params)
466
+ url = Utils.generate_url(
467
+ Models::Ops::UpdateCustomerV1CustomersCustomerIdPutRequest,
468
+ base_url,
469
+ '/v1/customers/{customer_id}',
470
+ request
471
+ )
472
+ headers = {}
473
+ headers = T.cast(headers, T::Hash[String, String])
474
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :customer_update, :json)
475
+ headers['content-type'] = req_content_type
476
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
477
+
478
+ if form
479
+ body = Utils.encode_form(form)
480
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
481
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
482
+ else
483
+ body = data
484
+ end
485
+ headers['Accept'] = 'application/json'
486
+ headers['user-agent'] = @sdk_configuration.user_agent
487
+
488
+ security = @sdk_configuration.security_source&.call
489
+
490
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
491
+ timeout ||= @sdk_configuration.timeout
492
+
493
+
494
+ connection = @sdk_configuration.client
495
+
496
+ hook_ctx = SDKHooks::HookContext.new(
497
+ config: @sdk_configuration,
498
+ base_url: base_url,
499
+ oauth2_scopes: [],
500
+ operation_id: 'update_customer_v1_customers__customer_id__put',
501
+ security_source: @sdk_configuration.security_source
502
+ )
503
+
504
+ error = T.let(nil, T.nilable(StandardError))
505
+ http_response = T.let(nil, T.nilable(Faraday::Response))
506
+
507
+
508
+ begin
509
+ http_response = T.must(connection).put(url) do |req|
510
+ req.body = body
511
+ req.headers.merge!(headers)
512
+ req.options.timeout = timeout unless timeout.nil?
513
+ Utils.configure_request_security(req, security)
514
+
515
+ @sdk_configuration.hooks.before_request(
516
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
517
+ hook_ctx: hook_ctx
518
+ ),
519
+ request: req
520
+ )
521
+ end
522
+ rescue StandardError => e
523
+ error = e
524
+ ensure
525
+ if http_response.nil? || Utils.error_status?(http_response.status)
526
+ http_response = @sdk_configuration.hooks.after_error(
527
+ error: error,
528
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
529
+ hook_ctx: hook_ctx
530
+ ),
531
+ response: http_response
532
+ )
533
+ else
534
+ http_response = @sdk_configuration.hooks.after_success(
535
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
536
+ hook_ctx: hook_ctx
537
+ ),
538
+ response: http_response
539
+ )
540
+ end
541
+
542
+ if http_response.nil?
543
+ raise error if !error.nil?
544
+ raise 'no response'
545
+ end
546
+ end
547
+
548
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
549
+ if Utils.match_status_code(http_response.status, ['200'])
550
+ if Utils.match_content_type(content_type, 'application/json')
551
+ @sdk_configuration.hooks.after_success(
552
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
553
+ hook_ctx: hook_ctx
554
+ ),
555
+ response: http_response
556
+ )
557
+ response_data = http_response.env.response_body
558
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::CustomerRead)
559
+
560
+ return obj
561
+ else
562
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
563
+ end
564
+ elsif Utils.match_status_code(http_response.status, ['401', '404'])
565
+ if Utils.match_content_type(content_type, 'application/json')
566
+ @sdk_configuration.hooks.after_success(
567
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
568
+ hook_ctx: hook_ctx
569
+ ),
570
+ response: http_response
571
+ )
572
+ response_data = http_response.env.response_body
573
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
574
+ throw obj
575
+ else
576
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
577
+ end
578
+ elsif Utils.match_status_code(http_response.status, ['422'])
579
+ if Utils.match_content_type(content_type, 'application/json')
580
+ @sdk_configuration.hooks.after_success(
581
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
582
+ hook_ctx: hook_ctx
583
+ ),
584
+ response: http_response
585
+ )
586
+ response_data = http_response.env.response_body
587
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BackendSrcCustomersResponsesValidationErrorResponse)
588
+ throw obj
589
+ else
590
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
591
+ end
592
+ elsif Utils.match_status_code(http_response.status, ['500'])
593
+ if Utils.match_content_type(content_type, 'application/json')
594
+ @sdk_configuration.hooks.after_success(
595
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
596
+ hook_ctx: hook_ctx
597
+ ),
598
+ response: http_response
599
+ )
600
+ response_data = http_response.env.response_body
601
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
602
+ throw obj
603
+ else
604
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
605
+ end
606
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
607
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
608
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
609
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
610
+ else
611
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
612
+
613
+ end
614
+ end
615
+
616
+
617
+ sig { params(request: Models::Ops::GetCustomerByExternalIdV1CustomersExternalExternalIdGetRequest, timeout_ms: T.nilable(Integer)).returns(Models::Shared::CustomerRead) }
618
+ def get_by_external_id(request:, timeout_ms: nil)
619
+ # get_by_external_id - Get Customer By External Id
620
+ # The Get Customer By External ID API retrieves the details of a single customer using
621
+ # their external identifier. This endpoint is useful for accessing customer data when only
622
+ # an external ID is available.
623
+ url, params = @sdk_configuration.get_server_details
624
+ base_url = Utils.template_url(url, params)
625
+ url = Utils.generate_url(
626
+ Models::Ops::GetCustomerByExternalIdV1CustomersExternalExternalIdGetRequest,
627
+ base_url,
628
+ '/v1/customers/external/{external_id}',
629
+ request
630
+ )
631
+ headers = {}
632
+ headers = T.cast(headers, T::Hash[String, String])
633
+ headers['Accept'] = 'application/json'
634
+ headers['user-agent'] = @sdk_configuration.user_agent
635
+
636
+ security = @sdk_configuration.security_source&.call
637
+
638
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
639
+ timeout ||= @sdk_configuration.timeout
640
+
641
+
642
+ connection = @sdk_configuration.client
643
+
644
+ hook_ctx = SDKHooks::HookContext.new(
645
+ config: @sdk_configuration,
646
+ base_url: base_url,
647
+ oauth2_scopes: [],
648
+ operation_id: 'get_customer_by_external_id_v1_customers_external__external_id__get',
649
+ security_source: @sdk_configuration.security_source
650
+ )
651
+
652
+ error = T.let(nil, T.nilable(StandardError))
653
+ http_response = T.let(nil, T.nilable(Faraday::Response))
654
+
655
+
656
+ begin
657
+ http_response = T.must(connection).get(url) do |req|
658
+ req.headers.merge!(headers)
659
+ req.options.timeout = timeout unless timeout.nil?
660
+ Utils.configure_request_security(req, security)
661
+
662
+ @sdk_configuration.hooks.before_request(
663
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
664
+ hook_ctx: hook_ctx
665
+ ),
666
+ request: req
667
+ )
668
+ end
669
+ rescue StandardError => e
670
+ error = e
671
+ ensure
672
+ if http_response.nil? || Utils.error_status?(http_response.status)
673
+ http_response = @sdk_configuration.hooks.after_error(
674
+ error: error,
675
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
676
+ hook_ctx: hook_ctx
677
+ ),
678
+ response: http_response
679
+ )
680
+ else
681
+ http_response = @sdk_configuration.hooks.after_success(
682
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
683
+ hook_ctx: hook_ctx
684
+ ),
685
+ response: http_response
686
+ )
687
+ end
688
+
689
+ if http_response.nil?
690
+ raise error if !error.nil?
691
+ raise 'no response'
692
+ end
693
+ end
694
+
695
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
696
+ if Utils.match_status_code(http_response.status, ['200'])
697
+ if Utils.match_content_type(content_type, 'application/json')
698
+ @sdk_configuration.hooks.after_success(
699
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
700
+ hook_ctx: hook_ctx
701
+ ),
702
+ response: http_response
703
+ )
704
+ response_data = http_response.env.response_body
705
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::CustomerRead)
706
+
707
+ return obj
708
+ else
709
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
710
+ end
711
+ elsif Utils.match_status_code(http_response.status, ['422'])
712
+ if Utils.match_content_type(content_type, 'application/json')
713
+ @sdk_configuration.hooks.after_success(
714
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
715
+ hook_ctx: hook_ctx
716
+ ),
717
+ response: http_response
718
+ )
719
+ response_data = http_response.env.response_body
720
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::HTTPValidationError)
721
+ throw obj
722
+ else
723
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
724
+ end
725
+ elsif Utils.match_status_code(http_response.status, ['404', '4XX'])
726
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
727
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
728
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
729
+ else
730
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
731
+
732
+ end
733
+ end
734
+
735
+
736
+ sig { params(request: Models::Ops::GetTransactionsByCustomerRequest, timeout_ms: T.nilable(Integer)).returns(T::Array[Models::Shared::TransactionRead]) }
737
+ def get_transactions(request:, timeout_ms: nil)
738
+ # get_transactions - Get Transactions By Customer Id
739
+ # Get a list of transactions for a customer by their unique ID.
740
+ url, params = @sdk_configuration.get_server_details
741
+ base_url = Utils.template_url(url, params)
742
+ url = Utils.generate_url(
743
+ Models::Ops::GetTransactionsByCustomerRequest,
744
+ base_url,
745
+ '/v1/customers/{customer_id}/transactions',
746
+ request
747
+ )
748
+ headers = {}
749
+ headers = T.cast(headers, T::Hash[String, String])
750
+ headers['Accept'] = 'application/json'
751
+ headers['user-agent'] = @sdk_configuration.user_agent
752
+
753
+ security = @sdk_configuration.security_source&.call
754
+
755
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
756
+ timeout ||= @sdk_configuration.timeout
757
+
758
+
759
+ connection = @sdk_configuration.client
760
+
761
+ hook_ctx = SDKHooks::HookContext.new(
762
+ config: @sdk_configuration,
763
+ base_url: base_url,
764
+ oauth2_scopes: [],
765
+ operation_id: 'getTransactionsByCustomer',
766
+ security_source: @sdk_configuration.security_source
767
+ )
768
+
769
+ error = T.let(nil, T.nilable(StandardError))
770
+ http_response = T.let(nil, T.nilable(Faraday::Response))
771
+
772
+
773
+ begin
774
+ http_response = T.must(connection).get(url) do |req|
775
+ req.headers.merge!(headers)
776
+ req.options.timeout = timeout unless timeout.nil?
777
+ Utils.configure_request_security(req, security)
778
+
779
+ @sdk_configuration.hooks.before_request(
780
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
781
+ hook_ctx: hook_ctx
782
+ ),
783
+ request: req
784
+ )
785
+ end
786
+ rescue StandardError => e
787
+ error = e
788
+ ensure
789
+ if http_response.nil? || Utils.error_status?(http_response.status)
790
+ http_response = @sdk_configuration.hooks.after_error(
791
+ error: error,
792
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
793
+ hook_ctx: hook_ctx
794
+ ),
795
+ response: http_response
796
+ )
797
+ else
798
+ http_response = @sdk_configuration.hooks.after_success(
799
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
800
+ hook_ctx: hook_ctx
801
+ ),
802
+ response: http_response
803
+ )
804
+ end
805
+
806
+ if http_response.nil?
807
+ raise error if !error.nil?
808
+ raise 'no response'
809
+ end
810
+ end
811
+
812
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
813
+ if Utils.match_status_code(http_response.status, ['200'])
814
+ if Utils.match_content_type(content_type, 'application/json')
815
+ @sdk_configuration.hooks.after_success(
816
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
817
+ hook_ctx: hook_ctx
818
+ ),
819
+ response: http_response
820
+ )
821
+ response_data = http_response.env.response_body
822
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Crystalline::Array.new(Models::Shared::TransactionRead))
823
+
824
+ return obj
825
+ else
826
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
827
+ end
828
+ elsif Utils.match_status_code(http_response.status, ['422'])
829
+ if Utils.match_content_type(content_type, 'application/json')
830
+ @sdk_configuration.hooks.after_success(
831
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
832
+ hook_ctx: hook_ctx
833
+ ),
834
+ response: http_response
835
+ )
836
+ response_data = http_response.env.response_body
837
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::HTTPValidationError)
838
+ throw obj
839
+ else
840
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
841
+ end
842
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
843
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
844
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
845
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
846
+ else
847
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
848
+
849
+ end
850
+ end
851
+
852
+
853
+ sig { params(request: Models::Ops::CreateTransactionByCustomerRequest, timeout_ms: T.nilable(Integer)).returns(Models::Shared::TransactionRead) }
854
+ def create_transaction(request:, timeout_ms: nil)
855
+ # create_transaction - Create Transaction By Customer Id
856
+ # Create a new transaction for a specific customer.
857
+ url, params = @sdk_configuration.get_server_details
858
+ base_url = Utils.template_url(url, params)
859
+ url = Utils.generate_url(
860
+ Models::Ops::CreateTransactionByCustomerRequest,
861
+ base_url,
862
+ '/v1/customers/{customer_id}/transactions',
863
+ request
864
+ )
865
+ headers = {}
866
+ headers = T.cast(headers, T::Hash[String, String])
867
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :transaction_create, :json)
868
+ headers['content-type'] = req_content_type
869
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
870
+
871
+ if form
872
+ body = Utils.encode_form(form)
873
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
874
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
875
+ else
876
+ body = data
877
+ end
878
+ headers['Accept'] = 'application/json'
879
+ headers['user-agent'] = @sdk_configuration.user_agent
880
+
881
+ security = @sdk_configuration.security_source&.call
882
+
883
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
884
+ timeout ||= @sdk_configuration.timeout
885
+
886
+
887
+ connection = @sdk_configuration.client
888
+
889
+ hook_ctx = SDKHooks::HookContext.new(
890
+ config: @sdk_configuration,
891
+ base_url: base_url,
892
+ oauth2_scopes: [],
893
+ operation_id: 'createTransactionByCustomer',
894
+ security_source: @sdk_configuration.security_source
895
+ )
896
+
897
+ error = T.let(nil, T.nilable(StandardError))
898
+ http_response = T.let(nil, T.nilable(Faraday::Response))
899
+
900
+
901
+ begin
902
+ http_response = T.must(connection).post(url) do |req|
903
+ req.body = body
904
+ req.headers.merge!(headers)
905
+ req.options.timeout = timeout unless timeout.nil?
906
+ Utils.configure_request_security(req, security)
907
+
908
+ @sdk_configuration.hooks.before_request(
909
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
910
+ hook_ctx: hook_ctx
911
+ ),
912
+ request: req
913
+ )
914
+ end
915
+ rescue StandardError => e
916
+ error = e
917
+ ensure
918
+ if http_response.nil? || Utils.error_status?(http_response.status)
919
+ http_response = @sdk_configuration.hooks.after_error(
920
+ error: error,
921
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
922
+ hook_ctx: hook_ctx
923
+ ),
924
+ response: http_response
925
+ )
926
+ else
927
+ http_response = @sdk_configuration.hooks.after_success(
928
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
929
+ hook_ctx: hook_ctx
930
+ ),
931
+ response: http_response
932
+ )
933
+ end
934
+
935
+ if http_response.nil?
936
+ raise error if !error.nil?
937
+ raise 'no response'
938
+ end
939
+ end
940
+
941
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
942
+ if Utils.match_status_code(http_response.status, ['200'])
943
+ if Utils.match_content_type(content_type, 'application/json')
944
+ @sdk_configuration.hooks.after_success(
945
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
946
+ hook_ctx: hook_ctx
947
+ ),
948
+ response: http_response
949
+ )
950
+ response_data = http_response.env.response_body
951
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::TransactionRead)
952
+
953
+ return obj
954
+ else
955
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
956
+ end
957
+ elsif Utils.match_status_code(http_response.status, ['422'])
958
+ if Utils.match_content_type(content_type, 'application/json')
959
+ @sdk_configuration.hooks.after_success(
960
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
961
+ hook_ctx: hook_ctx
962
+ ),
963
+ response: http_response
964
+ )
965
+ response_data = http_response.env.response_body
966
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::HTTPValidationError)
967
+ throw obj
968
+ else
969
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
970
+ end
971
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
972
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
973
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
974
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
975
+ else
976
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
977
+
978
+ end
979
+ end
980
+ end
981
+ end