avatax 26.7.3 → 26.9.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 503a067927399814061c9c16324bbe9e28035dceedcaa696981647c843e9bea8
4
- data.tar.gz: 27f1dbf064ddea4929a17da85820eec8bbe7bb673d9448a62ca6127a51a1fffd
3
+ metadata.gz: 1f8c336e3e4831d44fedfc0d6eee6bf8b7e35a974e70e82bfa734de622db387e
4
+ data.tar.gz: 695e3da045223f974a6d7c7e944cd72e96d0e3bd806cb372ac65c4b66e30c169
5
5
  SHA512:
6
- metadata.gz: 667efbac861fd6b5aec23b846d71ad5c4ea5437e3129bf65f119494134141eba257bef4f5b1035ac20431cd9d37a49cc0548030aa3d5810e791f0538b3831131
7
- data.tar.gz: b1e6de92a39be850eb7ddfe0a1f7486ce53774dbc6e64dccad525d0ec07f8400cbd34462023abec2da16ad05b96862f0af7fa777e0abc572a4aafd562f5dedeb
6
+ metadata.gz: a0dac95a96ab41465b170b50cd2f639d664be9974caf6bf52dca327d36f0e37b0b916dc96d95ddc45afcd8637f6054f9b34734f90fd2f1518d83777a46baa48e
7
+ data.tar.gz: bb7f1ad8b523207136cf74e960542cc489166e49d864a1b4244ab5c4d36d3a9c81305ae3b8fac43817301d820ddae643f18d4a329a36e6c38a14643bf677c12e
@@ -84,6 +84,33 @@ module AvaTax
84
84
  def create_batches(companyId, model) path = "/api/v2/companies/#{companyId}/batches"
85
85
  post(path, model, {}, AvaTax::VERSION) end
86
86
 
87
+ # Create custom rules import batch.
88
+ #
89
+ # Create a new custom rules import batch object attached to this company.
90
+ #
91
+ # The batch payload is the Custom Rules export envelope (tax rules, custom rules, and
92
+ # advanced rules). It is stored as JSON and processed downstream by BatchV2.
93
+ #
94
+ # When a custom rules import batch is created, it is added to the AvaTax Batch v2 Queue and will be
95
+ # processed in the order it was received. To check the
96
+ # status of a batch, fetch the batch and retrieve the results of the batch
97
+ # operation.
98
+ #
99
+ # The maximum content length of the request body is limited to 28.6 MB. If this limit
100
+ # exceeds then a 404 Not Found status is returned (possibly with a CORS error if
101
+ # the API is called from a browser). In this situation, please split the request into
102
+ # smaller batches.
103
+ #
104
+ # ### Security Policies
105
+ #
106
+ # * This API requires one of the following user roles: AccountAdmin, AccountOperator, AvaTaxOnlyAccountAdmin, AvaTaxOnlyCompanyAdmin, BatchServiceAdmin, CompanyAdmin, CSPTester, FirmAdmin, SSTAdmin, SystemAdmin, SystemOperator, TechnicalSupportAdmin.
107
+ # Swagger Name: AvaTaxClient
108
+ # @param companyId [Integer] The ID of the company that owns this batch.
109
+ # @param model [Object] The custom rules import batch you wish to create.
110
+ # @return [Object]
111
+ def create_custom_rules_batch(companyId, model) path = "/api/v2/companies/#{companyId}/batches/customrules"
112
+ post(path, model, {}, AvaTax::VERSION) end
113
+
87
114
  # Create item import batch.
88
115
  #
89
116
  # Create a new item import batch objects attached to this company.
@@ -123,6 +150,10 @@ module AvaTax
123
150
  # required, please use the
124
151
  # [CreateTransaction API](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Transactions/CreateTransaction/).
125
152
  #
153
+ # Set `skipTransactionValidation` to true to defer transaction type, company code, and
154
+ # nested model validation until BatchV2 processes each transaction. Per-transaction
155
+ # validation failures are then written to the batch error file without blocking upload.
156
+ #
126
157
  # The maximum content length of the request body is limited to 28.6 MB. If this limit
127
158
  # is exceeded, a 404 Not Found status will be returned (possibly with a CORS error if
128
159
  # the API is called from a browser). In this situation, please split the request into
@@ -0,0 +1,103 @@
1
+ module AvaTax
2
+ class Client
3
+ module CurrencyRoundingRules
4
+
5
+
6
+ # Create one or more currency rounding rules
7
+ #
8
+ # Create one or more currency rounding rules for this account. Each rule sets the rounding
9
+ # precision for a currency over an effective-date window.
10
+ #
11
+ # Windows for the same currency may overlap - for a given tax date the rule with the latest
12
+ # `effDate` whose window contains that date applies. Two rules that share a `currencyCode`
13
+ # and `effDate` are ambiguous and are rejected, whether the duplicate is against an existing
14
+ # rule or against another rule in the same request.
15
+ #
16
+ # A rule can only be created for a currency that already has an Avalara system default (see
17
+ # `GET api/v2/definitions/currencyroundingrules`).
18
+ #
19
+ # ### Security Policies
20
+ #
21
+ # * This API requires one of the following user roles: AccountAdmin, AvaTaxOnlyAccountAdmin, BatchServiceAdmin, CSPTester, SSTAdmin, TechnicalSupportAdmin.
22
+ # Swagger Name: AvaTaxClient
23
+ # @param accountId [Integer] The unique ID number of the account that owns these currency rounding rules.
24
+ # @param model [AccountCurrencyRoundingRuleModel[]] The currency rounding rule object or objects you wish to create.
25
+ # @return [AccountCurrencyRoundingRuleModel[]]
26
+ def create_currency_rounding_rules(accountId, model) path = "/api/v2/accounts/#{accountId}/currencyroundingrules"
27
+ post(path, model, {}, AvaTax::VERSION) end
28
+
29
+ # Delete a single currency rounding rule
30
+ #
31
+ # Deletes the currency rounding rule identified by this URL. After deletion, calculation for
32
+ # that currency falls back to the Avalara default rule (or standard decimal precision if none).
33
+ #
34
+ # ### Security Policies
35
+ #
36
+ # * This API requires one of the following user roles: AccountAdmin, AvaTaxOnlyAccountAdmin, BatchServiceAdmin, CSPTester, SSTAdmin, TechnicalSupportAdmin.
37
+ # Swagger Name: AvaTaxClient
38
+ # @param accountId [Integer] The unique ID number of the account that owns this currency rounding rule.
39
+ # @param id [Integer] The unique ID number of the currency rounding rule to delete.
40
+ # @return [ErrorDetail[]]
41
+ def delete_currency_rounding_rule(accountId, id) path = "/api/v2/accounts/#{accountId}/currencyroundingrules/#{id}"
42
+ delete(path, {}, AvaTax::VERSION) end
43
+
44
+ # Retrieve a single currency rounding rule
45
+ #
46
+ # Retrieves a single currency rounding rule identified by this URL.
47
+ #
48
+ # ### Security Policies
49
+ #
50
+ # * This API requires one of the following user roles: AccountAdmin, AccountUser, AvaTaxOnlyAccountAdmin, AvaTaxOnlyAccountUser, AvaTaxOnlyCompanyAdmin, AvaTaxOnlyCompanyUser, BatchServiceAdmin, CompanyAdmin, CompanyUser, CSPAdmin, CSPTester, ECMAccountUser, ECMCompanyUser, ReturnsOnlyAccountAdmin, ReturnsOnlyAccountUser, ReturnsOnlyCompanyAdmin, ReturnsOnlyCompanyUser, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser.
51
+ # Swagger Name: AvaTaxClient
52
+ # @param accountId [Integer] The ID of the account that owns this currency rounding rule.
53
+ # @param id [Integer] The unique ID number of the currency rounding rule to retrieve.
54
+ # @return [Object]
55
+ def get_currency_rounding_rule(accountId, id) path = "/api/v2/accounts/#{accountId}/currencyroundingrules/#{id}"
56
+ get(path, {}, AvaTax::VERSION) end
57
+
58
+ # Retrieve all currency rounding rules for this account.
59
+ #
60
+ # Lists all account-specific currency rounding rules for this account.
61
+ #
62
+ # Only rules created for this account are returned. When no rule exists for a currency on a
63
+ # transaction's tax date, the tax engine automatically applies the Avalara system default for
64
+ # that currency; if no system default exists, standard decimal precision is used (no rounding).
65
+ #
66
+ # Each rule's `precision` is `0` (whole currency unit) or `2` (standard decimal cents).
67
+ #
68
+ # Search for specific objects using the criteria in the `$filter` parameter; full documentation is available on [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/) .
69
+ # Paginate your results using the `$top`, `$skip`, and `$orderBy` parameters.
70
+ #
71
+ # ### Security Policies
72
+ #
73
+ # * This API requires one of the following user roles: AccountAdmin, AccountUser, AvaTaxOnlyAccountAdmin, AvaTaxOnlyAccountUser, AvaTaxOnlyCompanyAdmin, AvaTaxOnlyCompanyUser, BatchServiceAdmin, CompanyAdmin, CompanyUser, CSPAdmin, CSPTester, ECMAccountUser, ECMCompanyUser, ReturnsOnlyAccountAdmin, ReturnsOnlyAccountUser, ReturnsOnlyCompanyAdmin, ReturnsOnlyCompanyUser, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser.
74
+ # Swagger Name: AvaTaxClient
75
+ # @param accountId [Integer] The ID of the account whose currency rounding rules you wish to list.
76
+ # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).<br />*Not filterable:* createdDate, createdUserId, modifiedUserId
77
+ # @param include [String] A comma separated list of additional data to retrieve.
78
+ # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records.
79
+ # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets.
80
+ # @param orderBy [String] A comma separated list of sort statements in the format `(fieldname) [ASC|DESC]`, for example `id ASC`.
81
+ # @return [FetchResult]
82
+ def list_currency_rounding_rules(accountId, options={}) path = "/api/v2/accounts/#{accountId}/currencyroundingrules"
83
+ get(path, options, AvaTax::VERSION) end
84
+
85
+ # Update a currency rounding rule
86
+ #
87
+ # Replace the existing currency rounding rule at this URL with an updated object.
88
+ #
89
+ # All data from the existing object will be replaced with data in the object you PUT.
90
+ #
91
+ # ### Security Policies
92
+ #
93
+ # * This API requires one of the following user roles: AccountAdmin, AvaTaxOnlyAccountAdmin, BatchServiceAdmin, CSPTester, SSTAdmin, TechnicalSupportAdmin.
94
+ # Swagger Name: AvaTaxClient
95
+ # @param accountId [Integer] The unique ID number of the account that owns this currency rounding rule.
96
+ # @param id [Integer] The unique ID number of the currency rounding rule to replace.
97
+ # @param model [Object] The new currency rounding rule object to store.
98
+ # @return [Object]
99
+ def update_currency_rounding_rule(accountId, id, model) path = "/api/v2/accounts/#{accountId}/currencyroundingrules/#{id}"
100
+ put(path, model, {}, AvaTax::VERSION) end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,493 @@
1
+ module AvaTax
2
+ class Client
3
+ module CustomRules
4
+
5
+
6
+ # Create a new custom rule
7
+ #
8
+ # Creates a new custom rule object attached to this company.
9
+ #
10
+ # Custom rules modify the default AvaTax behavior during tax calculation, customizing it to
11
+ # match requirements specific to your business. Rules can be used to change the taxability of
12
+ # an item, change the tax base of an item, alter the tax rate, modify transaction fields
13
+ # and addresses, allocate and split line items, update the location code, and more.
14
+ #
15
+ # Please use custom rules carefully and ensure they match the behavior agreed upon with your
16
+ # auditor, legal representative, and accounting team.
17
+ #
18
+ # ---
19
+ #
20
+ # Rules are built from modular _components_. A component can be a rule-wide variable or a
21
+ # _node_ in the directed acyclic graph defining the rule's behavior. To build a rule from scratch,
22
+ # start with `GetCustomRuleComponents` to retrieve supported components and the JSON `dataSchema` for each.
23
+ #
24
+ # Ensure each component has a unique `id` (for _Variable_ components, this is its name) and that its `data` field conforms to the node subtype's `dataSchema`.
25
+ # The `data` must be a single-escaped JSON string, not a nested object. Do not quote numbers or booleans, use only valid enumeration values, and keep
26
+ # arrays arrays even if they only contain a single element.
27
+ #
28
+ # _Nodes_ may be _Conditions_ or _Actions_. When deciding which node to use, prefer nodes for specific use cases,
29
+ # such as `MatchAddress` and `UpdateAddress`, over generic ones `MatchField` and `UpdateField` when possible.
30
+ #
31
+ # Use the `GetCustomRuleFields` endpoint to query the fields that can be used in nodes which accept arbitrary fields, such as `MatchField` and `UpdateField`.
32
+ #
33
+ # Each node defines its outgoing edges by specifying its child node IDs in the `next` array. The result of a node execution is a set of matches
34
+ # (e.g. which lines on the document met the criteria). Node results behave as follows:
35
+ # - Sequences *intersect* their results ("AND")
36
+ # - Branches *propagate* their results as the input to each child
37
+ # - Merges *union* their results ("OR")
38
+ #
39
+ # The `scope` of a condition is what part of the transaction it operates on: `Document`, `SomeLines`, `OneLine`, `AllLines`, or `NoLines`.
40
+ # The `scope` of an action determines what part of the transaction to apply changes to: `Document`, `MatchedLines`, `NotMatchedLines`, or `AllLines`.
41
+ #
42
+ # When using a rule to adjust taxability,
43
+ # - To exempt a line from tax entirely, use an `UpdateField` node to set its tax code to `NT` (Avalara's standard non-taxable code).
44
+ # - Place the UpdateField early in the rule so it takes effect pre-calculation.
45
+ # - To impact tax details, the MatchTax condition node is required to match on jurisdiction + tax type combinations.
46
+ # - There can only be one MatchTax node per rule, but it can have more than one criteria set.
47
+ # - Each criteria set has `matchTaxId` (unique identifier), `country`, `region`, `jurisdictionTypeId`, `jurisCode`, `taxTypeCode`, `taxSubType`, and `rateTypeCode`.
48
+ # - Tax subtypes and rate types may be wildcard (`*` or `ALL`) for most rule types.
49
+ # - Always use full names for `jurisdictionTypeId` (`Country`, `State`, `City`, `County`, `Special`) instead of their abbreviations.
50
+ # - A wildcard jurisdiction code (`*` or `ALL`) applies the treatment to all jurisdictions of the given `jurisdictionTypeId`.
51
+ # - `TaxRule*` action nodes define how the tax is to be adjusted.
52
+ # - `TaxRuleProductTaxability`: sets an item's taxability and assigns its rate type, so it requires a specific (non-wildcard) `rateTypeCode`.
53
+ # - `TaxRuleRateOverride`: overrides Avalara's tax rate.
54
+ # - `TaxRuleBaseOverride`: changes the tax base as a proportion of the original amount (e.g. `0.5` = 50% taxable).
55
+ # - `TaxRuleExemptEntity`: exempts the matched line for the jurisdiction and tax type; typically paired with a MatchEntityUseCode condition.
56
+ # - Caps and thresholds can be applied with the `TaxRuleProductTaxability` or `TaxRuleRateOverride` actions.
57
+ # - A threshold buckets amounts up to and including the threshold as non-taxable.
58
+ # - A cap limits the taxable amount (per unit by default, multiplied by quantity); amounts above the cap become non-taxable.
59
+ # - Add the `Document` option to apply the cap across all matching lines of the document.
60
+ # - A `default` value must be provided in `TaxRule*` nodes. Overrides for specific jurisdictions are optional and provided in an `overrides` array (NOT a dictionary).
61
+ # - If the tax treatment (rate, taxability, etc.) is the same for all configured jurisdictions, set only the `default` value and omit `overrides`.
62
+ # - You only need to set overrides for values that differ from the default.
63
+ # - If a `matchTaxId` member is present in an override, it will apply to the corresponding criteria in the MatchTax node.
64
+ # - If a `matchTaxId` member is NOT present in an override, pattern matching is performed on the override criteria fields with omitted fields treated as wildcards.
65
+ # - When multiple tax rules apply, a more specific tax type/subtype beats a wildcard, and the latest effective date wins.
66
+ # - A Tax Code and Tariff Code condition are mutually exclusive.
67
+ # - Expressions cannot be used in nodes which directly affect tax treatment.
68
+ #
69
+ # Some nodes support _expressions_, which may have variable values evaluated at transaction time.
70
+ # Expression-supporting fields should be indicated on the node's data schema. Expressions allow
71
+ # formulas using arithmetic, substitutions, and references to transaction fields; for example:
72
+ # - `{{Document.TotalAmount}} * 0.1` (10% of the total document amount)
73
+ # - `{{Line.UserDefinedFields.Udf8}}` (Line-level user-defined field 8)
74
+ # - `{{Line.Ref1}}{{Line.Ref2}}` (A line's Ref1 and Ref2 values concatenated)
75
+ # - `2 + {{MyVar}}` (The value of the "MyVar" variable defined elsewhere in the rule, plus 2)
76
+ #
77
+ # Use the `GetCustomRuleTokens` endpoint to enumerate or search for valid tokens that can be used in expressions.
78
+ #
79
+ # Lookup files / reference lists may be used where expressions are supported. Use the syntax `{{FileName.ColumnName}}` to match against
80
+ # a column in a Condition and use the value from another column in the matched row in an Action. Matching scopes must be compatible -
81
+ # line-level matches cannot be used to update a document-level field.
82
+ #
83
+ # Rule nodes are assigned execution steps based on their contents and surrounding nodes. For instance, nodes that follow tax
84
+ # rule actions (`TaxRule*`) or require a calculated field (such as taxable amount) are executed after tax calculation instead
85
+ # of before calculation. Not every node type may execute in every step. Place them accordingly to their `validSteps`.
86
+ # A rule will be rejected if an ordering cannot be resolved. Rules execute in the following stages:
87
+ # - `OnRequest`: On the API request values, before document validation.
88
+ # - `AfterAddressValidation`: After addresses have been geo-coded / validated once.
89
+ # - `AfterSourcing`: After jurisdictions and tax types have been evaluated, but before tax calculation.
90
+ # - `AfterDetails`: After tax calculation details have been generated.
91
+ # - `OnResponse`: After the document has been saved, if applicable; on the API response only.
92
+ #
93
+ # ---
94
+ #
95
+ # It is recommended to validate the rule with the `ValidateCustomRule` endpoint before creating it.
96
+ # This will let you review the rule's execution plan and any associated diagnostic information before saving it.
97
+ #
98
+ # ### Security Policies
99
+ #
100
+ # * This API requires one of the following user roles: AccountAdmin, AvaTaxOnlyAccountAdmin, AvaTaxOnlyCompanyAdmin, BatchServiceAdmin, CompanyAdmin, CSPTester, SSTAdmin, TechnicalSupportAdmin.
101
+ # Swagger Name: AvaTaxClient
102
+ # @param companyId [Integer] The ID of the company to create the rule for.
103
+ # @param model [Object] The rule you wish to create.
104
+ # @return [Object]
105
+ def create_custom_rule(companyId, model) path = "/api/v2/companies/#{companyId}/customrules"
106
+ post(path, model, {}, AvaTax::VERSION) end
107
+
108
+ # Delete a custom rule
109
+ #
110
+ # Delete a single custom rule object attached to this company.
111
+ #
112
+ # To maintain tax calculation consistency for recalculation of backdated transactions, it is
113
+ # recommended to expire a rule (set a definite end date) instead of deleting it when the rule
114
+ # requirements remain accurate for a past time period. This will keep the old version of the
115
+ # rule active for that time period so historical transactions re-calculate with the appropriate rule.
116
+ #
117
+ # If only minor changes are required (i.e. the overall purpose of the rule does not change),
118
+ # and historical transactions would not be significantly impacted by the update, prefer using
119
+ # the UpdateCustomRule operation instead of deleting and re-creating the rule.
120
+ #
121
+ # Please use custom rules carefully and ensure they match the behavior agreed upon with your
122
+ # auditor, legal representative, and accounting team.
123
+ #
124
+ # ### Security Policies
125
+ #
126
+ # * This API requires one of the following user roles: AccountAdmin, AvaTaxOnlyAccountAdmin, AvaTaxOnlyCompanyAdmin, BatchServiceAdmin, CompanyAdmin, CSPTester, SSTAdmin, TechnicalSupportAdmin.
127
+ # Swagger Name: AvaTaxClient
128
+ # @param companyId [Integer] The ID of the company that owns the rule.
129
+ # @param id [Integer] The ID of the rule to delete.
130
+ # @return [ErrorDetail[]]
131
+ def delete_custom_rule(companyId, id) path = "/api/v2/companies/#{companyId}/customrules/#{id}"
132
+ delete(path, {}, AvaTax::VERSION) end
133
+
134
+ # Export custom rules for a company
135
+ #
136
+ # Export all rule objects defined for this company as a portable JSON envelope.
137
+ #
138
+ # The export set can be filtered and paginated using the same query parameters
139
+ # as the `ListCustomRules` endpoint.
140
+ #
141
+ # This endpoint uses OData filter syntax in order to support querying nested properties;
142
+ # note the following differences from standard AvaTax filtering:
143
+ # - Instead of the infix form, use the contains() function, e.g. `contains(description, 'Amount')`
144
+ # - Query collection fields with the any()/all() lambda operators, e.g. `subtype/any(r: r eq 'UpdateLocationCode')`.
145
+ #
146
+ # The exported envelope can be re-imported into another company or account using the
147
+ # `CreateCustomRulesBatch` endpoint.
148
+ #
149
+ # By default, the export includes all rule types:
150
+ # - Custom Rules, the latest system which provides a new, unified, graph-based interface for engine customization
151
+ # - Advanced Rules, also known as transaction rules, the legacy system for modifying incoming or outgoing transaction fields
152
+ # - Legacy Tax Rules, traditional taxability customization
153
+ #
154
+ # Filtering is applied in two stages: `taxRuleFilter`, `advancedRuleFilter`, and `customRuleFilter` are each
155
+ # applied first, against their respective inner entity type, to select which rules are included. The
156
+ # resulting records are then converted into summary rows, and `filter` is applied afterward against
157
+ # those generated summary records.
158
+ #
159
+ # ### Security Policies
160
+ #
161
+ # * This API requires one of the following user roles: AccountAdmin, AccountUser, AvaTaxOnlyAccountAdmin, AvaTaxOnlyAccountUser, AvaTaxOnlyCompanyAdmin, AvaTaxOnlyCompanyUser, BatchServiceAdmin, CompanyAdmin, CompanyUser, CSPAdmin, CSPTester, ReturnsOnlyAccountAdmin, ReturnsOnlyAccountUser, ReturnsOnlyCompanyAdmin, ReturnsOnlyCompanyUser, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser.
162
+ # Swagger Name: AvaTaxClient
163
+ # @param companyId [Integer] The ID of the company to produce a rule export for.
164
+ # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).
165
+ # @param taxRuleFilter [String] A simple filter statement to select specific TaxRuleModel records. Applied to the underlying Legacy Tax Rule entities before they are converted into summary records; evaluated before `filter`.
166
+ # @param advancedRuleFilter [String] A simple filter statement to select specific AdvancedRuleExecutionModel records. Applied to the underlying Advanced Rule entities before they are converted into summary records; evaluated before `filter`.
167
+ # @param customRuleFilter [String] A simple filter statement to select specific CustomRuleOutputModel records. Applied to the underlying Custom Rule entities before they are converted into summary records; evaluated before `filter`.
168
+ # @param orderBy [String] A comma separated list of sort statements in the format `(fieldname) [ASC|DESC]`, for example `id ASC`.
169
+ # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records.
170
+ # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets.
171
+ # @return [Object]
172
+ def export_custom_rules(companyId, options={}) path = "/api/v2/companies/#{companyId}/customrules/export"
173
+ get(path, options, AvaTax::VERSION) end
174
+
175
+ # Retrieve a single custom rule
176
+ #
177
+ # Retrieves a single custom rule object attached to this company.
178
+ #
179
+ # Use this endpoint to verify the persisted state of a specific rule given its ID,
180
+ # or to fetch the latest, most detailed definition for editing and auditing.
181
+ #
182
+ # Custom rules modify the default AvaTax behavior during tax calculation, customizing it to
183
+ # match requirements specific to your business. Rules can be used to change the taxability of
184
+ # an item, change the tax base of an item, alter the tax rate, modify transaction fields
185
+ # and addresses, allocate and split line items, update the location code, and more.
186
+ #
187
+ # Please use custom rules carefully and ensure they match the behavior agreed upon with your
188
+ # auditor, legal representative, and accounting team.
189
+ #
190
+ # ### Security Policies
191
+ #
192
+ # * This API requires one of the following user roles: AccountAdmin, AccountUser, AvaTaxOnlyAccountAdmin, AvaTaxOnlyAccountUser, AvaTaxOnlyCompanyAdmin, AvaTaxOnlyCompanyUser, BatchServiceAdmin, CompanyAdmin, CompanyUser, CSPAdmin, CSPTester, ReturnsOnlyAccountAdmin, ReturnsOnlyAccountUser, ReturnsOnlyCompanyAdmin, ReturnsOnlyCompanyUser, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser.
193
+ # Swagger Name: AvaTaxClient
194
+ # @param companyId [Integer] The ID of the company that owns the rule.
195
+ # @param id [Integer] The ID of the rule.
196
+ # @return [Object]
197
+ def get_custom_rule(companyId, id) path = "/api/v2/companies/#{companyId}/customrules/#{id}"
198
+ get(path, {}, AvaTax::VERSION) end
199
+
200
+ # Fetch a filtered list of components used in custom rule definitions
201
+ #
202
+ # Retrieve a list of supported custom rule components. Start here to enumerate
203
+ # supported Conditions, Actions, and Variables to design rule graphs.
204
+ #
205
+ # A component may be of the following types:
206
+ # - *Conditions*, which are nodes which evaluate transaction-based criteria
207
+ # - *Actions*, which are nodes that change or update a transaction when preceding conditions pass
208
+ # - *Variables*, which are predefined values or expressions with rule-wide scope
209
+ #
210
+ # A component's subtype is the specific kind of condition, action, or variable it is. Examples include:
211
+ # - *Conditions*: MatchField, MatchAddress, MatchCustomerCode, MatchDocumentType, MatchTariffCode, MatchTaxCode, MatchEntityUseCode, MatchTax
212
+ # - *Actions*: UpdateField, UpdateAddress, UpdateLocationCode, TaxRuleRateOverride, TaxRuleBaseOverride, TaxRuleExemptEntity, TaxRuleProductTaxability, AddMessage
213
+ # - *Variables*: Expression, Aggregation
214
+ #
215
+ # The definition of a custom rule is a directed acyclic graph consisting of condition and action nodes.
216
+ # Variable components have rule-wide scope and are not part of the execution graph, but all three
217
+ # component types conform to the same model.
218
+ #
219
+ # The `dataSchema` member is an escaped JSON string which defines, in JSON schema format,
220
+ # the expected structure of the `data` property of any rule component with the corresponding `subtype`.
221
+ # Swagger Name: AvaTaxClient
222
+ # @param companyId [Integer] The ID of the company to retrieve supported definitions for.
223
+ # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).
224
+ # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records.
225
+ # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets.
226
+ # @param orderBy [String] A comma separated list of sort statements in the format `(fieldname) [ASC|DESC]`, for example `id ASC`.
227
+ # @return [FetchResult]
228
+ def get_custom_rule_components(companyId, options={}) path = "/api/v2/companies/#{companyId}/customrules/definitions/components"
229
+ get(path, options, AvaTax::VERSION) end
230
+
231
+ # Fetch a filtered list of transaction fields supported by custom rules
232
+ #
233
+ # Query the transaction properties which may be used in custom rules.
234
+ #
235
+ # The following metadata is also included for each property:
236
+ # - A display name and description
237
+ # - The data type
238
+ # - Whether it exists at document and/or line level
239
+ # - Whether it can be read from and/or written to
240
+ # - Whether it is only available in certain steps; examples of such restrictions include: only after address validation, only after tax calculation
241
+ #
242
+ # Note that the name of a field may differ between the rule system and the raw transaction models
243
+ # due to the abstractions the rules system provides. The values returned by this endpoint should
244
+ # be considered authoritative in all custom rules contexts, including:
245
+ # - Components which accept field names, such as `MatchField` and `UpdateField`
246
+ # - In variable expressions; see also `GetCustomRuleTokens`
247
+ # Swagger Name: AvaTaxClient
248
+ # @param companyId [Integer] The ID of the company to retrieve supported fields for.
249
+ # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).
250
+ # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records.
251
+ # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets.
252
+ # @param orderBy [String] A comma separated list of sort statements in the format `(fieldname) [ASC|DESC]`, for example `id ASC`.
253
+ # @return [FetchResult]
254
+ def get_custom_rule_fields(companyId, options={}) path = "/api/v2/companies/#{companyId}/customrules/definitions/fields"
255
+ get(path, options, AvaTax::VERSION) end
256
+
257
+ # Construct an empty template for a rule definition
258
+ #
259
+ # Generate a starter graph with empty nodes based on parameters specified in the request body.
260
+ #
261
+ # Typically, this is used to initialize an editor interface after selecting basic parameters for rule creation
262
+ # such as the types of conditions and actions to include.
263
+ #
264
+ # Note that this endpoint does not return a complete rule entity, only its behavior definition.
265
+ # The rule definition returned is not guaranteed to pass validation, as most fields for component content are left empty.
266
+ # Fill in any empty fields, then call `ValidateCustomRule` to validate and `CreateCustomRule` to persist.
267
+ # Swagger Name: AvaTaxClient
268
+ # @param companyId [Integer] The ID of the company
269
+ # @param model [Object] The template request
270
+ # @return [Object]
271
+ def get_custom_rule_template(companyId, model) path = "/api/v2/companies/#{companyId}/customrules/definitions/template"
272
+ post(path, model, {}, AvaTax::VERSION) end
273
+
274
+ # Fetch a filtered list of supported custom rule expression tokens
275
+ #
276
+ # Query the list of supported tokens for use in custom rule expressions.
277
+ #
278
+ # Some rule components support _expressions_, which may have variable values evaluated
279
+ # each time the rule runs on a transaction. An _expression token_ is a sequence delimited
280
+ # by double braces, such as `{{Document.Description}}`, which refers to a variable value
281
+ # and evaluates to that value at transaction time when used within a supporting rule.
282
+ #
283
+ # Expressions can contain formulas using many of these tokens. For example, the expression
284
+ # `{{Document.TotalAmount}} * 0.1` evaluates to 10% of the total document amount for
285
+ # the current transaction.
286
+ #
287
+ # Supported tokens include all readable transaction fields, including parameters and user-defined fields,
288
+ # as well as company-specific reference lists. Examples of the different token types include:
289
+ # - Document-level fields: `{{Document.CustomerCode}}`
290
+ # - Line-level fields: `{{Line.TaxCode}}`
291
+ # - Rule-wide variables: `{{MyVar}}`
292
+ # - Company lookup files: `{{FileName.ColumnName}}`
293
+ #
294
+ # String-type tokens support _functions_, which can be used for transforming the evaluated value:
295
+ # - `Substring(start, length)`: Extract up to `length` characters starting at 0-based index `start`; omit `length` to read to end
296
+ # - `Trim(str)`: Trim complete occurrences of `str` from the beginning and end of the string; omit `str` to trim whitespace
297
+ #
298
+ # Place functions inside the braces, e.g. `{{Line.Ref1.Substring(1,2)}}`.
299
+ #
300
+ # When using expressions in escaped JSON component `data`, include them verbatim inside the
301
+ # JSON string value. Only escape the surrounding double quotes required by JSON.
302
+ # Do not double-escape the braces in `{{...}}`.
303
+ # Swagger Name: AvaTaxClient
304
+ # @param companyId [Integer] The ID of the company to retrieve supported tokens for.
305
+ # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).
306
+ # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records.
307
+ # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets.
308
+ # @param orderBy [String] A comma separated list of sort statements in the format `(fieldname) [ASC|DESC]`, for example `id ASC`.
309
+ # @return [FetchResult]
310
+ def get_custom_rule_tokens(companyId, options={}) path = "/api/v2/companies/#{companyId}/customrules/definitions/tokens"
311
+ get(path, options, AvaTax::VERSION) end
312
+
313
+ # Retrieve all custom rules for a company
314
+ #
315
+ # Query the custom rule objects defined for this company.
316
+ #
317
+ # This endpoint uses OData filter syntax in order to support querying nested properties;
318
+ # note the following differences from standard AvaTax filtering:
319
+ # - Instead of the infix form, use the contains() function, e.g. `contains(description, 'Amount')`
320
+ # - Query collection fields with the any()/all() lambda operators, e.g. `subtype/any(r: r eq 'UpdateLocationCode')`.
321
+ #
322
+ # By default, all rule types are included:
323
+ # - Custom Rules, the latest system which provides a new, unified, graph-based interface for engine customization
324
+ # - Advanced Rules, also known as transaction rules, the legacy system for modifying incoming or outgoing transaction fields
325
+ # - Legacy Tax Rules, traditional taxability customization
326
+ #
327
+ # Note that not every rule type supports every field in `CustomRuleSummaryModel`, so information
328
+ # unavailable for that rule type may be omitted.
329
+ #
330
+ # Filtering is applied in two stages: `taxRuleFilter`, `advancedRuleFilter`, and `customRuleFilter` are each
331
+ # applied first, against their respective inner entity type, to select which rules are included. The
332
+ # resulting records are then converted into summary rows, and `filter` is applied afterward against
333
+ # those generated `CustomRuleSummaryModel` summary records.
334
+ #
335
+ # ### Security Policies
336
+ #
337
+ # * This API requires one of the following user roles: AccountAdmin, AccountUser, AvaTaxOnlyAccountAdmin, AvaTaxOnlyAccountUser, AvaTaxOnlyCompanyAdmin, AvaTaxOnlyCompanyUser, BatchServiceAdmin, CompanyAdmin, CompanyUser, CSPAdmin, CSPTester, ReturnsOnlyAccountAdmin, ReturnsOnlyAccountUser, ReturnsOnlyCompanyAdmin, ReturnsOnlyCompanyUser, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser.
338
+ # Swagger Name: AvaTaxClient
339
+ # @param companyId [Integer] The ID of the company to query the custom rules for.
340
+ # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).<br />*Not filterable:* subtypeDescription, ruleEntity
341
+ # @param taxRuleFilter [String] A simple filter statement to select specific TaxRuleModel records. Applied to the underlying Legacy Tax Rule entities before they are converted into summary records; evaluated before `filter`.
342
+ # @param advancedRuleFilter [String] A simple filter statement to select specific AdvancedRuleExecutionModel records. Applied to the underlying Advanced Rule entities before they are converted into summary records; evaluated before `filter`.
343
+ # @param customRuleFilter [String] A simple filter statement to select specific CustomRuleOutputModel records. Applied to the underlying Custom Rule entities before they are converted into summary records; evaluated before `filter`.
344
+ # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records.
345
+ # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets.
346
+ # @param orderBy [String] A comma separated list of sort statements in the format `(fieldname) [ASC|DESC]`, for example `id ASC`.
347
+ # @param includeEntities [Boolean] Whether or not to include the full entity definitions in the response; otherwise, only summary information is returned.
348
+ # @return [FetchResult]
349
+ def list_custom_rules(companyId, options={}) path = "/api/v2/companies/#{companyId}/customrules/summary"
350
+ get(path, options, AvaTax::VERSION) end
351
+
352
+ # Update a custom rule
353
+ #
354
+ # Updates an existing custom rule object attached to this company.
355
+ # The rule's ID must be supplied in the request body and must match the request URL path.
356
+ #
357
+ # Prefer updating an existing rule over deletion and re-creation when the overall purpose of the rule is not changing.
358
+ # If required to keep different versions of a rule active (e.g. so historical transactions recalculate consistently),
359
+ # use this endpoint to set an explicit expiry date (end date) for a rule to limit its effective range.
360
+ #
361
+ # Custom rules modify the default AvaTax behavior during tax calculation, customizing it to
362
+ # match requirements specific to your business. Rules can be used to change the taxability of
363
+ # an item, change the tax base of an item, alter the tax rate, modify transaction fields
364
+ # and addresses, allocate and split line items, update the location code, and more.
365
+ #
366
+ # Please use custom rules carefully and ensure they match the behavior agreed upon with your
367
+ # auditor, legal representative, and accounting team.
368
+ #
369
+ # ---
370
+ #
371
+ # Rules are built from modular _components_. A component can be a rule-wide variable or a
372
+ # _node_ in the directed acyclic graph defining the rule's behavior. To build a rule from scratch,
373
+ # start with `GetCustomRuleComponents` to retrieve supported components and the JSON `dataSchema` for each.
374
+ #
375
+ # Ensure each component has a unique `id` (for _Variable_ components, this is its name) and that its `data` field conforms to the node subtype's `dataSchema`.
376
+ # The `data` must be a single-escaped JSON string, not a nested object. Do not quote numbers or booleans, use only valid enumeration values, and keep
377
+ # arrays arrays even if they only contain a single element.
378
+ #
379
+ # _Nodes_ may be _Conditions_ or _Actions_. When deciding which node to use, prefer nodes for specific use cases,
380
+ # such as `MatchAddress` and `UpdateAddress`, over generic ones `MatchField` and `UpdateField` when possible.
381
+ #
382
+ # Use the `GetCustomRuleFields` endpoint to query the fields that can be used in nodes which accept arbitrary fields, such as `MatchField` and `UpdateField`.
383
+ #
384
+ # Each node defines its outgoing edges by specifying its child node IDs in the `next` array. The result of a node execution is a set of matches
385
+ # (e.g. which lines on the document met the criteria). Node results behave as follows:
386
+ # - Sequences *intersect* their results ("AND")
387
+ # - Branches *propagate* their results as the input to each child
388
+ # - Merges *union* their results ("OR")
389
+ #
390
+ # The `scope` of a condition is what part of the transaction it operates on: `Document`, `SomeLines`, `OneLine`, `AllLines`, or `NoLines`.
391
+ # The `scope` of an action determines what part of the transaction to apply changes to: `Document`, `MatchedLines`, `NotMatchedLines`, or `AllLines`.
392
+ #
393
+ # When using a rule to adjust taxability,
394
+ # - To exempt a line from tax entirely, use an `UpdateField` node to set its tax code to `NT` (Avalara's standard non-taxable code).
395
+ # - Place the UpdateField early in the rule so it takes effect pre-calculation.
396
+ # - To impact tax details, the MatchTax condition node is required to match on jurisdiction + tax type combinations.
397
+ # - There can only be one MatchTax node per rule, but it can have more than one criteria set.
398
+ # - Each criteria set has `matchTaxId` (unique identifier), `country`, `region`, `jurisdictionTypeId`, `jurisCode`, `taxTypeCode`, `taxSubType`, and `rateTypeCode`.
399
+ # - Tax subtypes and rate types may be wildcard (`*` or `ALL`) for most rule types.
400
+ # - Always use full names for `jurisdictionTypeId` (`Country`, `State`, `City`, `County`, `Special`) instead of their abbreviations.
401
+ # - A wildcard jurisdiction code (`*` or `ALL`) applies the treatment to all jurisdictions of the given `jurisdictionTypeId`.
402
+ # - `TaxRule*` action nodes define how the tax is to be adjusted.
403
+ # - `TaxRuleProductTaxability`: sets an item's taxability and assigns its rate type, so it requires a specific (non-wildcard) `rateTypeCode`.
404
+ # - `TaxRuleRateOverride`: overrides Avalara's tax rate.
405
+ # - `TaxRuleBaseOverride`: changes the tax base as a proportion of the original amount (e.g. `0.5` = 50% taxable).
406
+ # - `TaxRuleExemptEntity`: exempts the matched line for the jurisdiction and tax type; typically paired with a MatchEntityUseCode condition.
407
+ # - Caps and thresholds can be applied with the `TaxRuleProductTaxability` or `TaxRuleRateOverride` actions.
408
+ # - A threshold buckets amounts up to and including the threshold as non-taxable.
409
+ # - A cap limits the taxable amount (per unit by default, multiplied by quantity); amounts above the cap become non-taxable.
410
+ # - Add the `Document` option to apply the cap across all matching lines of the document.
411
+ # - A `default` value must be provided in `TaxRule*` nodes. Overrides for specific jurisdictions are optional and provided in an `overrides` array (NOT a dictionary).
412
+ # - If the tax treatment (rate, taxability, etc.) is the same for all configured jurisdictions, set only the `default` value and omit `overrides`.
413
+ # - You only need to set overrides for values that differ from the default.
414
+ # - If a `matchTaxId` member is present in an override, it will apply to the corresponding criteria in the MatchTax node.
415
+ # - If a `matchTaxId` member is NOT present in an override, pattern matching is performed on the override criteria fields with omitted fields treated as wildcards.
416
+ # - When multiple tax rules apply, a more specific tax type/subtype beats a wildcard, and the latest effective date wins.
417
+ # - A Tax Code and Tariff Code condition are mutually exclusive.
418
+ # - Expressions cannot be used in nodes which directly affect tax treatment.
419
+ #
420
+ # Some nodes support _expressions_, which may have variable values evaluated at transaction time.
421
+ # Expression-supporting fields should be indicated on the node's data schema. Expressions allow
422
+ # formulas using arithmetic, substitutions, and references to transaction fields; for example:
423
+ # - `{{Document.TotalAmount}} * 0.1` (10% of the total document amount)
424
+ # - `{{Line.UserDefinedFields.Udf8}}` (Line-level user-defined field 8)
425
+ # - `{{Line.Ref1}}{{Line.Ref2}}` (A line's Ref1 and Ref2 values concatenated)
426
+ # - `2 + {{MyVar}}` (The value of the "MyVar" variable defined elsewhere in the rule, plus 2)
427
+ #
428
+ # Use the `GetCustomRuleTokens` endpoint to enumerate or search for valid tokens that can be used in expressions.
429
+ #
430
+ # Lookup files / reference lists may be used where expressions are supported. Use the syntax `{{FileName.ColumnName}}` to match against
431
+ # a column in a Condition and use the value from another column in the matched row in an Action. Matching scopes must be compatible -
432
+ # line-level matches cannot be used to update a document-level field.
433
+ #
434
+ # Rule nodes are assigned execution steps based on their contents and surrounding nodes. For instance, nodes that follow tax
435
+ # rule actions (`TaxRule*`) or require a calculated field (such as taxable amount) are executed after tax calculation instead
436
+ # of before calculation. Not every node type may execute in every step. Place them accordingly to their `validSteps`.
437
+ # A rule will be rejected if an ordering cannot be resolved. Rules execute in the following stages:
438
+ # - `OnRequest`: On the API request values, before document validation.
439
+ # - `AfterAddressValidation`: After addresses have been geo-coded / validated once.
440
+ # - `AfterSourcing`: After jurisdictions and tax types have been evaluated, but before tax calculation.
441
+ # - `AfterDetails`: After tax calculation details have been generated.
442
+ # - `OnResponse`: After the document has been saved, if applicable; on the API response only.
443
+ #
444
+ # ---
445
+ #
446
+ # It is recommended to validate the rule with the `ValidateCustomRule` endpoint before updating it.
447
+ # This will let you review the rule's execution plan and any associated diagnostic information before saving it.
448
+ #
449
+ # ### Security Policies
450
+ #
451
+ # * This API requires one of the following user roles: AccountAdmin, AvaTaxOnlyAccountAdmin, AvaTaxOnlyCompanyAdmin, BatchServiceAdmin, CompanyAdmin, CSPTester, SSTAdmin, TechnicalSupportAdmin.
452
+ # Swagger Name: AvaTaxClient
453
+ # @param companyId [Integer] The ID of the company that owns the rule to update.
454
+ # @param id [Integer] The ID of the rule to update. Must match the rule ID passed in the request body.
455
+ # @param model [Object] The new contents of the rule.
456
+ # @return [Object]
457
+ def update_custom_rule(companyId, id, model) path = "/api/v2/companies/#{companyId}/customrules/#{id}"
458
+ put(path, model, {}, AvaTax::VERSION) end
459
+
460
+ # Validate a custom rule
461
+ #
462
+ # Validates a custom rule and returns a detailed validation result.
463
+ #
464
+ # This endpoint allows running rule validation independently of a create or update operation,
465
+ # enabling checking the validity of a proposed rule without persisting changes.
466
+ # It also returns additional diagnostic information about how a rule will be interpreted by the
467
+ # engine, such as how expressions were parsed and what order the graph nodes will be executed in.
468
+ # Therefore, it can also be used to inspect rule behavior when troubleshooting.
469
+ #
470
+ # Validation messages are categorized into "info," "warning," and "error" severity levels:
471
+ # - Info-level messages provide diagnostic details about how the rule was parsed
472
+ # - Warning-level messages flag potential misconfigurations or scenarios which may cause unexpected behavior
473
+ # and should be reviewed for intent, but do not block saving the rule
474
+ # - Error-level messages indicate that the rule has an issue that will prevent it from being saved or executed
475
+ #
476
+ # Examples of validation checks which are run include:
477
+ # - Directed acyclic graph structure compliance
478
+ # - Schema conformance for each `data` string
479
+ # - Enumeration value validity, including scope and condition operators
480
+ # - Field existence and step (set/get) constraints
481
+ # - Requirements verification for nodes with prerequisites
482
+ #
483
+ # Validation messages may reference a specific node in their `refersTo` field.
484
+ # If this field is empty, the message is rule-wide.
485
+ # Swagger Name: AvaTaxClient
486
+ # @param companyId [Integer] The ID of the company to validate the rule for.
487
+ # @param model [Object] Rule content to be validated.
488
+ # @return [Object]
489
+ def validate_custom_rule(companyId, model) path = "/api/v2/companies/#{companyId}/customrules/validate"
490
+ post(path, model, {}, AvaTax::VERSION) end
491
+ end
492
+ end
493
+ end
@@ -42,7 +42,7 @@ module AvaTax
42
42
  #
43
43
  #
44
44
  # Swagger Name: AvaTaxClient
45
- # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).<br />*Not filterable:* attributesUsed
45
+ # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).<br />*Not filterable:* attributesUsed, parameterMetadata
46
46
  # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records.
47
47
  # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets.
48
48
  # @param orderBy [String] A comma separated list of sort statements in the format `(fieldname) [ASC|DESC]`, for example `id ASC`.
@@ -114,7 +114,7 @@ module AvaTax
114
114
  # If you see the 'CertCaptureNotConfiguredError', please use CheckProvision and RequestProvision endpoints to
115
115
  # check and provision account.
116
116
  # Swagger Name: AvaTaxClient
117
- # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).<br />*Not filterable:* id, companyId, name, tag, description, created, modified, region, country
117
+ # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).<br />*Not filterable:* id, companyId, tag, description, created, modified, region, country
118
118
  # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records.
119
119
  # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets.
120
120
  # @param orderBy [String] A comma separated list of sort statements in the format `(fieldname) [ASC|DESC]`, for example `id ASC`.
@@ -270,6 +270,25 @@ module AvaTax
270
270
  def list_currencies(options={}) path = "/api/v2/definitions/currencies"
271
271
  get(path, options, AvaTax::VERSION) end
272
272
 
273
+ # List the Avalara system default currency rounding rules.
274
+ #
275
+ # Lists the Avalara system default currency rounding rules - the rounding Avalara applies to
276
+ # a currency when an account has no rule of its own.
277
+ #
278
+ # Only currencies in this list may have an account-specific
279
+ # `AccountCurrencyRoundingRuleModel` created for them.
280
+ #
281
+ # Search for specific objects using the criteria in the `$filter` parameter; full documentation is available on [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/) .
282
+ # Paginate your results using the `$top`, `$skip`, and `$orderBy` parameters.
283
+ # Swagger Name: AvaTaxClient
284
+ # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).
285
+ # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records.
286
+ # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets.
287
+ # @param orderBy [String] A comma separated list of sort statements in the format `(fieldname) [ASC|DESC]`, for example `id ASC`.
288
+ # @return [FetchResult]
289
+ def list_currency_rounding_rule_defaults(options={}) path = "/api/v2/definitions/currencyroundingrules"
290
+ get(path, options, AvaTax::VERSION) end
291
+
273
292
  # Retrieve the full list of Avalara-supported entity use codes
274
293
  #
275
294
  # Returns the full list of Avalara-supported entity use codes.
@@ -1200,6 +1219,9 @@ module AvaTax
1200
1219
  # @param taxTypeId [String] The taxtype for which you want to retrieve the unitofbasis information
1201
1220
  # @param taxSubTypeId [String] The taxsubtype for which you want to retrieve the unitofbasis information
1202
1221
  # @param rateTypeId [String] The ratetype for which you want to retrieve the unitofbasis information
1222
+ # @param state [String] Optional. The State/region (e.g. ```CO```) to narrow the unitofbasis results to a specific jurisdiction. When omitted, results are not narrowed by state.
1223
+ # @param jurisTypeId [String] Optional. The jurisdiction type to filter by. Accepted values are ```STA``` (state), ```CTY``` (county), ```CIT``` (city), or ```STJ``` (special jurisdiction). When omitted, results are not narrowed by jurisdiction type.
1224
+ # @param jurisCode [String] Optional. The local jurisdiction code to filter by (used together with state/jurisTypeId). When omitted, results are not narrowed by jurisdiction code.
1203
1225
  # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records.
1204
1226
  # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets.
1205
1227
  # @param orderBy [String] A comma separated list of sort statements in the format `(fieldname) [ASC|DESC]`, for example `id ASC`.
@@ -3,31 +3,31 @@ module AvaTax
3
3
  module EcoNexusThreshold
4
4
 
5
5
 
6
- # Get economic nexus threshold statuses for a company
6
+ # Retrieve economic nexus threshold statuses for a company
7
7
  #
8
- # Returns precomputed economic nexus threshold statuses for a company, sourced from an in-memory
9
- # cache refreshed periodically from Snowflake. All responses are served from cache;
10
- # Snowflake is never queried on the request path.
8
+ # Retrieve the economic nexus threshold status for each US state in which activity has been
9
+ # evaluated for this company.
11
10
  #
12
- # When the optional `region` query parameter is provided, only the matching jurisdiction row
13
- # is included in `states`. If no row exists for that company and region, `states` is
14
- # an empty array (200 OK).
11
+ # Each entry in `states` describes the measurement window used, the sales and transaction
12
+ # thresholds that apply to that state, the company's totals for the window, and whether
13
+ # the threshold has been met.
15
14
  #
16
- # When `lastRefreshedAt` is absent from the response, the cache has not yet completed its
17
- # first refresh; callers should treat absence as "cache freshness unknown".
15
+ # Threshold statuses are evaluated on a recurring schedule rather than at request time.
16
+ # Use `lastRefreshedAt` to determine how current the returned data is; when it is absent
17
+ # from the response, the age of the data is not known.
18
18
  #
19
- # Production traffic is served by TPS; api-gateway should route this path to TPS.
19
+ # When the optional `region` query parameter is provided, only the matching state is included
20
+ # in `states`. If no threshold status exists for that company and region, `states` is returned
21
+ # as an empty array with a 200 response.
20
22
  #
21
- # This endpoint requires the `NexusFetch` permission. If EcoNexus is not configured in TPS,
22
- # a 503 is returned with no `Retry-After` (misconfiguration requires redeployment).
23
- # If the cache is still initializing, a 503 is returned with `Retry-After: 300`.
23
+ # Requires the `NexusFetch` permission for the target company.
24
24
  #
25
25
  # ### Security Policies
26
26
  #
27
27
  # * This API requires one of the following user roles: AccountAdmin, AccountOperator, AccountUser, AvaTaxOnlyAccountAdmin, AvaTaxOnlyAccountUser, AvaTaxOnlyCompanyAdmin, AvaTaxOnlyCompanyUser, BatchServiceAdmin, CompanyAdmin, CompanyUser, Compliance Root User, ComplianceAdmin, ComplianceUser, CSPAdmin, CSPTester, FirmAdmin, FirmUser, ReturnsOnlyAccountAdmin, ReturnsOnlyAccountUser, ReturnsOnlyCompanyAdmin, ReturnsOnlyCompanyUser, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser.
28
28
  # Swagger Name: AvaTaxClient
29
- # @param companyId [Integer] The Avalara company identifier.
30
- # @param region [String] Optional two-letter US state postal code to filter results (case-insensitive). When provided, `states` contains at most one item; if there is no data for that company and region, `states` is an empty array (200 OK). Must be exactly two characters; otherwise returns 400. Matches the `region` field on each item in the response.
29
+ # @param companyId [Integer] The ID of the company to retrieve threshold statuses for.
30
+ # @param region [String] Optional two-letter US state postal code used to filter the results (case-insensitive). When provided, `states` contains at most one entry, matched against the `region` field of each entry. Must be exactly two characters; otherwise this endpoint returns 400.
31
31
  # @return [Object]
32
32
  def get_eco_nexus_thresholds(companyId, options={}) path = "/api/v2/companies/#{companyId}/econexusthresholds"
33
33
  get(path, options, AvaTax::VERSION) end
@@ -875,22 +875,23 @@ module AvaTax
875
875
  #
876
876
  # You can specify a comma-separated list of countries in the `hsCodeDoesNotExistsInCountries` query parameter if you want to filter items on the basis of whether an HS code does not exist for the provided countries.
877
877
  #
878
+ # `tagName`, `itemStatus`, `taxCodeRecommendationStatus`, `hsCodeClassificationStatus`, `hsCodeExistsInCountries`, and `hsCodeDoesNotExistsInCountries`
879
+ # are mutually exclusive: if more than one is supplied in the same request, only the first one in that listed order is applied and the rest are ignored.
880
+ # `tagName`, `itemStatus`, `taxCodeRecommendationStatus`, and `hsCodeClassificationStatus` require a `companyId`;
881
+ # they are not supported on the cross-company `QueryItems` endpoint.
882
+ #
878
883
  # You may specify one or more of the following values in the `$include` parameter to fetch additional nested data, using commas to separate multiple values:
879
884
  #
880
885
  # * Parameters
881
886
  # * Classifications
882
887
  # * Tags
883
- # * Properties
884
- # * TaxCodeRecommendationStatus
885
- # * HsCodeClassificationStatus
886
- # * TaxCodeDetails
887
888
  #
888
889
  # ### Security Policies
889
890
  #
890
891
  # * This API requires one of the following user roles: AccountAdmin, AccountOperator, AccountUser, AvaTaxOnlyAccountAdmin, AvaTaxOnlyAccountUser, AvaTaxOnlyCompanyAdmin, AvaTaxOnlyCompanyUser, BatchServiceAdmin, CompanyAdmin, CompanyUser, CSPAdmin, CSPTester, ReturnsOnlyAccountAdmin, ReturnsOnlyAccountUser, ReturnsOnlyCompanyAdmin, ReturnsOnlyCompanyUser, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser.
891
892
  # Swagger Name: AvaTaxClient
892
893
  # @param companyId [Integer] The ID of the company that defined these items
893
- # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).<br />*Not filterable:* taxCode, source, sourceEntityId, itemType, upc, summary, classifications, parameters, customParameters, tags, properties, itemStatus, taxCodeRecommendationStatus, taxCodeRecommendations, taxCodeDetails, hsCodeClassificationStatus, image
894
+ # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).<br />*Not filterable:* source, sourceEntityId, itemType, upc, summary, classifications, parameters, customParameters, tags, properties, itemStatus, taxCodeRecommendationStatus, taxCodeRecommendations, taxCodeDetails, hsCodeClassificationStatus, image
894
895
  # @param include [String] A comma separated list of additional data to retrieve.
895
896
  # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records.
896
897
  # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets.
@@ -969,7 +970,7 @@ module AvaTax
969
970
  #
970
971
  # * This API requires one of the following user roles: AccountAdmin, AccountOperator, AccountUser, AvaTaxOnlyAccountAdmin, AvaTaxOnlyAccountUser, AvaTaxOnlyCompanyAdmin, AvaTaxOnlyCompanyUser, BatchServiceAdmin, CompanyAdmin, CompanyUser, CSPAdmin, CSPTester, ReturnsOnlyAccountAdmin, ReturnsOnlyAccountUser, ReturnsOnlyCompanyAdmin, ReturnsOnlyCompanyUser, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser.
971
972
  # Swagger Name: AvaTaxClient
972
- # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).<br />*Not filterable:* taxCode, source, sourceEntityId, itemType, upc, summary, classifications, parameters, customParameters, tags, properties, itemStatus, taxCodeRecommendationStatus, taxCodeRecommendations, taxCodeDetails, hsCodeClassificationStatus, image
973
+ # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).<br />*Not filterable:* source, sourceEntityId, itemType, upc, summary, classifications, parameters, customParameters, tags, properties, itemStatus, taxCodeRecommendationStatus, taxCodeRecommendations, taxCodeDetails, hsCodeClassificationStatus, image
973
974
  # @param include [String] A comma separated list of additional data to retrieve.
974
975
  # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records.
975
976
  # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets.
@@ -1026,7 +1027,7 @@ module AvaTax
1026
1027
  # Swagger Name: AvaTaxClient
1027
1028
  # @param companyId [Integer] The ID of the company that defined these items.
1028
1029
  # @param tag [String] The master tag to be associated with item.
1029
- # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).<br />*Not filterable:* taxCode, source, sourceEntityId, itemType, upc, summary, classifications, parameters, customParameters, tags, properties, itemStatus, taxCodeRecommendationStatus, taxCodeRecommendations, taxCodeDetails, hsCodeClassificationStatus, image
1030
+ # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).<br />*Not filterable:* source, sourceEntityId, itemType, upc, summary, classifications, parameters, customParameters, tags, properties, itemStatus, taxCodeRecommendationStatus, taxCodeRecommendations, taxCodeDetails, hsCodeClassificationStatus, image
1030
1031
  # @param include [String] A comma separated list of additional data to retrieve.
1031
1032
  # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records.
1032
1033
  # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets.
@@ -80,7 +80,8 @@ module AvaTax
80
80
  # `NEXUS`, `USER`, `COMPANY`, `ACCOUNT`, `COMPANYLOCATION`, `ACCOUNTSETTING`, `COMPANYLOCATIONSETTING`,
81
81
  # `COMPANYSETTING`, `TAXCODE`, `TAXRULE`, `ADDRESSSERVICECONFIG`, `AUDITADVANCEDRULE`, `COMPANYCONTACT`,
82
82
  # `COMPANYLOCATIONPARAMETERDETAIL`, `COMPANYLOCATIONSETTINGCONFIG`, `COMPANYPARAMETERDETAIL`, `COMPANYRETURN`,
83
- # `COMPANYRETURNSETTING`, `ITEM`, `SERVICE`, `EXEMPTCERT`, `AVACERTSERVICECONFIG`, `JURISDICTIONOVERRIDE`, `COSTCENTER`.
83
+ # `COMPANYRETURNSETTING`, `ITEM`, `SERVICE`, `EXEMPTCERT`, `AVACERTSERVICECONFIG`, `JURISDICTIONOVERRIDE`, `COSTCENTER`,
84
+ # `FILINGTASKSTATUSHISTORY`, `COMPANYSTATUSHISTORY`.
84
85
  #
85
86
  # Set `compression` to `GZIP` to reduce the size of the report file and increase download speed.
86
87
  #
@@ -98,7 +98,7 @@ module AvaTax
98
98
  # * This API requires one of the following user roles: AccountAdmin, AccountUser, AvaTaxOnlyAccountAdmin, AvaTaxOnlyAccountUser, AvaTaxOnlyCompanyAdmin, AvaTaxOnlyCompanyUser, BatchServiceAdmin, CompanyAdmin, CompanyUser, Compliance Root User, ComplianceAdmin, ComplianceUser, CSPAdmin, CSPTester, ECMAccountUser, ECMCompanyUser, FirmAdmin, FirmUser, ProStoresOperator, ReturnsOnlyAccountAdmin, ReturnsOnlyAccountUser, ReturnsOnlyCompanyAdmin, ReturnsOnlyCompanyUser, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser.
99
99
  # Swagger Name: AvaTaxClient
100
100
  # @param companyId [Integer] The ID of the company that owns these settings
101
- # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).<br />*Not filterable:* modifiedDate, ModifiedUserId
101
+ # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).
102
102
  # @param include [String] A comma separated list of additional data to retrieve.
103
103
  # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records.
104
104
  # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets.
@@ -127,7 +127,7 @@ module AvaTax
127
127
  #
128
128
  # * This API requires one of the following user roles: AccountAdmin, AccountUser, AvaTaxOnlyAccountAdmin, AvaTaxOnlyAccountUser, AvaTaxOnlyCompanyAdmin, AvaTaxOnlyCompanyUser, BatchServiceAdmin, CompanyAdmin, CompanyUser, Compliance Root User, ComplianceAdmin, ComplianceUser, CSPAdmin, CSPTester, ECMAccountUser, ECMCompanyUser, FirmAdmin, FirmUser, ProStoresOperator, ReturnsOnlyAccountAdmin, ReturnsOnlyAccountUser, ReturnsOnlyCompanyAdmin, ReturnsOnlyCompanyUser, SiteAdmin, SSTAdmin, SystemAdmin, TechnicalSupportAdmin, TechnicalSupportUser.
129
129
  # Swagger Name: AvaTaxClient
130
- # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).<br />*Not filterable:* modifiedDate, ModifiedUserId
130
+ # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).
131
131
  # @param include [String] A comma separated list of additional data to retrieve.
132
132
  # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records.
133
133
  # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets.
@@ -576,7 +576,7 @@ module AvaTax
576
576
  # @param companyCode [String] The company code of the company that recorded this transaction
577
577
  # @param dataSourceId [Integer] Optionally filter transactions to those from a specific data source.
578
578
  # @param include [String] Specifies objects to include in this fetch call
579
- # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).<br />*Not filterable:* exchangeRateCurrencyCode, totalDiscount, lines, addresses, locationTypes, summary, taxDetailsByTaxType, parameters, userDefinedFields, messages, invoiceMessages, isFakeTransaction, deliveryTerms, apStatusCode, apStatus, vendorName, varianceAmount
579
+ # @param filter [String] A filter statement to identify specific records to retrieve. For more information on filtering, see [Filtering in REST](http://developer.avalara.com/avatax/filtering-in-rest/).<br />*Not filterable:* exchangeRateCurrencyCode, exchangeRateProvider, totalDiscount, lines, addresses, locationTypes, summary, taxDetailsByTaxType, parameters, userDefinedFields, messages, invoiceMessages, isFakeTransaction, deliveryTerms, apStatusCode, apStatus, vendorName, varianceAmount
580
580
  # @param top [Integer] If nonzero, return no more than this number of results. Used with `$skip` to provide pagination for large datasets. Unless otherwise specified, the maximum number of records that can be returned from an API call is 1,000 records.
581
581
  # @param skip [Integer] If nonzero, skip this number of results before returning data. Used with `$top` to provide pagination for large datasets.
582
582
  # @param orderBy [String] A comma separated list of sort statements in the format `(fieldname) [ASC|DESC]`, for example `id ASC`.
@@ -26,7 +26,7 @@ module AvaTax
26
26
  # * This API depends on the following active services:*Required* (all): AvaTaxPro, BasicReturns.
27
27
  # Swagger Name: AvaTaxClient
28
28
  # @param companyId [Integer]
29
- # @param udfType [String] Document or Line level UDF (See UserDefinedFieldType::* for a list of allowable values)
29
+ # @param udfType [String] Document, Line, or Detail level UDF (See UserDefinedFieldType::* for a list of allowable values)
30
30
  # @param allowDefaults [Boolean] If true this will add defaulted UDFs to the list that are not named yet
31
31
  # @return [FetchResult]
32
32
  def list_user_defined_fields_by_company_id(companyId, options={}) path = "/api/v2/companies/#{companyId}/userdefinedfields"
@@ -1,3 +1,3 @@
1
1
  module AvaTax
2
- VERSION = '26.7.3'.freeze unless defined?(::AvaTax::VERSION)
2
+ VERSION = '26.9.0'.freeze unless defined?(::AvaTax::VERSION)
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avatax
3
3
  version: !ruby/object:Gem::Version
4
- version: 26.7.3
4
+ version: 26.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcus Vorwaller
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-07-27 00:00:00.000000000 Z
11
+ date: 2026-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -134,7 +134,9 @@ files:
134
134
  - lib/avatax/client/compliance.rb
135
135
  - lib/avatax/client/contacts.rb
136
136
  - lib/avatax/client/costcenter.rb
137
+ - lib/avatax/client/currencyroundingrules.rb
137
138
  - lib/avatax/client/customers.rb
139
+ - lib/avatax/client/customrules.rb
138
140
  - lib/avatax/client/datasources.rb
139
141
  - lib/avatax/client/definitions.rb
140
142
  - lib/avatax/client/distancethresholds.rb