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.
- checksums.yaml +7 -0
- data/.ignore +2 -0
- data/CHANGELOG.md +14 -0
- data/README.md +235 -0
- data/SECURITY.md +27 -0
- data/lib/vatsense/client.rb +129 -0
- data/lib/vatsense/errors.rb +228 -0
- data/lib/vatsense/file_part.rb +58 -0
- data/lib/vatsense/internal/transport/base_client.rb +595 -0
- data/lib/vatsense/internal/transport/pooled_net_requester.rb +210 -0
- data/lib/vatsense/internal/type/array_of.rb +168 -0
- data/lib/vatsense/internal/type/base_model.rb +531 -0
- data/lib/vatsense/internal/type/base_page.rb +55 -0
- data/lib/vatsense/internal/type/boolean.rb +77 -0
- data/lib/vatsense/internal/type/converter.rb +327 -0
- data/lib/vatsense/internal/type/enum.rb +131 -0
- data/lib/vatsense/internal/type/file_input.rb +111 -0
- data/lib/vatsense/internal/type/hash_of.rb +188 -0
- data/lib/vatsense/internal/type/request_parameters.rb +42 -0
- data/lib/vatsense/internal/type/union.rb +237 -0
- data/lib/vatsense/internal/type/unknown.rb +81 -0
- data/lib/vatsense/internal/util.rb +951 -0
- data/lib/vatsense/internal.rb +20 -0
- data/lib/vatsense/models/country.rb +70 -0
- data/lib/vatsense/models/country_list_params.rb +34 -0
- data/lib/vatsense/models/country_list_provinces_params.rb +22 -0
- data/lib/vatsense/models/country_list_provinces_response.rb +67 -0
- data/lib/vatsense/models/country_list_response.rb +28 -0
- data/lib/vatsense/models/create_invoice.rb +171 -0
- data/lib/vatsense/models/currency_calculate_vat_price_params.rb +53 -0
- data/lib/vatsense/models/currency_calculate_vat_price_response.rb +28 -0
- data/lib/vatsense/models/currency_convert_params.rb +53 -0
- data/lib/vatsense/models/currency_convert_response.rb +87 -0
- data/lib/vatsense/models/currency_list_params.rb +45 -0
- data/lib/vatsense/models/currency_list_response.rb +72 -0
- data/lib/vatsense/models/find_rate.rb +28 -0
- data/lib/vatsense/models/invoice/invoice_item.rb +71 -0
- data/lib/vatsense/models/invoice/invoice_item_input.rb +52 -0
- data/lib/vatsense/models/invoice/item_add_params.rb +28 -0
- data/lib/vatsense/models/invoice/item_delete_params.rb +28 -0
- data/lib/vatsense/models/invoice/item_retrieve_params.rb +28 -0
- data/lib/vatsense/models/invoice/item_retrieve_response.rb +30 -0
- data/lib/vatsense/models/invoice/item_update_params.rb +28 -0
- data/lib/vatsense/models/invoice.rb +301 -0
- data/lib/vatsense/models/invoice_business_input.rb +80 -0
- data/lib/vatsense/models/invoice_conversion_input.rb +24 -0
- data/lib/vatsense/models/invoice_create_params.rb +14 -0
- data/lib/vatsense/models/invoice_customer_input.rb +59 -0
- data/lib/vatsense/models/invoice_delete_params.rb +20 -0
- data/lib/vatsense/models/invoice_delete_response.rb +22 -0
- data/lib/vatsense/models/invoice_list_params.rb +38 -0
- data/lib/vatsense/models/invoice_list_response.rb +28 -0
- data/lib/vatsense/models/invoice_response.rb +28 -0
- data/lib/vatsense/models/invoice_retrieve_params.rb +20 -0
- data/lib/vatsense/models/invoice_update_params.rb +20 -0
- data/lib/vatsense/models/rate.rb +74 -0
- data/lib/vatsense/models/rate_calculate_price_params.rb +88 -0
- data/lib/vatsense/models/rate_calculate_price_response.rb +79 -0
- data/lib/vatsense/models/rate_details_params.rb +69 -0
- data/lib/vatsense/models/rate_find_params.rb +69 -0
- data/lib/vatsense/models/rate_list_params.rb +51 -0
- data/lib/vatsense/models/rate_list_response.rb +28 -0
- data/lib/vatsense/models/rate_list_types_params.rb +14 -0
- data/lib/vatsense/models/rate_list_types_response.rb +28 -0
- data/lib/vatsense/models/rate_with_tax_rate.rb +49 -0
- data/lib/vatsense/models/sandbox_generate_key_params.rb +14 -0
- data/lib/vatsense/models/sandbox_generate_key_response.rb +68 -0
- data/lib/vatsense/models/tax_rate.rb +76 -0
- data/lib/vatsense/models/usage_retrieve_params.rb +14 -0
- data/lib/vatsense/models/usage_retrieve_response.rb +67 -0
- data/lib/vatsense/models/validate_check_params.rb +48 -0
- data/lib/vatsense/models/validate_check_response.rb +135 -0
- data/lib/vatsense/models/vat_price.rb +86 -0
- data/lib/vatsense/models.rb +103 -0
- data/lib/vatsense/request_options.rb +77 -0
- data/lib/vatsense/resources/countries.rb +70 -0
- data/lib/vatsense/resources/currency.rb +111 -0
- data/lib/vatsense/resources/invoice/item.rb +133 -0
- data/lib/vatsense/resources/invoice.rb +206 -0
- data/lib/vatsense/resources/rates.rb +190 -0
- data/lib/vatsense/resources/sandbox.rb +36 -0
- data/lib/vatsense/resources/usage.rb +33 -0
- data/lib/vatsense/resources/validate.rb +56 -0
- data/lib/vatsense/version.rb +5 -0
- data/lib/vatsense.rb +113 -0
- data/manifest.yaml +17 -0
- data/rbi/vatsense/client.rbi +93 -0
- data/rbi/vatsense/errors.rbi +205 -0
- data/rbi/vatsense/file_part.rbi +37 -0
- data/rbi/vatsense/internal/transport/base_client.rbi +300 -0
- data/rbi/vatsense/internal/transport/pooled_net_requester.rbi +83 -0
- data/rbi/vatsense/internal/type/array_of.rbi +104 -0
- data/rbi/vatsense/internal/type/base_model.rbi +306 -0
- data/rbi/vatsense/internal/type/base_page.rbi +42 -0
- data/rbi/vatsense/internal/type/boolean.rbi +58 -0
- data/rbi/vatsense/internal/type/converter.rbi +216 -0
- data/rbi/vatsense/internal/type/enum.rbi +82 -0
- data/rbi/vatsense/internal/type/file_input.rbi +59 -0
- data/rbi/vatsense/internal/type/hash_of.rbi +104 -0
- data/rbi/vatsense/internal/type/request_parameters.rbi +29 -0
- data/rbi/vatsense/internal/type/union.rbi +128 -0
- data/rbi/vatsense/internal/type/unknown.rbi +58 -0
- data/rbi/vatsense/internal/util.rbi +507 -0
- data/rbi/vatsense/internal.rbi +16 -0
- data/rbi/vatsense/models/country.rbi +111 -0
- data/rbi/vatsense/models/country_list_params.rbi +59 -0
- data/rbi/vatsense/models/country_list_provinces_params.rbi +43 -0
- data/rbi/vatsense/models/country_list_provinces_response.rbi +177 -0
- data/rbi/vatsense/models/country_list_response.rbi +55 -0
- data/rbi/vatsense/models/create_invoice.rbi +240 -0
- data/rbi/vatsense/models/currency_calculate_vat_price_params.rbi +100 -0
- data/rbi/vatsense/models/currency_calculate_vat_price_response.rbi +51 -0
- data/rbi/vatsense/models/currency_convert_params.rbi +81 -0
- data/rbi/vatsense/models/currency_convert_response.rbi +190 -0
- data/rbi/vatsense/models/currency_list_params.rbi +79 -0
- data/rbi/vatsense/models/currency_list_response.rbi +174 -0
- data/rbi/vatsense/models/find_rate.rbi +50 -0
- data/rbi/vatsense/models/invoice/invoice_item.rbi +129 -0
- data/rbi/vatsense/models/invoice/invoice_item_input.rbi +79 -0
- data/rbi/vatsense/models/invoice/item_add_params.rbi +45 -0
- data/rbi/vatsense/models/invoice/item_delete_params.rbi +48 -0
- data/rbi/vatsense/models/invoice/item_retrieve_params.rbi +48 -0
- data/rbi/vatsense/models/invoice/item_retrieve_response.rbi +57 -0
- data/rbi/vatsense/models/invoice/item_update_params.rbi +48 -0
- data/rbi/vatsense/models/invoice.rbi +481 -0
- data/rbi/vatsense/models/invoice_business_input.rbi +113 -0
- data/rbi/vatsense/models/invoice_conversion_input.rbi +35 -0
- data/rbi/vatsense/models/invoice_create_params.rbi +27 -0
- data/rbi/vatsense/models/invoice_customer_input.rbi +93 -0
- data/rbi/vatsense/models/invoice_delete_params.rbi +35 -0
- data/rbi/vatsense/models/invoice_delete_response.rbi +31 -0
- data/rbi/vatsense/models/invoice_list_params.rbi +68 -0
- data/rbi/vatsense/models/invoice_list_response.rbi +55 -0
- data/rbi/vatsense/models/invoice_response.rbi +48 -0
- data/rbi/vatsense/models/invoice_retrieve_params.rbi +35 -0
- data/rbi/vatsense/models/invoice_update_params.rbi +35 -0
- data/rbi/vatsense/models/rate.rbi +119 -0
- data/rbi/vatsense/models/rate_calculate_price_params.rbi +144 -0
- data/rbi/vatsense/models/rate_calculate_price_response.rbi +184 -0
- data/rbi/vatsense/models/rate_details_params.rbi +109 -0
- data/rbi/vatsense/models/rate_find_params.rbi +109 -0
- data/rbi/vatsense/models/rate_list_params.rbi +83 -0
- data/rbi/vatsense/models/rate_list_response.rbi +48 -0
- data/rbi/vatsense/models/rate_list_types_params.rbi +27 -0
- data/rbi/vatsense/models/rate_list_types_response.rbi +51 -0
- data/rbi/vatsense/models/rate_with_tax_rate.rbi +94 -0
- data/rbi/vatsense/models/sandbox_generate_key_params.rbi +27 -0
- data/rbi/vatsense/models/sandbox_generate_key_response.rbi +135 -0
- data/rbi/vatsense/models/tax_rate.rbi +109 -0
- data/rbi/vatsense/models/usage_retrieve_params.rbi +27 -0
- data/rbi/vatsense/models/usage_retrieve_response.rbi +155 -0
- data/rbi/vatsense/models/validate_check_params.rbi +82 -0
- data/rbi/vatsense/models/validate_check_response.rbi +285 -0
- data/rbi/vatsense/models/vat_price.rbi +136 -0
- data/rbi/vatsense/models.rbi +66 -0
- data/rbi/vatsense/request_options.rbi +59 -0
- data/rbi/vatsense/resources/countries.rbi +49 -0
- data/rbi/vatsense/resources/currency.rbi +82 -0
- data/rbi/vatsense/resources/invoice/item.rbi +97 -0
- data/rbi/vatsense/resources/invoice.rbi +191 -0
- data/rbi/vatsense/resources/rates.rbi +164 -0
- data/rbi/vatsense/resources/sandbox.rbi +24 -0
- data/rbi/vatsense/resources/usage.rbi +22 -0
- data/rbi/vatsense/resources/validate.rbi +51 -0
- data/rbi/vatsense/version.rbi +5 -0
- data/sig/vatsense/client.rbs +45 -0
- data/sig/vatsense/errors.rbs +117 -0
- data/sig/vatsense/file_part.rbs +21 -0
- data/sig/vatsense/internal/transport/base_client.rbs +135 -0
- data/sig/vatsense/internal/transport/pooled_net_requester.rbs +48 -0
- data/sig/vatsense/internal/type/array_of.rbs +48 -0
- data/sig/vatsense/internal/type/base_model.rbs +102 -0
- data/sig/vatsense/internal/type/base_page.rbs +24 -0
- data/sig/vatsense/internal/type/boolean.rbs +26 -0
- data/sig/vatsense/internal/type/converter.rbs +79 -0
- data/sig/vatsense/internal/type/enum.rbs +32 -0
- data/sig/vatsense/internal/type/file_input.rbs +25 -0
- data/sig/vatsense/internal/type/hash_of.rbs +48 -0
- data/sig/vatsense/internal/type/request_parameters.rbs +17 -0
- data/sig/vatsense/internal/type/union.rbs +52 -0
- data/sig/vatsense/internal/type/unknown.rbs +26 -0
- data/sig/vatsense/internal/util.rbs +195 -0
- data/sig/vatsense/internal.rbs +9 -0
- data/sig/vatsense/models/country.rbs +76 -0
- data/sig/vatsense/models/country_list_params.rbs +32 -0
- data/sig/vatsense/models/country_list_provinces_params.rbs +23 -0
- data/sig/vatsense/models/country_list_provinces_response.rbs +90 -0
- data/sig/vatsense/models/country_list_response.rbs +32 -0
- data/sig/vatsense/models/create_invoice.rbs +154 -0
- data/sig/vatsense/models/currency_calculate_vat_price_params.rbs +47 -0
- data/sig/vatsense/models/currency_calculate_vat_price_response.rbs +28 -0
- data/sig/vatsense/models/currency_convert_params.rbs +47 -0
- data/sig/vatsense/models/currency_convert_response.rbs +104 -0
- data/sig/vatsense/models/currency_list_params.rbs +45 -0
- data/sig/vatsense/models/currency_list_response.rbs +90 -0
- data/sig/vatsense/models/find_rate.rbs +32 -0
- data/sig/vatsense/models/invoice/invoice_item.rbs +85 -0
- data/sig/vatsense/models/invoice/invoice_item_input.rbs +46 -0
- data/sig/vatsense/models/invoice/item_add_params.rbs +33 -0
- data/sig/vatsense/models/invoice/item_delete_params.rbs +30 -0
- data/sig/vatsense/models/invoice/item_retrieve_params.rbs +30 -0
- data/sig/vatsense/models/invoice/item_retrieve_response.rbs +36 -0
- data/sig/vatsense/models/invoice/item_update_params.rbs +34 -0
- data/sig/vatsense/models/invoice.rbs +332 -0
- data/sig/vatsense/models/invoice_business_input.rbs +72 -0
- data/sig/vatsense/models/invoice_conversion_input.rbs +15 -0
- data/sig/vatsense/models/invoice_create_params.rbs +15 -0
- data/sig/vatsense/models/invoice_customer_input.rbs +62 -0
- data/sig/vatsense/models/invoice_delete_params.rbs +23 -0
- data/sig/vatsense/models/invoice_delete_response.rbs +15 -0
- data/sig/vatsense/models/invoice_list_params.rbs +38 -0
- data/sig/vatsense/models/invoice_list_response.rbs +34 -0
- data/sig/vatsense/models/invoice_response.rbs +32 -0
- data/sig/vatsense/models/invoice_retrieve_params.rbs +23 -0
- data/sig/vatsense/models/invoice_update_params.rbs +25 -0
- data/sig/vatsense/models/rate.rbs +79 -0
- data/sig/vatsense/models/rate_calculate_price_params.rbs +77 -0
- data/sig/vatsense/models/rate_calculate_price_response.rbs +104 -0
- data/sig/vatsense/models/rate_details_params.rbs +63 -0
- data/sig/vatsense/models/rate_find_params.rbs +63 -0
- data/sig/vatsense/models/rate_list_params.rbs +44 -0
- data/sig/vatsense/models/rate_list_response.rbs +32 -0
- data/sig/vatsense/models/rate_list_types_params.rbs +15 -0
- data/sig/vatsense/models/rate_list_types_response.rbs +28 -0
- data/sig/vatsense/models/rate_with_tax_rate.rbs +62 -0
- data/sig/vatsense/models/sandbox_generate_key_params.rbs +15 -0
- data/sig/vatsense/models/sandbox_generate_key_response.rbs +85 -0
- data/sig/vatsense/models/tax_rate.rbs +72 -0
- data/sig/vatsense/models/usage_retrieve_params.rbs +15 -0
- data/sig/vatsense/models/usage_retrieve_response.rbs +81 -0
- data/sig/vatsense/models/validate_check_params.rbs +38 -0
- data/sig/vatsense/models/validate_check_response.rbs +161 -0
- data/sig/vatsense/models/vat_price.rbs +89 -0
- data/sig/vatsense/models.rbs +63 -0
- data/sig/vatsense/request_options.rbs +34 -0
- data/sig/vatsense/resources/countries.rbs +18 -0
- data/sig/vatsense/resources/currency.rbs +27 -0
- data/sig/vatsense/resources/invoice/item.rbs +38 -0
- data/sig/vatsense/resources/invoice.rbs +69 -0
- data/sig/vatsense/resources/rates.rbs +50 -0
- data/sig/vatsense/resources/sandbox.rbs +11 -0
- data/sig/vatsense/resources/usage.rbs +11 -0
- data/sig/vatsense/resources/validate.rbs +14 -0
- data/sig/vatsense/version.rbs +3 -0
- metadata +316 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Vatsense
|
|
4
|
+
module Models
|
|
5
|
+
class VatPrice < Vatsense::Internal::Type::BaseModel
|
|
6
|
+
# @!attribute object
|
|
7
|
+
#
|
|
8
|
+
# @return [Symbol, Vatsense::Models::VatPrice::Object, nil]
|
|
9
|
+
optional :object, enum: -> { Vatsense::VatPrice::Object }
|
|
10
|
+
|
|
11
|
+
# @!attribute price
|
|
12
|
+
# The price provided.
|
|
13
|
+
#
|
|
14
|
+
# @return [Float, nil]
|
|
15
|
+
optional :price, Float
|
|
16
|
+
|
|
17
|
+
# @!attribute price_excl_vat
|
|
18
|
+
# The calculated price exclusive of VAT.
|
|
19
|
+
#
|
|
20
|
+
# @return [Float, nil]
|
|
21
|
+
optional :price_excl_vat, Float
|
|
22
|
+
|
|
23
|
+
# @!attribute price_incl_vat
|
|
24
|
+
# The calculated price inclusive of VAT.
|
|
25
|
+
#
|
|
26
|
+
# @return [Float, nil]
|
|
27
|
+
optional :price_incl_vat, Float
|
|
28
|
+
|
|
29
|
+
# @!attribute tax_type
|
|
30
|
+
# Whether the price is inclusive or exclusive of VAT.
|
|
31
|
+
#
|
|
32
|
+
# @return [Symbol, Vatsense::Models::VatPrice::TaxType, nil]
|
|
33
|
+
optional :tax_type, enum: -> { Vatsense::VatPrice::TaxType }
|
|
34
|
+
|
|
35
|
+
# @!attribute vat
|
|
36
|
+
# The total VAT amount.
|
|
37
|
+
#
|
|
38
|
+
# @return [Float, nil]
|
|
39
|
+
optional :vat, Float
|
|
40
|
+
|
|
41
|
+
# @!attribute vat_rate
|
|
42
|
+
# The VAT rate percentage.
|
|
43
|
+
#
|
|
44
|
+
# @return [Float, nil]
|
|
45
|
+
optional :vat_rate, Float
|
|
46
|
+
|
|
47
|
+
# @!method initialize(object: nil, price: nil, price_excl_vat: nil, price_incl_vat: nil, tax_type: nil, vat: nil, vat_rate: nil)
|
|
48
|
+
# @param object [Symbol, Vatsense::Models::VatPrice::Object]
|
|
49
|
+
#
|
|
50
|
+
# @param price [Float] The price provided.
|
|
51
|
+
#
|
|
52
|
+
# @param price_excl_vat [Float] The calculated price exclusive of VAT.
|
|
53
|
+
#
|
|
54
|
+
# @param price_incl_vat [Float] The calculated price inclusive of VAT.
|
|
55
|
+
#
|
|
56
|
+
# @param tax_type [Symbol, Vatsense::Models::VatPrice::TaxType] Whether the price is inclusive or exclusive of VAT.
|
|
57
|
+
#
|
|
58
|
+
# @param vat [Float] The total VAT amount.
|
|
59
|
+
#
|
|
60
|
+
# @param vat_rate [Float] The VAT rate percentage.
|
|
61
|
+
|
|
62
|
+
# @see Vatsense::Models::VatPrice#object
|
|
63
|
+
module Object
|
|
64
|
+
extend Vatsense::Internal::Type::Enum
|
|
65
|
+
|
|
66
|
+
VAT_PRICE = :vat_price
|
|
67
|
+
|
|
68
|
+
# @!method self.values
|
|
69
|
+
# @return [Array<Symbol>]
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Whether the price is inclusive or exclusive of VAT.
|
|
73
|
+
#
|
|
74
|
+
# @see Vatsense::Models::VatPrice#tax_type
|
|
75
|
+
module TaxType
|
|
76
|
+
extend Vatsense::Internal::Type::Enum
|
|
77
|
+
|
|
78
|
+
INCL = :incl
|
|
79
|
+
EXCL = :excl
|
|
80
|
+
|
|
81
|
+
# @!method self.values
|
|
82
|
+
# @return [Array<Symbol>]
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Vatsense
|
|
4
|
+
[Vatsense::Internal::Type::BaseModel, *Vatsense::Internal::Type::BaseModel.subclasses].each do |cls|
|
|
5
|
+
cls.define_sorbet_constant!(:OrHash) { T.type_alias { T.any(cls, Vatsense::Internal::AnyHash) } }
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
Vatsense::Internal::Util.walk_namespaces(Vatsense::Models).each do |mod|
|
|
9
|
+
case mod
|
|
10
|
+
in Vatsense::Internal::Type::Enum | Vatsense::Internal::Type::Union
|
|
11
|
+
mod.constants.each do |name|
|
|
12
|
+
case mod.const_get(name)
|
|
13
|
+
in true | false
|
|
14
|
+
mod.define_sorbet_constant!(:TaggedBoolean) { T.type_alias { T::Boolean } }
|
|
15
|
+
mod.define_sorbet_constant!(:OrBoolean) { T.type_alias { T::Boolean } }
|
|
16
|
+
in Integer
|
|
17
|
+
mod.define_sorbet_constant!(:TaggedInteger) { T.type_alias { Integer } }
|
|
18
|
+
mod.define_sorbet_constant!(:OrInteger) { T.type_alias { Integer } }
|
|
19
|
+
in Float
|
|
20
|
+
mod.define_sorbet_constant!(:TaggedFloat) { T.type_alias { Float } }
|
|
21
|
+
mod.define_sorbet_constant!(:OrFloat) { T.type_alias { Float } }
|
|
22
|
+
in Symbol
|
|
23
|
+
mod.define_sorbet_constant!(:TaggedSymbol) { T.type_alias { Symbol } }
|
|
24
|
+
mod.define_sorbet_constant!(:OrSymbol) { T.type_alias { T.any(Symbol, String) } }
|
|
25
|
+
else
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
else
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
Vatsense::Internal::Util.walk_namespaces(Vatsense::Models)
|
|
33
|
+
.lazy
|
|
34
|
+
.grep(Vatsense::Internal::Type::Union)
|
|
35
|
+
.each do |mod|
|
|
36
|
+
const = :Variants
|
|
37
|
+
next if mod.sorbet_constant_defined?(const)
|
|
38
|
+
|
|
39
|
+
mod.define_sorbet_constant!(const) { T.type_alias { mod.to_sorbet_type } }
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
Country = Vatsense::Models::Country
|
|
43
|
+
|
|
44
|
+
CountryListParams = Vatsense::Models::CountryListParams
|
|
45
|
+
|
|
46
|
+
CountryListProvincesParams = Vatsense::Models::CountryListProvincesParams
|
|
47
|
+
|
|
48
|
+
CreateInvoice = Vatsense::Models::CreateInvoice
|
|
49
|
+
|
|
50
|
+
CurrencyCalculateVatPriceParams = Vatsense::Models::CurrencyCalculateVatPriceParams
|
|
51
|
+
|
|
52
|
+
CurrencyConvertParams = Vatsense::Models::CurrencyConvertParams
|
|
53
|
+
|
|
54
|
+
CurrencyListParams = Vatsense::Models::CurrencyListParams
|
|
55
|
+
|
|
56
|
+
FindRate = Vatsense::Models::FindRate
|
|
57
|
+
|
|
58
|
+
Invoice = Vatsense::Models::Invoice
|
|
59
|
+
|
|
60
|
+
InvoiceAPI = Vatsense::Models::InvoiceAPI
|
|
61
|
+
|
|
62
|
+
InvoiceBusinessInput = Vatsense::Models::InvoiceBusinessInput
|
|
63
|
+
|
|
64
|
+
InvoiceConversionInput = Vatsense::Models::InvoiceConversionInput
|
|
65
|
+
|
|
66
|
+
InvoiceCreateParams = Vatsense::Models::InvoiceCreateParams
|
|
67
|
+
|
|
68
|
+
InvoiceCustomerInput = Vatsense::Models::InvoiceCustomerInput
|
|
69
|
+
|
|
70
|
+
InvoiceDeleteParams = Vatsense::Models::InvoiceDeleteParams
|
|
71
|
+
|
|
72
|
+
InvoiceListParams = Vatsense::Models::InvoiceListParams
|
|
73
|
+
|
|
74
|
+
InvoiceResponse = Vatsense::Models::InvoiceResponse
|
|
75
|
+
|
|
76
|
+
InvoiceRetrieveParams = Vatsense::Models::InvoiceRetrieveParams
|
|
77
|
+
|
|
78
|
+
InvoiceUpdateParams = Vatsense::Models::InvoiceUpdateParams
|
|
79
|
+
|
|
80
|
+
Rate = Vatsense::Models::Rate
|
|
81
|
+
|
|
82
|
+
RateCalculatePriceParams = Vatsense::Models::RateCalculatePriceParams
|
|
83
|
+
|
|
84
|
+
RateDetailsParams = Vatsense::Models::RateDetailsParams
|
|
85
|
+
|
|
86
|
+
RateFindParams = Vatsense::Models::RateFindParams
|
|
87
|
+
|
|
88
|
+
RateListParams = Vatsense::Models::RateListParams
|
|
89
|
+
|
|
90
|
+
RateListTypesParams = Vatsense::Models::RateListTypesParams
|
|
91
|
+
|
|
92
|
+
RateWithTaxRate = Vatsense::Models::RateWithTaxRate
|
|
93
|
+
|
|
94
|
+
SandboxGenerateKeyParams = Vatsense::Models::SandboxGenerateKeyParams
|
|
95
|
+
|
|
96
|
+
TaxRate = Vatsense::Models::TaxRate
|
|
97
|
+
|
|
98
|
+
UsageRetrieveParams = Vatsense::Models::UsageRetrieveParams
|
|
99
|
+
|
|
100
|
+
ValidateCheckParams = Vatsense::Models::ValidateCheckParams
|
|
101
|
+
|
|
102
|
+
VatPrice = Vatsense::Models::VatPrice
|
|
103
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
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
|
+
# @api private
|
|
11
|
+
#
|
|
12
|
+
# @param opts [Vatsense::RequestOptions, Hash{Symbol=>Object}]
|
|
13
|
+
#
|
|
14
|
+
# @raise [ArgumentError]
|
|
15
|
+
def self.validate!(opts)
|
|
16
|
+
case opts
|
|
17
|
+
in Vatsense::RequestOptions | Hash
|
|
18
|
+
opts.to_h.each_key do |k|
|
|
19
|
+
unless fields.include?(k)
|
|
20
|
+
raise ArgumentError.new("Request `opts` keys must be one of #{fields.keys}, got #{k.inspect}")
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
else
|
|
24
|
+
raise ArgumentError.new("Request `opts` must be a Hash or RequestOptions, got #{opts.inspect}")
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @!attribute idempotency_key
|
|
29
|
+
# Idempotency key to send with request and all associated retries. Will only be
|
|
30
|
+
# sent for write requests.
|
|
31
|
+
#
|
|
32
|
+
# @return [String, nil]
|
|
33
|
+
optional :idempotency_key, String
|
|
34
|
+
|
|
35
|
+
# @!attribute extra_query
|
|
36
|
+
# Extra query params to send with the request. These are `.merge`’d into any
|
|
37
|
+
# `query` given at the client level.
|
|
38
|
+
#
|
|
39
|
+
# @return [Hash{String=>Array<String>, String, nil}, nil]
|
|
40
|
+
optional :extra_query, Vatsense::Internal::Type::HashOf[Vatsense::Internal::Type::ArrayOf[String]]
|
|
41
|
+
|
|
42
|
+
# @!attribute extra_headers
|
|
43
|
+
# Extra headers to send with the request. These are `.merged`’d into any
|
|
44
|
+
# `extra_headers` given at the client level.
|
|
45
|
+
#
|
|
46
|
+
# @return [Hash{String=>String, nil}, nil]
|
|
47
|
+
optional :extra_headers, Vatsense::Internal::Type::HashOf[String, nil?: true]
|
|
48
|
+
|
|
49
|
+
# @!attribute extra_body
|
|
50
|
+
# Extra data to send with the request. These are deep merged into any data
|
|
51
|
+
# generated as part of the normal request.
|
|
52
|
+
#
|
|
53
|
+
# @return [Object, nil]
|
|
54
|
+
optional :extra_body, Vatsense::Internal::Type::HashOf[Vatsense::Internal::Type::Unknown]
|
|
55
|
+
|
|
56
|
+
# @!attribute max_retries
|
|
57
|
+
# Maximum number of retries to attempt after a failed initial request.
|
|
58
|
+
#
|
|
59
|
+
# @return [Integer, nil]
|
|
60
|
+
optional :max_retries, Integer
|
|
61
|
+
|
|
62
|
+
# @!attribute timeout
|
|
63
|
+
# Request timeout in seconds.
|
|
64
|
+
#
|
|
65
|
+
# @return [Float, nil]
|
|
66
|
+
optional :timeout, Float
|
|
67
|
+
|
|
68
|
+
# @!method initialize(values = {})
|
|
69
|
+
# Returns a new instance of RequestOptions.
|
|
70
|
+
#
|
|
71
|
+
# @param values [Hash{Symbol=>Object}]
|
|
72
|
+
|
|
73
|
+
define_sorbet_constant!(:OrHash) do
|
|
74
|
+
T.type_alias { T.any(Vatsense::RequestOptions, Vatsense::Internal::AnyHash) }
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Vatsense
|
|
4
|
+
module Resources
|
|
5
|
+
# Country and province information
|
|
6
|
+
class Countries
|
|
7
|
+
# Some parameter documentations has been truncated, see
|
|
8
|
+
# {Vatsense::Models::CountryListParams} for more details.
|
|
9
|
+
#
|
|
10
|
+
# Returns a list of all countries, including whether they are subject to VAT/GST
|
|
11
|
+
# and whether they are subject to EU VAT. Each country is returned as a country
|
|
12
|
+
# object.
|
|
13
|
+
#
|
|
14
|
+
# You can optionally filter by country code or IP address.
|
|
15
|
+
#
|
|
16
|
+
# @overload list(country_code: nil, ip_address: nil, request_options: {})
|
|
17
|
+
#
|
|
18
|
+
# @param country_code [String] A 2-character ISO 3166-1 alpha-2 country code (e.g. "GB", "FR").
|
|
19
|
+
#
|
|
20
|
+
# @param ip_address [String] An IPv4 or IPv6 address. If provided, the country will be determined from the IP
|
|
21
|
+
#
|
|
22
|
+
# @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
23
|
+
#
|
|
24
|
+
# @return [Vatsense::Models::CountryListResponse]
|
|
25
|
+
#
|
|
26
|
+
# @see Vatsense::Models::CountryListParams
|
|
27
|
+
def list(params = {})
|
|
28
|
+
parsed, options = Vatsense::CountryListParams.dump_request(params)
|
|
29
|
+
query = Vatsense::Internal::Util.encode_query_params(parsed)
|
|
30
|
+
@client.request(
|
|
31
|
+
method: :get,
|
|
32
|
+
path: "countries",
|
|
33
|
+
query: query,
|
|
34
|
+
model: Vatsense::Models::CountryListResponse,
|
|
35
|
+
options: options
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Retrieve a list of all provinces within a given country.
|
|
40
|
+
#
|
|
41
|
+
# @overload list_provinces(country_code:, request_options: {})
|
|
42
|
+
#
|
|
43
|
+
# @param country_code [String] A 2-character ISO 3166-1 alpha-2 country code (e.g. "CA").
|
|
44
|
+
#
|
|
45
|
+
# @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
46
|
+
#
|
|
47
|
+
# @return [Vatsense::Models::CountryListProvincesResponse]
|
|
48
|
+
#
|
|
49
|
+
# @see Vatsense::Models::CountryListProvincesParams
|
|
50
|
+
def list_provinces(params)
|
|
51
|
+
parsed, options = Vatsense::CountryListProvincesParams.dump_request(params)
|
|
52
|
+
query = Vatsense::Internal::Util.encode_query_params(parsed)
|
|
53
|
+
@client.request(
|
|
54
|
+
method: :get,
|
|
55
|
+
path: "countries/provinces",
|
|
56
|
+
query: query,
|
|
57
|
+
model: Vatsense::Models::CountryListProvincesResponse,
|
|
58
|
+
options: options
|
|
59
|
+
)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# @api private
|
|
63
|
+
#
|
|
64
|
+
# @param client [Vatsense::Client]
|
|
65
|
+
def initialize(client:)
|
|
66
|
+
@client = client
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Vatsense
|
|
4
|
+
module Resources
|
|
5
|
+
# Currency exchange rates and conversion
|
|
6
|
+
class Currency
|
|
7
|
+
# Some parameter documentations has been truncated, see
|
|
8
|
+
# {Vatsense::Models::CurrencyListParams} for more details.
|
|
9
|
+
#
|
|
10
|
+
# Returns a list of all currency conversion rates sourced from HMRC (GBP) and the
|
|
11
|
+
# European Central Bank (EUR).
|
|
12
|
+
#
|
|
13
|
+
# You can optionally filter by source and target currency.
|
|
14
|
+
#
|
|
15
|
+
# @overload list(from: nil, to: nil, request_options: {})
|
|
16
|
+
#
|
|
17
|
+
# @param from [String] The 3-character currency code(s) to convert from (e.g. "USD", "CAD").
|
|
18
|
+
#
|
|
19
|
+
# @param to [Symbol, Vatsense::Models::CurrencyListParams::To] The 3-character target currency code. Must be either "GBP" or "EUR".
|
|
20
|
+
#
|
|
21
|
+
# @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
22
|
+
#
|
|
23
|
+
# @return [Vatsense::Models::CurrencyListResponse]
|
|
24
|
+
#
|
|
25
|
+
# @see Vatsense::Models::CurrencyListParams
|
|
26
|
+
def list(params = {})
|
|
27
|
+
parsed, options = Vatsense::CurrencyListParams.dump_request(params)
|
|
28
|
+
query = Vatsense::Internal::Util.encode_query_params(parsed)
|
|
29
|
+
@client.request(
|
|
30
|
+
method: :get,
|
|
31
|
+
path: "currency",
|
|
32
|
+
query: query,
|
|
33
|
+
model: Vatsense::Models::CurrencyListResponse,
|
|
34
|
+
options: options
|
|
35
|
+
)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Some parameter documentations has been truncated, see
|
|
39
|
+
# {Vatsense::Models::CurrencyCalculateVatPriceParams} for more details.
|
|
40
|
+
#
|
|
41
|
+
# Calculate the inclusive and exclusive VAT price on a given amount and VAT rate.
|
|
42
|
+
# This is a standalone calculation that does not look up rates by country.
|
|
43
|
+
#
|
|
44
|
+
# @overload calculate_vat_price(price:, tax_type:, vat_rate:, request_options: {})
|
|
45
|
+
#
|
|
46
|
+
# @param price [String] The price to calculate on. Must be a string with exactly 2 decimal places (e.g.
|
|
47
|
+
#
|
|
48
|
+
# @param tax_type [Symbol, Vatsense::Models::CurrencyCalculateVatPriceParams::TaxType] Whether the provided price is inclusive or exclusive of VAT.
|
|
49
|
+
#
|
|
50
|
+
# @param vat_rate [Float] A percentage VAT rate to use for the calculation.
|
|
51
|
+
#
|
|
52
|
+
# @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
53
|
+
#
|
|
54
|
+
# @return [Vatsense::Models::CurrencyCalculateVatPriceResponse]
|
|
55
|
+
#
|
|
56
|
+
# @see Vatsense::Models::CurrencyCalculateVatPriceParams
|
|
57
|
+
def calculate_vat_price(params)
|
|
58
|
+
parsed, options = Vatsense::CurrencyCalculateVatPriceParams.dump_request(params)
|
|
59
|
+
query = Vatsense::Internal::Util.encode_query_params(parsed)
|
|
60
|
+
@client.request(
|
|
61
|
+
method: :get,
|
|
62
|
+
path: "currency/price",
|
|
63
|
+
query: query,
|
|
64
|
+
model: Vatsense::Models::CurrencyCalculateVatPriceResponse,
|
|
65
|
+
options: options
|
|
66
|
+
)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Some parameter documentations has been truncated, see
|
|
70
|
+
# {Vatsense::Models::CurrencyConvertParams} for more details.
|
|
71
|
+
#
|
|
72
|
+
# Convert a foreign currency amount to either GBP or EUR using official exchange
|
|
73
|
+
# rates.
|
|
74
|
+
#
|
|
75
|
+
# GBP rates are from HMRC (updated on the 1st of every month). EUR rates are from
|
|
76
|
+
# the European Central Bank (updated around 16:00 CET on working days).
|
|
77
|
+
#
|
|
78
|
+
# @overload convert(amount:, from:, to:, request_options: {})
|
|
79
|
+
#
|
|
80
|
+
# @param amount [String] The amount to convert. Must be a string with exactly 2 decimal places (e.g. "39.
|
|
81
|
+
#
|
|
82
|
+
# @param from [String] The 3-character source currency code (e.g. "USD", "CAD").
|
|
83
|
+
#
|
|
84
|
+
# @param to [Symbol, Vatsense::Models::CurrencyConvertParams::To] The 3-character target currency code. Must be either "GBP" or "EUR".
|
|
85
|
+
#
|
|
86
|
+
# @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
87
|
+
#
|
|
88
|
+
# @return [Vatsense::Models::CurrencyConvertResponse]
|
|
89
|
+
#
|
|
90
|
+
# @see Vatsense::Models::CurrencyConvertParams
|
|
91
|
+
def convert(params)
|
|
92
|
+
parsed, options = Vatsense::CurrencyConvertParams.dump_request(params)
|
|
93
|
+
query = Vatsense::Internal::Util.encode_query_params(parsed)
|
|
94
|
+
@client.request(
|
|
95
|
+
method: :get,
|
|
96
|
+
path: "currency/convert",
|
|
97
|
+
query: query,
|
|
98
|
+
model: Vatsense::Models::CurrencyConvertResponse,
|
|
99
|
+
options: options
|
|
100
|
+
)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# @api private
|
|
104
|
+
#
|
|
105
|
+
# @param client [Vatsense::Client]
|
|
106
|
+
def initialize(client:)
|
|
107
|
+
@client = client
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Vatsense
|
|
4
|
+
module Resources
|
|
5
|
+
class Invoice
|
|
6
|
+
# VAT-compliant invoice management
|
|
7
|
+
class Item
|
|
8
|
+
# Retrieve a specific line item from an invoice.
|
|
9
|
+
#
|
|
10
|
+
# @overload retrieve(item_id, invoice_id:, request_options: {})
|
|
11
|
+
#
|
|
12
|
+
# @param item_id [String] The unique identifier of the invoice item.
|
|
13
|
+
#
|
|
14
|
+
# @param invoice_id [String] The unique identifier of the invoice.
|
|
15
|
+
#
|
|
16
|
+
# @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
17
|
+
#
|
|
18
|
+
# @return [Vatsense::Models::Invoice::ItemRetrieveResponse]
|
|
19
|
+
#
|
|
20
|
+
# @see Vatsense::Models::Invoice::ItemRetrieveParams
|
|
21
|
+
def retrieve(item_id, params)
|
|
22
|
+
parsed, options = Vatsense::Invoice::ItemRetrieveParams.dump_request(params)
|
|
23
|
+
invoice_id =
|
|
24
|
+
parsed.delete(:invoice_id) do
|
|
25
|
+
raise ArgumentError.new("missing required path argument #{_1}")
|
|
26
|
+
end
|
|
27
|
+
@client.request(
|
|
28
|
+
method: :get,
|
|
29
|
+
path: ["invoice/%1$s/item/%2$s", invoice_id, item_id],
|
|
30
|
+
model: Vatsense::Models::Invoice::ItemRetrieveResponse,
|
|
31
|
+
options: options
|
|
32
|
+
)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Update a specific line item on an invoice.
|
|
36
|
+
#
|
|
37
|
+
# @overload update(item_id, invoice_id:, item:, price_each:, quantity:, vat_rate:, discount_rate: nil, request_options: {})
|
|
38
|
+
#
|
|
39
|
+
# @param item_id [String] Path param: The unique identifier of the invoice item.
|
|
40
|
+
#
|
|
41
|
+
# @param invoice_id [String] Path param: The unique identifier of the invoice.
|
|
42
|
+
#
|
|
43
|
+
# @param item [String] Body param: The description of the line item.
|
|
44
|
+
#
|
|
45
|
+
# @param price_each [Float] Body param: The price per item. Must be a decimal with 2 decimal places.
|
|
46
|
+
#
|
|
47
|
+
# @param quantity [Float] Body param: The quantity of the item.
|
|
48
|
+
#
|
|
49
|
+
# @param vat_rate [Float] Body param: A percentage VAT rate for this item.
|
|
50
|
+
#
|
|
51
|
+
# @param discount_rate [Float] Body param: A percentage discount to apply to the price.
|
|
52
|
+
#
|
|
53
|
+
# @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
54
|
+
#
|
|
55
|
+
# @return [Vatsense::Models::InvoiceResponse]
|
|
56
|
+
#
|
|
57
|
+
# @see Vatsense::Models::Invoice::ItemUpdateParams
|
|
58
|
+
def update(item_id, params)
|
|
59
|
+
parsed, options = Vatsense::Invoice::ItemUpdateParams.dump_request(params)
|
|
60
|
+
invoice_id =
|
|
61
|
+
parsed.delete(:invoice_id) do
|
|
62
|
+
raise ArgumentError.new("missing required path argument #{_1}")
|
|
63
|
+
end
|
|
64
|
+
@client.request(
|
|
65
|
+
method: :patch,
|
|
66
|
+
path: ["invoice/%1$s/item/%2$s", invoice_id, item_id],
|
|
67
|
+
body: parsed,
|
|
68
|
+
model: Vatsense::InvoiceResponse,
|
|
69
|
+
options: options
|
|
70
|
+
)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Remove a specific line item from an invoice.
|
|
74
|
+
#
|
|
75
|
+
# @overload delete(item_id, invoice_id:, request_options: {})
|
|
76
|
+
#
|
|
77
|
+
# @param item_id [String] The unique identifier of the invoice item.
|
|
78
|
+
#
|
|
79
|
+
# @param invoice_id [String] The unique identifier of the invoice.
|
|
80
|
+
#
|
|
81
|
+
# @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
82
|
+
#
|
|
83
|
+
# @return [Vatsense::Models::InvoiceResponse]
|
|
84
|
+
#
|
|
85
|
+
# @see Vatsense::Models::Invoice::ItemDeleteParams
|
|
86
|
+
def delete(item_id, params)
|
|
87
|
+
parsed, options = Vatsense::Invoice::ItemDeleteParams.dump_request(params)
|
|
88
|
+
invoice_id =
|
|
89
|
+
parsed.delete(:invoice_id) do
|
|
90
|
+
raise ArgumentError.new("missing required path argument #{_1}")
|
|
91
|
+
end
|
|
92
|
+
@client.request(
|
|
93
|
+
method: :delete,
|
|
94
|
+
path: ["invoice/%1$s/item/%2$s", invoice_id, item_id],
|
|
95
|
+
model: Vatsense::InvoiceResponse,
|
|
96
|
+
options: options
|
|
97
|
+
)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Add one or more line items to an existing invoice.
|
|
101
|
+
#
|
|
102
|
+
# @overload add(invoice_id, items:, request_options: {})
|
|
103
|
+
#
|
|
104
|
+
# @param invoice_id [String] The unique identifier of the invoice.
|
|
105
|
+
#
|
|
106
|
+
# @param items [Array<Vatsense::Models::Invoice::InvoiceItemInput>]
|
|
107
|
+
#
|
|
108
|
+
# @param request_options [Vatsense::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
109
|
+
#
|
|
110
|
+
# @return [Vatsense::Models::InvoiceResponse]
|
|
111
|
+
#
|
|
112
|
+
# @see Vatsense::Models::Invoice::ItemAddParams
|
|
113
|
+
def add(invoice_id, params)
|
|
114
|
+
parsed, options = Vatsense::Invoice::ItemAddParams.dump_request(params)
|
|
115
|
+
@client.request(
|
|
116
|
+
method: :post,
|
|
117
|
+
path: ["invoice/%1$s/item", invoice_id],
|
|
118
|
+
body: parsed,
|
|
119
|
+
model: Vatsense::InvoiceResponse,
|
|
120
|
+
options: options
|
|
121
|
+
)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# @api private
|
|
125
|
+
#
|
|
126
|
+
# @param client [Vatsense::Client]
|
|
127
|
+
def initialize(client:)
|
|
128
|
+
@client = client
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|