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,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ # @see Vatsense::Resources::Currency#list
6
+ class CurrencyListResponse < 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::CurrencyListResponse::Data>, nil]
15
+ optional :data, -> { Vatsense::Internal::Type::ArrayOf[Vatsense::Models::CurrencyListResponse::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 [Array<Vatsense::Models::CurrencyListResponse::Data>]
25
+ # @param success [Boolean]
26
+
27
+ class Data < Vatsense::Internal::Type::BaseModel
28
+ # @!attribute from
29
+ # The 3-character source currency code.
30
+ #
31
+ # @return [String, nil]
32
+ optional :from, String
33
+
34
+ # @!attribute object
35
+ #
36
+ # @return [Symbol, Vatsense::Models::CurrencyListResponse::Data::Object, nil]
37
+ optional :object, enum: -> { Vatsense::Models::CurrencyListResponse::Data::Object }
38
+
39
+ # @!attribute rate
40
+ # The exchange rate.
41
+ #
42
+ # @return [Float, nil]
43
+ optional :rate, Float
44
+
45
+ # @!attribute to
46
+ # The 3-character target currency code (GBP or EUR).
47
+ #
48
+ # @return [String, nil]
49
+ optional :to, String
50
+
51
+ # @!method initialize(from: nil, object: nil, rate: nil, to: nil)
52
+ # @param from [String] The 3-character source currency code.
53
+ #
54
+ # @param object [Symbol, Vatsense::Models::CurrencyListResponse::Data::Object]
55
+ #
56
+ # @param rate [Float] The exchange rate.
57
+ #
58
+ # @param to [String] The 3-character target currency code (GBP or EUR).
59
+
60
+ # @see Vatsense::Models::CurrencyListResponse::Data#object
61
+ module Object
62
+ extend Vatsense::Internal::Type::Enum
63
+
64
+ CONVERT_RATE = :convert_rate
65
+
66
+ # @!method self.values
67
+ # @return [Array<Symbol>]
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ # @see Vatsense::Resources::Rates#details
6
+ class FindRate < 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::RateWithTaxRate, nil]
15
+ optional :data, -> { Vatsense::RateWithTaxRate }
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::RateWithTaxRate]
25
+ # @param success [Boolean]
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ module Invoice
6
+ class InvoiceItem < Vatsense::Internal::Type::BaseModel
7
+ # @!attribute id
8
+ #
9
+ # @return [String, nil]
10
+ optional :id, String
11
+
12
+ # @!attribute discount_rate
13
+ #
14
+ # @return [Float, nil]
15
+ optional :discount_rate, Float, nil?: true
16
+
17
+ # @!attribute item
18
+ #
19
+ # @return [String, nil]
20
+ optional :item, String
21
+
22
+ # @!attribute object
23
+ #
24
+ # @return [Symbol, Vatsense::Models::Invoice::InvoiceItem::Object, nil]
25
+ optional :object, enum: -> { Vatsense::Invoice::InvoiceItem::Object }
26
+
27
+ # @!attribute price_each
28
+ #
29
+ # @return [Float, nil]
30
+ optional :price_each, Float
31
+
32
+ # @!attribute price_total
33
+ #
34
+ # @return [Float, nil]
35
+ optional :price_total, Float
36
+
37
+ # @!attribute quantity
38
+ #
39
+ # @return [Float, nil]
40
+ optional :quantity, Float
41
+
42
+ # @!attribute vat_rate
43
+ #
44
+ # @return [Float, nil]
45
+ optional :vat_rate, Float
46
+
47
+ # @!method initialize(id: nil, discount_rate: nil, item: nil, object: nil, price_each: nil, price_total: nil, quantity: nil, vat_rate: nil)
48
+ # @param id [String]
49
+ # @param discount_rate [Float, nil]
50
+ # @param item [String]
51
+ # @param object [Symbol, Vatsense::Models::Invoice::InvoiceItem::Object]
52
+ # @param price_each [Float]
53
+ # @param price_total [Float]
54
+ # @param quantity [Float]
55
+ # @param vat_rate [Float]
56
+
57
+ # @see Vatsense::Models::Invoice::InvoiceItem#object
58
+ module Object
59
+ extend Vatsense::Internal::Type::Enum
60
+
61
+ ITEM = :item
62
+
63
+ # @!method self.values
64
+ # @return [Array<Symbol>]
65
+ end
66
+ end
67
+ end
68
+
69
+ InvoiceItem = Invoice::InvoiceItem
70
+ end
71
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ module Invoice
6
+ class InvoiceItemInput < Vatsense::Internal::Type::BaseModel
7
+ # @!attribute item
8
+ # The description of the line item.
9
+ #
10
+ # @return [String]
11
+ required :item, String
12
+
13
+ # @!attribute price_each
14
+ # The price per item. Must be a decimal with 2 decimal places.
15
+ #
16
+ # @return [Float]
17
+ required :price_each, Float
18
+
19
+ # @!attribute quantity
20
+ # The quantity of the item.
21
+ #
22
+ # @return [Float]
23
+ required :quantity, Float
24
+
25
+ # @!attribute vat_rate
26
+ # A percentage VAT rate for this item.
27
+ #
28
+ # @return [Float]
29
+ required :vat_rate, Float
30
+
31
+ # @!attribute discount_rate
32
+ # A percentage discount to apply to the price.
33
+ #
34
+ # @return [Float, nil]
35
+ optional :discount_rate, Float
36
+
37
+ # @!method initialize(item:, price_each:, quantity:, vat_rate:, discount_rate: nil)
38
+ # @param item [String] The description of the line item.
39
+ #
40
+ # @param price_each [Float] The price per item. Must be a decimal with 2 decimal places.
41
+ #
42
+ # @param quantity [Float] The quantity of the item.
43
+ #
44
+ # @param vat_rate [Float] A percentage VAT rate for this item.
45
+ #
46
+ # @param discount_rate [Float] A percentage discount to apply to the price.
47
+ end
48
+ end
49
+
50
+ InvoiceItemInput = Invoice::InvoiceItemInput
51
+ end
52
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ module Invoice
6
+ # @see Vatsense::Resources::Invoice::Item#add
7
+ class ItemAddParams < Vatsense::Internal::Type::BaseModel
8
+ extend Vatsense::Internal::Type::RequestParameters::Converter
9
+ include Vatsense::Internal::Type::RequestParameters
10
+
11
+ # @!attribute invoice_id
12
+ #
13
+ # @return [String]
14
+ required :invoice_id, String
15
+
16
+ # @!attribute items
17
+ #
18
+ # @return [Array<Vatsense::Models::Invoice::InvoiceItemInput>]
19
+ required :items, -> { Vatsense::Internal::Type::ArrayOf[Vatsense::Invoice::InvoiceItemInput] }
20
+
21
+ # @!method initialize(invoice_id:, items:, request_options: {})
22
+ # @param invoice_id [String]
23
+ # @param items [Array<Vatsense::Models::Invoice::InvoiceItemInput>]
24
+ # @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}]
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ module Invoice
6
+ # @see Vatsense::Resources::Invoice::Item#delete
7
+ class ItemDeleteParams < Vatsense::Internal::Type::BaseModel
8
+ extend Vatsense::Internal::Type::RequestParameters::Converter
9
+ include Vatsense::Internal::Type::RequestParameters
10
+
11
+ # @!attribute invoice_id
12
+ #
13
+ # @return [String]
14
+ required :invoice_id, String
15
+
16
+ # @!attribute item_id
17
+ #
18
+ # @return [String]
19
+ required :item_id, String
20
+
21
+ # @!method initialize(invoice_id:, item_id:, request_options: {})
22
+ # @param invoice_id [String]
23
+ # @param item_id [String]
24
+ # @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}]
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ module Invoice
6
+ # @see Vatsense::Resources::Invoice::Item#retrieve
7
+ class ItemRetrieveParams < Vatsense::Internal::Type::BaseModel
8
+ extend Vatsense::Internal::Type::RequestParameters::Converter
9
+ include Vatsense::Internal::Type::RequestParameters
10
+
11
+ # @!attribute invoice_id
12
+ #
13
+ # @return [String]
14
+ required :invoice_id, String
15
+
16
+ # @!attribute item_id
17
+ #
18
+ # @return [String]
19
+ required :item_id, String
20
+
21
+ # @!method initialize(invoice_id:, item_id:, request_options: {})
22
+ # @param invoice_id [String]
23
+ # @param item_id [String]
24
+ # @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}]
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ module Invoice
6
+ # @see Vatsense::Resources::Invoice::Item#retrieve
7
+ class ItemRetrieveResponse < Vatsense::Internal::Type::BaseModel
8
+ # @!attribute code
9
+ #
10
+ # @return [Integer, nil]
11
+ optional :code, Integer
12
+
13
+ # @!attribute data
14
+ #
15
+ # @return [Vatsense::Models::Invoice::InvoiceItem, nil]
16
+ optional :data, -> { Vatsense::Invoice::InvoiceItem }
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 [Vatsense::Models::Invoice::InvoiceItem]
26
+ # @param success [Boolean]
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ module Invoice
6
+ # @see Vatsense::Resources::Invoice::Item#update
7
+ class ItemUpdateParams < Vatsense::Models::Invoice::InvoiceItemInput
8
+ extend Vatsense::Internal::Type::RequestParameters::Converter
9
+ include Vatsense::Internal::Type::RequestParameters
10
+
11
+ # @!attribute invoice_id
12
+ #
13
+ # @return [String]
14
+ required :invoice_id, String
15
+
16
+ # @!attribute item_id
17
+ #
18
+ # @return [String]
19
+ required :item_id, String
20
+
21
+ # @!method initialize(invoice_id:, item_id:, request_options: {})
22
+ # @param invoice_id [String]
23
+ # @param item_id [String]
24
+ # @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}]
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,301 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vatsense
4
+ module Models
5
+ class InvoiceAPI < Vatsense::Internal::Type::BaseModel
6
+ # @!attribute id
7
+ #
8
+ # @return [String, nil]
9
+ optional :id, String
10
+
11
+ # @!attribute business
12
+ #
13
+ # @return [Vatsense::Models::InvoiceAPI::Business, nil]
14
+ optional :business, -> { Vatsense::InvoiceAPI::Business }
15
+
16
+ # @!attribute conversion
17
+ #
18
+ # @return [Vatsense::Models::InvoiceConversionInput, nil]
19
+ optional :conversion, -> { Vatsense::InvoiceConversionInput }, nil?: true
20
+
21
+ # @!attribute created
22
+ #
23
+ # @return [Time, nil]
24
+ optional :created, Time
25
+
26
+ # @!attribute currency_code
27
+ #
28
+ # @return [String, nil]
29
+ optional :currency_code, String
30
+
31
+ # @!attribute customer
32
+ #
33
+ # @return [Vatsense::Models::InvoiceAPI::Customer, nil]
34
+ optional :customer, -> { Vatsense::InvoiceAPI::Customer }, nil?: true
35
+
36
+ # @!attribute date
37
+ #
38
+ # @return [String, nil]
39
+ optional :date, String
40
+
41
+ # @!attribute has_vat
42
+ #
43
+ # @return [Boolean, nil]
44
+ optional :has_vat, Vatsense::Internal::Type::Boolean
45
+
46
+ # @!attribute invoice_number
47
+ #
48
+ # @return [String, nil]
49
+ optional :invoice_number, String
50
+
51
+ # @!attribute invoice_url
52
+ # Unique URL to view the invoice. Append "/pdf" to download a PDF copy.
53
+ #
54
+ # @return [String, nil]
55
+ optional :invoice_url, String
56
+
57
+ # @!attribute is_copy
58
+ #
59
+ # @return [Boolean, nil]
60
+ optional :is_copy, Vatsense::Internal::Type::Boolean
61
+
62
+ # @!attribute is_reverse_charge
63
+ #
64
+ # @return [Boolean, nil]
65
+ optional :is_reverse_charge, Vatsense::Internal::Type::Boolean
66
+
67
+ # @!attribute items
68
+ #
69
+ # @return [Array<Vatsense::Models::Invoice::InvoiceItem>, nil]
70
+ optional :items, -> { Vatsense::Internal::Type::ArrayOf[Vatsense::Invoice::InvoiceItem] }
71
+
72
+ # @!attribute notes
73
+ #
74
+ # @return [String, nil]
75
+ optional :notes, String, nil?: true
76
+
77
+ # @!attribute num_items
78
+ #
79
+ # @return [Integer, nil]
80
+ optional :num_items, Integer
81
+
82
+ # @!attribute object
83
+ #
84
+ # @return [Symbol, Vatsense::Models::InvoiceAPI::Object, nil]
85
+ optional :object, enum: -> { Vatsense::InvoiceAPI::Object }
86
+
87
+ # @!attribute tax_point
88
+ #
89
+ # @return [String, nil]
90
+ optional :tax_point, String
91
+
92
+ # @!attribute tax_type
93
+ #
94
+ # @return [Symbol, Vatsense::Models::InvoiceAPI::TaxType, nil]
95
+ optional :tax_type, enum: -> { Vatsense::InvoiceAPI::TaxType }
96
+
97
+ # @!attribute totals
98
+ #
99
+ # @return [Vatsense::Models::InvoiceAPI::Totals, nil]
100
+ optional :totals, -> { Vatsense::InvoiceAPI::Totals }
101
+
102
+ # @!attribute type
103
+ #
104
+ # @return [Symbol, Vatsense::Models::InvoiceAPI::Type, nil]
105
+ optional :type, enum: -> { Vatsense::InvoiceAPI::Type }
106
+
107
+ # @!attribute updated
108
+ #
109
+ # @return [Time, nil]
110
+ optional :updated, Time
111
+
112
+ # @!attribute zero_rated
113
+ #
114
+ # @return [Boolean, nil]
115
+ optional :zero_rated, Vatsense::Internal::Type::Boolean
116
+
117
+ # @!method initialize(id: nil, business: nil, conversion: nil, created: nil, currency_code: nil, customer: nil, date: nil, has_vat: nil, invoice_number: nil, invoice_url: nil, is_copy: nil, is_reverse_charge: nil, items: nil, notes: nil, num_items: nil, object: nil, tax_point: nil, tax_type: nil, totals: nil, type: nil, updated: nil, zero_rated: nil)
118
+ # @param id [String]
119
+ #
120
+ # @param business [Vatsense::Models::InvoiceAPI::Business]
121
+ #
122
+ # @param conversion [Vatsense::Models::InvoiceConversionInput, nil]
123
+ #
124
+ # @param created [Time]
125
+ #
126
+ # @param currency_code [String]
127
+ #
128
+ # @param customer [Vatsense::Models::InvoiceAPI::Customer, nil]
129
+ #
130
+ # @param date [String]
131
+ #
132
+ # @param has_vat [Boolean]
133
+ #
134
+ # @param invoice_number [String]
135
+ #
136
+ # @param invoice_url [String] Unique URL to view the invoice. Append "/pdf" to download a PDF copy.
137
+ #
138
+ # @param is_copy [Boolean]
139
+ #
140
+ # @param is_reverse_charge [Boolean]
141
+ #
142
+ # @param items [Array<Vatsense::Models::Invoice::InvoiceItem>]
143
+ #
144
+ # @param notes [String, nil]
145
+ #
146
+ # @param num_items [Integer]
147
+ #
148
+ # @param object [Symbol, Vatsense::Models::InvoiceAPI::Object]
149
+ #
150
+ # @param tax_point [String]
151
+ #
152
+ # @param tax_type [Symbol, Vatsense::Models::InvoiceAPI::TaxType]
153
+ #
154
+ # @param totals [Vatsense::Models::InvoiceAPI::Totals]
155
+ #
156
+ # @param type [Symbol, Vatsense::Models::InvoiceAPI::Type]
157
+ #
158
+ # @param updated [Time]
159
+ #
160
+ # @param zero_rated [Boolean]
161
+
162
+ # @see Vatsense::Models::InvoiceAPI#business
163
+ class Business < Vatsense::Internal::Type::BaseModel
164
+ # @!attribute address
165
+ #
166
+ # @return [String, nil]
167
+ optional :address, String
168
+
169
+ # @!attribute company_number
170
+ #
171
+ # @return [String, nil]
172
+ optional :company_number, String
173
+
174
+ # @!attribute logo
175
+ #
176
+ # @return [String, nil]
177
+ optional :logo, String, nil?: true
178
+
179
+ # @!attribute name
180
+ #
181
+ # @return [String, nil]
182
+ optional :name, String
183
+
184
+ # @!attribute vat_number
185
+ #
186
+ # @return [String, nil]
187
+ optional :vat_number, String
188
+
189
+ # @!method initialize(address: nil, company_number: nil, logo: nil, name: nil, vat_number: nil)
190
+ # @param address [String]
191
+ # @param company_number [String]
192
+ # @param logo [String, nil]
193
+ # @param name [String]
194
+ # @param vat_number [String]
195
+ end
196
+
197
+ # @see Vatsense::Models::InvoiceAPI#customer
198
+ class Customer < Vatsense::Internal::Type::BaseModel
199
+ # @!attribute address
200
+ #
201
+ # @return [String, nil]
202
+ optional :address, String
203
+
204
+ # @!attribute company_number
205
+ #
206
+ # @return [String, nil]
207
+ optional :company_number, String
208
+
209
+ # @!attribute logo
210
+ #
211
+ # @return [String, nil]
212
+ optional :logo, String, nil?: true
213
+
214
+ # @!attribute name
215
+ #
216
+ # @return [String, nil]
217
+ optional :name, String
218
+
219
+ # @!attribute vat_number
220
+ #
221
+ # @return [String, nil]
222
+ optional :vat_number, String
223
+
224
+ # @!method initialize(address: nil, company_number: nil, logo: nil, name: nil, vat_number: nil)
225
+ # @param address [String]
226
+ # @param company_number [String]
227
+ # @param logo [String, nil]
228
+ # @param name [String]
229
+ # @param vat_number [String]
230
+ end
231
+
232
+ # @see Vatsense::Models::InvoiceAPI#object
233
+ module Object
234
+ extend Vatsense::Internal::Type::Enum
235
+
236
+ INVOICE = :invoice
237
+
238
+ # @!method self.values
239
+ # @return [Array<Symbol>]
240
+ end
241
+
242
+ # @see Vatsense::Models::InvoiceAPI#tax_type
243
+ module TaxType
244
+ extend Vatsense::Internal::Type::Enum
245
+
246
+ INCL = :incl
247
+ EXCL = :excl
248
+
249
+ # @!method self.values
250
+ # @return [Array<Symbol>]
251
+ end
252
+
253
+ # @see Vatsense::Models::InvoiceAPI#totals
254
+ class Totals < Vatsense::Internal::Type::BaseModel
255
+ # @!attribute discount
256
+ # Total discount amount.
257
+ #
258
+ # @return [Float, nil]
259
+ optional :discount, Float
260
+
261
+ # @!attribute subtotal
262
+ # Total before VAT.
263
+ #
264
+ # @return [Float, nil]
265
+ optional :subtotal, Float
266
+
267
+ # @!attribute total
268
+ # Grand total.
269
+ #
270
+ # @return [Float, nil]
271
+ optional :total, Float
272
+
273
+ # @!attribute vat
274
+ # Total VAT amount.
275
+ #
276
+ # @return [Float, nil]
277
+ optional :vat, Float
278
+
279
+ # @!method initialize(discount: nil, subtotal: nil, total: nil, vat: nil)
280
+ # @param discount [Float] Total discount amount.
281
+ #
282
+ # @param subtotal [Float] Total before VAT.
283
+ #
284
+ # @param total [Float] Grand total.
285
+ #
286
+ # @param vat [Float] Total VAT amount.
287
+ end
288
+
289
+ # @see Vatsense::Models::InvoiceAPI#type
290
+ module Type
291
+ extend Vatsense::Internal::Type::Enum
292
+
293
+ SALE = :sale
294
+ REFUND = :refund
295
+
296
+ # @!method self.values
297
+ # @return [Array<Symbol>]
298
+ end
299
+ end
300
+ end
301
+ end