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,756 @@
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 Products
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::GetProductsV1ProductsGetRequest, timeout_ms: T.nilable(Integer)).returns(Models::Shared::PageProductRead) }
43
+ def list(request:, timeout_ms: nil)
44
+ # list - Get Products
45
+ # Retrieve a paginated list of products based on filters and search query.
46
+ url, params = @sdk_configuration.get_server_details
47
+ base_url = Utils.template_url(url, params)
48
+ url = "#{base_url}/v1/products/"
49
+ headers = {}
50
+ headers = T.cast(headers, T::Hash[String, String])
51
+ query_params = Utils.get_query_params(Models::Ops::GetProductsV1ProductsGetRequest, request, nil)
52
+ headers['Accept'] = 'application/json'
53
+ headers['user-agent'] = @sdk_configuration.user_agent
54
+
55
+ security = @sdk_configuration.security_source&.call
56
+
57
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
58
+ timeout ||= @sdk_configuration.timeout
59
+
60
+
61
+ connection = @sdk_configuration.client
62
+
63
+ hook_ctx = SDKHooks::HookContext.new(
64
+ config: @sdk_configuration,
65
+ base_url: base_url,
66
+ oauth2_scopes: [],
67
+ operation_id: 'get_products_v1_products__get',
68
+ security_source: @sdk_configuration.security_source
69
+ )
70
+
71
+ error = T.let(nil, T.nilable(StandardError))
72
+ http_response = T.let(nil, T.nilable(Faraday::Response))
73
+
74
+
75
+ begin
76
+ http_response = T.must(connection).get(url) do |req|
77
+ req.headers.merge!(headers)
78
+ req.options.timeout = timeout unless timeout.nil?
79
+ req.params = query_params
80
+ Utils.configure_request_security(req, security)
81
+
82
+ @sdk_configuration.hooks.before_request(
83
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
84
+ hook_ctx: hook_ctx
85
+ ),
86
+ request: req
87
+ )
88
+ end
89
+ rescue StandardError => e
90
+ error = e
91
+ ensure
92
+ if http_response.nil? || Utils.error_status?(http_response.status)
93
+ http_response = @sdk_configuration.hooks.after_error(
94
+ error: error,
95
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
96
+ hook_ctx: hook_ctx
97
+ ),
98
+ response: http_response
99
+ )
100
+ else
101
+ http_response = @sdk_configuration.hooks.after_success(
102
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
103
+ hook_ctx: hook_ctx
104
+ ),
105
+ response: http_response
106
+ )
107
+ end
108
+
109
+ if http_response.nil?
110
+ raise error if !error.nil?
111
+ raise 'no response'
112
+ end
113
+ end
114
+
115
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
116
+ if Utils.match_status_code(http_response.status, ['200'])
117
+ if Utils.match_content_type(content_type, 'application/json')
118
+ @sdk_configuration.hooks.after_success(
119
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
120
+ hook_ctx: hook_ctx
121
+ ),
122
+ response: http_response
123
+ )
124
+ response_data = http_response.env.response_body
125
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::PageProductRead)
126
+
127
+ return obj
128
+ else
129
+ 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'
130
+ end
131
+ elsif Utils.match_status_code(http_response.status, ['401', '404'])
132
+ if Utils.match_content_type(content_type, 'application/json')
133
+ @sdk_configuration.hooks.after_success(
134
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
135
+ hook_ctx: hook_ctx
136
+ ),
137
+ response: http_response
138
+ )
139
+ response_data = http_response.env.response_body
140
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
141
+ throw obj
142
+ else
143
+ 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'
144
+ end
145
+ elsif Utils.match_status_code(http_response.status, ['422'])
146
+ if Utils.match_content_type(content_type, 'application/json')
147
+ @sdk_configuration.hooks.after_success(
148
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
149
+ hook_ctx: hook_ctx
150
+ ),
151
+ response: http_response
152
+ )
153
+ response_data = http_response.env.response_body
154
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BackendSrcProductsResponsesValidationErrorResponse)
155
+ throw obj
156
+ else
157
+ 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'
158
+ end
159
+ elsif Utils.match_status_code(http_response.status, ['500'])
160
+ if Utils.match_content_type(content_type, 'application/json')
161
+ @sdk_configuration.hooks.after_success(
162
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
163
+ hook_ctx: hook_ctx
164
+ ),
165
+ response: http_response
166
+ )
167
+ response_data = http_response.env.response_body
168
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
169
+ throw obj
170
+ else
171
+ 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'
172
+ end
173
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
174
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
175
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
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
+ else
178
+ 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'
179
+
180
+ end
181
+ end
182
+
183
+
184
+ sig { params(request: Models::Shared::ProductCreateManual, timeout_ms: T.nilable(Integer)).returns(Models::Shared::ProductRead) }
185
+ def create(request:, timeout_ms: nil)
186
+ # create - Create Product
187
+ # The Create Product API allows users to manually create a new product
188
+ # in the system. This includes specifying product details such as category,
189
+ # subcategory, and tax exemption status, etc.
190
+ url, params = @sdk_configuration.get_server_details
191
+ base_url = Utils.template_url(url, params)
192
+ url = "#{base_url}/v1/products/"
193
+ headers = {}
194
+ headers = T.cast(headers, T::Hash[String, String])
195
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :request, :json)
196
+ headers['content-type'] = req_content_type
197
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
198
+
199
+ if form
200
+ body = Utils.encode_form(form)
201
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
202
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
203
+ else
204
+ body = data
205
+ end
206
+ headers['Accept'] = 'application/json'
207
+ headers['user-agent'] = @sdk_configuration.user_agent
208
+
209
+ security = @sdk_configuration.security_source&.call
210
+
211
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
212
+ timeout ||= @sdk_configuration.timeout
213
+
214
+
215
+ connection = @sdk_configuration.client
216
+
217
+ hook_ctx = SDKHooks::HookContext.new(
218
+ config: @sdk_configuration,
219
+ base_url: base_url,
220
+ oauth2_scopes: [],
221
+ operation_id: 'create_product_v1_products__post',
222
+ security_source: @sdk_configuration.security_source
223
+ )
224
+
225
+ error = T.let(nil, T.nilable(StandardError))
226
+ http_response = T.let(nil, T.nilable(Faraday::Response))
227
+
228
+
229
+ begin
230
+ http_response = T.must(connection).post(url) do |req|
231
+ req.body = body
232
+ req.headers.merge!(headers)
233
+ req.options.timeout = timeout unless timeout.nil?
234
+ Utils.configure_request_security(req, security)
235
+
236
+ @sdk_configuration.hooks.before_request(
237
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
238
+ hook_ctx: hook_ctx
239
+ ),
240
+ request: req
241
+ )
242
+ end
243
+ rescue StandardError => e
244
+ error = e
245
+ ensure
246
+ if http_response.nil? || Utils.error_status?(http_response.status)
247
+ http_response = @sdk_configuration.hooks.after_error(
248
+ error: error,
249
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
250
+ hook_ctx: hook_ctx
251
+ ),
252
+ response: http_response
253
+ )
254
+ else
255
+ http_response = @sdk_configuration.hooks.after_success(
256
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
257
+ hook_ctx: hook_ctx
258
+ ),
259
+ response: http_response
260
+ )
261
+ end
262
+
263
+ if http_response.nil?
264
+ raise error if !error.nil?
265
+ raise 'no response'
266
+ end
267
+ end
268
+
269
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
270
+ if Utils.match_status_code(http_response.status, ['200'])
271
+ if Utils.match_content_type(content_type, 'application/json')
272
+ @sdk_configuration.hooks.after_success(
273
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
274
+ hook_ctx: hook_ctx
275
+ ),
276
+ response: http_response
277
+ )
278
+ response_data = http_response.env.response_body
279
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::ProductRead)
280
+
281
+ return obj
282
+ else
283
+ 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'
284
+ end
285
+ elsif Utils.match_status_code(http_response.status, ['401'])
286
+ if Utils.match_content_type(content_type, 'application/json')
287
+ @sdk_configuration.hooks.after_success(
288
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
289
+ hook_ctx: hook_ctx
290
+ ),
291
+ response: http_response
292
+ )
293
+ response_data = http_response.env.response_body
294
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
295
+ throw obj
296
+ else
297
+ 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'
298
+ end
299
+ elsif Utils.match_status_code(http_response.status, ['422'])
300
+ if Utils.match_content_type(content_type, 'application/json')
301
+ @sdk_configuration.hooks.after_success(
302
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
303
+ hook_ctx: hook_ctx
304
+ ),
305
+ response: http_response
306
+ )
307
+ response_data = http_response.env.response_body
308
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BackendSrcProductsResponsesValidationErrorResponse)
309
+ throw obj
310
+ else
311
+ 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'
312
+ end
313
+ elsif Utils.match_status_code(http_response.status, ['500'])
314
+ if Utils.match_content_type(content_type, 'application/json')
315
+ @sdk_configuration.hooks.after_success(
316
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
317
+ hook_ctx: hook_ctx
318
+ ),
319
+ response: http_response
320
+ )
321
+ response_data = http_response.env.response_body
322
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
323
+ throw obj
324
+ else
325
+ 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'
326
+ end
327
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
328
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
329
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
330
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
331
+ else
332
+ 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'
333
+
334
+ end
335
+ end
336
+
337
+
338
+ sig { params(request: Models::Ops::GetProductByIdV1ProductsProductIdGetRequest, timeout_ms: T.nilable(Integer)).returns(Models::Shared::ProductRead) }
339
+ def get(request:, timeout_ms: nil)
340
+ # get - Get Product By Id
341
+ # The Get Product By ID API retrieves detailed information about
342
+ # a single product by its unique ID. This API helps in viewing the specific details
343
+ # of a product, including its attributes, status, and categorization.
344
+ url, params = @sdk_configuration.get_server_details
345
+ base_url = Utils.template_url(url, params)
346
+ url = Utils.generate_url(
347
+ Models::Ops::GetProductByIdV1ProductsProductIdGetRequest,
348
+ base_url,
349
+ '/v1/products/{product_id}',
350
+ request
351
+ )
352
+ headers = {}
353
+ headers = T.cast(headers, T::Hash[String, String])
354
+ headers['Accept'] = 'application/json'
355
+ headers['user-agent'] = @sdk_configuration.user_agent
356
+
357
+ security = @sdk_configuration.security_source&.call
358
+
359
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
360
+ timeout ||= @sdk_configuration.timeout
361
+
362
+
363
+ connection = @sdk_configuration.client
364
+
365
+ hook_ctx = SDKHooks::HookContext.new(
366
+ config: @sdk_configuration,
367
+ base_url: base_url,
368
+ oauth2_scopes: [],
369
+ operation_id: 'get_product_by_id_v1_products__product_id__get',
370
+ security_source: @sdk_configuration.security_source
371
+ )
372
+
373
+ error = T.let(nil, T.nilable(StandardError))
374
+ http_response = T.let(nil, T.nilable(Faraday::Response))
375
+
376
+
377
+ begin
378
+ http_response = T.must(connection).get(url) do |req|
379
+ req.headers.merge!(headers)
380
+ req.options.timeout = timeout unless timeout.nil?
381
+ Utils.configure_request_security(req, security)
382
+
383
+ @sdk_configuration.hooks.before_request(
384
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
385
+ hook_ctx: hook_ctx
386
+ ),
387
+ request: req
388
+ )
389
+ end
390
+ rescue StandardError => e
391
+ error = e
392
+ ensure
393
+ if http_response.nil? || Utils.error_status?(http_response.status)
394
+ http_response = @sdk_configuration.hooks.after_error(
395
+ error: error,
396
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
397
+ hook_ctx: hook_ctx
398
+ ),
399
+ response: http_response
400
+ )
401
+ else
402
+ http_response = @sdk_configuration.hooks.after_success(
403
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
404
+ hook_ctx: hook_ctx
405
+ ),
406
+ response: http_response
407
+ )
408
+ end
409
+
410
+ if http_response.nil?
411
+ raise error if !error.nil?
412
+ raise 'no response'
413
+ end
414
+ end
415
+
416
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
417
+ if Utils.match_status_code(http_response.status, ['200'])
418
+ if Utils.match_content_type(content_type, 'application/json')
419
+ @sdk_configuration.hooks.after_success(
420
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
421
+ hook_ctx: hook_ctx
422
+ ),
423
+ response: http_response
424
+ )
425
+ response_data = http_response.env.response_body
426
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::ProductRead)
427
+
428
+ return obj
429
+ else
430
+ 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'
431
+ end
432
+ elsif Utils.match_status_code(http_response.status, ['401'])
433
+ if Utils.match_content_type(content_type, 'application/json')
434
+ @sdk_configuration.hooks.after_success(
435
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
436
+ hook_ctx: hook_ctx
437
+ ),
438
+ response: http_response
439
+ )
440
+ response_data = http_response.env.response_body
441
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
442
+ throw obj
443
+ else
444
+ 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'
445
+ end
446
+ elsif Utils.match_status_code(http_response.status, ['422'])
447
+ if Utils.match_content_type(content_type, 'application/json')
448
+ @sdk_configuration.hooks.after_success(
449
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
450
+ hook_ctx: hook_ctx
451
+ ),
452
+ response: http_response
453
+ )
454
+ response_data = http_response.env.response_body
455
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BackendSrcProductsResponsesValidationErrorResponse)
456
+ throw obj
457
+ else
458
+ 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'
459
+ end
460
+ elsif Utils.match_status_code(http_response.status, ['500'])
461
+ if Utils.match_content_type(content_type, 'application/json')
462
+ @sdk_configuration.hooks.after_success(
463
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
464
+ hook_ctx: hook_ctx
465
+ ),
466
+ response: http_response
467
+ )
468
+ response_data = http_response.env.response_body
469
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
470
+ throw obj
471
+ else
472
+ 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'
473
+ end
474
+ elsif Utils.match_status_code(http_response.status, ['404', '4XX'])
475
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
476
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
477
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
478
+ else
479
+ 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'
480
+
481
+ end
482
+ end
483
+
484
+
485
+ sig { params(request: Models::Ops::UpdateProductV1ProductsProductIdPutRequest, timeout_ms: T.nilable(Integer)).returns(Models::Shared::ProductRead) }
486
+ def update(request:, timeout_ms: nil)
487
+ # update - Update Product
488
+ # The Update Product API allows users to modify the details of
489
+ # an existing product identified by its unique product_id
490
+ url, params = @sdk_configuration.get_server_details
491
+ base_url = Utils.template_url(url, params)
492
+ url = Utils.generate_url(
493
+ Models::Ops::UpdateProductV1ProductsProductIdPutRequest,
494
+ base_url,
495
+ '/v1/products/{product_id}',
496
+ request
497
+ )
498
+ headers = {}
499
+ headers = T.cast(headers, T::Hash[String, String])
500
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :product_update, :json)
501
+ headers['content-type'] = req_content_type
502
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
503
+
504
+ if form
505
+ body = Utils.encode_form(form)
506
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
507
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
508
+ else
509
+ body = data
510
+ end
511
+ headers['Accept'] = 'application/json'
512
+ headers['user-agent'] = @sdk_configuration.user_agent
513
+
514
+ security = @sdk_configuration.security_source&.call
515
+
516
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
517
+ timeout ||= @sdk_configuration.timeout
518
+
519
+
520
+ connection = @sdk_configuration.client
521
+
522
+ hook_ctx = SDKHooks::HookContext.new(
523
+ config: @sdk_configuration,
524
+ base_url: base_url,
525
+ oauth2_scopes: [],
526
+ operation_id: 'update_product_v1_products__product_id__put',
527
+ security_source: @sdk_configuration.security_source
528
+ )
529
+
530
+ error = T.let(nil, T.nilable(StandardError))
531
+ http_response = T.let(nil, T.nilable(Faraday::Response))
532
+
533
+
534
+ begin
535
+ http_response = T.must(connection).put(url) do |req|
536
+ req.body = body
537
+ req.headers.merge!(headers)
538
+ req.options.timeout = timeout unless timeout.nil?
539
+ Utils.configure_request_security(req, security)
540
+
541
+ @sdk_configuration.hooks.before_request(
542
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
543
+ hook_ctx: hook_ctx
544
+ ),
545
+ request: req
546
+ )
547
+ end
548
+ rescue StandardError => e
549
+ error = e
550
+ ensure
551
+ if http_response.nil? || Utils.error_status?(http_response.status)
552
+ http_response = @sdk_configuration.hooks.after_error(
553
+ error: error,
554
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
555
+ hook_ctx: hook_ctx
556
+ ),
557
+ response: http_response
558
+ )
559
+ else
560
+ http_response = @sdk_configuration.hooks.after_success(
561
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
562
+ hook_ctx: hook_ctx
563
+ ),
564
+ response: http_response
565
+ )
566
+ end
567
+
568
+ if http_response.nil?
569
+ raise error if !error.nil?
570
+ raise 'no response'
571
+ end
572
+ end
573
+
574
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
575
+ if Utils.match_status_code(http_response.status, ['200'])
576
+ if Utils.match_content_type(content_type, 'application/json')
577
+ @sdk_configuration.hooks.after_success(
578
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
579
+ hook_ctx: hook_ctx
580
+ ),
581
+ response: http_response
582
+ )
583
+ response_data = http_response.env.response_body
584
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::ProductRead)
585
+
586
+ return obj
587
+ else
588
+ 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'
589
+ end
590
+ elsif Utils.match_status_code(http_response.status, ['401'])
591
+ if Utils.match_content_type(content_type, 'application/json')
592
+ @sdk_configuration.hooks.after_success(
593
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
594
+ hook_ctx: hook_ctx
595
+ ),
596
+ response: http_response
597
+ )
598
+ response_data = http_response.env.response_body
599
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
600
+ throw obj
601
+ else
602
+ 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'
603
+ end
604
+ elsif Utils.match_status_code(http_response.status, ['422'])
605
+ if Utils.match_content_type(content_type, 'application/json')
606
+ @sdk_configuration.hooks.after_success(
607
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
608
+ hook_ctx: hook_ctx
609
+ ),
610
+ response: http_response
611
+ )
612
+ response_data = http_response.env.response_body
613
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BackendSrcProductsResponsesValidationErrorResponse)
614
+ throw obj
615
+ else
616
+ 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'
617
+ end
618
+ elsif Utils.match_status_code(http_response.status, ['500'])
619
+ if Utils.match_content_type(content_type, 'application/json')
620
+ @sdk_configuration.hooks.after_success(
621
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
622
+ hook_ctx: hook_ctx
623
+ ),
624
+ response: http_response
625
+ )
626
+ response_data = http_response.env.response_body
627
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
628
+ throw obj
629
+ else
630
+ 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'
631
+ end
632
+ elsif Utils.match_status_code(http_response.status, ['404', '4XX'])
633
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
634
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
635
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
636
+ else
637
+ 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'
638
+
639
+ end
640
+ end
641
+
642
+
643
+ sig { params(timeout_ms: T.nilable(Integer)).returns(T::Array[Models::Shared::ProductCategories]) }
644
+ def list_categories(timeout_ms: nil)
645
+ # list_categories - Get Product Categories
646
+ # The Get Product Categories API retrieves all
647
+ # product categories. This endpoint helps users understand and select the
648
+ # appropriate categories for their products.
649
+ url, params = @sdk_configuration.get_server_details
650
+ base_url = Utils.template_url(url, params)
651
+ url = "#{base_url}/v1/products/categories/"
652
+ headers = {}
653
+ headers = T.cast(headers, T::Hash[String, String])
654
+ headers['Accept'] = 'application/json'
655
+ headers['user-agent'] = @sdk_configuration.user_agent
656
+
657
+ security = @sdk_configuration.security_source&.call
658
+
659
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
660
+ timeout ||= @sdk_configuration.timeout
661
+
662
+
663
+ connection = @sdk_configuration.client
664
+
665
+ hook_ctx = SDKHooks::HookContext.new(
666
+ config: @sdk_configuration,
667
+ base_url: base_url,
668
+ oauth2_scopes: [],
669
+ operation_id: 'get_product_categories_v1_products_categories__get',
670
+ security_source: @sdk_configuration.security_source
671
+ )
672
+
673
+ error = T.let(nil, T.nilable(StandardError))
674
+ http_response = T.let(nil, T.nilable(Faraday::Response))
675
+
676
+
677
+ begin
678
+ http_response = T.must(connection).get(url) do |req|
679
+ req.headers.merge!(headers)
680
+ req.options.timeout = timeout unless timeout.nil?
681
+ Utils.configure_request_security(req, security)
682
+
683
+ @sdk_configuration.hooks.before_request(
684
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
685
+ hook_ctx: hook_ctx
686
+ ),
687
+ request: req
688
+ )
689
+ end
690
+ rescue StandardError => e
691
+ error = e
692
+ ensure
693
+ if http_response.nil? || Utils.error_status?(http_response.status)
694
+ http_response = @sdk_configuration.hooks.after_error(
695
+ error: error,
696
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
697
+ hook_ctx: hook_ctx
698
+ ),
699
+ response: http_response
700
+ )
701
+ else
702
+ http_response = @sdk_configuration.hooks.after_success(
703
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
704
+ hook_ctx: hook_ctx
705
+ ),
706
+ response: http_response
707
+ )
708
+ end
709
+
710
+ if http_response.nil?
711
+ raise error if !error.nil?
712
+ raise 'no response'
713
+ end
714
+ end
715
+
716
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
717
+ if Utils.match_status_code(http_response.status, ['200'])
718
+ if Utils.match_content_type(content_type, 'application/json')
719
+ @sdk_configuration.hooks.after_success(
720
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
721
+ hook_ctx: hook_ctx
722
+ ),
723
+ response: http_response
724
+ )
725
+ response_data = http_response.env.response_body
726
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Crystalline::Array.new(Models::Shared::ProductCategories))
727
+
728
+ return obj
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 content type received'
731
+ end
732
+ elsif Utils.match_status_code(http_response.status, ['422'])
733
+ if Utils.match_content_type(content_type, 'application/json')
734
+ @sdk_configuration.hooks.after_success(
735
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
736
+ hook_ctx: hook_ctx
737
+ ),
738
+ response: http_response
739
+ )
740
+ response_data = http_response.env.response_body
741
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::HTTPValidationError)
742
+ throw obj
743
+ else
744
+ 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'
745
+ end
746
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
747
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
748
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
749
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
750
+ else
751
+ 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'
752
+
753
+ end
754
+ end
755
+ end
756
+ end