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,779 @@
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 Exemptions
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::GetExemptionsV1ExemptionsGetRequest, timeout_ms: T.nilable(Integer)).returns(Models::Shared::FastapiPaginationDefaultPageExemptionRead2) }
43
+ def list(request:, timeout_ms: nil)
44
+ # list - Get Exemptions
45
+ # Retrieve a list of exemptions based on filters.
46
+ url, params = @sdk_configuration.get_server_details
47
+ base_url = Utils.template_url(url, params)
48
+ url = "#{base_url}/v1/exemptions"
49
+ headers = {}
50
+ headers = T.cast(headers, T::Hash[String, String])
51
+ query_params = Utils.get_query_params(Models::Ops::GetExemptionsV1ExemptionsGetRequest, 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_exemptions_v1_exemptions_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::FastapiPaginationDefaultPageExemptionRead2)
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'])
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::BackendSrcExemptionsResponsesValidationErrorResponse)
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::ExemptionCreate, timeout_ms: T.nilable(Integer)).returns(Models::Shared::BackendSrcExemptionsSerializersExemptionRead) }
185
+ def create(request:, timeout_ms: nil)
186
+ # create - Create Exemption
187
+ # The Create Exemption API allows you to create a new exemption record.
188
+ # This includes defining details such as exemption type, jurisdiction,
189
+ # Country, State, validity dates, etc.
190
+ url, params = @sdk_configuration.get_server_details
191
+ base_url = Utils.template_url(url, params)
192
+ url = "#{base_url}/v1/exemptions"
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_exemption_v1_exemptions_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::BackendSrcExemptionsSerializersExemptionRead)
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::BackendSrcExemptionsResponsesValidationErrorResponse)
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::GetExemptionByIdV1ExemptionsExemptionIdGetRequest, timeout_ms: T.nilable(Integer)).returns(Models::Shared::BackendSrcExemptionsModelsExemptionRead) }
339
+ def get(request:, timeout_ms: nil)
340
+ # get - Get Exemption By Id
341
+ # The Get Exemption By ID API retrieves a specific exemption record by
342
+ # its unique ID. This API is useful for retrieving detailed information
343
+ # about a particular exemption, including its associated
344
+ # customer, organisation id, status, 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::GetExemptionByIdV1ExemptionsExemptionIdGetRequest,
349
+ base_url,
350
+ '/v1/exemptions/{exemption_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_exemption_by_id_v1_exemptions__exemption_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::BackendSrcExemptionsModelsExemptionRead)
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, ['404'])
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::ErrorResponse)
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, ['422'])
448
+ if Utils.match_content_type(content_type, 'application/json')
449
+ @sdk_configuration.hooks.after_success(
450
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
451
+ hook_ctx: hook_ctx
452
+ ),
453
+ response: http_response
454
+ )
455
+ response_data = http_response.env.response_body
456
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BackendSrcExemptionsResponsesValidationErrorResponse)
457
+ throw obj
458
+ else
459
+ 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'
460
+ end
461
+ elsif Utils.match_status_code(http_response.status, ['500'])
462
+ if Utils.match_content_type(content_type, 'application/json')
463
+ @sdk_configuration.hooks.after_success(
464
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
465
+ hook_ctx: hook_ctx
466
+ ),
467
+ response: http_response
468
+ )
469
+ response_data = http_response.env.response_body
470
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
471
+ throw obj
472
+ else
473
+ 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'
474
+ end
475
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
476
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
477
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
478
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
479
+ else
480
+ 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'
481
+
482
+ end
483
+ end
484
+
485
+
486
+ sig { params(request: Models::Ops::UploadExemptionCertRequest, timeout_ms: T.nilable(Integer)).returns(Models::Shared::AttachmentRead) }
487
+ def upload_certificate(request:, timeout_ms: nil)
488
+ # upload_certificate - Upload Exemption Certificate
489
+ # The Upload Exemption Certificate API allows you
490
+ # to upload a file attachment (e.g., exemption certificate) for a specific exemption.
491
+ # This is primarily used to associate supporting documents with an exemption record
492
+ # to ensure compliance and facilitate verification.
493
+ url, params = @sdk_configuration.get_server_details
494
+ base_url = Utils.template_url(url, params)
495
+ url = Utils.generate_url(
496
+ Models::Ops::UploadExemptionCertRequest,
497
+ base_url,
498
+ '/v1/exemptions/{exemption_id}/attachments',
499
+ request
500
+ )
501
+ headers = {}
502
+ headers = T.cast(headers, T::Hash[String, String])
503
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :body_upload_exemption_certificate_v1_exemptions_exemption_id_attachments_post, :multipart)
504
+ headers['content-type'] = req_content_type
505
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
506
+
507
+ if form
508
+ body = Utils.encode_form(form)
509
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
510
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
511
+ else
512
+ body = data
513
+ end
514
+ headers['Accept'] = 'application/json'
515
+ headers['user-agent'] = @sdk_configuration.user_agent
516
+
517
+ security = @sdk_configuration.security_source&.call
518
+
519
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
520
+ timeout ||= @sdk_configuration.timeout
521
+
522
+
523
+ connection = @sdk_configuration.client
524
+
525
+ hook_ctx = SDKHooks::HookContext.new(
526
+ config: @sdk_configuration,
527
+ base_url: base_url,
528
+ oauth2_scopes: [],
529
+ operation_id: 'uploadExemptionCert',
530
+ security_source: @sdk_configuration.security_source
531
+ )
532
+
533
+ error = T.let(nil, T.nilable(StandardError))
534
+ http_response = T.let(nil, T.nilable(Faraday::Response))
535
+
536
+
537
+ begin
538
+ http_response = T.must(connection).post(url) do |req|
539
+ req.body = body
540
+ req.headers.merge!(headers)
541
+ req.options.timeout = timeout unless timeout.nil?
542
+ Utils.configure_request_security(req, security)
543
+
544
+ @sdk_configuration.hooks.before_request(
545
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
546
+ hook_ctx: hook_ctx
547
+ ),
548
+ request: req
549
+ )
550
+ end
551
+ rescue StandardError => e
552
+ error = e
553
+ ensure
554
+ if http_response.nil? || Utils.error_status?(http_response.status)
555
+ http_response = @sdk_configuration.hooks.after_error(
556
+ error: error,
557
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
558
+ hook_ctx: hook_ctx
559
+ ),
560
+ response: http_response
561
+ )
562
+ else
563
+ http_response = @sdk_configuration.hooks.after_success(
564
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
565
+ hook_ctx: hook_ctx
566
+ ),
567
+ response: http_response
568
+ )
569
+ end
570
+
571
+ if http_response.nil?
572
+ raise error if !error.nil?
573
+ raise 'no response'
574
+ end
575
+ end
576
+
577
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
578
+ if Utils.match_status_code(http_response.status, ['200'])
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::Shared::AttachmentRead)
588
+
589
+ return obj
590
+ else
591
+ 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'
592
+ end
593
+ elsif Utils.match_status_code(http_response.status, ['401'])
594
+ if Utils.match_content_type(content_type, 'application/json')
595
+ @sdk_configuration.hooks.after_success(
596
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
597
+ hook_ctx: hook_ctx
598
+ ),
599
+ response: http_response
600
+ )
601
+ response_data = http_response.env.response_body
602
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
603
+ throw obj
604
+ else
605
+ 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'
606
+ end
607
+ elsif Utils.match_status_code(http_response.status, ['422'])
608
+ if Utils.match_content_type(content_type, 'application/json')
609
+ @sdk_configuration.hooks.after_success(
610
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
611
+ hook_ctx: hook_ctx
612
+ ),
613
+ response: http_response
614
+ )
615
+ response_data = http_response.env.response_body
616
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BackendSrcExemptionsResponsesValidationErrorResponse)
617
+ throw obj
618
+ else
619
+ 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'
620
+ end
621
+ elsif Utils.match_status_code(http_response.status, ['500'])
622
+ if Utils.match_content_type(content_type, 'application/json')
623
+ @sdk_configuration.hooks.after_success(
624
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
625
+ hook_ctx: hook_ctx
626
+ ),
627
+ response: http_response
628
+ )
629
+ response_data = http_response.env.response_body
630
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
631
+ throw obj
632
+ else
633
+ 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'
634
+ end
635
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
636
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
637
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
638
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
639
+ else
640
+ 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'
641
+
642
+ end
643
+ end
644
+
645
+
646
+ sig { params(request: Models::Ops::GetExemptionAttachmentsRequest, timeout_ms: T.nilable(Integer)).returns(T::Array[Models::Shared::AttachmentRead]) }
647
+ def get_attachments(request:, timeout_ms: nil)
648
+ # get_attachments - Get Attachments For Exemption
649
+ # The Get Attachments for Exemption API retrieves all
650
+ # attachments associated with a specific exemption.
651
+ # This is used to view and manage supporting documents
652
+ # like exemption certificates uploaded for a particular exemption record.
653
+ url, params = @sdk_configuration.get_server_details
654
+ base_url = Utils.template_url(url, params)
655
+ url = Utils.generate_url(
656
+ Models::Ops::GetExemptionAttachmentsRequest,
657
+ base_url,
658
+ '/v1/exemptions/{exemption_id}/attachments',
659
+ request
660
+ )
661
+ headers = {}
662
+ headers = T.cast(headers, T::Hash[String, String])
663
+ headers['Accept'] = 'application/json'
664
+ headers['user-agent'] = @sdk_configuration.user_agent
665
+
666
+ security = @sdk_configuration.security_source&.call
667
+
668
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
669
+ timeout ||= @sdk_configuration.timeout
670
+
671
+
672
+ connection = @sdk_configuration.client
673
+
674
+ hook_ctx = SDKHooks::HookContext.new(
675
+ config: @sdk_configuration,
676
+ base_url: base_url,
677
+ oauth2_scopes: [],
678
+ operation_id: 'getExemptionAttachments',
679
+ security_source: @sdk_configuration.security_source
680
+ )
681
+
682
+ error = T.let(nil, T.nilable(StandardError))
683
+ http_response = T.let(nil, T.nilable(Faraday::Response))
684
+
685
+
686
+ begin
687
+ http_response = T.must(connection).get(url) do |req|
688
+ req.headers.merge!(headers)
689
+ req.options.timeout = timeout unless timeout.nil?
690
+ Utils.configure_request_security(req, security)
691
+
692
+ @sdk_configuration.hooks.before_request(
693
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
694
+ hook_ctx: hook_ctx
695
+ ),
696
+ request: req
697
+ )
698
+ end
699
+ rescue StandardError => e
700
+ error = e
701
+ ensure
702
+ if http_response.nil? || Utils.error_status?(http_response.status)
703
+ http_response = @sdk_configuration.hooks.after_error(
704
+ error: error,
705
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
706
+ hook_ctx: hook_ctx
707
+ ),
708
+ response: http_response
709
+ )
710
+ else
711
+ http_response = @sdk_configuration.hooks.after_success(
712
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
713
+ hook_ctx: hook_ctx
714
+ ),
715
+ response: http_response
716
+ )
717
+ end
718
+
719
+ if http_response.nil?
720
+ raise error if !error.nil?
721
+ raise 'no response'
722
+ end
723
+ end
724
+
725
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
726
+ if Utils.match_status_code(http_response.status, ['200'])
727
+ if Utils.match_content_type(content_type, 'application/json')
728
+ @sdk_configuration.hooks.after_success(
729
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
730
+ hook_ctx: hook_ctx
731
+ ),
732
+ response: http_response
733
+ )
734
+ response_data = http_response.env.response_body
735
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Crystalline::Array.new(Models::Shared::AttachmentRead))
736
+
737
+ return obj
738
+ else
739
+ 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'
740
+ end
741
+ elsif Utils.match_status_code(http_response.status, ['401'])
742
+ if Utils.match_content_type(content_type, 'application/json')
743
+ @sdk_configuration.hooks.after_success(
744
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
745
+ hook_ctx: hook_ctx
746
+ ),
747
+ response: http_response
748
+ )
749
+ response_data = http_response.env.response_body
750
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ErrorResponse)
751
+ throw obj
752
+ else
753
+ 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'
754
+ end
755
+ elsif Utils.match_status_code(http_response.status, ['422'])
756
+ if Utils.match_content_type(content_type, 'application/json')
757
+ @sdk_configuration.hooks.after_success(
758
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
759
+ hook_ctx: hook_ctx
760
+ ),
761
+ response: http_response
762
+ )
763
+ response_data = http_response.env.response_body
764
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BackendSrcExemptionsResponsesValidationErrorResponse)
765
+ throw obj
766
+ else
767
+ 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'
768
+ end
769
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
770
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
771
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
772
+ raise ::KintsugiSDK::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
773
+ else
774
+ 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'
775
+
776
+ end
777
+ end
778
+ end
779
+ end