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,70 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module KintsugiSDK
8
+ module Models
9
+ module Shared
10
+
11
+ # Public request model for tax estimation API documentation.
12
+ # This model excludes internal fields like enriched_fields that should not be exposed in API docs.
13
+ class TransactionEstimatePublicRequest
14
+ extend T::Sig
15
+ include Crystalline::MetadataFields
16
+
17
+ # The date of the transaction in ISO 8601 format (e.g., 2025-01-25T12:00:00Z).
18
+ field :date, ::DateTime, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('date'), required: true, 'decoder': Utils.datetime_from_iso_format(false) } }
19
+ # Unique identifier of this transaction in the source system.
20
+ field :external_id, ::String, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('external_id'), required: true } }
21
+
22
+ field :currency, Models::Shared::CurrencyEnum, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('currency'), required: true, 'decoder': Utils.enum_from_string(Models::Shared::CurrencyEnum, false) } }
23
+ # List of items involved in the transaction.
24
+ field :transaction_items, Crystalline::Array.new(Models::Shared::TransactionItemEstimateBase), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('transaction_items'), required: true } }
25
+ # List of addresses related to the transaction. At least one BILL_TO or SHIP_TO address must be provided. The address will be validated during estimation, and the transaction may be rejected if the address does not pass validation. The SHIP_TO will be preferred to use for determining tax liability.
26
+ field :addresses, Crystalline::Array.new(Models::Shared::Addresses), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('addresses'), required: true } }
27
+ # An optional description of the transaction.
28
+ field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('description') } }
29
+
30
+ field :source, Crystalline::Nilable.new(Models::Shared::SourceEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('source'), 'decoder': Utils.enum_from_string(Models::Shared::SourceEnum, true) } }
31
+
32
+ field :customer, Crystalline::Nilable.new(Models::Shared::CustomerBasePublic), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('customer') } }
33
+ # Total amount of the transaction.
34
+ field :total_amount, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('total_amount') } }
35
+ # Indicates if the transaction involves a marketplace.
36
+ field :marketplace, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('marketplace') } }
37
+
38
+ sig { params(date: ::DateTime, external_id: ::String, currency: Models::Shared::CurrencyEnum, transaction_items: T::Array[Models::Shared::TransactionItemEstimateBase], addresses: T::Array[Models::Shared::Addresses], description: T.nilable(::String), source: T.nilable(Models::Shared::SourceEnum), customer: T.nilable(Models::Shared::CustomerBasePublic), total_amount: T.nilable(::Float), marketplace: T.nilable(T::Boolean)).void }
39
+ def initialize(date:, external_id:, currency:, transaction_items:, addresses:, description: nil, source: nil, customer: nil, total_amount: 0.0, marketplace: false)
40
+ @date = date
41
+ @external_id = external_id
42
+ @currency = currency
43
+ @transaction_items = transaction_items
44
+ @addresses = addresses
45
+ @description = description
46
+ @source = source
47
+ @customer = customer
48
+ @total_amount = total_amount
49
+ @marketplace = marketplace
50
+ end
51
+
52
+ sig { params(other: T.untyped).returns(T::Boolean) }
53
+ def ==(other)
54
+ return false unless other.is_a? self.class
55
+ return false unless @date == other.date
56
+ return false unless @external_id == other.external_id
57
+ return false unless @currency == other.currency
58
+ return false unless @transaction_items == other.transaction_items
59
+ return false unless @addresses == other.addresses
60
+ return false unless @description == other.description
61
+ return false unless @source == other.source
62
+ return false unless @customer == other.customer
63
+ return false unless @total_amount == other.total_amount
64
+ return false unless @marketplace == other.marketplace
65
+ true
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,31 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class KintsugiSDK::Models::Shared::TransactionEstimatePublicRequest
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class KintsugiSDK::Models::Shared::TransactionEstimatePublicRequest
11
+ def date(); end
12
+ def date=(str_); end
13
+ def external_id(); end
14
+ def external_id=(str_); end
15
+ def currency(); end
16
+ def currency=(str_); end
17
+ def transaction_items(); end
18
+ def transaction_items=(str_); end
19
+ def addresses(); end
20
+ def addresses=(str_); end
21
+ def description(); end
22
+ def description=(str_); end
23
+ def source(); end
24
+ def source=(str_); end
25
+ def customer(); end
26
+ def customer=(str_); end
27
+ def total_amount(); end
28
+ def total_amount=(str_); end
29
+ def marketplace(); end
30
+ def marketplace=(str_); end
31
+ end
@@ -0,0 +1,91 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module KintsugiSDK
8
+ module Models
9
+ module Shared
10
+
11
+
12
+ class TransactionEstimateResponse
13
+ extend T::Sig
14
+ include Crystalline::MetadataFields
15
+
16
+ # The date of the transaction in ISO 8601 format (e.g., 2025-01-25T12:00:00Z).
17
+ field :date, ::DateTime, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('date'), required: true, 'decoder': Utils.datetime_from_iso_format(false) } }
18
+ # Unique identifier of this transaction in the source system.
19
+ field :external_id, ::String, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('external_id'), required: true } }
20
+
21
+ field :currency, Models::Shared::CurrencyEnum, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('currency'), required: true, 'decoder': Utils.enum_from_string(Models::Shared::CurrencyEnum, false) } }
22
+
23
+ field :transaction_items, Crystalline::Array.new(Models::Shared::TransactionItemEstimateResponse), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('transaction_items'), required: true } }
24
+ # List of addresses related to the transaction. At least one BILL_TO or SHIP_TO address must be provided. The address will be validated during estimation, and the transaction may be rejected if the address does not pass validation. The SHIP_TO will be preferred to use for determining tax liability. **Deprecated:** Use of `address.status` in estimate api is ignored and will be removed in the future status will be considered UNVERIFIED by default and always validated
25
+ field :addresses, Crystalline::Array.new(Models::Shared::TransactionEstimateResponseAddresses), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('addresses'), required: true } }
26
+ # An optional description of the transaction.
27
+ field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('description') } }
28
+
29
+ field :source, Crystalline::Nilable.new(Models::Shared::SourceEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('source'), 'decoder': Utils.enum_from_string(Models::Shared::SourceEnum, true) } }
30
+
31
+ field :customer, Crystalline::Nilable.new(Models::Shared::CustomerBase), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('customer') } }
32
+ # Total amount of the transaction.
33
+ field :total_amount, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('total_amount') } }
34
+ # Indicates if the transaction involves a marketplace.
35
+ field :marketplace, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('marketplace') } }
36
+ # The total amount of tax determined for the transaction.
37
+ field :total_tax_amount_calculated, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('total_tax_amount_calculated') } }
38
+ # The taxable amount for the transaction.
39
+ field :taxable_amount, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('taxable_amount') } }
40
+ # The calculated tax rate for the transaction.
41
+ field :tax_rate_calculated, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('tax_rate_calculated') } }
42
+ # Indicates if nexus was met for the transaction.**Deprecated:** Use `has_active_registration` instead.
43
+ #
44
+ # @deprecated true: This will be removed in a future release, please migrate away from it as soon as possible.
45
+ field :nexus_met, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('nexus_met') } }
46
+ # Indicates if there is an active registration for the transaction.
47
+ field :has_active_registration, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('has_active_registration') } }
48
+
49
+ sig { params(date: ::DateTime, external_id: ::String, currency: Models::Shared::CurrencyEnum, transaction_items: T::Array[Models::Shared::TransactionItemEstimateResponse], addresses: T::Array[Models::Shared::TransactionEstimateResponseAddresses], description: T.nilable(::String), source: T.nilable(Models::Shared::SourceEnum), customer: T.nilable(Models::Shared::CustomerBase), total_amount: T.nilable(::String), marketplace: T.nilable(T::Boolean), total_tax_amount_calculated: T.nilable(::String), taxable_amount: T.nilable(::String), tax_rate_calculated: T.nilable(::String), nexus_met: T.nilable(T::Boolean), has_active_registration: T.nilable(T::Boolean)).void }
50
+ def initialize(date:, external_id:, currency:, transaction_items:, addresses:, description: nil, source: nil, customer: nil, total_amount: '0.0', marketplace: false, total_tax_amount_calculated: '0.00', taxable_amount: '0.00', tax_rate_calculated: '0.00', nexus_met: false, has_active_registration: false)
51
+ @date = date
52
+ @external_id = external_id
53
+ @currency = currency
54
+ @transaction_items = transaction_items
55
+ @addresses = addresses
56
+ @description = description
57
+ @source = source
58
+ @customer = customer
59
+ @total_amount = total_amount
60
+ @marketplace = marketplace
61
+ @total_tax_amount_calculated = total_tax_amount_calculated
62
+ @taxable_amount = taxable_amount
63
+ @tax_rate_calculated = tax_rate_calculated
64
+ @nexus_met = nexus_met
65
+ @has_active_registration = has_active_registration
66
+ end
67
+
68
+ sig { params(other: T.untyped).returns(T::Boolean) }
69
+ def ==(other)
70
+ return false unless other.is_a? self.class
71
+ return false unless @date == other.date
72
+ return false unless @external_id == other.external_id
73
+ return false unless @currency == other.currency
74
+ return false unless @transaction_items == other.transaction_items
75
+ return false unless @addresses == other.addresses
76
+ return false unless @description == other.description
77
+ return false unless @source == other.source
78
+ return false unless @customer == other.customer
79
+ return false unless @total_amount == other.total_amount
80
+ return false unless @marketplace == other.marketplace
81
+ return false unless @total_tax_amount_calculated == other.total_tax_amount_calculated
82
+ return false unless @taxable_amount == other.taxable_amount
83
+ return false unless @tax_rate_calculated == other.tax_rate_calculated
84
+ return false unless @nexus_met == other.nexus_met
85
+ return false unless @has_active_registration == other.has_active_registration
86
+ true
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,41 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class KintsugiSDK::Models::Shared::TransactionEstimateResponse
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class KintsugiSDK::Models::Shared::TransactionEstimateResponse
11
+ def date(); end
12
+ def date=(str_); end
13
+ def external_id(); end
14
+ def external_id=(str_); end
15
+ def currency(); end
16
+ def currency=(str_); end
17
+ def transaction_items(); end
18
+ def transaction_items=(str_); end
19
+ def addresses(); end
20
+ def addresses=(str_); end
21
+ def description(); end
22
+ def description=(str_); end
23
+ def source(); end
24
+ def source=(str_); end
25
+ def customer(); end
26
+ def customer=(str_); end
27
+ def total_amount(); end
28
+ def total_amount=(str_); end
29
+ def marketplace(); end
30
+ def marketplace=(str_); end
31
+ def total_tax_amount_calculated(); end
32
+ def total_tax_amount_calculated=(str_); end
33
+ def taxable_amount(); end
34
+ def taxable_amount=(str_); end
35
+ def tax_rate_calculated(); end
36
+ def tax_rate_calculated=(str_); end
37
+ def nexus_met(); end
38
+ def nexus_met=(str_); end
39
+ def has_active_registration(); end
40
+ def has_active_registration=(str_); end
41
+ end
@@ -0,0 +1,80 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module KintsugiSDK
8
+ module Models
9
+ module Shared
10
+
11
+
12
+ class TransactionEstimateResponseAddresses
13
+ extend T::Sig
14
+ include Crystalline::MetadataFields
15
+
16
+ # Type of the address. Must be either
17
+ # SHIP_TO or BILL_TO.
18
+ field :type, Models::Shared::TransactionEstimateResponseType, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('type'), required: true, 'decoder': Utils.enum_from_string(Models::Shared::TransactionEstimateResponseType, false) } }
19
+ # State or province of the address.
20
+ field :state, ::String, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('state'), required: true } }
21
+ # Postal code of the address.
22
+ field :postal_code, ::String, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('postal_code'), required: true } }
23
+ # Country of the address.
24
+ field :country, ::String, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('country'), required: true } }
25
+ # Phone number associated with the customer.
26
+ field :phone, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('phone') } }
27
+ # Primary street address of the customer.
28
+ field :street_1, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('street_1') } }
29
+ # Additional street address details, such as an apartment or suite number.
30
+ field :street_2, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('street_2') } }
31
+ # City where the customer resides.
32
+ field :city, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('city') } }
33
+ # County or district of the customer.
34
+ field :county, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('county') } }
35
+ # Complete address string of the customer, which can be used as an alternative to individual fields.
36
+ field :full_address, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('full_address') } }
37
+ # Status of the address. Deprecated and ignored.
38
+ #
39
+ # @deprecated true: This will be removed in a future release, please migrate away from it as soon as possible.
40
+ field :status, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('status') } }
41
+ # Additional enriched fields related to the address.
42
+ field :enriched_fields, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('enriched_fields') } }
43
+
44
+ sig { params(type: Models::Shared::TransactionEstimateResponseType, state: ::String, postal_code: ::String, country: ::String, phone: T.nilable(::String), street_1: T.nilable(::String), street_2: T.nilable(::String), city: T.nilable(::String), county: T.nilable(::String), full_address: T.nilable(::String), status: T.nilable(::String), enriched_fields: T.nilable(::String)).void }
45
+ def initialize(type:, state:, postal_code:, country:, phone: nil, street_1: nil, street_2: nil, city: nil, county: nil, full_address: nil, status: nil, enriched_fields: nil)
46
+ @type = type
47
+ @state = state
48
+ @postal_code = postal_code
49
+ @country = country
50
+ @phone = phone
51
+ @street_1 = street_1
52
+ @street_2 = street_2
53
+ @city = city
54
+ @county = county
55
+ @full_address = full_address
56
+ @status = status
57
+ @enriched_fields = enriched_fields
58
+ end
59
+
60
+ sig { params(other: T.untyped).returns(T::Boolean) }
61
+ def ==(other)
62
+ return false unless other.is_a? self.class
63
+ return false unless @type == other.type
64
+ return false unless @state == other.state
65
+ return false unless @postal_code == other.postal_code
66
+ return false unless @country == other.country
67
+ return false unless @phone == other.phone
68
+ return false unless @street_1 == other.street_1
69
+ return false unless @street_2 == other.street_2
70
+ return false unless @city == other.city
71
+ return false unless @county == other.county
72
+ return false unless @full_address == other.full_address
73
+ return false unless @status == other.status
74
+ return false unless @enriched_fields == other.enriched_fields
75
+ true
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,35 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class KintsugiSDK::Models::Shared::TransactionEstimateResponseAddresses
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class KintsugiSDK::Models::Shared::TransactionEstimateResponseAddresses
11
+ def type(); end
12
+ def type=(str_); end
13
+ def state(); end
14
+ def state=(str_); end
15
+ def postal_code(); end
16
+ def postal_code=(str_); end
17
+ def country(); end
18
+ def country=(str_); end
19
+ def phone(); end
20
+ def phone=(str_); end
21
+ def street_1(); end
22
+ def street_1=(str_); end
23
+ def street_2(); end
24
+ def street_2=(str_); end
25
+ def city(); end
26
+ def city=(str_); end
27
+ def county(); end
28
+ def county=(str_); end
29
+ def full_address(); end
30
+ def full_address=(str_); end
31
+ def status(); end
32
+ def status=(str_); end
33
+ def enriched_fields(); end
34
+ def enriched_fields=(str_); end
35
+ end
@@ -0,0 +1,23 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module KintsugiSDK
8
+ module Models
9
+ module Shared
10
+
11
+ # TransactionEstimateResponseType - Type of the address. Must be either
12
+ # SHIP_TO or BILL_TO.
13
+ class TransactionEstimateResponseType < T::Enum
14
+
15
+
16
+ enums do
17
+ SHIP_TO = new('SHIP_TO')
18
+ BILL_TO = new('BILL_TO')
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class KintsugiSDK::Models::Shared::TransactionEstimateResponseType
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class KintsugiSDK::Models::Shared::TransactionEstimateResponseType
11
+ end
@@ -0,0 +1,26 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module KintsugiSDK
8
+ module Models
9
+ module Shared
10
+
11
+ # TransactionExemptStatusEnum - Based on transaction item exempt status.
12
+ # NOT EXEMPT: None of the items are NOT EXEMPT
13
+ # PARTIALLY EXEMPT: At least some of the items are NOT EXEMPT
14
+ # FULLY_EXEMPT: All items sold in the transaction are EXEMPT
15
+ class TransactionExemptStatusEnum < T::Enum
16
+
17
+
18
+ enums do
19
+ NOT_EXEMPT = new('NOT_EXEMPT')
20
+ PARTIALLY_EXEMPT = new('PARTIALLY_EXEMPT')
21
+ FULLY_EXEMPT = new('FULLY_EXEMPT')
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class KintsugiSDK::Models::Shared::TransactionExemptStatusEnum
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class KintsugiSDK::Models::Shared::TransactionExemptStatusEnum
11
+ end
@@ -0,0 +1,141 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module KintsugiSDK
8
+ module Models
9
+ module Shared
10
+
11
+
12
+ class TransactionItemBuilder
13
+ extend T::Sig
14
+ include Crystalline::MetadataFields
15
+
16
+ # Organization identifier.
17
+ field :organization_id, ::String, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('organization_id'), required: true } }
18
+ # Date/time of item.
19
+ field :date, ::DateTime, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('date'), required: true, 'decoder': Utils.datetime_from_iso_format(false) } }
20
+ # External product identifier.
21
+ field :external_product_id, ::String, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('external_product_id'), required: true } }
22
+ # External item identifier.
23
+ field :external_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('external_id') } }
24
+ # Item description
25
+ field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('description') } }
26
+ # Product name
27
+ field :product, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('product') } }
28
+ # Product identifier.
29
+ field :product_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('product_id') } }
30
+ # Product name (detailed)
31
+ field :product_name, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('product_name') } }
32
+ # Product description
33
+ field :product_description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('product_description') } }
34
+
35
+ field :original_currency, Crystalline::Nilable.new(Models::Shared::CurrencyEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('original_currency'), 'decoder': Utils.enum_from_string(Models::Shared::CurrencyEnum, true) } }
36
+
37
+ field :destination_currency, Crystalline::Nilable.new(Models::Shared::CurrencyEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('destination_currency'), 'decoder': Utils.enum_from_string(Models::Shared::CurrencyEnum, true) } }
38
+ # Converted item amount.
39
+ field :converted_amount, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('converted_amount') } }
40
+ # Converted taxable amount.
41
+ field :converted_taxable_amount, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('converted_taxable_amount') } }
42
+ # Converted imported tax amount.
43
+ field :converted_tax_amount_imported, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('converted_tax_amount_imported') } }
44
+ # Converted calculated tax amount
45
+ field :converted_tax_amount_calculated, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('converted_tax_amount_calculated') } }
46
+ # Converted total discount amount.
47
+ field :converted_total_discount, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('converted_total_discount') } }
48
+ # Converted subtotal amount.
49
+ field :converted_subtotal, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('converted_subtotal') } }
50
+ # This enum is used to determine if a transaction is exempt from tax.
51
+ field :tax_exemption, Crystalline::Nilable.new(Models::Shared::TaxExemptionEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('tax_exemption'), 'decoder': Utils.enum_from_string(Models::Shared::TaxExemptionEnum, true) } }
52
+
53
+ field :tax_items, Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::TaxItemBuilder)), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('tax_items') } }
54
+
55
+ field :discount_builder, Crystalline::Nilable.new(Models::Shared::DiscountBuilder), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('discount_builder') } }
56
+ # Quantity of item.
57
+ field :quantity, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('quantity') } }
58
+ # Item amount.
59
+ field :amount, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('amount') } }
60
+ # Imported tax amount for the item.
61
+ field :tax_amount_imported, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('tax_amount_imported') } }
62
+ # Imported tax rate.
63
+ field :tax_rate_imported, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('tax_rate_imported') } }
64
+ # Calculated tax amount for the item.
65
+ field :tax_amount_calculated, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('tax_amount_calculated') } }
66
+ # Calculated tax rate.
67
+ field :tax_rate_calculated, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('tax_rate_calculated') } }
68
+ # Taxable amount for the item.
69
+ field :taxable_amount, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('taxable_amount') } }
70
+ # Indicates if the item is exempt.
71
+ field :exempt, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('exempt') } }
72
+
73
+ sig { params(organization_id: ::String, date: ::DateTime, external_product_id: ::String, external_id: T.nilable(::String), description: T.nilable(::String), product: T.nilable(::String), product_id: T.nilable(::String), product_name: T.nilable(::String), product_description: T.nilable(::String), original_currency: T.nilable(Models::Shared::CurrencyEnum), destination_currency: T.nilable(Models::Shared::CurrencyEnum), converted_amount: T.nilable(::Float), converted_taxable_amount: T.nilable(::Float), converted_tax_amount_imported: T.nilable(::Float), converted_tax_amount_calculated: T.nilable(::Float), converted_total_discount: T.nilable(::Float), converted_subtotal: T.nilable(::Float), tax_exemption: T.nilable(Models::Shared::TaxExemptionEnum), tax_items: T.nilable(T::Array[Models::Shared::TaxItemBuilder]), discount_builder: T.nilable(Models::Shared::DiscountBuilder), quantity: T.nilable(::Float), amount: T.nilable(::Float), tax_amount_imported: T.nilable(::Float), tax_rate_imported: T.nilable(::Float), tax_amount_calculated: T.nilable(::Float), tax_rate_calculated: T.nilable(::Float), taxable_amount: T.nilable(::Float), exempt: T.nilable(T::Boolean)).void }
74
+ def initialize(organization_id:, date:, external_product_id:, external_id: nil, description: nil, product: nil, product_id: nil, product_name: nil, product_description: nil, original_currency: nil, destination_currency: nil, converted_amount: nil, converted_taxable_amount: nil, converted_tax_amount_imported: nil, converted_tax_amount_calculated: nil, converted_total_discount: nil, converted_subtotal: nil, tax_exemption: nil, tax_items: nil, discount_builder: nil, quantity: 1.0, amount: 0.00, tax_amount_imported: 0.00, tax_rate_imported: 0.00, tax_amount_calculated: 0.00, tax_rate_calculated: 0.00, taxable_amount: 0.00, exempt: false)
75
+ @organization_id = organization_id
76
+ @date = date
77
+ @external_product_id = external_product_id
78
+ @external_id = external_id
79
+ @description = description
80
+ @product = product
81
+ @product_id = product_id
82
+ @product_name = product_name
83
+ @product_description = product_description
84
+ @original_currency = original_currency
85
+ @destination_currency = destination_currency
86
+ @converted_amount = converted_amount
87
+ @converted_taxable_amount = converted_taxable_amount
88
+ @converted_tax_amount_imported = converted_tax_amount_imported
89
+ @converted_tax_amount_calculated = converted_tax_amount_calculated
90
+ @converted_total_discount = converted_total_discount
91
+ @converted_subtotal = converted_subtotal
92
+ @tax_exemption = tax_exemption
93
+ @tax_items = tax_items
94
+ @discount_builder = discount_builder
95
+ @quantity = quantity
96
+ @amount = amount
97
+ @tax_amount_imported = tax_amount_imported
98
+ @tax_rate_imported = tax_rate_imported
99
+ @tax_amount_calculated = tax_amount_calculated
100
+ @tax_rate_calculated = tax_rate_calculated
101
+ @taxable_amount = taxable_amount
102
+ @exempt = exempt
103
+ end
104
+
105
+ sig { params(other: T.untyped).returns(T::Boolean) }
106
+ def ==(other)
107
+ return false unless other.is_a? self.class
108
+ return false unless @organization_id == other.organization_id
109
+ return false unless @date == other.date
110
+ return false unless @external_product_id == other.external_product_id
111
+ return false unless @external_id == other.external_id
112
+ return false unless @description == other.description
113
+ return false unless @product == other.product
114
+ return false unless @product_id == other.product_id
115
+ return false unless @product_name == other.product_name
116
+ return false unless @product_description == other.product_description
117
+ return false unless @original_currency == other.original_currency
118
+ return false unless @destination_currency == other.destination_currency
119
+ return false unless @converted_amount == other.converted_amount
120
+ return false unless @converted_taxable_amount == other.converted_taxable_amount
121
+ return false unless @converted_tax_amount_imported == other.converted_tax_amount_imported
122
+ return false unless @converted_tax_amount_calculated == other.converted_tax_amount_calculated
123
+ return false unless @converted_total_discount == other.converted_total_discount
124
+ return false unless @converted_subtotal == other.converted_subtotal
125
+ return false unless @tax_exemption == other.tax_exemption
126
+ return false unless @tax_items == other.tax_items
127
+ return false unless @discount_builder == other.discount_builder
128
+ return false unless @quantity == other.quantity
129
+ return false unless @amount == other.amount
130
+ return false unless @tax_amount_imported == other.tax_amount_imported
131
+ return false unless @tax_rate_imported == other.tax_rate_imported
132
+ return false unless @tax_amount_calculated == other.tax_amount_calculated
133
+ return false unless @tax_rate_calculated == other.tax_rate_calculated
134
+ return false unless @taxable_amount == other.taxable_amount
135
+ return false unless @exempt == other.exempt
136
+ true
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,67 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class KintsugiSDK::Models::Shared::TransactionItemBuilder
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class KintsugiSDK::Models::Shared::TransactionItemBuilder
11
+ def organization_id(); end
12
+ def organization_id=(str_); end
13
+ def date(); end
14
+ def date=(str_); end
15
+ def external_product_id(); end
16
+ def external_product_id=(str_); end
17
+ def external_id(); end
18
+ def external_id=(str_); end
19
+ def description(); end
20
+ def description=(str_); end
21
+ def product(); end
22
+ def product=(str_); end
23
+ def product_id(); end
24
+ def product_id=(str_); end
25
+ def product_name(); end
26
+ def product_name=(str_); end
27
+ def product_description(); end
28
+ def product_description=(str_); end
29
+ def original_currency(); end
30
+ def original_currency=(str_); end
31
+ def destination_currency(); end
32
+ def destination_currency=(str_); end
33
+ def converted_amount(); end
34
+ def converted_amount=(str_); end
35
+ def converted_taxable_amount(); end
36
+ def converted_taxable_amount=(str_); end
37
+ def converted_tax_amount_imported(); end
38
+ def converted_tax_amount_imported=(str_); end
39
+ def converted_tax_amount_calculated(); end
40
+ def converted_tax_amount_calculated=(str_); end
41
+ def converted_total_discount(); end
42
+ def converted_total_discount=(str_); end
43
+ def converted_subtotal(); end
44
+ def converted_subtotal=(str_); end
45
+ def tax_exemption(); end
46
+ def tax_exemption=(str_); end
47
+ def tax_items(); end
48
+ def tax_items=(str_); end
49
+ def discount_builder(); end
50
+ def discount_builder=(str_); end
51
+ def quantity(); end
52
+ def quantity=(str_); end
53
+ def amount(); end
54
+ def amount=(str_); end
55
+ def tax_amount_imported(); end
56
+ def tax_amount_imported=(str_); end
57
+ def tax_rate_imported(); end
58
+ def tax_rate_imported=(str_); end
59
+ def tax_amount_calculated(); end
60
+ def tax_amount_calculated=(str_); end
61
+ def tax_rate_calculated(); end
62
+ def tax_rate_calculated=(str_); end
63
+ def taxable_amount(); end
64
+ def taxable_amount=(str_); end
65
+ def exempt(); end
66
+ def exempt=(str_); end
67
+ end