seatsio 51.14.0 → 52.0.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 +4 -4
- data/Gemfile.lock +10 -10
- data/lib/seatsio/domain.rb +28 -1
- data/lib/seatsio/events.rb +82 -40
- data/lib/seatsio/seasons.rb +21 -18
- data/lib/seatsio/version.rb +1 -1
- data/seatsio.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3d0e12bbcf4acc3e39862e05602a569497067a8749501d4453387d0d31d0cb8b
|
|
4
|
+
data.tar.gz: bcaaabc425d672dc7858312e39c8d1ed735098c21839b6616a48c8c964f67424
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a9bbda7cc5fa1a0e169d3bed7167b96f1de7f14c870ad4279af378edd976c5bf3d1f090cda7d3de549b1f098cc638dbd683cd8400180e975aa71e198c98ee2f9
|
|
7
|
+
data.tar.gz: 4f2da84d18d0763433f1cf784895d819a7d20587dfa9483fd5fa7baa37b47273a1f865dcad79b9a9e1e63b570faceeaf25dee2a6c0effcf185f5c0f9777eb824
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
seatsio (
|
|
4
|
+
seatsio (52.0.0)
|
|
5
5
|
base64 (>= 0.2, < 0.4)
|
|
6
6
|
rest-client (~> 2.0, >= 2.0.2)
|
|
7
7
|
|
|
@@ -11,12 +11,12 @@ GEM
|
|
|
11
11
|
addressable (2.8.7)
|
|
12
12
|
public_suffix (>= 2.0.2, < 7.0)
|
|
13
13
|
base64 (0.3.0)
|
|
14
|
-
bigdecimal (3.1
|
|
15
|
-
crack (1.0.
|
|
14
|
+
bigdecimal (3.3.1)
|
|
15
|
+
crack (1.0.1)
|
|
16
16
|
bigdecimal
|
|
17
17
|
rexml
|
|
18
18
|
domain_name (0.6.20240107)
|
|
19
|
-
hashdiff (1.1
|
|
19
|
+
hashdiff (1.2.1)
|
|
20
20
|
http-accept (1.7.0)
|
|
21
21
|
http-cookie (1.0.8)
|
|
22
22
|
domain_name (~> 0.5)
|
|
@@ -25,20 +25,20 @@ GEM
|
|
|
25
25
|
logger
|
|
26
26
|
mime-types-data (~> 3.2015)
|
|
27
27
|
mime-types-data (3.2025.0402)
|
|
28
|
-
minitest (5.
|
|
28
|
+
minitest (5.26.0)
|
|
29
29
|
netrc (0.11.0)
|
|
30
30
|
parallel (1.27.0)
|
|
31
|
-
parallel_tests (5.
|
|
31
|
+
parallel_tests (5.5.0)
|
|
32
32
|
parallel
|
|
33
33
|
public_suffix (6.0.2)
|
|
34
|
-
rake (13.3.
|
|
34
|
+
rake (13.3.1)
|
|
35
35
|
rest-client (2.1.0)
|
|
36
36
|
http-accept (>= 1.7.0, < 2.0)
|
|
37
37
|
http-cookie (>= 1.0.2, < 2.0)
|
|
38
38
|
mime-types (>= 1.16, < 4.0)
|
|
39
39
|
netrc (~> 0.8)
|
|
40
|
-
rexml (3.4.
|
|
41
|
-
webmock (3.
|
|
40
|
+
rexml (3.4.4)
|
|
41
|
+
webmock (3.26.1)
|
|
42
42
|
addressable (>= 2.8.0)
|
|
43
43
|
crack (>= 0.3.2)
|
|
44
44
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
@@ -49,7 +49,7 @@ PLATFORMS
|
|
|
49
49
|
DEPENDENCIES
|
|
50
50
|
bundler (~> 2.2)
|
|
51
51
|
minitest (~> 5.0)
|
|
52
|
-
parallel_tests (~> 5.
|
|
52
|
+
parallel_tests (~> 5.5.0)
|
|
53
53
|
rake (~> 13.0)
|
|
54
54
|
seatsio!
|
|
55
55
|
webmock (~> 3.4, >= 3.4.2)
|
data/lib/seatsio/domain.rb
CHANGED
|
@@ -101,6 +101,32 @@ module Seatsio
|
|
|
101
101
|
end
|
|
102
102
|
end
|
|
103
103
|
|
|
104
|
+
class EditForSaleConfigResult
|
|
105
|
+
attr_reader :for_sale_config, :rate_limit_info
|
|
106
|
+
|
|
107
|
+
def initialize(for_sale_config, rate_limit_info)
|
|
108
|
+
@for_sale_config = for_sale_config
|
|
109
|
+
@rate_limit_info = rate_limit_info
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def self.from_json(data)
|
|
113
|
+
EditForSaleConfigResult.new(ForSaleConfig.from_json(data['forSaleConfig']), ForSaleRateLimitInfo.from_json(data['rateLimitInfo']))
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
class ForSaleRateLimitInfo
|
|
118
|
+
attr_reader :rate_limit_remaining_calls, :rate_limit_reset_date
|
|
119
|
+
|
|
120
|
+
def initialize(rate_limit_remaining_calls, rate_limit_reset_date)
|
|
121
|
+
@rate_limit_remaining_calls = rate_limit_remaining_calls
|
|
122
|
+
@rate_limit_reset_date = rate_limit_reset_date
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def self.from_json(data)
|
|
126
|
+
ForSaleRateLimitInfo.new(data['rateLimitRemainingCalls'], parse_date(data['rateLimitResetDate']))
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
104
130
|
class Category
|
|
105
131
|
|
|
106
132
|
attr_reader :key, :label, :color, :accessible
|
|
@@ -246,12 +272,13 @@ module Seatsio
|
|
|
246
272
|
|
|
247
273
|
class Season < Event
|
|
248
274
|
|
|
249
|
-
attr_accessor :partial_season_keys, :events
|
|
275
|
+
attr_accessor :partial_season_keys, :events, :for_sale_propagated
|
|
250
276
|
|
|
251
277
|
def initialize(data)
|
|
252
278
|
super(data)
|
|
253
279
|
@partial_season_keys = data['partialSeasonKeys']
|
|
254
280
|
@events = data['events'] ? Event.create_list(data['events']) : nil
|
|
281
|
+
@for_sale_propagated = data['forSalePropagated']
|
|
255
282
|
end
|
|
256
283
|
|
|
257
284
|
def is_season
|
data/lib/seatsio/events.rb
CHANGED
|
@@ -150,18 +150,75 @@ module Seatsio
|
|
|
150
150
|
Pagination::Cursor.new(StatusChange, "events/#{key}/objects/#{object_id}/status-changes", @http_client)
|
|
151
151
|
end
|
|
152
152
|
|
|
153
|
-
def
|
|
153
|
+
def edit_for_sale_config(key:, for_sale: nil, not_for_sale: nil)
|
|
154
|
+
request = {}
|
|
155
|
+
request[:forSale] = for_sale if for_sale
|
|
156
|
+
request[:notForSale] = not_for_sale if not_for_sale
|
|
157
|
+
response = @http_client.post("events/#{key}/actions/edit-for-sale-config", request)
|
|
158
|
+
EditForSaleConfigResult.from_json(response)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def edit_for_sale_config_for_events(events)
|
|
162
|
+
request = build_parameters_for_edit_for_sale_config_for_events(events)
|
|
163
|
+
response = @http_client.post("events/actions/edit-for-sale-config", request)
|
|
164
|
+
response.each do |key, value|
|
|
165
|
+
response[key] = EditForSaleConfigResult.from_json(value)
|
|
166
|
+
end
|
|
167
|
+
response
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def replace_for_sale_config(key:, for_sale:, objects: nil, area_places: nil, categories: nil)
|
|
171
|
+
action = for_sale ? "mark-as-for-sale" : "mark-as-not-for-sale"
|
|
154
172
|
request = build_parameters_for_mark_as_sale objects, area_places, categories
|
|
155
|
-
@http_client.post("events/#{key}/actions
|
|
173
|
+
@http_client.post("events/#{key}/actions/#{action}", request)
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# @deprecated Use {#replace_for_sale_config} instead
|
|
177
|
+
def mark_as_not_for_sale(key:, objects: nil, area_places: nil, categories: nil)
|
|
178
|
+
replace_for_sale_config(key: key, for_sale: false, objects: objects, area_places: area_places, categories: categories)
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
# @deprecated Use {#replace_for_sale_config} instead
|
|
182
|
+
def mark_as_for_sale(key:, objects: nil, area_places: nil, categories: nil)
|
|
183
|
+
replace_for_sale_config(key: key, for_sale: true, objects: objects, area_places: area_places, categories: categories)
|
|
156
184
|
end
|
|
157
185
|
|
|
158
186
|
def mark_everything_as_for_sale(key: nil)
|
|
159
187
|
@http_client.post("events/#{key}/actions/mark-everything-as-for-sale")
|
|
160
188
|
end
|
|
161
189
|
|
|
162
|
-
def
|
|
163
|
-
|
|
164
|
-
|
|
190
|
+
def move_to_new_chart_copy(event_key)
|
|
191
|
+
response = @http_client.post("events/#{event_key}/actions/move-to-new-chart-copy")
|
|
192
|
+
Event.from_json(response)
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
def self.table_booking_config_to_request(table_booking_config)
|
|
196
|
+
result = {}
|
|
197
|
+
result["mode"] = table_booking_config.mode
|
|
198
|
+
result["tables"] = table_booking_config.tables if table_booking_config.tables != nil
|
|
199
|
+
result
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def self.categories_to_request(categories)
|
|
203
|
+
result = []
|
|
204
|
+
categories.each do |category|
|
|
205
|
+
r = {}
|
|
206
|
+
r["key"] = category.key if category.key != nil
|
|
207
|
+
r["label"] = category.label if category.label != nil
|
|
208
|
+
r["color"] = category.color if category.color != nil
|
|
209
|
+
r["accessible"] = category.accessible if category.accessible != nil
|
|
210
|
+
result.push(r)
|
|
211
|
+
end
|
|
212
|
+
result
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def self.for_sale_config_to_request(for_sale_config)
|
|
216
|
+
result = {}
|
|
217
|
+
result["forSale"] = for_sale_config.for_sale
|
|
218
|
+
result["objects"] = for_sale_config.objects if for_sale_config.objects != nil
|
|
219
|
+
result["areaPlaces"] = for_sale_config.area_places if for_sale_config.area_places != nil
|
|
220
|
+
result["categories"] = for_sale_config.categories if for_sale_config.categories != nil
|
|
221
|
+
result
|
|
165
222
|
end
|
|
166
223
|
|
|
167
224
|
private
|
|
@@ -174,6 +231,20 @@ module Seatsio
|
|
|
174
231
|
request
|
|
175
232
|
end
|
|
176
233
|
|
|
234
|
+
def build_parameters_for_edit_for_sale_config_for_events(events)
|
|
235
|
+
request = {}
|
|
236
|
+
request[:events] = {}
|
|
237
|
+
|
|
238
|
+
events.each do |event|
|
|
239
|
+
event_request = {}
|
|
240
|
+
event_request[:forSale] = event[1][:for_sale] if event[1][:for_sale]
|
|
241
|
+
event_request[:notForSale] = event[1][:not_for_sale] if event[1][:not_for_sale]
|
|
242
|
+
request[:events][event[0]] = event_request
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
request
|
|
246
|
+
end
|
|
247
|
+
|
|
177
248
|
def build_extra_data_request(extra_data)
|
|
178
249
|
payload = {}
|
|
179
250
|
payload[:extraData] = extra_data if extra_data
|
|
@@ -186,12 +257,12 @@ module Seatsio
|
|
|
186
257
|
result["eventKey"] = event_key if event_key
|
|
187
258
|
result["name"] = name if name
|
|
188
259
|
result["date"] = date.iso8601 if date
|
|
189
|
-
result["tableBookingConfig"] = table_booking_config_to_request(table_booking_config) if table_booking_config != nil
|
|
260
|
+
result["tableBookingConfig"] = EventsClient::table_booking_config_to_request(table_booking_config) if table_booking_config != nil
|
|
190
261
|
result["objectCategories"] = object_categories if object_categories != nil
|
|
191
|
-
result["categories"] = categories_to_request(categories) if categories != nil
|
|
262
|
+
result["categories"] = EventsClient::categories_to_request(categories) if categories != nil
|
|
192
263
|
result["channels"] = ChannelsClient::channels_to_request(channels) if channels != nil
|
|
193
264
|
result["isInThePast"] = is_in_the_past if is_in_the_past != nil
|
|
194
|
-
result["forSaleConfig"] = for_sale_config_to_request(for_sale_config) if for_sale_config != nil
|
|
265
|
+
result["forSaleConfig"] = EventsClient::for_sale_config_to_request(for_sale_config) if for_sale_config != nil
|
|
195
266
|
result
|
|
196
267
|
end
|
|
197
268
|
|
|
@@ -209,44 +280,15 @@ module Seatsio
|
|
|
209
280
|
r["eventKey"] = param[:event_key] if param[:event_key] != nil
|
|
210
281
|
r["name"] = param[:name] if param[:name]
|
|
211
282
|
r["date"] = param[:date].iso8601 if param[:date]
|
|
212
|
-
r["tableBookingConfig"] = table_booking_config_to_request(param[:table_booking_config]) if param[:table_booking_config] != nil
|
|
283
|
+
r["tableBookingConfig"] = EventsClient::table_booking_config_to_request(param[:table_booking_config]) if param[:table_booking_config] != nil
|
|
213
284
|
r["objectCategories"] = param[:object_categories] if param[:object_categories] != nil
|
|
214
|
-
r["categories"] = categories_to_request(param[:categories]) if param[:categories] != nil
|
|
285
|
+
r["categories"] = EventsClient::categories_to_request(param[:categories]) if param[:categories] != nil
|
|
215
286
|
r["channels"] = ChannelsClient::channels_to_request(param[:channels]) if param[:channels] != nil
|
|
216
|
-
r["forSaleConfig"] = for_sale_config_to_request(param[:for_sale_config]) if param[:for_sale_config] != nil
|
|
217
|
-
result.push(r)
|
|
218
|
-
end
|
|
219
|
-
result
|
|
220
|
-
end
|
|
221
|
-
|
|
222
|
-
def table_booking_config_to_request(table_booking_config)
|
|
223
|
-
result = {}
|
|
224
|
-
result["mode"] = table_booking_config.mode
|
|
225
|
-
result["tables"] = table_booking_config.tables if table_booking_config.tables != nil
|
|
226
|
-
result
|
|
227
|
-
end
|
|
228
|
-
|
|
229
|
-
def categories_to_request(categories)
|
|
230
|
-
result = []
|
|
231
|
-
categories.each do |category|
|
|
232
|
-
r = {}
|
|
233
|
-
r["key"] = category.key if category.key != nil
|
|
234
|
-
r["label"] = category.label if category.label != nil
|
|
235
|
-
r["color"] = category.color if category.color != nil
|
|
236
|
-
r["accessible"] = category.accessible if category.accessible != nil
|
|
287
|
+
r["forSaleConfig"] = EventsClient::for_sale_config_to_request(param[:for_sale_config]) if param[:for_sale_config] != nil
|
|
237
288
|
result.push(r)
|
|
238
289
|
end
|
|
239
290
|
result
|
|
240
291
|
end
|
|
241
292
|
|
|
242
|
-
def for_sale_config_to_request(for_sale_config)
|
|
243
|
-
result = {}
|
|
244
|
-
result["forSale"] = for_sale_config.for_sale
|
|
245
|
-
result["objects"] = for_sale_config.objects if for_sale_config.objects != nil
|
|
246
|
-
result["areaPlaces"] = for_sale_config.area_places if for_sale_config.area_places != nil
|
|
247
|
-
result["categories"] = for_sale_config.categories if for_sale_config.categories != nil
|
|
248
|
-
result
|
|
249
|
-
end
|
|
250
|
-
|
|
251
293
|
end
|
|
252
294
|
end
|
data/lib/seatsio/seasons.rb
CHANGED
|
@@ -14,12 +14,18 @@ module Seatsio
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def create(chart_key:, key: nil, name: nil, number_of_events: nil, event_keys: nil,
|
|
17
|
-
table_booking_config: nil,
|
|
18
|
-
|
|
17
|
+
table_booking_config: nil, object_categories: nil, categories: nil, channels: nil,
|
|
18
|
+
for_sale_config: nil, for_sale_propagated: nil)
|
|
19
|
+
request = build_create_season_request(chart_key, key, name, number_of_events, event_keys, table_booking_config, object_categories, categories, channels, for_sale_config, for_sale_propagated)
|
|
19
20
|
response = @http_client.post('seasons', request)
|
|
20
21
|
Season.new(response)
|
|
21
22
|
end
|
|
22
23
|
|
|
24
|
+
def update(key:, event_key: nil, name: nil, table_booking_config: nil, object_categories: nil, categories: nil, for_sale_propagated: nil)
|
|
25
|
+
payload = build_update_season_request(event_key, name, table_booking_config, object_categories, categories, for_sale_propagated)
|
|
26
|
+
@http_client.post("events/#{key}", payload)
|
|
27
|
+
end
|
|
28
|
+
|
|
23
29
|
def create_partial_season(top_level_season_key:, partial_season_key: nil, name: nil, event_keys: nil)
|
|
24
30
|
request = {}
|
|
25
31
|
request['key'] = partial_season_key if partial_season_key
|
|
@@ -55,34 +61,31 @@ module Seatsio
|
|
|
55
61
|
|
|
56
62
|
private
|
|
57
63
|
|
|
58
|
-
def build_create_season_request(chart_key, key, name, number_of_events, event_keys, table_booking_config, channels, for_sale_config)
|
|
64
|
+
def build_create_season_request(chart_key, key, name, number_of_events, event_keys, table_booking_config, object_categories, categories, channels, for_sale_config, for_sale_propagated)
|
|
59
65
|
request = {}
|
|
60
66
|
request['chartKey'] = chart_key if chart_key
|
|
61
67
|
request['key'] = key if key
|
|
62
68
|
request['name'] = name if name
|
|
63
69
|
request['numberOfEvents'] = number_of_events if number_of_events
|
|
64
70
|
request['eventKeys'] = event_keys if event_keys
|
|
65
|
-
request['tableBookingConfig'] = table_booking_config_to_request(table_booking_config) if table_booking_config != nil
|
|
71
|
+
request['tableBookingConfig'] = EventsClient::table_booking_config_to_request(table_booking_config) if table_booking_config != nil
|
|
72
|
+
request["objectCategories"] = object_categories if object_categories != nil
|
|
73
|
+
request["categories"] = EventsClient::categories_to_request(categories) if categories != nil
|
|
66
74
|
request['channels'] = ChannelsClient::channels_to_request(channels) if channels != nil
|
|
67
|
-
request['forSaleConfig'] = for_sale_config_to_request(for_sale_config) if for_sale_config != nil
|
|
75
|
+
request['forSaleConfig'] = EventsClient::for_sale_config_to_request(for_sale_config) if for_sale_config != nil
|
|
76
|
+
request['forSalePropagated'] = for_sale_propagated if for_sale_propagated != nil
|
|
68
77
|
request
|
|
69
78
|
end
|
|
70
79
|
|
|
71
|
-
def
|
|
80
|
+
def build_update_season_request(key, name, table_booking_config, object_categories, categories, for_sale_propagated)
|
|
72
81
|
request = {}
|
|
73
|
-
request['
|
|
74
|
-
request['
|
|
82
|
+
request['eventKey'] = key if key
|
|
83
|
+
request['name'] = name if name
|
|
84
|
+
request['tableBookingConfig'] = EventsClient::table_booking_config_to_request(table_booking_config) if table_booking_config != nil
|
|
85
|
+
request["objectCategories"] = object_categories if object_categories != nil
|
|
86
|
+
request["categories"] = EventsClient::categories_to_request(categories) if categories != nil
|
|
87
|
+
request['forSalePropagated'] = for_sale_propagated if for_sale_propagated != nil
|
|
75
88
|
request
|
|
76
89
|
end
|
|
77
|
-
|
|
78
|
-
def for_sale_config_to_request(for_sale_config)
|
|
79
|
-
result = {}
|
|
80
|
-
result["forSale"] = for_sale_config.for_sale
|
|
81
|
-
result["objects"] = for_sale_config.objects if for_sale_config.objects != nil
|
|
82
|
-
result["areaPlaces"] = for_sale_config.area_places if for_sale_config.area_places != nil
|
|
83
|
-
result["categories"] = for_sale_config.categories if for_sale_config.categories != nil
|
|
84
|
-
result
|
|
85
|
-
end
|
|
86
|
-
|
|
87
90
|
end
|
|
88
91
|
end
|
data/lib/seatsio/version.rb
CHANGED
data/seatsio.gemspec
CHANGED
|
@@ -27,5 +27,5 @@ Gem::Specification.new do |spec|
|
|
|
27
27
|
spec.add_development_dependency "rake", "~> 13.0"
|
|
28
28
|
spec.add_development_dependency "minitest", "~> 5.0"
|
|
29
29
|
spec.add_development_dependency 'webmock', '~> 3.4', '>= 3.4.2'
|
|
30
|
-
spec.add_development_dependency 'parallel_tests', '~> 5.
|
|
30
|
+
spec.add_development_dependency 'parallel_tests', '~> 5.5.0'
|
|
31
31
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: seatsio
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 52.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Seats.io
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-10
|
|
11
|
+
date: 2025-11-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rest-client
|
|
@@ -118,14 +118,14 @@ dependencies:
|
|
|
118
118
|
requirements:
|
|
119
119
|
- - "~>"
|
|
120
120
|
- !ruby/object:Gem::Version
|
|
121
|
-
version: 5.
|
|
121
|
+
version: 5.5.0
|
|
122
122
|
type: :development
|
|
123
123
|
prerelease: false
|
|
124
124
|
version_requirements: !ruby/object:Gem::Requirement
|
|
125
125
|
requirements:
|
|
126
126
|
- - "~>"
|
|
127
127
|
- !ruby/object:Gem::Version
|
|
128
|
-
version: 5.
|
|
128
|
+
version: 5.5.0
|
|
129
129
|
description: This is the official Ruby client library for the Seats.io V2 REST API
|
|
130
130
|
email:
|
|
131
131
|
- nahuel@seats.io
|