vatsense 0.1.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 (245) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +14 -0
  4. data/README.md +235 -0
  5. data/SECURITY.md +27 -0
  6. data/lib/vatsense/client.rb +129 -0
  7. data/lib/vatsense/errors.rb +228 -0
  8. data/lib/vatsense/file_part.rb +58 -0
  9. data/lib/vatsense/internal/transport/base_client.rb +595 -0
  10. data/lib/vatsense/internal/transport/pooled_net_requester.rb +210 -0
  11. data/lib/vatsense/internal/type/array_of.rb +168 -0
  12. data/lib/vatsense/internal/type/base_model.rb +531 -0
  13. data/lib/vatsense/internal/type/base_page.rb +55 -0
  14. data/lib/vatsense/internal/type/boolean.rb +77 -0
  15. data/lib/vatsense/internal/type/converter.rb +327 -0
  16. data/lib/vatsense/internal/type/enum.rb +131 -0
  17. data/lib/vatsense/internal/type/file_input.rb +111 -0
  18. data/lib/vatsense/internal/type/hash_of.rb +188 -0
  19. data/lib/vatsense/internal/type/request_parameters.rb +42 -0
  20. data/lib/vatsense/internal/type/union.rb +237 -0
  21. data/lib/vatsense/internal/type/unknown.rb +81 -0
  22. data/lib/vatsense/internal/util.rb +951 -0
  23. data/lib/vatsense/internal.rb +20 -0
  24. data/lib/vatsense/models/country.rb +70 -0
  25. data/lib/vatsense/models/country_list_params.rb +34 -0
  26. data/lib/vatsense/models/country_list_provinces_params.rb +22 -0
  27. data/lib/vatsense/models/country_list_provinces_response.rb +67 -0
  28. data/lib/vatsense/models/country_list_response.rb +28 -0
  29. data/lib/vatsense/models/create_invoice.rb +171 -0
  30. data/lib/vatsense/models/currency_calculate_vat_price_params.rb +53 -0
  31. data/lib/vatsense/models/currency_calculate_vat_price_response.rb +28 -0
  32. data/lib/vatsense/models/currency_convert_params.rb +53 -0
  33. data/lib/vatsense/models/currency_convert_response.rb +87 -0
  34. data/lib/vatsense/models/currency_list_params.rb +45 -0
  35. data/lib/vatsense/models/currency_list_response.rb +72 -0
  36. data/lib/vatsense/models/find_rate.rb +28 -0
  37. data/lib/vatsense/models/invoice/invoice_item.rb +71 -0
  38. data/lib/vatsense/models/invoice/invoice_item_input.rb +52 -0
  39. data/lib/vatsense/models/invoice/item_add_params.rb +28 -0
  40. data/lib/vatsense/models/invoice/item_delete_params.rb +28 -0
  41. data/lib/vatsense/models/invoice/item_retrieve_params.rb +28 -0
  42. data/lib/vatsense/models/invoice/item_retrieve_response.rb +30 -0
  43. data/lib/vatsense/models/invoice/item_update_params.rb +28 -0
  44. data/lib/vatsense/models/invoice.rb +301 -0
  45. data/lib/vatsense/models/invoice_business_input.rb +80 -0
  46. data/lib/vatsense/models/invoice_conversion_input.rb +24 -0
  47. data/lib/vatsense/models/invoice_create_params.rb +14 -0
  48. data/lib/vatsense/models/invoice_customer_input.rb +59 -0
  49. data/lib/vatsense/models/invoice_delete_params.rb +20 -0
  50. data/lib/vatsense/models/invoice_delete_response.rb +22 -0
  51. data/lib/vatsense/models/invoice_list_params.rb +38 -0
  52. data/lib/vatsense/models/invoice_list_response.rb +28 -0
  53. data/lib/vatsense/models/invoice_response.rb +28 -0
  54. data/lib/vatsense/models/invoice_retrieve_params.rb +20 -0
  55. data/lib/vatsense/models/invoice_update_params.rb +20 -0
  56. data/lib/vatsense/models/rate.rb +74 -0
  57. data/lib/vatsense/models/rate_calculate_price_params.rb +88 -0
  58. data/lib/vatsense/models/rate_calculate_price_response.rb +79 -0
  59. data/lib/vatsense/models/rate_details_params.rb +69 -0
  60. data/lib/vatsense/models/rate_find_params.rb +69 -0
  61. data/lib/vatsense/models/rate_list_params.rb +51 -0
  62. data/lib/vatsense/models/rate_list_response.rb +28 -0
  63. data/lib/vatsense/models/rate_list_types_params.rb +14 -0
  64. data/lib/vatsense/models/rate_list_types_response.rb +28 -0
  65. data/lib/vatsense/models/rate_with_tax_rate.rb +49 -0
  66. data/lib/vatsense/models/sandbox_generate_key_params.rb +14 -0
  67. data/lib/vatsense/models/sandbox_generate_key_response.rb +68 -0
  68. data/lib/vatsense/models/tax_rate.rb +76 -0
  69. data/lib/vatsense/models/usage_retrieve_params.rb +14 -0
  70. data/lib/vatsense/models/usage_retrieve_response.rb +67 -0
  71. data/lib/vatsense/models/validate_check_params.rb +48 -0
  72. data/lib/vatsense/models/validate_check_response.rb +135 -0
  73. data/lib/vatsense/models/vat_price.rb +86 -0
  74. data/lib/vatsense/models.rb +103 -0
  75. data/lib/vatsense/request_options.rb +77 -0
  76. data/lib/vatsense/resources/countries.rb +70 -0
  77. data/lib/vatsense/resources/currency.rb +111 -0
  78. data/lib/vatsense/resources/invoice/item.rb +133 -0
  79. data/lib/vatsense/resources/invoice.rb +206 -0
  80. data/lib/vatsense/resources/rates.rb +190 -0
  81. data/lib/vatsense/resources/sandbox.rb +36 -0
  82. data/lib/vatsense/resources/usage.rb +33 -0
  83. data/lib/vatsense/resources/validate.rb +56 -0
  84. data/lib/vatsense/version.rb +5 -0
  85. data/lib/vatsense.rb +113 -0
  86. data/manifest.yaml +17 -0
  87. data/rbi/vatsense/client.rbi +93 -0
  88. data/rbi/vatsense/errors.rbi +205 -0
  89. data/rbi/vatsense/file_part.rbi +37 -0
  90. data/rbi/vatsense/internal/transport/base_client.rbi +300 -0
  91. data/rbi/vatsense/internal/transport/pooled_net_requester.rbi +83 -0
  92. data/rbi/vatsense/internal/type/array_of.rbi +104 -0
  93. data/rbi/vatsense/internal/type/base_model.rbi +306 -0
  94. data/rbi/vatsense/internal/type/base_page.rbi +42 -0
  95. data/rbi/vatsense/internal/type/boolean.rbi +58 -0
  96. data/rbi/vatsense/internal/type/converter.rbi +216 -0
  97. data/rbi/vatsense/internal/type/enum.rbi +82 -0
  98. data/rbi/vatsense/internal/type/file_input.rbi +59 -0
  99. data/rbi/vatsense/internal/type/hash_of.rbi +104 -0
  100. data/rbi/vatsense/internal/type/request_parameters.rbi +29 -0
  101. data/rbi/vatsense/internal/type/union.rbi +128 -0
  102. data/rbi/vatsense/internal/type/unknown.rbi +58 -0
  103. data/rbi/vatsense/internal/util.rbi +507 -0
  104. data/rbi/vatsense/internal.rbi +16 -0
  105. data/rbi/vatsense/models/country.rbi +111 -0
  106. data/rbi/vatsense/models/country_list_params.rbi +59 -0
  107. data/rbi/vatsense/models/country_list_provinces_params.rbi +43 -0
  108. data/rbi/vatsense/models/country_list_provinces_response.rbi +177 -0
  109. data/rbi/vatsense/models/country_list_response.rbi +55 -0
  110. data/rbi/vatsense/models/create_invoice.rbi +240 -0
  111. data/rbi/vatsense/models/currency_calculate_vat_price_params.rbi +100 -0
  112. data/rbi/vatsense/models/currency_calculate_vat_price_response.rbi +51 -0
  113. data/rbi/vatsense/models/currency_convert_params.rbi +81 -0
  114. data/rbi/vatsense/models/currency_convert_response.rbi +190 -0
  115. data/rbi/vatsense/models/currency_list_params.rbi +79 -0
  116. data/rbi/vatsense/models/currency_list_response.rbi +174 -0
  117. data/rbi/vatsense/models/find_rate.rbi +50 -0
  118. data/rbi/vatsense/models/invoice/invoice_item.rbi +129 -0
  119. data/rbi/vatsense/models/invoice/invoice_item_input.rbi +79 -0
  120. data/rbi/vatsense/models/invoice/item_add_params.rbi +45 -0
  121. data/rbi/vatsense/models/invoice/item_delete_params.rbi +48 -0
  122. data/rbi/vatsense/models/invoice/item_retrieve_params.rbi +48 -0
  123. data/rbi/vatsense/models/invoice/item_retrieve_response.rbi +57 -0
  124. data/rbi/vatsense/models/invoice/item_update_params.rbi +48 -0
  125. data/rbi/vatsense/models/invoice.rbi +481 -0
  126. data/rbi/vatsense/models/invoice_business_input.rbi +113 -0
  127. data/rbi/vatsense/models/invoice_conversion_input.rbi +35 -0
  128. data/rbi/vatsense/models/invoice_create_params.rbi +27 -0
  129. data/rbi/vatsense/models/invoice_customer_input.rbi +93 -0
  130. data/rbi/vatsense/models/invoice_delete_params.rbi +35 -0
  131. data/rbi/vatsense/models/invoice_delete_response.rbi +31 -0
  132. data/rbi/vatsense/models/invoice_list_params.rbi +68 -0
  133. data/rbi/vatsense/models/invoice_list_response.rbi +55 -0
  134. data/rbi/vatsense/models/invoice_response.rbi +48 -0
  135. data/rbi/vatsense/models/invoice_retrieve_params.rbi +35 -0
  136. data/rbi/vatsense/models/invoice_update_params.rbi +35 -0
  137. data/rbi/vatsense/models/rate.rbi +119 -0
  138. data/rbi/vatsense/models/rate_calculate_price_params.rbi +144 -0
  139. data/rbi/vatsense/models/rate_calculate_price_response.rbi +184 -0
  140. data/rbi/vatsense/models/rate_details_params.rbi +109 -0
  141. data/rbi/vatsense/models/rate_find_params.rbi +109 -0
  142. data/rbi/vatsense/models/rate_list_params.rbi +83 -0
  143. data/rbi/vatsense/models/rate_list_response.rbi +48 -0
  144. data/rbi/vatsense/models/rate_list_types_params.rbi +27 -0
  145. data/rbi/vatsense/models/rate_list_types_response.rbi +51 -0
  146. data/rbi/vatsense/models/rate_with_tax_rate.rbi +94 -0
  147. data/rbi/vatsense/models/sandbox_generate_key_params.rbi +27 -0
  148. data/rbi/vatsense/models/sandbox_generate_key_response.rbi +135 -0
  149. data/rbi/vatsense/models/tax_rate.rbi +109 -0
  150. data/rbi/vatsense/models/usage_retrieve_params.rbi +27 -0
  151. data/rbi/vatsense/models/usage_retrieve_response.rbi +155 -0
  152. data/rbi/vatsense/models/validate_check_params.rbi +82 -0
  153. data/rbi/vatsense/models/validate_check_response.rbi +285 -0
  154. data/rbi/vatsense/models/vat_price.rbi +136 -0
  155. data/rbi/vatsense/models.rbi +66 -0
  156. data/rbi/vatsense/request_options.rbi +59 -0
  157. data/rbi/vatsense/resources/countries.rbi +49 -0
  158. data/rbi/vatsense/resources/currency.rbi +82 -0
  159. data/rbi/vatsense/resources/invoice/item.rbi +97 -0
  160. data/rbi/vatsense/resources/invoice.rbi +191 -0
  161. data/rbi/vatsense/resources/rates.rbi +164 -0
  162. data/rbi/vatsense/resources/sandbox.rbi +24 -0
  163. data/rbi/vatsense/resources/usage.rbi +22 -0
  164. data/rbi/vatsense/resources/validate.rbi +51 -0
  165. data/rbi/vatsense/version.rbi +5 -0
  166. data/sig/vatsense/client.rbs +45 -0
  167. data/sig/vatsense/errors.rbs +117 -0
  168. data/sig/vatsense/file_part.rbs +21 -0
  169. data/sig/vatsense/internal/transport/base_client.rbs +135 -0
  170. data/sig/vatsense/internal/transport/pooled_net_requester.rbs +48 -0
  171. data/sig/vatsense/internal/type/array_of.rbs +48 -0
  172. data/sig/vatsense/internal/type/base_model.rbs +102 -0
  173. data/sig/vatsense/internal/type/base_page.rbs +24 -0
  174. data/sig/vatsense/internal/type/boolean.rbs +26 -0
  175. data/sig/vatsense/internal/type/converter.rbs +79 -0
  176. data/sig/vatsense/internal/type/enum.rbs +32 -0
  177. data/sig/vatsense/internal/type/file_input.rbs +25 -0
  178. data/sig/vatsense/internal/type/hash_of.rbs +48 -0
  179. data/sig/vatsense/internal/type/request_parameters.rbs +17 -0
  180. data/sig/vatsense/internal/type/union.rbs +52 -0
  181. data/sig/vatsense/internal/type/unknown.rbs +26 -0
  182. data/sig/vatsense/internal/util.rbs +195 -0
  183. data/sig/vatsense/internal.rbs +9 -0
  184. data/sig/vatsense/models/country.rbs +76 -0
  185. data/sig/vatsense/models/country_list_params.rbs +32 -0
  186. data/sig/vatsense/models/country_list_provinces_params.rbs +23 -0
  187. data/sig/vatsense/models/country_list_provinces_response.rbs +90 -0
  188. data/sig/vatsense/models/country_list_response.rbs +32 -0
  189. data/sig/vatsense/models/create_invoice.rbs +154 -0
  190. data/sig/vatsense/models/currency_calculate_vat_price_params.rbs +47 -0
  191. data/sig/vatsense/models/currency_calculate_vat_price_response.rbs +28 -0
  192. data/sig/vatsense/models/currency_convert_params.rbs +47 -0
  193. data/sig/vatsense/models/currency_convert_response.rbs +104 -0
  194. data/sig/vatsense/models/currency_list_params.rbs +45 -0
  195. data/sig/vatsense/models/currency_list_response.rbs +90 -0
  196. data/sig/vatsense/models/find_rate.rbs +32 -0
  197. data/sig/vatsense/models/invoice/invoice_item.rbs +85 -0
  198. data/sig/vatsense/models/invoice/invoice_item_input.rbs +46 -0
  199. data/sig/vatsense/models/invoice/item_add_params.rbs +33 -0
  200. data/sig/vatsense/models/invoice/item_delete_params.rbs +30 -0
  201. data/sig/vatsense/models/invoice/item_retrieve_params.rbs +30 -0
  202. data/sig/vatsense/models/invoice/item_retrieve_response.rbs +36 -0
  203. data/sig/vatsense/models/invoice/item_update_params.rbs +34 -0
  204. data/sig/vatsense/models/invoice.rbs +332 -0
  205. data/sig/vatsense/models/invoice_business_input.rbs +72 -0
  206. data/sig/vatsense/models/invoice_conversion_input.rbs +15 -0
  207. data/sig/vatsense/models/invoice_create_params.rbs +15 -0
  208. data/sig/vatsense/models/invoice_customer_input.rbs +62 -0
  209. data/sig/vatsense/models/invoice_delete_params.rbs +23 -0
  210. data/sig/vatsense/models/invoice_delete_response.rbs +15 -0
  211. data/sig/vatsense/models/invoice_list_params.rbs +38 -0
  212. data/sig/vatsense/models/invoice_list_response.rbs +34 -0
  213. data/sig/vatsense/models/invoice_response.rbs +32 -0
  214. data/sig/vatsense/models/invoice_retrieve_params.rbs +23 -0
  215. data/sig/vatsense/models/invoice_update_params.rbs +25 -0
  216. data/sig/vatsense/models/rate.rbs +79 -0
  217. data/sig/vatsense/models/rate_calculate_price_params.rbs +77 -0
  218. data/sig/vatsense/models/rate_calculate_price_response.rbs +104 -0
  219. data/sig/vatsense/models/rate_details_params.rbs +63 -0
  220. data/sig/vatsense/models/rate_find_params.rbs +63 -0
  221. data/sig/vatsense/models/rate_list_params.rbs +44 -0
  222. data/sig/vatsense/models/rate_list_response.rbs +32 -0
  223. data/sig/vatsense/models/rate_list_types_params.rbs +15 -0
  224. data/sig/vatsense/models/rate_list_types_response.rbs +28 -0
  225. data/sig/vatsense/models/rate_with_tax_rate.rbs +62 -0
  226. data/sig/vatsense/models/sandbox_generate_key_params.rbs +15 -0
  227. data/sig/vatsense/models/sandbox_generate_key_response.rbs +85 -0
  228. data/sig/vatsense/models/tax_rate.rbs +72 -0
  229. data/sig/vatsense/models/usage_retrieve_params.rbs +15 -0
  230. data/sig/vatsense/models/usage_retrieve_response.rbs +81 -0
  231. data/sig/vatsense/models/validate_check_params.rbs +38 -0
  232. data/sig/vatsense/models/validate_check_response.rbs +161 -0
  233. data/sig/vatsense/models/vat_price.rbs +89 -0
  234. data/sig/vatsense/models.rbs +63 -0
  235. data/sig/vatsense/request_options.rbs +34 -0
  236. data/sig/vatsense/resources/countries.rbs +18 -0
  237. data/sig/vatsense/resources/currency.rbs +27 -0
  238. data/sig/vatsense/resources/invoice/item.rbs +38 -0
  239. data/sig/vatsense/resources/invoice.rbs +69 -0
  240. data/sig/vatsense/resources/rates.rbs +50 -0
  241. data/sig/vatsense/resources/sandbox.rbs +11 -0
  242. data/sig/vatsense/resources/usage.rbs +11 -0
  243. data/sig/vatsense/resources/validate.rbs +14 -0
  244. data/sig/vatsense/version.rbs +3 -0
  245. metadata +316 -0
@@ -0,0 +1,285 @@
1
+ # typed: strong
2
+
3
+ module Vatsense
4
+ module Models
5
+ class ValidateCheckResponse < Vatsense::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Vatsense::Models::ValidateCheckResponse,
10
+ Vatsense::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(T.nilable(Integer)) }
15
+ attr_reader :code
16
+
17
+ sig { params(code: Integer).void }
18
+ attr_writer :code
19
+
20
+ sig { returns(T.nilable(Vatsense::Models::ValidateCheckResponse::Data)) }
21
+ attr_reader :data
22
+
23
+ sig do
24
+ params(data: Vatsense::Models::ValidateCheckResponse::Data::OrHash).void
25
+ end
26
+ attr_writer :data
27
+
28
+ sig { returns(T.nilable(T::Boolean)) }
29
+ attr_reader :success
30
+
31
+ sig { params(success: T::Boolean).void }
32
+ attr_writer :success
33
+
34
+ sig do
35
+ params(
36
+ code: Integer,
37
+ data: Vatsense::Models::ValidateCheckResponse::Data::OrHash,
38
+ success: T::Boolean
39
+ ).returns(T.attached_class)
40
+ end
41
+ def self.new(code: nil, data: nil, success: nil)
42
+ end
43
+
44
+ sig do
45
+ override.returns(
46
+ {
47
+ code: Integer,
48
+ data: Vatsense::Models::ValidateCheckResponse::Data,
49
+ success: T::Boolean
50
+ }
51
+ )
52
+ end
53
+ def to_hash
54
+ end
55
+
56
+ class Data < Vatsense::Internal::Type::BaseModel
57
+ OrHash =
58
+ T.type_alias do
59
+ T.any(
60
+ Vatsense::Models::ValidateCheckResponse::Data,
61
+ Vatsense::Internal::AnyHash
62
+ )
63
+ end
64
+
65
+ sig do
66
+ returns(
67
+ T.nilable(
68
+ Vatsense::Models::ValidateCheckResponse::Data::Company::Variants
69
+ )
70
+ )
71
+ end
72
+ attr_reader :company
73
+
74
+ sig do
75
+ params(
76
+ company:
77
+ T.any(
78
+ Vatsense::Models::ValidateCheckResponse::Data::Company::ValidationCompany::OrHash,
79
+ Vatsense::Models::ValidateCheckResponse::Data::Company::EoriValidationCompany::OrHash
80
+ )
81
+ ).void
82
+ end
83
+ attr_writer :company
84
+
85
+ # Official consultation number (only returned when requester_vat_number is
86
+ # provided).
87
+ sig { returns(T.nilable(String)) }
88
+ attr_accessor :consultation_number
89
+
90
+ # Whether the VAT/EORI number is valid.
91
+ sig { returns(T.nilable(T::Boolean)) }
92
+ attr_reader :valid
93
+
94
+ sig { params(valid: T::Boolean).void }
95
+ attr_writer :valid
96
+
97
+ sig do
98
+ params(
99
+ company:
100
+ T.any(
101
+ Vatsense::Models::ValidateCheckResponse::Data::Company::ValidationCompany::OrHash,
102
+ Vatsense::Models::ValidateCheckResponse::Data::Company::EoriValidationCompany::OrHash
103
+ ),
104
+ consultation_number: T.nilable(String),
105
+ valid: T::Boolean
106
+ ).returns(T.attached_class)
107
+ end
108
+ def self.new(
109
+ company: nil,
110
+ # Official consultation number (only returned when requester_vat_number is
111
+ # provided).
112
+ consultation_number: nil,
113
+ # Whether the VAT/EORI number is valid.
114
+ valid: nil
115
+ )
116
+ end
117
+
118
+ sig do
119
+ override.returns(
120
+ {
121
+ company:
122
+ Vatsense::Models::ValidateCheckResponse::Data::Company::Variants,
123
+ consultation_number: T.nilable(String),
124
+ valid: T::Boolean
125
+ }
126
+ )
127
+ end
128
+ def to_hash
129
+ end
130
+
131
+ module Company
132
+ extend Vatsense::Internal::Type::Union
133
+
134
+ Variants =
135
+ T.type_alias do
136
+ T.any(
137
+ Vatsense::Models::ValidateCheckResponse::Data::Company::ValidationCompany,
138
+ Vatsense::Models::ValidateCheckResponse::Data::Company::EoriValidationCompany
139
+ )
140
+ end
141
+
142
+ class ValidationCompany < Vatsense::Internal::Type::BaseModel
143
+ OrHash =
144
+ T.type_alias do
145
+ T.any(
146
+ Vatsense::Models::ValidateCheckResponse::Data::Company::ValidationCompany,
147
+ Vatsense::Internal::AnyHash
148
+ )
149
+ end
150
+
151
+ sig { returns(T.nilable(String)) }
152
+ attr_reader :company_address
153
+
154
+ sig { params(company_address: String).void }
155
+ attr_writer :company_address
156
+
157
+ sig { returns(T.nilable(String)) }
158
+ attr_reader :company_name
159
+
160
+ sig { params(company_name: String).void }
161
+ attr_writer :company_name
162
+
163
+ sig { returns(T.nilable(String)) }
164
+ attr_reader :country_code
165
+
166
+ sig { params(country_code: String).void }
167
+ attr_writer :country_code
168
+
169
+ # The VAT number (without country code prefix).
170
+ sig { returns(T.nilable(String)) }
171
+ attr_reader :vat_number
172
+
173
+ sig { params(vat_number: String).void }
174
+ attr_writer :vat_number
175
+
176
+ sig do
177
+ params(
178
+ company_address: String,
179
+ company_name: String,
180
+ country_code: String,
181
+ vat_number: String
182
+ ).returns(T.attached_class)
183
+ end
184
+ def self.new(
185
+ company_address: nil,
186
+ company_name: nil,
187
+ country_code: nil,
188
+ # The VAT number (without country code prefix).
189
+ vat_number: nil
190
+ )
191
+ end
192
+
193
+ sig do
194
+ override.returns(
195
+ {
196
+ company_address: String,
197
+ company_name: String,
198
+ country_code: String,
199
+ vat_number: String
200
+ }
201
+ )
202
+ end
203
+ def to_hash
204
+ end
205
+ end
206
+
207
+ class EoriValidationCompany < Vatsense::Internal::Type::BaseModel
208
+ OrHash =
209
+ T.type_alias do
210
+ T.any(
211
+ Vatsense::Models::ValidateCheckResponse::Data::Company::EoriValidationCompany,
212
+ Vatsense::Internal::AnyHash
213
+ )
214
+ end
215
+
216
+ sig { returns(T.nilable(String)) }
217
+ attr_reader :company_address
218
+
219
+ sig { params(company_address: String).void }
220
+ attr_writer :company_address
221
+
222
+ sig { returns(T.nilable(String)) }
223
+ attr_reader :company_name
224
+
225
+ sig { params(company_name: String).void }
226
+ attr_writer :company_name
227
+
228
+ sig { returns(T.nilable(String)) }
229
+ attr_reader :country_code
230
+
231
+ sig { params(country_code: String).void }
232
+ attr_writer :country_code
233
+
234
+ # The EORI number (without country code prefix).
235
+ sig { returns(T.nilable(String)) }
236
+ attr_reader :eori_number
237
+
238
+ sig { params(eori_number: String).void }
239
+ attr_writer :eori_number
240
+
241
+ sig do
242
+ params(
243
+ company_address: String,
244
+ company_name: String,
245
+ country_code: String,
246
+ eori_number: String
247
+ ).returns(T.attached_class)
248
+ end
249
+ def self.new(
250
+ company_address: nil,
251
+ company_name: nil,
252
+ country_code: nil,
253
+ # The EORI number (without country code prefix).
254
+ eori_number: nil
255
+ )
256
+ end
257
+
258
+ sig do
259
+ override.returns(
260
+ {
261
+ company_address: String,
262
+ company_name: String,
263
+ country_code: String,
264
+ eori_number: String
265
+ }
266
+ )
267
+ end
268
+ def to_hash
269
+ end
270
+ end
271
+
272
+ sig do
273
+ override.returns(
274
+ T::Array[
275
+ Vatsense::Models::ValidateCheckResponse::Data::Company::Variants
276
+ ]
277
+ )
278
+ end
279
+ def self.variants
280
+ end
281
+ end
282
+ end
283
+ end
284
+ end
285
+ end
@@ -0,0 +1,136 @@
1
+ # typed: strong
2
+
3
+ module Vatsense
4
+ module Models
5
+ class VatPrice < Vatsense::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias { T.any(Vatsense::VatPrice, Vatsense::Internal::AnyHash) }
8
+
9
+ sig { returns(T.nilable(Vatsense::VatPrice::Object::TaggedSymbol)) }
10
+ attr_reader :object
11
+
12
+ sig { params(object: Vatsense::VatPrice::Object::OrSymbol).void }
13
+ attr_writer :object
14
+
15
+ # The price provided.
16
+ sig { returns(T.nilable(Float)) }
17
+ attr_reader :price
18
+
19
+ sig { params(price: Float).void }
20
+ attr_writer :price
21
+
22
+ # The calculated price exclusive of VAT.
23
+ sig { returns(T.nilable(Float)) }
24
+ attr_reader :price_excl_vat
25
+
26
+ sig { params(price_excl_vat: Float).void }
27
+ attr_writer :price_excl_vat
28
+
29
+ # The calculated price inclusive of VAT.
30
+ sig { returns(T.nilable(Float)) }
31
+ attr_reader :price_incl_vat
32
+
33
+ sig { params(price_incl_vat: Float).void }
34
+ attr_writer :price_incl_vat
35
+
36
+ # Whether the price is inclusive or exclusive of VAT.
37
+ sig { returns(T.nilable(Vatsense::VatPrice::TaxType::TaggedSymbol)) }
38
+ attr_reader :tax_type
39
+
40
+ sig { params(tax_type: Vatsense::VatPrice::TaxType::OrSymbol).void }
41
+ attr_writer :tax_type
42
+
43
+ # The total VAT amount.
44
+ sig { returns(T.nilable(Float)) }
45
+ attr_reader :vat
46
+
47
+ sig { params(vat: Float).void }
48
+ attr_writer :vat
49
+
50
+ # The VAT rate percentage.
51
+ sig { returns(T.nilable(Float)) }
52
+ attr_reader :vat_rate
53
+
54
+ sig { params(vat_rate: Float).void }
55
+ attr_writer :vat_rate
56
+
57
+ sig do
58
+ params(
59
+ object: Vatsense::VatPrice::Object::OrSymbol,
60
+ price: Float,
61
+ price_excl_vat: Float,
62
+ price_incl_vat: Float,
63
+ tax_type: Vatsense::VatPrice::TaxType::OrSymbol,
64
+ vat: Float,
65
+ vat_rate: Float
66
+ ).returns(T.attached_class)
67
+ end
68
+ def self.new(
69
+ object: nil,
70
+ # The price provided.
71
+ price: nil,
72
+ # The calculated price exclusive of VAT.
73
+ price_excl_vat: nil,
74
+ # The calculated price inclusive of VAT.
75
+ price_incl_vat: nil,
76
+ # Whether the price is inclusive or exclusive of VAT.
77
+ tax_type: nil,
78
+ # The total VAT amount.
79
+ vat: nil,
80
+ # The VAT rate percentage.
81
+ vat_rate: nil
82
+ )
83
+ end
84
+
85
+ sig do
86
+ override.returns(
87
+ {
88
+ object: Vatsense::VatPrice::Object::TaggedSymbol,
89
+ price: Float,
90
+ price_excl_vat: Float,
91
+ price_incl_vat: Float,
92
+ tax_type: Vatsense::VatPrice::TaxType::TaggedSymbol,
93
+ vat: Float,
94
+ vat_rate: Float
95
+ }
96
+ )
97
+ end
98
+ def to_hash
99
+ end
100
+
101
+ module Object
102
+ extend Vatsense::Internal::Type::Enum
103
+
104
+ TaggedSymbol =
105
+ T.type_alias { T.all(Symbol, Vatsense::VatPrice::Object) }
106
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
107
+
108
+ VAT_PRICE = T.let(:vat_price, Vatsense::VatPrice::Object::TaggedSymbol)
109
+
110
+ sig do
111
+ override.returns(T::Array[Vatsense::VatPrice::Object::TaggedSymbol])
112
+ end
113
+ def self.values
114
+ end
115
+ end
116
+
117
+ # Whether the price is inclusive or exclusive of VAT.
118
+ module TaxType
119
+ extend Vatsense::Internal::Type::Enum
120
+
121
+ TaggedSymbol =
122
+ T.type_alias { T.all(Symbol, Vatsense::VatPrice::TaxType) }
123
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
124
+
125
+ INCL = T.let(:incl, Vatsense::VatPrice::TaxType::TaggedSymbol)
126
+ EXCL = T.let(:excl, Vatsense::VatPrice::TaxType::TaggedSymbol)
127
+
128
+ sig do
129
+ override.returns(T::Array[Vatsense::VatPrice::TaxType::TaggedSymbol])
130
+ end
131
+ def self.values
132
+ end
133
+ end
134
+ end
135
+ end
136
+ end
@@ -0,0 +1,66 @@
1
+ # typed: strong
2
+
3
+ module Vatsense
4
+ Country = Vatsense::Models::Country
5
+
6
+ CountryListParams = Vatsense::Models::CountryListParams
7
+
8
+ CountryListProvincesParams = Vatsense::Models::CountryListProvincesParams
9
+
10
+ CreateInvoice = Vatsense::Models::CreateInvoice
11
+
12
+ CurrencyCalculateVatPriceParams =
13
+ Vatsense::Models::CurrencyCalculateVatPriceParams
14
+
15
+ CurrencyConvertParams = Vatsense::Models::CurrencyConvertParams
16
+
17
+ CurrencyListParams = Vatsense::Models::CurrencyListParams
18
+
19
+ FindRate = Vatsense::Models::FindRate
20
+
21
+ Invoice = Vatsense::Models::Invoice
22
+
23
+ InvoiceAPI = Vatsense::Models::InvoiceAPI
24
+
25
+ InvoiceBusinessInput = Vatsense::Models::InvoiceBusinessInput
26
+
27
+ InvoiceConversionInput = Vatsense::Models::InvoiceConversionInput
28
+
29
+ InvoiceCreateParams = Vatsense::Models::InvoiceCreateParams
30
+
31
+ InvoiceCustomerInput = Vatsense::Models::InvoiceCustomerInput
32
+
33
+ InvoiceDeleteParams = Vatsense::Models::InvoiceDeleteParams
34
+
35
+ InvoiceListParams = Vatsense::Models::InvoiceListParams
36
+
37
+ InvoiceResponse = Vatsense::Models::InvoiceResponse
38
+
39
+ InvoiceRetrieveParams = Vatsense::Models::InvoiceRetrieveParams
40
+
41
+ InvoiceUpdateParams = Vatsense::Models::InvoiceUpdateParams
42
+
43
+ Rate = Vatsense::Models::Rate
44
+
45
+ RateCalculatePriceParams = Vatsense::Models::RateCalculatePriceParams
46
+
47
+ RateDetailsParams = Vatsense::Models::RateDetailsParams
48
+
49
+ RateFindParams = Vatsense::Models::RateFindParams
50
+
51
+ RateListParams = Vatsense::Models::RateListParams
52
+
53
+ RateListTypesParams = Vatsense::Models::RateListTypesParams
54
+
55
+ RateWithTaxRate = Vatsense::Models::RateWithTaxRate
56
+
57
+ SandboxGenerateKeyParams = Vatsense::Models::SandboxGenerateKeyParams
58
+
59
+ TaxRate = Vatsense::Models::TaxRate
60
+
61
+ UsageRetrieveParams = Vatsense::Models::UsageRetrieveParams
62
+
63
+ ValidateCheckParams = Vatsense::Models::ValidateCheckParams
64
+
65
+ VatPrice = Vatsense::Models::VatPrice
66
+ end
@@ -0,0 +1,59 @@
1
+ # typed: strong
2
+
3
+ module Vatsense
4
+ # Specify HTTP behaviour to use for a specific request. These options supplement
5
+ # or override those provided at the client level.
6
+ #
7
+ # When making a request, you can pass an actual {RequestOptions} instance, or
8
+ # simply pass a Hash with symbol keys matching the attributes on this class.
9
+ class RequestOptions < Vatsense::Internal::Type::BaseModel
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(Vatsense::RequestOptions, Vatsense::Internal::AnyHash)
13
+ end
14
+
15
+ # @api private
16
+ sig { params(opts: Vatsense::RequestOptions::OrHash).void }
17
+ def self.validate!(opts)
18
+ end
19
+
20
+ # Idempotency key to send with request and all associated retries. Will only be
21
+ # sent for write requests.
22
+ sig { returns(T.nilable(String)) }
23
+ attr_accessor :idempotency_key
24
+
25
+ # Extra query params to send with the request. These are `.merge`’d into any
26
+ # `query` given at the client level.
27
+ sig do
28
+ returns(
29
+ T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))])
30
+ )
31
+ end
32
+ attr_accessor :extra_query
33
+
34
+ # Extra headers to send with the request. These are `.merged`’d into any
35
+ # `extra_headers` given at the client level.
36
+ sig { returns(T.nilable(T::Hash[String, T.nilable(String)])) }
37
+ attr_accessor :extra_headers
38
+
39
+ # Extra data to send with the request. These are deep merged into any data
40
+ # generated as part of the normal request.
41
+ sig { returns(T.nilable(T.anything)) }
42
+ attr_accessor :extra_body
43
+
44
+ # Maximum number of retries to attempt after a failed initial request.
45
+ sig { returns(T.nilable(Integer)) }
46
+ attr_accessor :max_retries
47
+
48
+ # Request timeout in seconds.
49
+ sig { returns(T.nilable(Float)) }
50
+ attr_accessor :timeout
51
+
52
+ # Returns a new instance of RequestOptions.
53
+ sig do
54
+ params(values: Vatsense::Internal::AnyHash).returns(T.attached_class)
55
+ end
56
+ def self.new(values = {})
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,49 @@
1
+ # typed: strong
2
+
3
+ module Vatsense
4
+ module Resources
5
+ # Country and province information
6
+ class Countries
7
+ # Returns a list of all countries, including whether they are subject to VAT/GST
8
+ # and whether they are subject to EU VAT. Each country is returned as a country
9
+ # object.
10
+ #
11
+ # You can optionally filter by country code or IP address.
12
+ sig do
13
+ params(
14
+ country_code: String,
15
+ ip_address: String,
16
+ request_options: Vatsense::RequestOptions::OrHash
17
+ ).returns(Vatsense::Models::CountryListResponse)
18
+ end
19
+ def list(
20
+ # A 2-character ISO 3166-1 alpha-2 country code (e.g. "GB", "FR").
21
+ country_code: nil,
22
+ # An IPv4 or IPv6 address. If provided, the country will be determined from the IP
23
+ # address.
24
+ ip_address: nil,
25
+ request_options: {}
26
+ )
27
+ end
28
+
29
+ # Retrieve a list of all provinces within a given country.
30
+ sig do
31
+ params(
32
+ country_code: String,
33
+ request_options: Vatsense::RequestOptions::OrHash
34
+ ).returns(Vatsense::Models::CountryListProvincesResponse)
35
+ end
36
+ def list_provinces(
37
+ # A 2-character ISO 3166-1 alpha-2 country code (e.g. "CA").
38
+ country_code:,
39
+ request_options: {}
40
+ )
41
+ end
42
+
43
+ # @api private
44
+ sig { params(client: Vatsense::Client).returns(T.attached_class) }
45
+ def self.new(client:)
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,82 @@
1
+ # typed: strong
2
+
3
+ module Vatsense
4
+ module Resources
5
+ # Currency exchange rates and conversion
6
+ class Currency
7
+ # Returns a list of all currency conversion rates sourced from HMRC (GBP) and the
8
+ # European Central Bank (EUR).
9
+ #
10
+ # You can optionally filter by source and target currency.
11
+ sig do
12
+ params(
13
+ from: String,
14
+ to: Vatsense::CurrencyListParams::To::OrSymbol,
15
+ request_options: Vatsense::RequestOptions::OrHash
16
+ ).returns(Vatsense::Models::CurrencyListResponse)
17
+ end
18
+ def list(
19
+ # The 3-character currency code(s) to convert from (e.g. "USD", "CAD"). Can be a
20
+ # comma-separated list without spaces (e.g. "USD,CAD,AUD").
21
+ from: nil,
22
+ # The 3-character target currency code. Must be either "GBP" or "EUR".
23
+ to: nil,
24
+ request_options: {}
25
+ )
26
+ end
27
+
28
+ # Calculate the inclusive and exclusive VAT price on a given amount and VAT rate.
29
+ # This is a standalone calculation that does not look up rates by country.
30
+ sig do
31
+ params(
32
+ price: String,
33
+ tax_type:
34
+ Vatsense::CurrencyCalculateVatPriceParams::TaxType::OrSymbol,
35
+ vat_rate: Float,
36
+ request_options: Vatsense::RequestOptions::OrHash
37
+ ).returns(Vatsense::Models::CurrencyCalculateVatPriceResponse)
38
+ end
39
+ def calculate_vat_price(
40
+ # The price to calculate on. Must be a string with exactly 2 decimal places (e.g.
41
+ # "30.00", "59.95").
42
+ price:,
43
+ # Whether the provided price is inclusive or exclusive of VAT.
44
+ tax_type:,
45
+ # A percentage VAT rate to use for the calculation.
46
+ vat_rate:,
47
+ request_options: {}
48
+ )
49
+ end
50
+
51
+ # Convert a foreign currency amount to either GBP or EUR using official exchange
52
+ # rates.
53
+ #
54
+ # GBP rates are from HMRC (updated on the 1st of every month). EUR rates are from
55
+ # the European Central Bank (updated around 16:00 CET on working days).
56
+ sig do
57
+ params(
58
+ amount: String,
59
+ from: String,
60
+ to: Vatsense::CurrencyConvertParams::To::OrSymbol,
61
+ request_options: Vatsense::RequestOptions::OrHash
62
+ ).returns(Vatsense::Models::CurrencyConvertResponse)
63
+ end
64
+ def convert(
65
+ # The amount to convert. Must be a string with exactly 2 decimal places (e.g.
66
+ # "39.99").
67
+ amount:,
68
+ # The 3-character source currency code (e.g. "USD", "CAD").
69
+ from:,
70
+ # The 3-character target currency code. Must be either "GBP" or "EUR".
71
+ to:,
72
+ request_options: {}
73
+ )
74
+ end
75
+
76
+ # @api private
77
+ sig { params(client: Vatsense::Client).returns(T.attached_class) }
78
+ def self.new(client:)
79
+ end
80
+ end
81
+ end
82
+ end