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