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,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Internal
5
+ extend Vatsense::Internal::Util::SorbetRuntimeSupport
6
+
7
+ OMIT =
8
+ Object.new.tap do
9
+ _1.define_singleton_method(:inspect) { "#<#{Vatsense::Internal}::OMIT>" }
10
+ end
11
+ .freeze
12
+
13
+ define_sorbet_constant!(:AnyHash) do
14
+ T.type_alias { T::Hash[Symbol, T.anything] }
15
+ end
16
+ define_sorbet_constant!(:FileInput) do
17
+ T.type_alias { T.any(Pathname, StringIO, IO, String, Vatsense::FilePart) }
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ class Country < Vatsense::Internal::Type::BaseModel
6
+ # @!attribute country_code
7
+ # 2-character ISO 3166-1 alpha-2 country code.
8
+ #
9
+ # @return [String, nil]
10
+ optional :country_code, String
11
+
12
+ # @!attribute country_name
13
+ #
14
+ # @return [String, nil]
15
+ optional :country_name, String
16
+
17
+ # @!attribute eu
18
+ # Whether the country is subject to EU VAT.
19
+ #
20
+ # @return [Boolean, nil]
21
+ optional :eu, Vatsense::Internal::Type::Boolean
22
+
23
+ # @!attribute latitude
24
+ #
25
+ # @return [Float, nil]
26
+ optional :latitude, Float
27
+
28
+ # @!attribute longitude
29
+ #
30
+ # @return [Float, nil]
31
+ optional :longitude, Float
32
+
33
+ # @!attribute object
34
+ #
35
+ # @return [Symbol, Vatsense::Models::Country::Object, nil]
36
+ optional :object, enum: -> { Vatsense::Country::Object }
37
+
38
+ # @!attribute vat
39
+ # Whether the country is subject to VAT/GST.
40
+ #
41
+ # @return [Boolean, nil]
42
+ optional :vat, Vatsense::Internal::Type::Boolean
43
+
44
+ # @!method initialize(country_code: nil, country_name: nil, eu: nil, latitude: nil, longitude: nil, object: nil, vat: nil)
45
+ # @param country_code [String] 2-character ISO 3166-1 alpha-2 country code.
46
+ #
47
+ # @param country_name [String]
48
+ #
49
+ # @param eu [Boolean] Whether the country is subject to EU VAT.
50
+ #
51
+ # @param latitude [Float]
52
+ #
53
+ # @param longitude [Float]
54
+ #
55
+ # @param object [Symbol, Vatsense::Models::Country::Object]
56
+ #
57
+ # @param vat [Boolean] Whether the country is subject to VAT/GST.
58
+
59
+ # @see Vatsense::Models::Country#object
60
+ module Object
61
+ extend Vatsense::Internal::Type::Enum
62
+
63
+ COUNTRY = :country
64
+
65
+ # @!method self.values
66
+ # @return [Array<Symbol>]
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ # @see Vatsense::Resources::Countries#list
6
+ class CountryListParams < Vatsense::Internal::Type::BaseModel
7
+ extend Vatsense::Internal::Type::RequestParameters::Converter
8
+ include Vatsense::Internal::Type::RequestParameters
9
+
10
+ # @!attribute country_code
11
+ # A 2-character ISO 3166-1 alpha-2 country code (e.g. "GB", "FR").
12
+ #
13
+ # @return [String, nil]
14
+ optional :country_code, String
15
+
16
+ # @!attribute ip_address
17
+ # An IPv4 or IPv6 address. If provided, the country will be determined from the IP
18
+ # address.
19
+ #
20
+ # @return [String, nil]
21
+ optional :ip_address, String
22
+
23
+ # @!method initialize(country_code: nil, ip_address: nil, request_options: {})
24
+ # Some parameter documentations has been truncated, see
25
+ # {Vatsense::Models::CountryListParams} for more details.
26
+ #
27
+ # @param country_code [String] A 2-character ISO 3166-1 alpha-2 country code (e.g. "GB", "FR").
28
+ #
29
+ # @param ip_address [String] An IPv4 or IPv6 address. If provided, the country will be determined from the IP
30
+ #
31
+ # @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}]
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ # @see Vatsense::Resources::Countries#list_provinces
6
+ class CountryListProvincesParams < Vatsense::Internal::Type::BaseModel
7
+ extend Vatsense::Internal::Type::RequestParameters::Converter
8
+ include Vatsense::Internal::Type::RequestParameters
9
+
10
+ # @!attribute country_code
11
+ # A 2-character ISO 3166-1 alpha-2 country code (e.g. "CA").
12
+ #
13
+ # @return [String]
14
+ required :country_code, String
15
+
16
+ # @!method initialize(country_code:, request_options: {})
17
+ # @param country_code [String] A 2-character ISO 3166-1 alpha-2 country code (e.g. "CA").
18
+ #
19
+ # @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}]
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ # @see Vatsense::Resources::Countries#list_provinces
6
+ class CountryListProvincesResponse < Vatsense::Internal::Type::BaseModel
7
+ # @!attribute code
8
+ #
9
+ # @return [Integer, nil]
10
+ optional :code, Integer
11
+
12
+ # @!attribute data
13
+ #
14
+ # @return [Array<Vatsense::Models::CountryListProvincesResponse::Data>, nil]
15
+ optional :data,
16
+ -> { Vatsense::Internal::Type::ArrayOf[Vatsense::Models::CountryListProvincesResponse::Data] }
17
+
18
+ # @!attribute success
19
+ #
20
+ # @return [Boolean, nil]
21
+ optional :success, Vatsense::Internal::Type::Boolean
22
+
23
+ # @!method initialize(code: nil, data: nil, success: nil)
24
+ # @param code [Integer]
25
+ # @param data [Array<Vatsense::Models::CountryListProvincesResponse::Data>]
26
+ # @param success [Boolean]
27
+
28
+ class Data < Vatsense::Internal::Type::BaseModel
29
+ # @!attribute country_code
30
+ #
31
+ # @return [String, nil]
32
+ optional :country_code, String
33
+
34
+ # @!attribute object
35
+ #
36
+ # @return [Symbol, Vatsense::Models::CountryListProvincesResponse::Data::Object, nil]
37
+ optional :object, enum: -> { Vatsense::Models::CountryListProvincesResponse::Data::Object }
38
+
39
+ # @!attribute province_code
40
+ #
41
+ # @return [String, nil]
42
+ optional :province_code, String
43
+
44
+ # @!attribute province_name
45
+ #
46
+ # @return [String, nil]
47
+ optional :province_name, String
48
+
49
+ # @!method initialize(country_code: nil, object: nil, province_code: nil, province_name: nil)
50
+ # @param country_code [String]
51
+ # @param object [Symbol, Vatsense::Models::CountryListProvincesResponse::Data::Object]
52
+ # @param province_code [String]
53
+ # @param province_name [String]
54
+
55
+ # @see Vatsense::Models::CountryListProvincesResponse::Data#object
56
+ module Object
57
+ extend Vatsense::Internal::Type::Enum
58
+
59
+ PROVINCE = :province
60
+
61
+ # @!method self.values
62
+ # @return [Array<Symbol>]
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ # @see Vatsense::Resources::Countries#list
6
+ class CountryListResponse < Vatsense::Internal::Type::BaseModel
7
+ # @!attribute code
8
+ #
9
+ # @return [Integer, nil]
10
+ optional :code, Integer
11
+
12
+ # @!attribute data
13
+ #
14
+ # @return [Array<Vatsense::Models::Country>, nil]
15
+ optional :data, -> { Vatsense::Internal::Type::ArrayOf[Vatsense::Country] }
16
+
17
+ # @!attribute success
18
+ #
19
+ # @return [Boolean, nil]
20
+ optional :success, Vatsense::Internal::Type::Boolean
21
+
22
+ # @!method initialize(code: nil, data: nil, success: nil)
23
+ # @param code [Integer]
24
+ # @param data [Array<Vatsense::Models::Country>]
25
+ # @param success [Boolean]
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,171 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ class CreateInvoice < Vatsense::Internal::Type::BaseModel
6
+ # @!attribute business
7
+ #
8
+ # @return [Vatsense::Models::InvoiceBusinessInput]
9
+ required :business, -> { Vatsense::InvoiceBusinessInput }
10
+
11
+ # @!attribute currency_code
12
+ # The 3-character currency code the invoice is billed in.
13
+ #
14
+ # @return [String]
15
+ required :currency_code, String
16
+
17
+ # @!attribute date
18
+ # The date the invoice was issued (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS).
19
+ #
20
+ # @return [String]
21
+ required :date, String
22
+
23
+ # @!attribute items
24
+ #
25
+ # @return [Array<Vatsense::Models::Invoice::InvoiceItemInput>]
26
+ required :items, -> { Vatsense::Internal::Type::ArrayOf[Vatsense::Invoice::InvoiceItemInput] }
27
+
28
+ # @!attribute tax_point
29
+ # The tax point or "time of supply" (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS).
30
+ #
31
+ # @return [String]
32
+ required :tax_point, String
33
+
34
+ # @!attribute conversion
35
+ #
36
+ # @return [Vatsense::Models::InvoiceConversionInput, nil]
37
+ optional :conversion, -> { Vatsense::InvoiceConversionInput }
38
+
39
+ # @!attribute customer
40
+ #
41
+ # @return [Vatsense::Models::InvoiceCustomerInput, nil]
42
+ optional :customer, -> { Vatsense::InvoiceCustomerInput }
43
+
44
+ # @!attribute has_vat
45
+ # Whether the invoice is subject to VAT.
46
+ #
47
+ # @return [Boolean, nil]
48
+ optional :has_vat, Vatsense::Internal::Type::Boolean
49
+
50
+ # @!attribute invoice_number
51
+ # A unique invoice number. If not provided, defaults to an auto-incremented
52
+ # number.
53
+ #
54
+ # @return [String, nil]
55
+ optional :invoice_number, String
56
+
57
+ # @!attribute is_copy
58
+ # Whether the invoice is a copy of a primary invoice.
59
+ #
60
+ # @return [Boolean, nil]
61
+ optional :is_copy, Vatsense::Internal::Type::Boolean
62
+
63
+ # @!attribute is_reverse_charge
64
+ # Whether the invoice is zero-rated due to reverse charge.
65
+ #
66
+ # @return [Boolean, nil]
67
+ optional :is_reverse_charge, Vatsense::Internal::Type::Boolean
68
+
69
+ # @!attribute notes
70
+ # Any additional notes for the invoice.
71
+ #
72
+ # @return [String, nil]
73
+ optional :notes, String
74
+
75
+ # @!attribute pad_invoice_number
76
+ # Pad the auto-generated invoice number with leading zeros to this length.
77
+ #
78
+ # @return [Integer, nil]
79
+ optional :pad_invoice_number, Integer
80
+
81
+ # @!attribute serial
82
+ # A serial prepended to the auto-generated invoice number. Each unique serial has
83
+ # its own auto-increment range.
84
+ #
85
+ # @return [String, nil]
86
+ optional :serial, String
87
+
88
+ # @!attribute tax_type
89
+ # Whether item prices include or exclude VAT.
90
+ #
91
+ # @return [Symbol, Vatsense::Models::CreateInvoice::TaxType, nil]
92
+ optional :tax_type, enum: -> { Vatsense::CreateInvoice::TaxType }
93
+
94
+ # @!attribute type
95
+ # The type of invoice.
96
+ #
97
+ # @return [Symbol, Vatsense::Models::CreateInvoice::Type, nil]
98
+ optional :type, enum: -> { Vatsense::CreateInvoice::Type }
99
+
100
+ # @!attribute zero_rated
101
+ # Whether the invoice has been zero-rated.
102
+ #
103
+ # @return [Boolean, nil]
104
+ optional :zero_rated, Vatsense::Internal::Type::Boolean
105
+
106
+ # @!method initialize(business:, currency_code:, date:, items:, tax_point:, conversion: nil, customer: nil, has_vat: nil, invoice_number: nil, is_copy: nil, is_reverse_charge: nil, notes: nil, pad_invoice_number: nil, serial: nil, tax_type: nil, type: nil, zero_rated: nil)
107
+ # Some parameter documentations has been truncated, see
108
+ # {Vatsense::Models::CreateInvoice} for more details.
109
+ #
110
+ # @param business [Vatsense::Models::InvoiceBusinessInput]
111
+ #
112
+ # @param currency_code [String] The 3-character currency code the invoice is billed in.
113
+ #
114
+ # @param date [String] The date the invoice was issued (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS).
115
+ #
116
+ # @param items [Array<Vatsense::Models::Invoice::InvoiceItemInput>]
117
+ #
118
+ # @param tax_point [String] The tax point or "time of supply" (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS).
119
+ #
120
+ # @param conversion [Vatsense::Models::InvoiceConversionInput]
121
+ #
122
+ # @param customer [Vatsense::Models::InvoiceCustomerInput]
123
+ #
124
+ # @param has_vat [Boolean] Whether the invoice is subject to VAT.
125
+ #
126
+ # @param invoice_number [String] A unique invoice number. If not provided, defaults to an auto-incremented number
127
+ #
128
+ # @param is_copy [Boolean] Whether the invoice is a copy of a primary invoice.
129
+ #
130
+ # @param is_reverse_charge [Boolean] Whether the invoice is zero-rated due to reverse charge.
131
+ #
132
+ # @param notes [String] Any additional notes for the invoice.
133
+ #
134
+ # @param pad_invoice_number [Integer] Pad the auto-generated invoice number with leading zeros to this length.
135
+ #
136
+ # @param serial [String] A serial prepended to the auto-generated invoice number. Each unique serial has
137
+ #
138
+ # @param tax_type [Symbol, Vatsense::Models::CreateInvoice::TaxType] Whether item prices include or exclude VAT.
139
+ #
140
+ # @param type [Symbol, Vatsense::Models::CreateInvoice::Type] The type of invoice.
141
+ #
142
+ # @param zero_rated [Boolean] Whether the invoice has been zero-rated.
143
+
144
+ # Whether item prices include or exclude VAT.
145
+ #
146
+ # @see Vatsense::Models::CreateInvoice#tax_type
147
+ module TaxType
148
+ extend Vatsense::Internal::Type::Enum
149
+
150
+ INCL = :incl
151
+ EXCL = :excl
152
+
153
+ # @!method self.values
154
+ # @return [Array<Symbol>]
155
+ end
156
+
157
+ # The type of invoice.
158
+ #
159
+ # @see Vatsense::Models::CreateInvoice#type
160
+ module Type
161
+ extend Vatsense::Internal::Type::Enum
162
+
163
+ SALE = :sale
164
+ REFUND = :refund
165
+
166
+ # @!method self.values
167
+ # @return [Array<Symbol>]
168
+ end
169
+ end
170
+ end
171
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ # @see Vatsense::Resources::Currency#calculate_vat_price
6
+ class CurrencyCalculateVatPriceParams < Vatsense::Internal::Type::BaseModel
7
+ extend Vatsense::Internal::Type::RequestParameters::Converter
8
+ include Vatsense::Internal::Type::RequestParameters
9
+
10
+ # @!attribute price
11
+ # The price to calculate on. Must be a string with exactly 2 decimal places (e.g.
12
+ # "30.00", "59.95").
13
+ #
14
+ # @return [String]
15
+ required :price, String
16
+
17
+ # @!attribute tax_type
18
+ # Whether the provided price is inclusive or exclusive of VAT.
19
+ #
20
+ # @return [Symbol, Vatsense::Models::CurrencyCalculateVatPriceParams::TaxType]
21
+ required :tax_type, enum: -> { Vatsense::CurrencyCalculateVatPriceParams::TaxType }
22
+
23
+ # @!attribute vat_rate
24
+ # A percentage VAT rate to use for the calculation.
25
+ #
26
+ # @return [Float]
27
+ required :vat_rate, Float
28
+
29
+ # @!method initialize(price:, tax_type:, vat_rate:, request_options: {})
30
+ # Some parameter documentations has been truncated, see
31
+ # {Vatsense::Models::CurrencyCalculateVatPriceParams} for more details.
32
+ #
33
+ # @param price [String] The price to calculate on. Must be a string with exactly 2 decimal places (e.g.
34
+ #
35
+ # @param tax_type [Symbol, Vatsense::Models::CurrencyCalculateVatPriceParams::TaxType] Whether the provided price is inclusive or exclusive of VAT.
36
+ #
37
+ # @param vat_rate [Float] A percentage VAT rate to use for the calculation.
38
+ #
39
+ # @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}]
40
+
41
+ # Whether the provided price is inclusive or exclusive of VAT.
42
+ module TaxType
43
+ extend Vatsense::Internal::Type::Enum
44
+
45
+ INCL = :incl
46
+ EXCL = :excl
47
+
48
+ # @!method self.values
49
+ # @return [Array<Symbol>]
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ # @see Vatsense::Resources::Currency#calculate_vat_price
6
+ class CurrencyCalculateVatPriceResponse < Vatsense::Internal::Type::BaseModel
7
+ # @!attribute code
8
+ #
9
+ # @return [Integer, nil]
10
+ optional :code, Integer
11
+
12
+ # @!attribute data
13
+ #
14
+ # @return [Vatsense::Models::VatPrice, nil]
15
+ optional :data, -> { Vatsense::VatPrice }
16
+
17
+ # @!attribute success
18
+ #
19
+ # @return [Boolean, nil]
20
+ optional :success, Vatsense::Internal::Type::Boolean
21
+
22
+ # @!method initialize(code: nil, data: nil, success: nil)
23
+ # @param code [Integer]
24
+ # @param data [Vatsense::Models::VatPrice]
25
+ # @param success [Boolean]
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ # @see Vatsense::Resources::Currency#convert
6
+ class CurrencyConvertParams < Vatsense::Internal::Type::BaseModel
7
+ extend Vatsense::Internal::Type::RequestParameters::Converter
8
+ include Vatsense::Internal::Type::RequestParameters
9
+
10
+ # @!attribute amount
11
+ # The amount to convert. Must be a string with exactly 2 decimal places (e.g.
12
+ # "39.99").
13
+ #
14
+ # @return [String]
15
+ required :amount, String
16
+
17
+ # @!attribute from
18
+ # The 3-character source currency code (e.g. "USD", "CAD").
19
+ #
20
+ # @return [String]
21
+ required :from, String
22
+
23
+ # @!attribute to
24
+ # The 3-character target currency code. Must be either "GBP" or "EUR".
25
+ #
26
+ # @return [Symbol, Vatsense::Models::CurrencyConvertParams::To]
27
+ required :to, enum: -> { Vatsense::CurrencyConvertParams::To }
28
+
29
+ # @!method initialize(amount:, from:, to:, request_options: {})
30
+ # Some parameter documentations has been truncated, see
31
+ # {Vatsense::Models::CurrencyConvertParams} for more details.
32
+ #
33
+ # @param amount [String] The amount to convert. Must be a string with exactly 2 decimal places (e.g. "39.
34
+ #
35
+ # @param from [String] The 3-character source currency code (e.g. "USD", "CAD").
36
+ #
37
+ # @param to [Symbol, Vatsense::Models::CurrencyConvertParams::To] The 3-character target currency code. Must be either "GBP" or "EUR".
38
+ #
39
+ # @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}]
40
+
41
+ # The 3-character target currency code. Must be either "GBP" or "EUR".
42
+ module To
43
+ extend Vatsense::Internal::Type::Enum
44
+
45
+ GBP = :GBP
46
+ EUR = :EUR
47
+
48
+ # @!method self.values
49
+ # @return [Array<Symbol>]
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ # @see Vatsense::Resources::Currency#convert
6
+ class CurrencyConvertResponse < Vatsense::Internal::Type::BaseModel
7
+ # @!attribute code
8
+ #
9
+ # @return [Integer, nil]
10
+ optional :code, Integer
11
+
12
+ # @!attribute data
13
+ #
14
+ # @return [Vatsense::Models::CurrencyConvertResponse::Data, nil]
15
+ optional :data, -> { Vatsense::Models::CurrencyConvertResponse::Data }
16
+
17
+ # @!attribute success
18
+ #
19
+ # @return [Boolean, nil]
20
+ optional :success, Vatsense::Internal::Type::Boolean
21
+
22
+ # @!method initialize(code: nil, data: nil, success: nil)
23
+ # @param code [Integer]
24
+ # @param data [Vatsense::Models::CurrencyConvertResponse::Data]
25
+ # @param success [Boolean]
26
+
27
+ # @see Vatsense::Models::CurrencyConvertResponse#data
28
+ class Data < Vatsense::Internal::Type::BaseModel
29
+ # @!attribute amount
30
+ # The original amount.
31
+ #
32
+ # @return [Float, nil]
33
+ optional :amount, Float
34
+
35
+ # @!attribute converted
36
+ # The converted amount.
37
+ #
38
+ # @return [Float, nil]
39
+ optional :converted, Float
40
+
41
+ # @!attribute from
42
+ #
43
+ # @return [String, nil]
44
+ optional :from, String
45
+
46
+ # @!attribute object
47
+ #
48
+ # @return [Symbol, Vatsense::Models::CurrencyConvertResponse::Data::Object, nil]
49
+ optional :object, enum: -> { Vatsense::Models::CurrencyConvertResponse::Data::Object }
50
+
51
+ # @!attribute rate
52
+ # The exchange rate used.
53
+ #
54
+ # @return [Float, nil]
55
+ optional :rate, Float
56
+
57
+ # @!attribute to
58
+ #
59
+ # @return [String, nil]
60
+ optional :to, String
61
+
62
+ # @!method initialize(amount: nil, converted: nil, from: nil, object: nil, rate: nil, to: nil)
63
+ # @param amount [Float] The original amount.
64
+ #
65
+ # @param converted [Float] The converted amount.
66
+ #
67
+ # @param from [String]
68
+ #
69
+ # @param object [Symbol, Vatsense::Models::CurrencyConvertResponse::Data::Object]
70
+ #
71
+ # @param rate [Float] The exchange rate used.
72
+ #
73
+ # @param to [String]
74
+
75
+ # @see Vatsense::Models::CurrencyConvertResponse::Data#object
76
+ module Object
77
+ extend Vatsense::Internal::Type::Enum
78
+
79
+ CONVERSION = :conversion
80
+
81
+ # @!method self.values
82
+ # @return [Array<Symbol>]
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ # @see Vatsense::Resources::Currency#list
6
+ class CurrencyListParams < Vatsense::Internal::Type::BaseModel
7
+ extend Vatsense::Internal::Type::RequestParameters::Converter
8
+ include Vatsense::Internal::Type::RequestParameters
9
+
10
+ # @!attribute from
11
+ # The 3-character currency code(s) to convert from (e.g. "USD", "CAD"). Can be a
12
+ # comma-separated list without spaces (e.g. "USD,CAD,AUD").
13
+ #
14
+ # @return [String, nil]
15
+ optional :from, String
16
+
17
+ # @!attribute to
18
+ # The 3-character target currency code. Must be either "GBP" or "EUR".
19
+ #
20
+ # @return [Symbol, Vatsense::Models::CurrencyListParams::To, nil]
21
+ optional :to, enum: -> { Vatsense::CurrencyListParams::To }
22
+
23
+ # @!method initialize(from: nil, to: nil, request_options: {})
24
+ # Some parameter documentations has been truncated, see
25
+ # {Vatsense::Models::CurrencyListParams} for more details.
26
+ #
27
+ # @param from [String] The 3-character currency code(s) to convert from (e.g. "USD", "CAD").
28
+ #
29
+ # @param to [Symbol, Vatsense::Models::CurrencyListParams::To] The 3-character target currency code. Must be either "GBP" or "EUR".
30
+ #
31
+ # @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}]
32
+
33
+ # The 3-character target currency code. Must be either "GBP" or "EUR".
34
+ module To
35
+ extend Vatsense::Internal::Type::Enum
36
+
37
+ GBP = :GBP
38
+ EUR = :EUR
39
+
40
+ # @!method self.values
41
+ # @return [Array<Symbol>]
42
+ end
43
+ end
44
+ end
45
+ end