kintsugi_sdk 5.5.14 → 5.6.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 (167) hide show
  1. checksums.yaml +4 -4
  2. data/lib/crystalline/enum.rbi +17 -0
  3. data/lib/crystalline/metadata_fields.rb +94 -38
  4. data/lib/crystalline/module.rb +103 -13
  5. data/lib/crystalline/types.rb +100 -16
  6. data/lib/crystalline/utils.rb +13 -0
  7. data/lib/kintsugi_sdk/addressvalidation.rb +3 -3
  8. data/lib/kintsugi_sdk/customers.rb +10 -10
  9. data/lib/kintsugi_sdk/exemptions.rb +7 -7
  10. data/lib/kintsugi_sdk/models/errors/backend_src_address_validation_responses_validationerrorresponse.rb +0 -1
  11. data/lib/kintsugi_sdk/models/errors/backend_src_customers_responses_validationerrorresponse.rb +0 -1
  12. data/lib/kintsugi_sdk/models/errors/backend_src_exemptions_responses_validationerrorresponse.rb +0 -1
  13. data/lib/kintsugi_sdk/models/errors/backend_src_products_responses_validationerrorresponse.rb +0 -1
  14. data/lib/kintsugi_sdk/models/errors/backend_src_tax_estimation_responses_validationerrorresponse.rb +0 -1
  15. data/lib/kintsugi_sdk/models/errors/backend_src_transactions_responses_validationerrorresponse.rb +0 -1
  16. data/lib/kintsugi_sdk/models/errors/errorresponse.rb +0 -1
  17. data/lib/kintsugi_sdk/models/errors/httpvalidationerror.rb +0 -1
  18. data/lib/kintsugi_sdk/models/ops/createtransactionbycustomer_request.rb +0 -1
  19. data/lib/kintsugi_sdk/models/ops/estimate_tax_v1_tax_estimate_post_request.rb +2 -3
  20. data/lib/kintsugi_sdk/models/ops/get_customer_by_external_id_v1_customers_external_external_id_get_request.rb +0 -1
  21. data/lib/kintsugi_sdk/models/ops/get_customer_by_id_v1_customers_customer_id_get_request.rb +0 -1
  22. data/lib/kintsugi_sdk/models/ops/get_customers_v1_request.rb +0 -1
  23. data/lib/kintsugi_sdk/models/ops/get_exemption_by_id_v1_exemptions_exemption_id_get_request.rb +0 -1
  24. data/lib/kintsugi_sdk/models/ops/get_exemptions_v1_exemptions_get_request.rb +0 -1
  25. data/lib/kintsugi_sdk/models/ops/get_nexus_for_org_v1_nexus_get_request.rb +6 -3
  26. data/lib/kintsugi_sdk/models/ops/get_nexus_for_org_v1_nexus_get_request.rbi +2 -0
  27. data/lib/kintsugi_sdk/models/ops/get_product_by_id_v1_products_product_id_get_request.rb +0 -1
  28. data/lib/kintsugi_sdk/models/ops/get_transaction_by_id_v1_transactions_transaction_id_get_request.rb +0 -1
  29. data/lib/kintsugi_sdk/models/ops/get_transactions_v1_transactions_get_request.rb +0 -1
  30. data/lib/kintsugi_sdk/models/ops/getexemptionattachments_request.rb +0 -1
  31. data/lib/kintsugi_sdk/models/ops/gettransactionbyexternalid_request.rb +0 -1
  32. data/lib/kintsugi_sdk/models/ops/gettransactionsbycustomer_request.rb +0 -1
  33. data/lib/kintsugi_sdk/models/ops/gettransactionsbyfiling_request.rb +0 -1
  34. data/lib/kintsugi_sdk/models/ops/search_v1_address_validation_search_post_security.rb +0 -1
  35. data/lib/kintsugi_sdk/models/ops/update_customer_v1_customers_customer_id_put_request.rb +0 -1
  36. data/lib/kintsugi_sdk/models/ops/update_product_v1_products_product_id_put_request.rb +0 -1
  37. data/lib/kintsugi_sdk/models/ops/update_transaction_v1_transactions_transaction_id_put_request.rb +0 -1
  38. data/lib/kintsugi_sdk/models/ops/uploadexemptioncert_request.rb +0 -1
  39. data/lib/kintsugi_sdk/models/ops.rb +0 -1
  40. data/lib/kintsugi_sdk/models/shared/addressbase.rb +1 -2
  41. data/lib/kintsugi_sdk/models/shared/addresses.rb +3 -4
  42. data/lib/kintsugi_sdk/models/shared/addressresponsedata.rb +0 -1
  43. data/lib/kintsugi_sdk/models/shared/addresssearchresponse.rb +0 -1
  44. data/lib/kintsugi_sdk/models/shared/addressstatus.rb +0 -3
  45. data/lib/kintsugi_sdk/models/shared/addresssubmittedresponse.rb +0 -1
  46. data/lib/kintsugi_sdk/models/shared/addresstype.rb +0 -3
  47. data/lib/kintsugi_sdk/models/shared/appliedto.rb +0 -3
  48. data/lib/kintsugi_sdk/models/shared/attachmentread.rb +1 -2
  49. data/lib/kintsugi_sdk/models/shared/backend_src_address_validation_responses_validationerroritem.rb +0 -1
  50. data/lib/kintsugi_sdk/models/shared/backend_src_customers_responses_validationerroritem.rb +0 -1
  51. data/lib/kintsugi_sdk/models/shared/backend_src_exemptions_models_exemptionread.rb +4 -5
  52. data/lib/kintsugi_sdk/models/shared/backend_src_exemptions_responses_validationerroritem.rb +0 -1
  53. data/lib/kintsugi_sdk/models/shared/backend_src_exemptions_serializers_exemptionread.rb +4 -5
  54. data/lib/kintsugi_sdk/models/shared/backend_src_products_responses_validationerroritem.rb +0 -1
  55. data/lib/kintsugi_sdk/models/shared/backend_src_tax_estimation_responses_validationerroritem.rb +0 -1
  56. data/lib/kintsugi_sdk/models/shared/backend_src_transactions_responses_validationerroritem.rb +0 -1
  57. data/lib/kintsugi_sdk/models/shared/body_upload_exemption_certificate_v1_exemptions_exemption_id_attachments_post.rb +0 -1
  58. data/lib/kintsugi_sdk/models/shared/countrycodeenum.rb +1 -3
  59. data/lib/kintsugi_sdk/models/shared/currencyenum.rb +0 -3
  60. data/lib/kintsugi_sdk/models/shared/customerbase.rb +4 -5
  61. data/lib/kintsugi_sdk/models/shared/customerbasebase.rb +4 -5
  62. data/lib/kintsugi_sdk/models/shared/customerbasepublic.rb +4 -5
  63. data/lib/kintsugi_sdk/models/shared/customercreate.rb +4 -5
  64. data/lib/kintsugi_sdk/models/shared/customerread.rb +4 -5
  65. data/lib/kintsugi_sdk/models/shared/customertaxregistrationread.rb +2 -3
  66. data/lib/kintsugi_sdk/models/shared/customertaxtypeenum.rb +0 -3
  67. data/lib/kintsugi_sdk/models/shared/customerupdate.rb +4 -5
  68. data/lib/kintsugi_sdk/models/shared/discountbuilder.rb +2 -3
  69. data/lib/kintsugi_sdk/models/shared/exemption.rb +5 -6
  70. data/lib/kintsugi_sdk/models/shared/exemptioncreate.rb +4 -5
  71. data/lib/kintsugi_sdk/models/shared/exemptionrequired.rb +6 -5
  72. data/lib/kintsugi_sdk/models/shared/exemptionstatus.rb +0 -3
  73. data/lib/kintsugi_sdk/models/shared/exemptiontype.rb +0 -3
  74. data/lib/kintsugi_sdk/models/shared/fastapi_pagination_default_page_exemptionread_2.rb +3 -4
  75. data/lib/kintsugi_sdk/models/shared/file.rb +0 -1
  76. data/lib/kintsugi_sdk/models/shared/findthresholdcrossingtransactionstate.rb +56 -0
  77. data/lib/kintsugi_sdk/models/shared/findthresholdcrossingtransactionstate.rbi +25 -0
  78. data/lib/kintsugi_sdk/models/shared/jurisdictiontype.rb +0 -3
  79. data/lib/kintsugi_sdk/models/shared/nexusresponse.rb +41 -22
  80. data/lib/kintsugi_sdk/models/shared/nexusresponse.rbi +10 -0
  81. data/lib/kintsugi_sdk/models/shared/nexusstateenum.rb +0 -3
  82. data/lib/kintsugi_sdk/models/shared/nexusstatusenum.rb +0 -3
  83. data/lib/kintsugi_sdk/models/shared/nexustypeenum.rb +0 -3
  84. data/lib/kintsugi_sdk/models/shared/page_customerread_.rb +3 -4
  85. data/lib/kintsugi_sdk/models/shared/page_nexusresponse_.rb +3 -4
  86. data/lib/kintsugi_sdk/models/shared/page_transactionestimateresponse_.rb +3 -4
  87. data/lib/kintsugi_sdk/models/shared/page_transactionread_.rb +3 -4
  88. data/lib/kintsugi_sdk/models/shared/periodmodelenum.rb +0 -3
  89. data/lib/kintsugi_sdk/models/shared/processingstatusenum.rb +1 -3
  90. data/lib/kintsugi_sdk/models/shared/productread.rb +12 -9
  91. data/lib/kintsugi_sdk/models/shared/productstatusenum.rb +0 -3
  92. data/lib/kintsugi_sdk/models/shared/productupdate.rb +10 -7
  93. data/lib/kintsugi_sdk/models/shared/registration.rb +0 -1
  94. data/lib/kintsugi_sdk/models/shared/registrationsregimeenum.rb +0 -3
  95. data/lib/kintsugi_sdk/models/shared/relatedentitytype.rb +0 -3
  96. data/lib/kintsugi_sdk/models/shared/salesortransactionsenum.rb +0 -3
  97. data/lib/kintsugi_sdk/models/shared/security.rb +0 -1
  98. data/lib/kintsugi_sdk/models/shared/sourceenum.rb +6 -3
  99. data/lib/kintsugi_sdk/models/shared/statusenum.rb +0 -3
  100. data/lib/kintsugi_sdk/models/shared/taxexemptionenum.rb +1 -3
  101. data/lib/kintsugi_sdk/models/shared/taxitembuilder.rb +4 -5
  102. data/lib/kintsugi_sdk/models/shared/taxitemestimate.rb +1 -2
  103. data/lib/kintsugi_sdk/models/shared/taxitemread.rb +4 -5
  104. data/lib/kintsugi_sdk/models/shared/taxitemreturnreasonenum.rb +2 -3
  105. data/lib/kintsugi_sdk/models/shared/taxitemtypeenum.rb +0 -3
  106. data/lib/kintsugi_sdk/models/shared/taxliabilitysourceenum.rb +0 -3
  107. data/lib/kintsugi_sdk/models/shared/transactionaddressbuilder.rb +3 -4
  108. data/lib/kintsugi_sdk/models/shared/transactionaddresspublic.rb +2 -3
  109. data/lib/kintsugi_sdk/models/shared/transactionaddressread_output.rb +3 -4
  110. data/lib/kintsugi_sdk/models/shared/transactioncreate.rb +23 -19
  111. data/lib/kintsugi_sdk/models/shared/transactioncreate.rbi +2 -2
  112. data/lib/kintsugi_sdk/models/shared/transactionestimatepublicrequest.rb +6 -11
  113. data/lib/kintsugi_sdk/models/shared/transactionestimatepublicrequest.rbi +0 -2
  114. data/lib/kintsugi_sdk/models/shared/transactionestimateresponse.rb +7 -12
  115. data/lib/kintsugi_sdk/models/shared/transactionestimateresponse.rbi +0 -2
  116. data/lib/kintsugi_sdk/models/shared/transactionestimateresponse_addresses.rb +3 -4
  117. data/lib/kintsugi_sdk/models/shared/transactionestimateresponse_type.rb +0 -3
  118. data/lib/kintsugi_sdk/models/shared/transactionexemptstatusenum.rb +2 -3
  119. data/lib/kintsugi_sdk/models/shared/transactionitembuilder.rb +8 -7
  120. data/lib/kintsugi_sdk/models/shared/transactionitemcreateupdate.rb +8 -7
  121. data/lib/kintsugi_sdk/models/shared/transactionitemestimatebase.rb +2 -3
  122. data/lib/kintsugi_sdk/models/shared/transactionitemestimateresponse.rb +3 -4
  123. data/lib/kintsugi_sdk/models/shared/transactionitemread.rb +7 -6
  124. data/lib/kintsugi_sdk/models/shared/transactionpublicrequest.rb +21 -17
  125. data/lib/kintsugi_sdk/models/shared/transactionpublicrequest.rbi +2 -2
  126. data/lib/kintsugi_sdk/models/shared/transactionread.rb +24 -20
  127. data/lib/kintsugi_sdk/models/shared/transactionread.rbi +2 -2
  128. data/lib/kintsugi_sdk/models/shared/transactionrefundstatus.rb +0 -3
  129. data/lib/kintsugi_sdk/models/shared/transactionstatusenum.rb +0 -3
  130. data/lib/kintsugi_sdk/models/shared/transactiontypeenum.rb +0 -3
  131. data/lib/kintsugi_sdk/models/shared/transactionupdate.rb +20 -16
  132. data/lib/kintsugi_sdk/models/shared/transactionupdate.rbi +2 -2
  133. data/lib/kintsugi_sdk/models/shared/treatmentenum.rb +0 -3
  134. data/lib/kintsugi_sdk/models/shared/type.rb +0 -3
  135. data/lib/kintsugi_sdk/models/shared/validationaddress.rb +0 -1
  136. data/lib/kintsugi_sdk/models/shared/validationerror.rb +0 -1
  137. data/lib/kintsugi_sdk/models/shared.rb +1 -7
  138. data/lib/kintsugi_sdk/nexus.rb +1 -1
  139. data/lib/kintsugi_sdk/openapisdk.rb +13 -15
  140. data/lib/kintsugi_sdk/products.rb +6 -414
  141. data/lib/kintsugi_sdk/sdk_hooks/hooks.rb +0 -1
  142. data/lib/kintsugi_sdk/sdkconfiguration.rb +5 -10
  143. data/lib/kintsugi_sdk/taxestimation.rb +4 -4
  144. data/lib/kintsugi_sdk/transactions.rb +8 -8
  145. data/lib/kintsugi_sdk/utils/forms.rb +1 -1
  146. data/lib/kintsugi_sdk/utils/query_params.rb +4 -2
  147. data/lib/kintsugi_sdk/utils/request_bodies.rb +11 -6
  148. data/lib/kintsugi_sdk/utils/security.rb +10 -0
  149. data/lib/kintsugi_sdk/utils/url.rb +11 -5
  150. data/lib/kintsugi_sdk/utils/utils.rb +45 -3
  151. metadata +73 -41
  152. data/lib/kintsugi_sdk/models/ops/get_products_v1_products_get_request.rb +0 -61
  153. data/lib/kintsugi_sdk/models/ops/get_products_v1_products_get_request.rbi +0 -27
  154. data/lib/kintsugi_sdk/models/shared/page_productread_.rb +0 -49
  155. data/lib/kintsugi_sdk/models/shared/page_productread_.rbi +0 -21
  156. data/lib/kintsugi_sdk/models/shared/productcategories.rb +0 -38
  157. data/lib/kintsugi_sdk/models/shared/productcategories.rbi +0 -15
  158. data/lib/kintsugi_sdk/models/shared/productcategoryenum.rb +0 -25
  159. data/lib/kintsugi_sdk/models/shared/productcategoryenum.rbi +0 -11
  160. data/lib/kintsugi_sdk/models/shared/productcodeenum.rb +0 -82
  161. data/lib/kintsugi_sdk/models/shared/productcodeenum.rbi +0 -11
  162. data/lib/kintsugi_sdk/models/shared/productcreatemanual.rb +0 -61
  163. data/lib/kintsugi_sdk/models/shared/productcreatemanual.rbi +0 -27
  164. data/lib/kintsugi_sdk/models/shared/productsubcategory.rb +0 -46
  165. data/lib/kintsugi_sdk/models/shared/productsubcategory.rbi +0 -19
  166. data/lib/kintsugi_sdk/models/shared/productsubcategoryenum.rb +0 -83
  167. data/lib/kintsugi_sdk/models/shared/productsubcategoryenum.rbi +0 -11
@@ -7,7 +7,6 @@
7
7
  module KintsugiSDK
8
8
  module Models
9
9
  module Shared
10
-
11
10
 
12
11
  class TaxItemBuilder
13
12
  extend T::Sig
@@ -24,15 +23,15 @@ module KintsugiSDK
24
23
 
25
24
  field :converted_amount, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('converted_amount') } }
26
25
 
27
- field :currency, Crystalline::Nilable.new(Models::Shared::CurrencyEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('currency'), 'decoder': Utils.enum_from_string(Models::Shared::CurrencyEnum, true) } }
26
+ field :currency, Crystalline::Nilable.new(Models::Shared::CurrencyEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('currency'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::CurrencyEnum, true) } }
28
27
 
29
- 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) } }
28
+ field :destination_currency, Crystalline::Nilable.new(Models::Shared::CurrencyEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('destination_currency'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::CurrencyEnum, true) } }
30
29
 
31
30
  field :external_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('external_id') } }
32
31
 
33
- field :type, Crystalline::Nilable.new(Models::Shared::TaxItemTypeEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('type'), 'decoder': Utils.enum_from_string(Models::Shared::TaxItemTypeEnum, true) } }
32
+ field :type, Crystalline::Nilable.new(Models::Shared::TaxItemTypeEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('type'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::TaxItemTypeEnum, true) } }
34
33
 
35
- field :jurisdiction_type, Crystalline::Nilable.new(Models::Shared::JurisdictionType), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('jurisdiction_type'), 'decoder': Utils.enum_from_string(Models::Shared::JurisdictionType, true) } }
34
+ field :jurisdiction_type, Crystalline::Nilable.new(Models::Shared::JurisdictionType), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('jurisdiction_type'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::JurisdictionType, true) } }
36
35
 
37
36
  field :jurisdiction_name, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('jurisdiction_name') } }
38
37
  # The rule ID of the tax item
@@ -7,7 +7,6 @@
7
7
  module KintsugiSDK
8
8
  module Models
9
9
  module Shared
10
-
11
10
 
12
11
  class TaxItemEstimate
13
12
  extend T::Sig
@@ -16,7 +15,7 @@ module KintsugiSDK
16
15
 
17
16
  field :name, ::String, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('name'), required: true } }
18
17
  # We use this to understand the response from get_tax_items
19
- field :exempt_reason, Crystalline::Nilable.new(Models::Shared::TaxItemReturnReasonEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('exempt_reason'), 'decoder': Utils.enum_from_string(Models::Shared::TaxItemReturnReasonEnum, true) } }
18
+ field :exempt_reason, Crystalline::Nilable.new(Models::Shared::TaxItemReturnReasonEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('exempt_reason'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::TaxItemReturnReasonEnum, true) } }
20
19
 
21
20
  field :rule, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('rule') } }
22
21
 
@@ -7,7 +7,6 @@
7
7
  module KintsugiSDK
8
8
  module Models
9
9
  module Shared
10
-
11
10
 
12
11
  class TaxItemRead
13
12
  extend T::Sig
@@ -22,15 +21,15 @@ module KintsugiSDK
22
21
 
23
22
  field :converted_amount, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('converted_amount') } }
24
23
 
25
- field :currency, Crystalline::Nilable.new(Models::Shared::CurrencyEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('currency'), 'decoder': Utils.enum_from_string(Models::Shared::CurrencyEnum, true) } }
24
+ field :currency, Crystalline::Nilable.new(Models::Shared::CurrencyEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('currency'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::CurrencyEnum, true) } }
26
25
 
27
- 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) } }
26
+ field :destination_currency, Crystalline::Nilable.new(Models::Shared::CurrencyEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('destination_currency'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::CurrencyEnum, true) } }
28
27
 
29
28
  field :external_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('external_id') } }
30
29
 
31
- field :type, Crystalline::Nilable.new(Models::Shared::TaxItemTypeEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('type'), 'decoder': Utils.enum_from_string(Models::Shared::TaxItemTypeEnum, true) } }
30
+ field :type, Crystalline::Nilable.new(Models::Shared::TaxItemTypeEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('type'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::TaxItemTypeEnum, true) } }
32
31
 
33
- field :jurisdiction_type, Crystalline::Nilable.new(Models::Shared::JurisdictionType), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('jurisdiction_type'), 'decoder': Utils.enum_from_string(Models::Shared::JurisdictionType, true) } }
32
+ field :jurisdiction_type, Crystalline::Nilable.new(Models::Shared::JurisdictionType), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('jurisdiction_type'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::JurisdictionType, true) } }
34
33
 
35
34
  field :jurisdiction_name, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('jurisdiction_name') } }
36
35
  # The rule ID of the tax item
@@ -7,17 +7,16 @@
7
7
  module KintsugiSDK
8
8
  module Models
9
9
  module Shared
10
-
11
10
  # TaxItemReturnReasonEnum - We use this to understand the response from get_tax_items
12
11
  class TaxItemReturnReasonEnum < T::Enum
13
-
14
-
15
12
  enums do
16
13
  NO_RULE_FOUND = new('NO_RULE_FOUND')
17
14
  RULE_FOUND_TAXABLE = new('RULE_FOUND_TAXABLE')
18
15
  RULE_FOUND_NOT_TAXABLE = new('RULE_FOUND_NOT_TAXABLE')
16
+ RULE_FOUND_TAXABLE_ZERO_RATE = new('RULE_FOUND_TAXABLE_ZERO_RATE')
19
17
  PRODUCT_EXEMPT = new('PRODUCT_EXEMPT')
20
18
  FROM_IMPORT = new('FROM_IMPORT')
19
+ RULE_EXCLUDED_IN_CALCULATION = new('RULE_EXCLUDED_IN_CALCULATION')
21
20
  end
22
21
  end
23
22
  end
@@ -7,11 +7,8 @@
7
7
  module KintsugiSDK
8
8
  module Models
9
9
  module Shared
10
-
11
10
 
12
11
  class TaxItemTypeEnum < T::Enum
13
-
14
-
15
12
  enums do
16
13
  IMPORTED_ORIGINAL = new('IMPORTED_ORIGINAL')
17
14
  IMPORTED = new('IMPORTED')
@@ -7,11 +7,8 @@
7
7
  module KintsugiSDK
8
8
  module Models
9
9
  module Shared
10
-
11
10
 
12
11
  class TaxLiabilitySourceEnum < T::Enum
13
-
14
-
15
12
  enums do
16
13
  CALCULATED = new('CALCULATED')
17
14
  COLLECTED = new('COLLECTED')
@@ -7,14 +7,13 @@
7
7
  module KintsugiSDK
8
8
  module Models
9
9
  module Shared
10
-
11
10
 
12
11
  class TransactionAddressBuilder
13
12
  extend T::Sig
14
13
  include Crystalline::MetadataFields
15
14
 
16
15
 
17
- field :type, Models::Shared::AddressType, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('type'), required: true, 'decoder': Utils.enum_from_string(Models::Shared::AddressType, false) } }
16
+ field :type, Models::Shared::AddressType, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('type'), required: true, 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::AddressType, false) } }
18
17
  # Phone number associated with the address.
19
18
  field :phone, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('phone') } }
20
19
  # Primary street address.
@@ -30,13 +29,13 @@ module KintsugiSDK
30
29
  # ZIP or Postal code of the customer.
31
30
  field :postal_code, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('postal_code') } }
32
31
 
33
- field :country, Crystalline::Nilable.new(Models::Shared::CountryCodeEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('country'), 'decoder': Utils.enum_from_string(Models::Shared::CountryCodeEnum, true) } }
32
+ field :country, Crystalline::Nilable.new(Models::Shared::CountryCodeEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('country'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::CountryCodeEnum, true) } }
34
33
  # Complete address string of the customer, which can be used as an alternative to individual fields.
35
34
  field :full_address, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('full_address') } }
36
35
  # Optional additional enriched data for the address.
37
36
  field :enriched_fields, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('enriched_fields') } }
38
37
 
39
- field :status, Crystalline::Nilable.new(Models::Shared::AddressStatus), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('status'), 'decoder': Utils.enum_from_string(Models::Shared::AddressStatus, true) } }
38
+ field :status, Crystalline::Nilable.new(Models::Shared::AddressStatus), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('status'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::AddressStatus, true) } }
40
39
 
41
40
  field :organization_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('organization_id') } }
42
41
 
@@ -7,14 +7,13 @@
7
7
  module KintsugiSDK
8
8
  module Models
9
9
  module Shared
10
-
11
10
  # Public address class for transaction addresses
12
11
  class TransactionAddressPublic
13
12
  extend T::Sig
14
13
  include Crystalline::MetadataFields
15
14
 
16
15
 
17
- field :type, Models::Shared::AddressType, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('type'), required: true, 'decoder': Utils.enum_from_string(Models::Shared::AddressType, false) } }
16
+ field :type, Models::Shared::AddressType, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('type'), required: true, 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::AddressType, false) } }
18
17
  # Phone number associated with the address.
19
18
  field :phone, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('phone') } }
20
19
  # Primary street address.
@@ -30,7 +29,7 @@ module KintsugiSDK
30
29
  # ZIP or Postal code of the customer.
31
30
  field :postal_code, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('postal_code') } }
32
31
 
33
- field :country, Crystalline::Nilable.new(Models::Shared::CountryCodeEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('country'), 'decoder': Utils.enum_from_string(Models::Shared::CountryCodeEnum, true) } }
32
+ field :country, Crystalline::Nilable.new(Models::Shared::CountryCodeEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('country'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::CountryCodeEnum, true) } }
34
33
  # Complete address string of the customer, which can be used as an alternative to individual fields.
35
34
  field :full_address, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('full_address') } }
36
35
 
@@ -7,14 +7,13 @@
7
7
  module KintsugiSDK
8
8
  module Models
9
9
  module Shared
10
-
11
10
 
12
11
  class TransactionAddressReadOutput
13
12
  extend T::Sig
14
13
  include Crystalline::MetadataFields
15
14
 
16
15
 
17
- field :type, Models::Shared::AddressType, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('type'), required: true, 'decoder': Utils.enum_from_string(Models::Shared::AddressType, false) } }
16
+ field :type, Models::Shared::AddressType, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('type'), required: true, 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::AddressType, false) } }
18
17
  # Phone number associated with the address.
19
18
  field :phone, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('phone') } }
20
19
  # Primary street address.
@@ -30,11 +29,11 @@ module KintsugiSDK
30
29
  # ZIP or Postal code of the customer.
31
30
  field :postal_code, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('postal_code') } }
32
31
 
33
- field :country, Crystalline::Nilable.new(Models::Shared::CountryCodeEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('country'), 'decoder': Utils.enum_from_string(Models::Shared::CountryCodeEnum, true) } }
32
+ field :country, Crystalline::Nilable.new(Models::Shared::CountryCodeEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('country'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::CountryCodeEnum, true) } }
34
33
  # Complete address string of the customer, which can be used as an alternative to individual fields.
35
34
  field :full_address, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('full_address') } }
36
35
 
37
- field :status, Crystalline::Nilable.new(Models::Shared::AddressStatus), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('status'), 'decoder': Utils.enum_from_string(Models::Shared::AddressStatus, true) } }
36
+ field :status, Crystalline::Nilable.new(Models::Shared::AddressStatus), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('status'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::AddressStatus, true) } }
38
37
  # Unique identifier of the address being updated.
39
38
  field :id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('id') } }
40
39
  # ID of the transaction associated with the address.
@@ -7,18 +7,19 @@
7
7
  module KintsugiSDK
8
8
  module Models
9
9
  module Shared
10
-
11
10
 
12
11
  class TransactionCreate
13
12
  extend T::Sig
14
13
  include Crystalline::MetadataFields
15
14
 
16
- # Unique identifier of the organization.
15
+ # Unique identifier of the organization. This field is deprecated, and should no longer be used. The value is populated through the 'x-organization-id' header.
16
+ #
17
+ # @deprecated true: This will be removed in a future release, please migrate away from it as soon as possible.
17
18
  field :organization_id, ::String, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('organization_id'), required: true } }
18
19
  # External identifier of the transaction.
19
20
  field :external_id, ::String, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('external_id'), required: true } }
20
21
  # Transaction date and time
21
- field :date, ::DateTime, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('date'), required: true, 'decoder': Utils.datetime_from_iso_format(false) } }
22
+ field :date, ::DateTime, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('date'), required: true, 'decoder': ::KintsugiSDK::Utils.datetime_from_iso_format(false) } }
22
23
 
23
24
  field :addresses, Crystalline::Array.new(Models::Shared::TransactionAddressBuilder), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('addresses'), required: true } }
24
25
 
@@ -29,21 +30,20 @@ module KintsugiSDK
29
30
  field :shop_date, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('shop_date') } }
30
31
  # Timezone of the shop
31
32
  field :shop_date_tz, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('shop_date_tz') } }
32
-
33
- field :status, Crystalline::Nilable.new(Models::Shared::TransactionStatusEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('status'), 'decoder': Utils.enum_from_string(Models::Shared::TransactionStatusEnum, true) } }
34
33
  # Description of the transaction.
35
34
  field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('description') } }
36
35
  # Shopify has 2 order statuses for refund case: refunded and partially_refunded
37
36
  # If the given order has different status from these 2, we will set the
38
37
  # transaction's refund_status to PARTIALLY_REFUNDED by default.
39
- field :refund_status, Crystalline::Nilable.new(Models::Shared::TransactionRefundStatus), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('refund_status'), 'decoder': Utils.enum_from_string(Models::Shared::TransactionRefundStatus, true) } }
38
+ field :refund_status, Crystalline::Nilable.new(Models::Shared::TransactionRefundStatus), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('refund_status'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::TransactionRefundStatus, true) } }
40
39
  # Unique identifier of the customer.
41
40
  field :customer_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('customer_id') } }
42
41
  # Based on transaction item exempt status.
43
42
  # NOT EXEMPT: None of the items are NOT EXEMPT
44
43
  # PARTIALLY EXEMPT: At least some of the items are NOT EXEMPT
45
44
  # FULLY_EXEMPT: All items sold in the transaction are EXEMPT
46
- field :exempt, Crystalline::Nilable.new(Models::Shared::TransactionExemptStatusEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('exempt'), 'decoder': Utils.enum_from_string(Models::Shared::TransactionExemptStatusEnum, true) } }
45
+ # ZERO_RATE_NOT_EXEMPT: All items sold in the transaction are zero-rated
46
+ field :exempt, Crystalline::Nilable.new(Models::Shared::TransactionExemptStatusEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('exempt'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::TransactionExemptStatusEnum, true) } }
47
47
  # List of exemptions applied (if any).
48
48
  field :exemptions, Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::Exemption)), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('exemptions') } }
49
49
  # Related transaction identifier.
@@ -55,11 +55,11 @@ module KintsugiSDK
55
55
  # Friendly identifier of the original item.
56
56
  field :external_friendly_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('external_friendly_id') } }
57
57
 
58
- field :tax_liability_source, Crystalline::Nilable.new(Models::Shared::TaxLiabilitySourceEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('tax_liability_source'), 'decoder': Utils.enum_from_string(Models::Shared::TaxLiabilitySourceEnum, true) } }
58
+ field :tax_liability_source, Crystalline::Nilable.new(Models::Shared::TaxLiabilitySourceEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('tax_liability_source'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::TaxLiabilitySourceEnum, true) } }
59
59
 
60
- field :currency, Crystalline::Nilable.new(Models::Shared::CurrencyEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('currency'), 'decoder': Utils.enum_from_string(Models::Shared::CurrencyEnum, true) } }
60
+ field :currency, Crystalline::Nilable.new(Models::Shared::CurrencyEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('currency'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::CurrencyEnum, true) } }
61
61
 
62
- 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) } }
62
+ field :source, Crystalline::Nilable.new(Models::Shared::SourceEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('source'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::SourceEnum, true) } }
63
63
  # Connection Identifier
64
64
  field :connection_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('connection_id') } }
65
65
  # Filing identifier.
@@ -71,18 +71,22 @@ module KintsugiSDK
71
71
  # State of the transaction address.
72
72
  field :state, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('state') } }
73
73
 
74
- field :country, Crystalline::Nilable.new(Models::Shared::CountryCodeEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('country'), 'decoder': Utils.enum_from_string(Models::Shared::CountryCodeEnum, true) } }
74
+ field :country, Crystalline::Nilable.new(Models::Shared::CountryCodeEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('country'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::CountryCodeEnum, true) } }
75
75
  # Postal code of the transaction.
76
76
  field :postal_code, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('postal_code') } }
77
- # Tax ID associated with the transaction
77
+ # Tax ID associated with the transaction. DEPRECATED: This field is only populated for QuickBooks integrations and will be removed in a future version.
78
+ #
79
+ # @deprecated true: This will be removed in a future release, please migrate away from it as soon as possible.
78
80
  field :tax_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('tax_id') } }
79
81
 
80
- field :address_status, Crystalline::Nilable.new(Models::Shared::AddressStatus), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('address_status'), 'decoder': Utils.enum_from_string(Models::Shared::AddressStatus, true) } }
82
+ field :status, Crystalline::Nilable.new(Models::Shared::TransactionStatusEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('status'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::TransactionStatusEnum, true) } }
83
+
84
+ field :address_status, Crystalline::Nilable.new(Models::Shared::AddressStatus), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('address_status'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::AddressStatus, true) } }
81
85
  # Our transaction state, used to determine when/if a transaction needs additional
82
86
  # processing.
83
- field :processing_status, Crystalline::Nilable.new(Models::Shared::ProcessingStatusEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('processing_status'), 'decoder': Utils.enum_from_string(Models::Shared::ProcessingStatusEnum, true) } }
87
+ field :processing_status, Crystalline::Nilable.new(Models::Shared::ProcessingStatusEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('processing_status'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::ProcessingStatusEnum, true) } }
84
88
 
85
- 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) } }
89
+ field :destination_currency, Crystalline::Nilable.new(Models::Shared::CurrencyEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('destination_currency'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::CurrencyEnum, true) } }
86
90
  # Converted total amount.
87
91
  field :converted_total_amount, Crystalline::Nilable.new(::Float), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('converted_total_amount') } }
88
92
  # Converted imported tax amount.
@@ -120,8 +124,8 @@ module KintsugiSDK
120
124
  # Transaction lock status.
121
125
  field :locked, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('locked') } }
122
126
 
123
- sig { params(organization_id: ::String, external_id: ::String, date: ::DateTime, addresses: T::Array[Models::Shared::TransactionAddressBuilder], transaction_items: T::Array[Models::Shared::TransactionItemCreateUpdate], requires_exemption: T.nilable(Models::Shared::ExemptionRequired), shop_date: T.nilable(::String), shop_date_tz: T.nilable(::String), status: T.nilable(Models::Shared::TransactionStatusEnum), description: T.nilable(::String), refund_status: T.nilable(Models::Shared::TransactionRefundStatus), customer_id: T.nilable(::String), exempt: T.nilable(Models::Shared::TransactionExemptStatusEnum), exemptions: T.nilable(T::Array[Models::Shared::Exemption]), related_to: T.nilable(::String), secondary_external_id: T.nilable(::String), secondary_source: T.nilable(::String), external_friendly_id: T.nilable(::String), tax_liability_source: T.nilable(Models::Shared::TaxLiabilitySourceEnum), currency: T.nilable(Models::Shared::CurrencyEnum), source: T.nilable(Models::Shared::SourceEnum), connection_id: T.nilable(::String), filing_id: T.nilable(::String), city: T.nilable(::String), county: T.nilable(::String), state: T.nilable(::String), country: T.nilable(Models::Shared::CountryCodeEnum), postal_code: T.nilable(::String), tax_id: T.nilable(::String), address_status: T.nilable(Models::Shared::AddressStatus), processing_status: T.nilable(Models::Shared::ProcessingStatusEnum), destination_currency: T.nilable(Models::Shared::CurrencyEnum), converted_total_amount: T.nilable(::Float), converted_total_tax_amount_imported: T.nilable(::Float), converted_total_tax_amount_calculated: T.nilable(::Float), conversion_rate: T.nilable(::Float), converted_taxable_amount: T.nilable(::Float), converted_total_discount: T.nilable(::Float), converted_subtotal: T.nilable(::Float), converted_total_tax_liability_amount: T.nilable(::Float), customer: T.nilable(Models::Shared::CustomerCreate), total_amount: T.nilable(::Float), marketplace: T.nilable(T::Boolean), total_tax_amount_imported: T.nilable(::Float), tax_rate_imported: T.nilable(::Float), total_tax_amount_calculated: T.nilable(::Float), tax_rate_calculated: T.nilable(::Float), total_tax_liability_amount: T.nilable(::Float), taxable_amount: T.nilable(::Float), locked: T.nilable(T::Boolean)).void }
124
- def initialize(organization_id:, external_id:, date:, addresses:, transaction_items:, requires_exemption: nil, shop_date: nil, shop_date_tz: nil, status: nil, description: nil, refund_status: nil, customer_id: nil, exempt: nil, exemptions: nil, related_to: nil, secondary_external_id: nil, secondary_source: nil, external_friendly_id: nil, tax_liability_source: nil, currency: nil, source: nil, connection_id: nil, filing_id: nil, city: nil, county: nil, state: nil, country: nil, postal_code: nil, tax_id: nil, address_status: nil, processing_status: nil, destination_currency: nil, converted_total_amount: nil, converted_total_tax_amount_imported: nil, converted_total_tax_amount_calculated: nil, conversion_rate: nil, converted_taxable_amount: nil, converted_total_discount: nil, converted_subtotal: nil, converted_total_tax_liability_amount: nil, customer: nil, total_amount: 0.00, marketplace: false, total_tax_amount_imported: 0.00, tax_rate_imported: 0.00, total_tax_amount_calculated: 0.00, tax_rate_calculated: 0.00, total_tax_liability_amount: 0.00, taxable_amount: 0.00, locked: false)
127
+ sig { params(organization_id: ::String, external_id: ::String, date: ::DateTime, addresses: T::Array[Models::Shared::TransactionAddressBuilder], transaction_items: T::Array[Models::Shared::TransactionItemCreateUpdate], requires_exemption: T.nilable(Models::Shared::ExemptionRequired), shop_date: T.nilable(::String), shop_date_tz: T.nilable(::String), description: T.nilable(::String), refund_status: T.nilable(Models::Shared::TransactionRefundStatus), customer_id: T.nilable(::String), exempt: T.nilable(Models::Shared::TransactionExemptStatusEnum), exemptions: T.nilable(T::Array[Models::Shared::Exemption]), related_to: T.nilable(::String), secondary_external_id: T.nilable(::String), secondary_source: T.nilable(::String), external_friendly_id: T.nilable(::String), tax_liability_source: T.nilable(Models::Shared::TaxLiabilitySourceEnum), currency: T.nilable(Models::Shared::CurrencyEnum), source: T.nilable(Models::Shared::SourceEnum), connection_id: T.nilable(::String), filing_id: T.nilable(::String), city: T.nilable(::String), county: T.nilable(::String), state: T.nilable(::String), country: T.nilable(Models::Shared::CountryCodeEnum), postal_code: T.nilable(::String), tax_id: T.nilable(::String), status: T.nilable(Models::Shared::TransactionStatusEnum), address_status: T.nilable(Models::Shared::AddressStatus), processing_status: T.nilable(Models::Shared::ProcessingStatusEnum), destination_currency: T.nilable(Models::Shared::CurrencyEnum), converted_total_amount: T.nilable(::Float), converted_total_tax_amount_imported: T.nilable(::Float), converted_total_tax_amount_calculated: T.nilable(::Float), conversion_rate: T.nilable(::Float), converted_taxable_amount: T.nilable(::Float), converted_total_discount: T.nilable(::Float), converted_subtotal: T.nilable(::Float), converted_total_tax_liability_amount: T.nilable(::Float), customer: T.nilable(Models::Shared::CustomerCreate), total_amount: T.nilable(::Float), marketplace: T.nilable(T::Boolean), total_tax_amount_imported: T.nilable(::Float), tax_rate_imported: T.nilable(::Float), total_tax_amount_calculated: T.nilable(::Float), tax_rate_calculated: T.nilable(::Float), total_tax_liability_amount: T.nilable(::Float), taxable_amount: T.nilable(::Float), locked: T.nilable(T::Boolean)).void }
128
+ def initialize(organization_id:, external_id:, date:, addresses:, transaction_items:, requires_exemption: nil, shop_date: nil, shop_date_tz: nil, description: nil, refund_status: nil, customer_id: nil, exempt: nil, exemptions: nil, related_to: nil, secondary_external_id: nil, secondary_source: nil, external_friendly_id: nil, tax_liability_source: nil, currency: nil, source: nil, connection_id: nil, filing_id: nil, city: nil, county: nil, state: nil, country: nil, postal_code: nil, tax_id: nil, status: nil, address_status: nil, processing_status: nil, destination_currency: nil, converted_total_amount: nil, converted_total_tax_amount_imported: nil, converted_total_tax_amount_calculated: nil, conversion_rate: nil, converted_taxable_amount: nil, converted_total_discount: nil, converted_subtotal: nil, converted_total_tax_liability_amount: nil, customer: nil, total_amount: 0.0, marketplace: false, total_tax_amount_imported: 0.0, tax_rate_imported: 0.0, total_tax_amount_calculated: 0.0, tax_rate_calculated: 0.0, total_tax_liability_amount: 0.0, taxable_amount: 0.0, locked: false)
125
129
  @organization_id = organization_id
126
130
  @external_id = external_id
127
131
  @date = date
@@ -130,7 +134,6 @@ module KintsugiSDK
130
134
  @requires_exemption = requires_exemption
131
135
  @shop_date = shop_date
132
136
  @shop_date_tz = shop_date_tz
133
- @status = status
134
137
  @description = description
135
138
  @refund_status = refund_status
136
139
  @customer_id = customer_id
@@ -151,6 +154,7 @@ module KintsugiSDK
151
154
  @country = country
152
155
  @postal_code = postal_code
153
156
  @tax_id = tax_id
157
+ @status = status
154
158
  @address_status = address_status
155
159
  @processing_status = processing_status
156
160
  @destination_currency = destination_currency
@@ -185,7 +189,6 @@ module KintsugiSDK
185
189
  return false unless @requires_exemption == other.requires_exemption
186
190
  return false unless @shop_date == other.shop_date
187
191
  return false unless @shop_date_tz == other.shop_date_tz
188
- return false unless @status == other.status
189
192
  return false unless @description == other.description
190
193
  return false unless @refund_status == other.refund_status
191
194
  return false unless @customer_id == other.customer_id
@@ -206,6 +209,7 @@ module KintsugiSDK
206
209
  return false unless @country == other.country
207
210
  return false unless @postal_code == other.postal_code
208
211
  return false unless @tax_id == other.tax_id
212
+ return false unless @status == other.status
209
213
  return false unless @address_status == other.address_status
210
214
  return false unless @processing_status == other.processing_status
211
215
  return false unless @destination_currency == other.destination_currency
@@ -24,8 +24,6 @@ class KintsugiSDK::Models::Shared::TransactionCreate
24
24
  def shop_date=(str_); end
25
25
  def shop_date_tz(); end
26
26
  def shop_date_tz=(str_); end
27
- def status(); end
28
- def status=(str_); end
29
27
  def description(); end
30
28
  def description=(str_); end
31
29
  def refund_status(); end
@@ -66,6 +64,8 @@ class KintsugiSDK::Models::Shared::TransactionCreate
66
64
  def postal_code=(str_); end
67
65
  def tax_id(); end
68
66
  def tax_id=(str_); end
67
+ def status(); end
68
+ def status=(str_); end
69
69
  def address_status(); end
70
70
  def address_status=(str_); end
71
71
  def processing_status(); end
@@ -7,19 +7,18 @@
7
7
  module KintsugiSDK
8
8
  module Models
9
9
  module Shared
10
-
11
10
  # 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.
11
+ # This model excludes internal fields like enriched_fields and total_amount that should not be exposed in API docs.
13
12
  class TransactionEstimatePublicRequest
14
13
  extend T::Sig
15
14
  include Crystalline::MetadataFields
16
15
 
17
16
  # 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) } }
17
+ field :date, ::DateTime, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('date'), required: true, 'decoder': ::KintsugiSDK::Utils.datetime_from_iso_format(false) } }
19
18
  # Unique identifier of this transaction in the source system.
20
19
  field :external_id, ::String, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('external_id'), required: true } }
21
20
 
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) } }
21
+ field :currency, Models::Shared::CurrencyEnum, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('currency'), required: true, 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::CurrencyEnum, false) } }
23
22
  # List of items involved in the transaction.
24
23
  field :transaction_items, Crystalline::Array.new(Models::Shared::TransactionItemEstimateBase), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('transaction_items'), required: true } }
25
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.
@@ -27,16 +26,14 @@ module KintsugiSDK
27
26
  # An optional description of the transaction.
28
27
  field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('description') } }
29
28
 
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) } }
29
+ field :source, Crystalline::Nilable.new(Models::Shared::SourceEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('source'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::SourceEnum, true) } }
31
30
 
32
31
  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
32
  # Indicates if the transaction involves a marketplace.
36
33
  field :marketplace, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('marketplace') } }
37
34
 
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)
35
+ 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), marketplace: T.nilable(T::Boolean)).void }
36
+ def initialize(date:, external_id:, currency:, transaction_items:, addresses:, description: nil, source: nil, customer: nil, marketplace: false)
40
37
  @date = date
41
38
  @external_id = external_id
42
39
  @currency = currency
@@ -45,7 +42,6 @@ module KintsugiSDK
45
42
  @description = description
46
43
  @source = source
47
44
  @customer = customer
48
- @total_amount = total_amount
49
45
  @marketplace = marketplace
50
46
  end
51
47
 
@@ -60,7 +56,6 @@ module KintsugiSDK
60
56
  return false unless @description == other.description
61
57
  return false unless @source == other.source
62
58
  return false unless @customer == other.customer
63
- return false unless @total_amount == other.total_amount
64
59
  return false unless @marketplace == other.marketplace
65
60
  true
66
61
  end
@@ -24,8 +24,6 @@ class KintsugiSDK::Models::Shared::TransactionEstimatePublicRequest
24
24
  def source=(str_); end
25
25
  def customer(); end
26
26
  def customer=(str_); end
27
- def total_amount(); end
28
- def total_amount=(str_); end
29
27
  def marketplace(); end
30
28
  def marketplace=(str_); end
31
29
  end
@@ -7,18 +7,17 @@
7
7
  module KintsugiSDK
8
8
  module Models
9
9
  module Shared
10
-
11
10
 
12
11
  class TransactionEstimateResponse
13
12
  extend T::Sig
14
13
  include Crystalline::MetadataFields
15
14
 
16
15
  # 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) } }
16
+ field :date, ::DateTime, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('date'), required: true, 'decoder': ::KintsugiSDK::Utils.datetime_from_iso_format(false) } }
18
17
  # Unique identifier of this transaction in the source system.
19
18
  field :external_id, ::String, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('external_id'), required: true } }
20
19
 
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) } }
20
+ field :currency, Models::Shared::CurrencyEnum, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('currency'), required: true, 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::CurrencyEnum, false) } }
22
21
 
23
22
  field :transaction_items, Crystalline::Array.new(Models::Shared::TransactionItemEstimateResponse), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('transaction_items'), required: true } }
24
23
  # 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
@@ -26,11 +25,9 @@ module KintsugiSDK
26
25
  # An optional description of the transaction.
27
26
  field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('description') } }
28
27
 
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) } }
28
+ field :source, Crystalline::Nilable.new(Models::Shared::SourceEnum), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('source'), 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::SourceEnum, true) } }
30
29
 
31
30
  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
31
  # Indicates if the transaction involves a marketplace.
35
32
  field :marketplace, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('marketplace') } }
36
33
  # The total amount of tax determined for the transaction.
@@ -40,14 +37,14 @@ module KintsugiSDK
40
37
  # The calculated tax rate for the transaction.
41
38
  field :tax_rate_calculated, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('tax_rate_calculated') } }
42
39
  # 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.
40
+ #
41
+ # @deprecated true: This will be removed in a future release, please migrate away from it as soon as possible.
45
42
  field :nexus_met, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('nexus_met') } }
46
43
  # Indicates if there is an active registration for the transaction.
47
44
  field :has_active_registration, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('has_active_registration') } }
48
45
 
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)
46
+ 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), 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 }
47
+ def initialize(date:, external_id:, currency:, transaction_items:, addresses:, description: nil, source: nil, customer: nil, 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
48
  @date = date
52
49
  @external_id = external_id
53
50
  @currency = currency
@@ -56,7 +53,6 @@ module KintsugiSDK
56
53
  @description = description
57
54
  @source = source
58
55
  @customer = customer
59
- @total_amount = total_amount
60
56
  @marketplace = marketplace
61
57
  @total_tax_amount_calculated = total_tax_amount_calculated
62
58
  @taxable_amount = taxable_amount
@@ -76,7 +72,6 @@ module KintsugiSDK
76
72
  return false unless @description == other.description
77
73
  return false unless @source == other.source
78
74
  return false unless @customer == other.customer
79
- return false unless @total_amount == other.total_amount
80
75
  return false unless @marketplace == other.marketplace
81
76
  return false unless @total_tax_amount_calculated == other.total_tax_amount_calculated
82
77
  return false unless @taxable_amount == other.taxable_amount
@@ -24,8 +24,6 @@ class KintsugiSDK::Models::Shared::TransactionEstimateResponse
24
24
  def source=(str_); end
25
25
  def customer(); end
26
26
  def customer=(str_); end
27
- def total_amount(); end
28
- def total_amount=(str_); end
29
27
  def marketplace(); end
30
28
  def marketplace=(str_); end
31
29
  def total_tax_amount_calculated(); end
@@ -7,7 +7,6 @@
7
7
  module KintsugiSDK
8
8
  module Models
9
9
  module Shared
10
-
11
10
 
12
11
  class TransactionEstimateResponseAddresses
13
12
  extend T::Sig
@@ -15,7 +14,7 @@ module KintsugiSDK
15
14
 
16
15
  # Type of the address. Must be either
17
16
  # 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) } }
17
+ field :type, Models::Shared::TransactionEstimateResponseType, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('type'), required: true, 'decoder': ::KintsugiSDK::Utils.enum_from_string(Models::Shared::TransactionEstimateResponseType, false) } }
19
18
  # State or province of the address.
20
19
  field :state, ::String, { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('state'), required: true } }
21
20
  # Postal code of the address.
@@ -35,8 +34,8 @@ module KintsugiSDK
35
34
  # Complete address string of the customer, which can be used as an alternative to individual fields.
36
35
  field :full_address, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('full_address') } }
37
36
  # 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.
37
+ #
38
+ # @deprecated true: This will be removed in a future release, please migrate away from it as soon as possible.
40
39
  field :status, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('status') } }
41
40
  # Additional enriched fields related to the address.
42
41
  field :enriched_fields, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::KintsugiSDK::Utils.field_name('enriched_fields') } }
@@ -7,12 +7,9 @@
7
7
  module KintsugiSDK
8
8
  module Models
9
9
  module Shared
10
-
11
10
  # TransactionEstimateResponseType - Type of the address. Must be either
12
11
  # SHIP_TO or BILL_TO.
13
12
  class TransactionEstimateResponseType < T::Enum
14
-
15
-
16
13
  enums do
17
14
  SHIP_TO = new('SHIP_TO')
18
15
  BILL_TO = new('BILL_TO')
@@ -7,18 +7,17 @@
7
7
  module KintsugiSDK
8
8
  module Models
9
9
  module Shared
10
-
11
10
  # TransactionExemptStatusEnum - Based on transaction item exempt status.
12
11
  # NOT EXEMPT: None of the items are NOT EXEMPT
13
12
  # PARTIALLY EXEMPT: At least some of the items are NOT EXEMPT
14
13
  # FULLY_EXEMPT: All items sold in the transaction are EXEMPT
14
+ # ZERO_RATE_NOT_EXEMPT: All items sold in the transaction are zero-rated
15
15
  class TransactionExemptStatusEnum < T::Enum
16
-
17
-
18
16
  enums do
19
17
  NOT_EXEMPT = new('NOT_EXEMPT')
20
18
  PARTIALLY_EXEMPT = new('PARTIALLY_EXEMPT')
21
19
  FULLY_EXEMPT = new('FULLY_EXEMPT')
20
+ ZERO_RATE_NOT_EXEMPT = new('ZERO_RATE_NOT_EXEMPT')
22
21
  end
23
22
  end
24
23
  end