ultracart_api 3.6.10 → 3.6.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -5
- data/docs/CouponApi.md +1 -3
- data/docs/OrderTrackingNumberDetails.md +1 -0
- data/docs/PaymentsConfigurationCheck.md +0 -1
- data/docs/PaymentsConfigurationEcheck.md +1 -0
- data/lib/ultracart_api/api/coupon_api.rb +1 -4
- data/lib/ultracart_api/models/order_tracking_number_details.rb +10 -1
- data/lib/ultracart_api/models/payments_configuration_check.rb +4 -16
- data/lib/ultracart_api/models/payments_configuration_echeck.rb +16 -4
- data/lib/ultracart_api/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24c43b1758eaa1f773b832a93103e294db8b78cb5af83bebcdb25514830b1c7f
|
4
|
+
data.tar.gz: be54008cd3615036bb0d8167e4bfcfb194237876f5afd88b80f8beb2a9cd1494
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 627bbc3be2b0afefc42fc0ab32f37ffc3a563a0903eac1fdb6c03763e170dfcb1d40e1635d21aeacdd794fb33c3c634e2984ceb9435960143477870d061da65a
|
7
|
+
data.tar.gz: 4a448ae72993d4420ab6fe59bae3aa011de49d2d145c289c0ecadbb3694e6c6b3fb7408d0997bdd8eddbb1ca99743643a8f2a99fad567d5e12be5bbfd93faff1
|
data/README.md
CHANGED
@@ -7,7 +7,7 @@ UltraCart REST API Version 2
|
|
7
7
|
This SDK is automatically generated by the [Swagger Codegen](https://github.com/swagger-api/swagger-codegen) project:
|
8
8
|
|
9
9
|
- API version: 2.0.0
|
10
|
-
- Package version: 3.6.
|
10
|
+
- Package version: 3.6.14
|
11
11
|
- Build package: io.swagger.codegen.languages.RubyClientCodegen
|
12
12
|
For more information, please visit [http://www.ultracart.com](http://www.ultracart.com)
|
13
13
|
|
@@ -24,15 +24,15 @@ gem build ultracart_api.gemspec
|
|
24
24
|
Then either install the gem locally:
|
25
25
|
|
26
26
|
```shell
|
27
|
-
gem install ./ultracart_api-3.6.
|
27
|
+
gem install ./ultracart_api-3.6.14.gem
|
28
28
|
```
|
29
|
-
(for development, run `gem install --dev ./ultracart_api-3.6.
|
29
|
+
(for development, run `gem install --dev ./ultracart_api-3.6.14.gem` to install the development dependencies)
|
30
30
|
|
31
31
|
or publish the gem to a gem hosting service, e.g. [RubyGems](https://rubygems.org/).
|
32
32
|
|
33
33
|
Finally add this to the Gemfile:
|
34
34
|
|
35
|
-
gem 'ultracart_api', '~> 3.6.
|
35
|
+
gem 'ultracart_api', '~> 3.6.14'
|
36
36
|
|
37
37
|
### Install from Git
|
38
38
|
|
@@ -145,7 +145,7 @@ Class | Method | HTTP request | Description
|
|
145
145
|
*UltracartClient::CouponApi* | [**get_coupon**](docs/CouponApi.md#get_coupon) | **GET** /coupon/coupons/{coupon_oid} | Retrieve a coupon
|
146
146
|
*UltracartClient::CouponApi* | [**get_coupon_by_merchant_code**](docs/CouponApi.md#get_coupon_by_merchant_code) | **GET** /coupon/coupons/merchant_code/{merchant_code} | Retrieve a coupon by merchant code
|
147
147
|
*UltracartClient::CouponApi* | [**get_coupons**](docs/CouponApi.md#get_coupons) | **GET** /coupon/coupons | Retrieve coupons
|
148
|
-
*UltracartClient::CouponApi* | [**get_coupons_by_query**](docs/CouponApi.md#get_coupons_by_query) | **
|
148
|
+
*UltracartClient::CouponApi* | [**get_coupons_by_query**](docs/CouponApi.md#get_coupons_by_query) | **POST** /coupon/coupons/query | Retrieve coupons by query
|
149
149
|
*UltracartClient::CouponApi* | [**get_editor_values**](docs/CouponApi.md#get_editor_values) | **GET** /coupon/editor_values | Retrieve values needed for a coupon editor
|
150
150
|
*UltracartClient::CouponApi* | [**insert_coupon**](docs/CouponApi.md#insert_coupon) | **POST** /coupon/coupons | Insert a coupon
|
151
151
|
*UltracartClient::CouponApi* | [**insert_coupons**](docs/CouponApi.md#insert_coupons) | **POST** /coupon/coupons/batch | Insert multiple coupons
|
@@ -1118,6 +1118,10 @@ Not every change is committed to every SDK.
|
|
1118
1118
|
|
1119
1119
|
| Version | Date | Comments |
|
1120
1120
|
| --: | :-: | --- |
|
1121
|
+
| 3.6.14 | 09/21/2021 | configuration api fix. the echeck test methods were attached to the paper check object |
|
1122
|
+
| 3.6.13 | 09/20/2021 | expose EasyPost tracker id if available on shipment tracking details |
|
1123
|
+
| 3.6.12 | 09/20/2021 | fix method for getCouponsByQuery to be POST instead of GET since it uses a JSON body |
|
1124
|
+
| 3.6.11 | 09/13/2021 | fix for CouponApi, broke due to inadvertent parameter inclusion |
|
1121
1125
|
| 3.6.10 | 09/09/2021 | added constants for Google Shopping payment method (still in development) |
|
1122
1126
|
| 3.6.9 | 09/07/2021 | customer profile editor values have new list of state optional countries |
|
1123
1127
|
| 3.6.8 | 08/31/2021 | coupon query field to allow merchant code and description to be searched |
|
data/docs/CouponApi.md
CHANGED
@@ -14,7 +14,7 @@ Method | HTTP request | Description
|
|
14
14
|
[**get_coupon**](CouponApi.md#get_coupon) | **GET** /coupon/coupons/{coupon_oid} | Retrieve a coupon
|
15
15
|
[**get_coupon_by_merchant_code**](CouponApi.md#get_coupon_by_merchant_code) | **GET** /coupon/coupons/merchant_code/{merchant_code} | Retrieve a coupon by merchant code
|
16
16
|
[**get_coupons**](CouponApi.md#get_coupons) | **GET** /coupon/coupons | Retrieve coupons
|
17
|
-
[**get_coupons_by_query**](CouponApi.md#get_coupons_by_query) | **
|
17
|
+
[**get_coupons_by_query**](CouponApi.md#get_coupons_by_query) | **POST** /coupon/coupons/query | Retrieve coupons by query
|
18
18
|
[**get_editor_values**](CouponApi.md#get_editor_values) | **GET** /coupon/editor_values | Retrieve values needed for a coupon editor
|
19
19
|
[**insert_coupon**](CouponApi.md#insert_coupon) | **POST** /coupon/coupons | Insert a coupon
|
20
20
|
[**insert_coupons**](CouponApi.md#insert_coupons) | **POST** /coupon/coupons/batch | Insert multiple coupons
|
@@ -508,7 +508,6 @@ opts = {
|
|
508
508
|
expiration_date_end: 'expiration_date_end_example', # String | Expiration date end
|
509
509
|
affiliate_oid: 56, # Integer | Affiliate oid
|
510
510
|
exclude_expired: true, # BOOLEAN | Exclude expired
|
511
|
-
merchant_code_or_description: 'merchant_code_or_description_example', # String | Merchant code or description
|
512
511
|
_limit: 100, # Integer | The maximum number of records to return on this one API call. (Max 200)
|
513
512
|
_offset: 0, # Integer | Pagination of the record set. Offset is a zero based index.
|
514
513
|
_sort: '_sort_example', # String | The sort order of the coupons. See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
|
@@ -537,7 +536,6 @@ Name | Type | Description | Notes
|
|
537
536
|
**expiration_date_end** | **String**| Expiration date end | [optional]
|
538
537
|
**affiliate_oid** | **Integer**| Affiliate oid | [optional]
|
539
538
|
**exclude_expired** | **BOOLEAN**| Exclude expired | [optional]
|
540
|
-
**merchant_code_or_description** | **String**| Merchant code or description | [optional]
|
541
539
|
**_limit** | **Integer**| The maximum number of records to return on this one API call. (Max 200) | [optional] [default to 100]
|
542
540
|
**_offset** | **Integer**| Pagination of the record set. Offset is a zero based index. | [optional] [default to 0]
|
543
541
|
**_sort** | **String**| The sort order of the coupons. See Sorting documentation for examples of using multiple values and sorting by ascending and descending. | [optional]
|
@@ -6,6 +6,7 @@ Name | Type | Description | Notes
|
|
6
6
|
**actual_delivery_date** | **String** | | [optional]
|
7
7
|
**actual_delivery_date_formatted** | **String** | | [optional]
|
8
8
|
**details** | [**Array<OrderTrackingNumberDetail>**](OrderTrackingNumberDetail.md) | | [optional]
|
9
|
+
**easypost_tracker_id** | **String** | | [optional]
|
9
10
|
**expected_delivery_date** | **String** | | [optional]
|
10
11
|
**expected_delivery_date_formatted** | **String** | | [optional]
|
11
12
|
**map_url** | **String** | | [optional]
|
@@ -15,6 +15,5 @@ Name | Type | Description | Notes
|
|
15
15
|
**mail_to_postal_code** | **String** | MailTo postal code | [optional]
|
16
16
|
**mail_to_store** | **String** | MailTo store | [optional]
|
17
17
|
**restrictions** | [**PaymentsConfigurationRestrictions**](PaymentsConfigurationRestrictions.md) | | [optional]
|
18
|
-
**test_methods** | [**Array<PaymentsConfigurationTestMethod>**](PaymentsConfigurationTestMethod.md) | Test methods for this payment method | [optional]
|
19
18
|
|
20
19
|
|
@@ -7,5 +7,6 @@ Name | Type | Description | Notes
|
|
7
7
|
**accounting_code** | **String** | Optional Quickbooks accounting code | [optional]
|
8
8
|
**deposit_to_account** | **String** | Optional Quickbooks deposit to account | [optional]
|
9
9
|
**restrictions** | [**PaymentsConfigurationRestrictions**](PaymentsConfigurationRestrictions.md) | | [optional]
|
10
|
+
**test_methods** | [**Array<PaymentsConfigurationTestMethod>**](PaymentsConfigurationTestMethod.md) | Test methods for this payment method | [optional]
|
10
11
|
|
11
12
|
|
@@ -548,7 +548,6 @@ module UltracartClient
|
|
548
548
|
# @option opts [String] :expiration_date_end Expiration date end
|
549
549
|
# @option opts [Integer] :affiliate_oid Affiliate oid
|
550
550
|
# @option opts [BOOLEAN] :exclude_expired Exclude expired
|
551
|
-
# @option opts [String] :merchant_code_or_description Merchant code or description
|
552
551
|
# @option opts [Integer] :_limit The maximum number of records to return on this one API call. (Max 200) (default to 100)
|
553
552
|
# @option opts [Integer] :_offset Pagination of the record set. Offset is a zero based index. (default to 0)
|
554
553
|
# @option opts [String] :_sort The sort order of the coupons. See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
|
@@ -571,7 +570,6 @@ module UltracartClient
|
|
571
570
|
# @option opts [String] :expiration_date_end Expiration date end
|
572
571
|
# @option opts [Integer] :affiliate_oid Affiliate oid
|
573
572
|
# @option opts [BOOLEAN] :exclude_expired Exclude expired
|
574
|
-
# @option opts [String] :merchant_code_or_description Merchant code or description
|
575
573
|
# @option opts [Integer] :_limit The maximum number of records to return on this one API call. (Max 200)
|
576
574
|
# @option opts [Integer] :_offset Pagination of the record set. Offset is a zero based index.
|
577
575
|
# @option opts [String] :_sort The sort order of the coupons. See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
|
@@ -595,7 +593,6 @@ module UltracartClient
|
|
595
593
|
query_params[:'expiration_date_end'] = opts[:'expiration_date_end'] if !opts[:'expiration_date_end'].nil?
|
596
594
|
query_params[:'affiliate_oid'] = opts[:'affiliate_oid'] if !opts[:'affiliate_oid'].nil?
|
597
595
|
query_params[:'exclude_expired'] = opts[:'exclude_expired'] if !opts[:'exclude_expired'].nil?
|
598
|
-
query_params[:'merchant_code_or_description'] = opts[:'merchant_code_or_description'] if !opts[:'merchant_code_or_description'].nil?
|
599
596
|
query_params[:'_limit'] = opts[:'_limit'] if !opts[:'_limit'].nil?
|
600
597
|
query_params[:'_offset'] = opts[:'_offset'] if !opts[:'_offset'].nil?
|
601
598
|
query_params[:'_sort'] = opts[:'_sort'] if !opts[:'_sort'].nil?
|
@@ -682,7 +679,7 @@ module UltracartClient
|
|
682
679
|
# http body (model)
|
683
680
|
post_body = @api_client.object_to_http_body(coupon_query)
|
684
681
|
auth_names = ['ultraCartOauth', 'ultraCartSimpleApiKey']
|
685
|
-
data, status_code, headers = @api_client.call_api(:
|
682
|
+
data, status_code, headers = @api_client.call_api(:POST, local_var_path,
|
686
683
|
:header_params => header_params,
|
687
684
|
:query_params => query_params,
|
688
685
|
:form_params => form_params,
|
@@ -20,6 +20,8 @@ module UltracartClient
|
|
20
20
|
|
21
21
|
attr_accessor :details
|
22
22
|
|
23
|
+
attr_accessor :easypost_tracker_id
|
24
|
+
|
23
25
|
attr_accessor :expected_delivery_date
|
24
26
|
|
25
27
|
attr_accessor :expected_delivery_date_formatted
|
@@ -54,6 +56,7 @@ module UltracartClient
|
|
54
56
|
:'actual_delivery_date' => :'actual_delivery_date',
|
55
57
|
:'actual_delivery_date_formatted' => :'actual_delivery_date_formatted',
|
56
58
|
:'details' => :'details',
|
59
|
+
:'easypost_tracker_id' => :'easypost_tracker_id',
|
57
60
|
:'expected_delivery_date' => :'expected_delivery_date',
|
58
61
|
:'expected_delivery_date_formatted' => :'expected_delivery_date_formatted',
|
59
62
|
:'map_url' => :'map_url',
|
@@ -77,6 +80,7 @@ module UltracartClient
|
|
77
80
|
:'actual_delivery_date' => :'String',
|
78
81
|
:'actual_delivery_date_formatted' => :'String',
|
79
82
|
:'details' => :'Array<OrderTrackingNumberDetail>',
|
83
|
+
:'easypost_tracker_id' => :'String',
|
80
84
|
:'expected_delivery_date' => :'String',
|
81
85
|
:'expected_delivery_date_formatted' => :'String',
|
82
86
|
:'map_url' => :'String',
|
@@ -116,6 +120,10 @@ module UltracartClient
|
|
116
120
|
end
|
117
121
|
end
|
118
122
|
|
123
|
+
if attributes.has_key?(:'easypost_tracker_id')
|
124
|
+
self.easypost_tracker_id = attributes[:'easypost_tracker_id']
|
125
|
+
end
|
126
|
+
|
119
127
|
if attributes.has_key?(:'expected_delivery_date')
|
120
128
|
self.expected_delivery_date = attributes[:'expected_delivery_date']
|
121
129
|
end
|
@@ -194,6 +202,7 @@ module UltracartClient
|
|
194
202
|
actual_delivery_date == o.actual_delivery_date &&
|
195
203
|
actual_delivery_date_formatted == o.actual_delivery_date_formatted &&
|
196
204
|
details == o.details &&
|
205
|
+
easypost_tracker_id == o.easypost_tracker_id &&
|
197
206
|
expected_delivery_date == o.expected_delivery_date &&
|
198
207
|
expected_delivery_date_formatted == o.expected_delivery_date_formatted &&
|
199
208
|
map_url == o.map_url &&
|
@@ -219,7 +228,7 @@ module UltracartClient
|
|
219
228
|
# Calculates hash code according to all attributes.
|
220
229
|
# @return [Fixnum] Hash code
|
221
230
|
def hash
|
222
|
-
[actual_delivery_date, actual_delivery_date_formatted, details, expected_delivery_date, expected_delivery_date_formatted, map_url, order_placed_date, order_placed_date_formatted, payment_processed_date, payment_processed_date_formatted, shipped_date, shipped_date_formatted, shipping_method, status, status_description, tracking_number, tracking_url].hash
|
231
|
+
[actual_delivery_date, actual_delivery_date_formatted, details, easypost_tracker_id, expected_delivery_date, expected_delivery_date_formatted, map_url, order_placed_date, order_placed_date_formatted, payment_processed_date, payment_processed_date_formatted, shipped_date, shipped_date_formatted, shipping_method, status, status_description, tracking_number, tracking_url].hash
|
223
232
|
end
|
224
233
|
|
225
234
|
# Builds the object from hash
|
@@ -49,9 +49,6 @@ module UltracartClient
|
|
49
49
|
|
50
50
|
attr_accessor :restrictions
|
51
51
|
|
52
|
-
# Test methods for this payment method
|
53
|
-
attr_accessor :test_methods
|
54
|
-
|
55
52
|
# Attribute mapping from ruby-style variable name to JSON key.
|
56
53
|
def self.attribute_map
|
57
54
|
{
|
@@ -66,8 +63,7 @@ module UltracartClient
|
|
66
63
|
:'mail_to_name' => :'mail_to_name',
|
67
64
|
:'mail_to_postal_code' => :'mail_to_postal_code',
|
68
65
|
:'mail_to_store' => :'mail_to_store',
|
69
|
-
:'restrictions' => :'restrictions'
|
70
|
-
:'test_methods' => :'test_methods'
|
66
|
+
:'restrictions' => :'restrictions'
|
71
67
|
}
|
72
68
|
end
|
73
69
|
|
@@ -85,8 +81,7 @@ module UltracartClient
|
|
85
81
|
:'mail_to_name' => :'String',
|
86
82
|
:'mail_to_postal_code' => :'String',
|
87
83
|
:'mail_to_store' => :'String',
|
88
|
-
:'restrictions' => :'PaymentsConfigurationRestrictions'
|
89
|
-
:'test_methods' => :'Array<PaymentsConfigurationTestMethod>'
|
84
|
+
:'restrictions' => :'PaymentsConfigurationRestrictions'
|
90
85
|
}
|
91
86
|
end
|
92
87
|
|
@@ -145,12 +140,6 @@ module UltracartClient
|
|
145
140
|
if attributes.has_key?(:'restrictions')
|
146
141
|
self.restrictions = attributes[:'restrictions']
|
147
142
|
end
|
148
|
-
|
149
|
-
if attributes.has_key?(:'test_methods')
|
150
|
-
if (value = attributes[:'test_methods']).is_a?(Array)
|
151
|
-
self.test_methods = value
|
152
|
-
end
|
153
|
-
end
|
154
143
|
end
|
155
144
|
|
156
145
|
# Show invalid properties with the reasons. Usually used together with valid?
|
@@ -182,8 +171,7 @@ module UltracartClient
|
|
182
171
|
mail_to_name == o.mail_to_name &&
|
183
172
|
mail_to_postal_code == o.mail_to_postal_code &&
|
184
173
|
mail_to_store == o.mail_to_store &&
|
185
|
-
restrictions == o.restrictions
|
186
|
-
test_methods == o.test_methods
|
174
|
+
restrictions == o.restrictions
|
187
175
|
end
|
188
176
|
|
189
177
|
# @see the `==` method
|
@@ -195,7 +183,7 @@ module UltracartClient
|
|
195
183
|
# Calculates hash code according to all attributes.
|
196
184
|
# @return [Fixnum] Hash code
|
197
185
|
def hash
|
198
|
-
[accept_check_orders, accounting_code, checks_payable_to, deposit_to_account, mail_to_address1, mail_to_address2, mail_to_city, mail_to_country, mail_to_name, mail_to_postal_code, mail_to_store, restrictions
|
186
|
+
[accept_check_orders, accounting_code, checks_payable_to, deposit_to_account, mail_to_address1, mail_to_address2, mail_to_city, mail_to_country, mail_to_name, mail_to_postal_code, mail_to_store, restrictions].hash
|
199
187
|
end
|
200
188
|
|
201
189
|
# Builds the object from hash
|
@@ -25,13 +25,17 @@ module UltracartClient
|
|
25
25
|
|
26
26
|
attr_accessor :restrictions
|
27
27
|
|
28
|
+
# Test methods for this payment method
|
29
|
+
attr_accessor :test_methods
|
30
|
+
|
28
31
|
# Attribute mapping from ruby-style variable name to JSON key.
|
29
32
|
def self.attribute_map
|
30
33
|
{
|
31
34
|
:'accept_echeck' => :'accept_echeck',
|
32
35
|
:'accounting_code' => :'accounting_code',
|
33
36
|
:'deposit_to_account' => :'deposit_to_account',
|
34
|
-
:'restrictions' => :'restrictions'
|
37
|
+
:'restrictions' => :'restrictions',
|
38
|
+
:'test_methods' => :'test_methods'
|
35
39
|
}
|
36
40
|
end
|
37
41
|
|
@@ -41,7 +45,8 @@ module UltracartClient
|
|
41
45
|
:'accept_echeck' => :'BOOLEAN',
|
42
46
|
:'accounting_code' => :'String',
|
43
47
|
:'deposit_to_account' => :'String',
|
44
|
-
:'restrictions' => :'PaymentsConfigurationRestrictions'
|
48
|
+
:'restrictions' => :'PaymentsConfigurationRestrictions',
|
49
|
+
:'test_methods' => :'Array<PaymentsConfigurationTestMethod>'
|
45
50
|
}
|
46
51
|
end
|
47
52
|
|
@@ -68,6 +73,12 @@ module UltracartClient
|
|
68
73
|
if attributes.has_key?(:'restrictions')
|
69
74
|
self.restrictions = attributes[:'restrictions']
|
70
75
|
end
|
76
|
+
|
77
|
+
if attributes.has_key?(:'test_methods')
|
78
|
+
if (value = attributes[:'test_methods']).is_a?(Array)
|
79
|
+
self.test_methods = value
|
80
|
+
end
|
81
|
+
end
|
71
82
|
end
|
72
83
|
|
73
84
|
# Show invalid properties with the reasons. Usually used together with valid?
|
@@ -91,7 +102,8 @@ module UltracartClient
|
|
91
102
|
accept_echeck == o.accept_echeck &&
|
92
103
|
accounting_code == o.accounting_code &&
|
93
104
|
deposit_to_account == o.deposit_to_account &&
|
94
|
-
restrictions == o.restrictions
|
105
|
+
restrictions == o.restrictions &&
|
106
|
+
test_methods == o.test_methods
|
95
107
|
end
|
96
108
|
|
97
109
|
# @see the `==` method
|
@@ -103,7 +115,7 @@ module UltracartClient
|
|
103
115
|
# Calculates hash code according to all attributes.
|
104
116
|
# @return [Fixnum] Hash code
|
105
117
|
def hash
|
106
|
-
[accept_echeck, accounting_code, deposit_to_account, restrictions].hash
|
118
|
+
[accept_echeck, accounting_code, deposit_to_account, restrictions, test_methods].hash
|
107
119
|
end
|
108
120
|
|
109
121
|
# Builds the object from hash
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ultracart_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.6.
|
4
|
+
version: 3.6.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- UltraCart
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: typhoeus
|