-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathShop.ts
651 lines (638 loc) · 16.8 KB
/
Shop.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
/**
* @interface Shop
* @description shop 정보
*/
export default interface Shop {
/**
* @type String
* @description Unique identifier of the shop
* <br>
* - Available: BG_와 같이 API Identifier + underscore로 시작하는 어떠한 값
* @nullable false
* @required true
* @example BG_ABC_123
* @default N/A
*/
_id: string;
/**
* @type String
* @description Unique identifier of the vendor
* <br>
* - Available: BG_와 같이 API Identifier + underscore로 시작하는 어떠한 값
* @nullable false
* @required true
* @example BG_001
* @default N/A
*/
_vendorId: string;
/**
* @type String
* @description 외부에서 제공된 업체 혹은 지점 이름
* @nullable false
* @required true
* @example Budget Hawthorne Ca
* @default N/A
*/
name: string;
/**
* @type String[]
* @description 외부에서 제공된 업체 혹은 지점의 연락처
* @nullable false
* @required true
* @example ['310-970-1792']
* @default []
*/
contacts: string[];
/**
* @type OperationTime[]
* @description 외부에서 제공된 업체 혹은 지점의 운영 시간
* <br>
* - 운영 시간이 변동되는 API의 경우 "가장 많이 노출된 운영시간"을 사용한다.
* @nullable false
* @required true
* @example OperationTime[]
* @default []
*/
operationTimes: OperationTime[];
/**
* @type SeasonalOperationTime[]
* @description 외부에서 제공된 업체 혹은 지점의 특정 구간 동안의 운영 시간
* @nullable false
* @required true
* @example SeasonalOperationTime[]
* @default []
*/
seasonalOperationTimes: SeasonalOperationTime[];
/**
* @type OperationBreakTime[]
* @description 외부에서 제공된 업체 혹은 지점의 브레이크 타임 (하루 안에서 운영시간이 나뉠 경우, 중간 비는 시간을 정의)
* @nullable false
* @required true
* @example OperationBreakTime[]
* @default []
*/
operationBreakTimes: OperationBreakTime[];
/**
* @type SeasonalOperationBreakTime[]
* @description 외부에서 제공된 업체 혹은 지점의 특정 구간 동안의 브레이크 타임 (하루 안에서 운영시간이 나뉘는 것이 경우, 중간 비는 시간을 정의)
* @nullable false
* @required true
* @example SeasonalOperationBreakTime[]
* @default []
*/
seasonalOperationBreakTimes: SeasonalOperationBreakTime[];
/**
* @type LicensePolicy[]
* @description 외부에서 제공된 업체 혹은 지점의 면허 규정
* @nullable false
* @required true
* @example LicensePolicy[]
* @default []
*/
licensePolicies: LicensePolicy[];
/**
* @type Location
* @description 외부에서 제공된 업체 혹은 지점의 상세 위치
* @nullable false
* @required true
* @example Location
* @default N/A
*/
location: Location;
/**
* @type IdentificationPolicy[]
* @description 외부에서 제공된 업체 혹은 지점의 신분증 검증 규정
* @nullable false
* @required true
* @example IdentificationPolicy[]
* @default N/A
*/
identificationPolicies: IdentificationPolicy[];
/**
* @type String
* @description 외부에서 제공된 업체 혹은 지점의 전반적인 공지사항
* @nullable false
* @required true
* @example ""
* @default ""
*/
shopGuide: string;
/**
* @type Guide[]
* @description 외부에서 제공된 업체 혹은 지점에서 차량 인수 방법
* @nullable false
* @required true
* @example Guide[]
* @default []
*/
pickupGuide: Guide[];
/**
* @type Guide[]
* @description 외부에서 제공된 업체 혹은 지점에서 차량 반납 방법
* @nullable false
* @required true
* @example Guide[]
* @default []
*/
returnGuide: Guide[];
/**
* @type String
* @description 외부에서 제공된 업체 혹은 지점 공휴일 관련 공지사항
* @nullable false
* @required true
* @example ""
* @default ""
*/
holidayNotice: string;
/**
* @type String
* @description 외부에서 제공된 업체 혹은 지점 공지사항
* @nullable false
* @required true
* @example ""
* @default ""
*/
specialNotice: string;
/**
* @type ChargedTime[]
* @description 외부에서 제공된 업체 혹은 지점 추가요금이 부과되는 운영 시간
* @nullable false
* @required true
* @example ChargedTime[]
* @default []
*/
chargedTimes: ChargedTime[];
/**
* @type ChargedTimePrice
* @description 외부에서 제공된 업체 혹은 지점 추가요금 운영시간에 부과되는 추가 요금
* @nullable true
* @required true
* @example ChargedTimePrice
* @default null
*/
chargedTimePrice: ChargedTimePrice;
/**
* @type ReturnShop
* @description 반납 업체 정보
* <br>
* 구조는 Shop의 Interface를 그대로 사용한다. 차량목록에서는 해당 객체가 아예 없으며, 차량 상세, 예약 상세에서만 존재할 수 있다.
* @nullable false
* @required true
* @example ReturnShop
* @default N/A
*/
returnShop: ReturnShop;
}
/**
* @interface LicensePolicy
* @description 운전면허 요구사항 및 규정에 대한 정보를 나타내는 인터페이스
*/
export interface LicensePolicy {
/**
* @type boolean
* @description 외국인 규정인지 여부
* <br>
* - true (현지인 기준)
* - false (외국인 기준)
* @nullable false
* @required true
* @example true
* @default N/A
*/
foreigner: boolean;
/**
* @type String[]
* @description 필요한 면허증 및 서류
* @nullable false
* @required true
* @example ["국제운전면허증", "거주지의 실물 운전 면허증"]
* @default []
*/
requiredLicenses: string[];
/**
* @type String
* @description 면허 규정 설명
* @nullable false
* @required true
* @example "국제운전면허증(IDP)은 운전면허증의 번역본입니다. 따라서 반드시 운전면허증 원본을 지참하셔야 합니다."
* @default ""
*/
description: string;
}
/**
* @interface OperationTime
* @description 업체 운영 시간
*/
export interface OperationTime {
/**
* @type String
* @description 요일
* @nullable false
* @required true
* @example MON | TUE | WED | THU | FRI | SAT | SUN;
* @default N/A
*/
day: string;
/**
* @type String
* @description 운영 시작 시간
* <br>
* - 운영시작 시간과 종료시간이 모두 00:00이고, closeNextDay가 false는 휴무일이다.
* @nullable false
* @required true
* @example 00:00
* @default 00:00
*/
open: string;
/**
* @type String
* @description 운영 종료 시간
* 운영시작 시간과 종료시간이 모두 00:00이고, closeNextDay가 false는 휴무일이다.
* @nullable false
* @required true
* @example 22:00
* @default 00:00
*/
close: string;
/**
* @type Boolean
* @description 다음날에 닫는 경우
* <br>
* - day가 MON일때 true인 경우, 월요일에 열어서 화요일에 닫는 것을 의미.
* - day가 MON일때 false인 경우, 월요일에 열어서 월요일에 닫는 것을 의미.
* @nullable false
* @required true
* @example false
* @default false
*/
closeNextDay: boolean;
}
/**
* @interface SeasonalOperationTime
* @description 외부에서 제공된 업체 혹은 지점의 특정 구간 동안의 운영 시간
*/
export interface SeasonalOperationTime {
/**
* @type String
* @description 요일
* @nullable false
* @required true
* @example MON | TUE | WED | THU | FRI | SAT | SUN;
* @default N/A
*/
day: string;
/**
* @type String
* @description 특정 구간의 시작 일 (YYYY-MM-DD)
* @nullable false
* @required true
* @example 2023-01-01
* @default N/A
*/
startDate: string;
/**
* @type String
* @description 특정 구간의 종료 일 (YYYY-MM-DD)
* @nullable false
* @required true
* @example 2023-01-31
* @default N/A
*/
endDate: string;
/**
* @type String
* @description 운영 시작 시간
* - 운영시작 시간과 종료시간이 모두 00:00이고, closeNextDay가 false는 휴무일이다.
* - 예시: startDate: 2022-01-01, endDate: 2022-01-01, open: 00:00, clsoe: 00:00은 2022-01-01, 01-01은 휴무라는 의미.
* @nullable false
* @required true
* @example 00:00
* @default 00:00
*/
open: string;
/**
* @type String
* @description 운영 종료 시간
* - 운영시작 시간과 종료시간이 모두 00:00이고, closeNextDay가 false는 휴무일이다.
* - 예시: startDate: 2022-01-01, endDate: 2022-01-01, open: 00:00, clsoe: 00:00은 2022-01-01, 01-01은 휴무라는 의미.
* @nullable false
* @required true
* @example 22:00
* @default 00:00
*/
close: string;
/**
* @type Boolean
* @description 다음날에 닫는 경우
* <br>
* - day가 MON일때 true인 경우, 월요일에 열어서 화요일에 닫는 것을 의미.
* - day가 MON일때 false인 경우, 월요일에 열어서 월요일에 닫는 것을 의미.
* @nullable false
* @required true
* @example false
* @default false
*/
closeNextDay: boolean;
}
/**
* @interface OperationBreakTime
* @description 외부에서 제공된 업체 혹은 지점의 브레이크 타임 (하루 안에서 운영시간이 나뉠 경우, 중간 비는 시간을 정의)
*/
export interface OperationBreakTime {
/**
* @type String
* @description 요일
* @nullable false
* @required true
* @example MON | TUE | WED | THU | FRI | SAT | SUN;
* @default N/A
*/
day: string;
/**
* @type String
* @description 브레이크 타임 시작 시간
* @nullable false
* @required true
* @example 14:00
* @default N/A
*/
start: string;
/**
* @type String
* @description 브레이크 타임 종료 시간
* @nullable false
* @required true
* @example 15:00
* @default N/A
*/
end: string;
}
/**
* @interface SeasonalOperationBreakTime
* @description 외부에서 제공된 업체 혹은 지점의 특정 구간 동안의 브레이크 타임 (하루 안에서 운영시간이 나뉘는 것이 경우, 중간 비는 시간을 정의)
*/
export interface SeasonalOperationBreakTime {
/**
* @type String
* @description 요일
* @nullable false
* @required true
* @example MON | TUE | WED | THU | FRI | SAT | SUN;
* @default N/A
*/
day: string;
/**
* @type String
* @description 특정 구간의 시작 일 (YYYY-MM-DD)
* @nullable false
* @required true
* @example 2023-01-01
* @default N/A
*/
startDate: string;
/**
* @type String
* @description 특정 구간의 종료 일 (YYYY-MM-DD)
* @nullable false
* @required true
* @example 2023-01-31
* @default N/A
*/
endDate: string;
/**
* @type String
* @description 브레이크 타임 시작 시간
* @nullable false
* @required true
* @example 14:00
* @default N/A
*/
start: string;
/**
* @type String
* @description 브레이크 타임 종료 시간
* @nullable false
* @required true
* @example 15:00
* @default N/A
*/
end: string;
}
/**
* @interface Location
* @description 외부에서 제공된 업체 혹은 지점의 상세 위치
*/
export interface Location {
/**
* @type String
* @description 외부에서 제공된 업체 혹은 지점의 위치 이름
* @nullable false
* @required true
* @example "LOS ANGELES INTL AIRPORT"
* @default ""
*/
name: string;
/**
* @type String
* @description 외부에서 제공된 업체 혹은 지점의 위치 주소
* <br>
* API에서 주소가 상위 주소/하위 주소로 나뉘는 경우, 상위 주소에 해당됩니다. 만약 API에서 구분되지 않는다면, 가장 작은 단위인 streetAddress에 모두 넣어야 합니다.
* @nullable false
* @required true
* @example ""
* @default ""
*/
address: string;
/**
* @type String
* @description 외부에서 제공된 업체 혹은 지점의 위치 상세 주소
* <br>
* API에서 주소가 상위 주소/하위 주소로 나뉘는 경우, 하위 주소에 해당됩니다.
* @nullable false
* @required true
* @example "9000 AIRPORT BOULEVARD"
* @default ""
*/
streetAddress: string;
/**
* @type Number
* @description 외부에서 제공된 업체 혹은 지점의 위치한 구역
* <br>
* - 1 : 공항 터미널
* - 2 : 공항 내부
* - 3 : 공항 외부
* - 4 : 국내선 터미널
* - 5 : 국제선 터미널
* - -1 : 알수 없음
* @nullable false
* @required true
* @example -1
* @default -1
*/
positionType: number;
/**
* @type String
* @description 외부에서 제공된 업체 혹은 지점의 터미널 코드
* <br>
* - 터미널에 위치한 업체라면, 해당 공항터미널 코드가 들어갑니다
* @nullable true
* @required true
* @example "T1"
* @default null
*/
terminalCode: string | null;
/**
* @type string
* @description 외부에서 제공된 업체 혹은 지점까지 가는 방법
* @nullable false
* @required true
* @example "무료 셔틀버스 이용"
* @default ""
*/
wayOfArrival: string;
/**
* @type Boolean
* @description 외부에서 제공된 업체 혹은 지점이 공항에 위치하는지 여부
* <br>
* API에서 공항 위치 여부를 내려주지 않는다면 false
* @nullable false
* @required true
* @example false
* @default false
*/
isAirportShop: boolean;
/**
* @type Number
* @description 외부에서 제공된 업체 혹은 지점의 위도
* @nullable false
* @required true
* @example 127.001
* @default N/A
*/
latitude: number;
/**
* @type Number
* @description 외부에서 제공된 업체 혹은 지점의 경도
* @nullable false
* @required true
* @example 1.234
* @default N/A
*/
longitude: number;
}
/**
* @interface IdentificationPolicy
* @description 외부에서 제공된 업체 혹은 지점의 신분증 검증 규정
*/
export interface IdentificationPolicy {
/**
* @type boolean
* @description 외국인 규정인지 여부
* <br>
* - true (현지인 기준)
* - false (외국인 기준)
* @nullable false
* @required true
* @example false
* @default N/A
*/
foreigner: boolean;
/**
* @type String[]
* @description 외부에서 제공된 업체 혹은 지점의 신분증 검증시 필요한 신분증 및 서류
* @nullable false
* @required true
* @example ["유효한 신분증 카드"]
* @default []
*/
requiredDocuments: string[];
}
/**
* @interface Guide
* @description 외부에서 제공된 업체 혹은 지점에서 차량 인수 혹은 반납 방법
*/
export interface Guide {
/**
* @type String
* @description 외부에서 제공된 업체 혹은 지점에서 차량 인수 방법 제목
* @nullable false
* @required true
* @example "pickup information"
* @default ""
*/
title: string;
/**
* @type String
* @description 외부에서 제공된 업체 혹은 지점에서 차량 인수 방법 상세 내용
* @nullable false
* @required true
* @example "Exit baggage claim and follow the sign to 'Ground Transportation' and wait at the shuttle bus pick up area."
* @default ""
*/
content: string;
}
/**
* @interface ChargedTime
* @description 외부에서 제공된 업체 혹은 지점 추가요금이 부과되는 운영 시간
*/
export interface ChargedTime {
/**
* @type String
* @description 요일
* @nullable false
* @required true
* @example MON | TUE | WED | THU | FRI | SAT | SUN;
* @default N/A
*/
day: string;
/**
* @type String
* @description 추가 요금이 부과되는 운영 시작 시간
* @nullable false
* @required true
* @example 12:00
* @default N/A
*/
open: string;
/**
* @type String
* @description 추가 요금이 부과되는 운영 종료 시간
* @nullable false
* @required true
* @example 14:00
* @default N/A
*/
close: string;
}
/**
* @interface ChargedTimePrice
* @description 외부에서 제공된 업체 혹은 지점 추가요금 운영시간에 부과되는 추가 요금
*/
export interface ChargedTimePrice {
/**
* @type String
* @description 추가 요금 통화
* @nullable false
* @required true
* @example USD
* @default N/A
*/
currency: string;
/**
* @type String
* @description 부과되는 추가 요금
* @nullable false
* @required true
* @example 10
* @default 0
*/
amount: number;
}
/**
* @interface ReturnShop
* @description 반납업체
* <br>
* 차량목록 : 사용하지 않음
* 차량상세, 예약상세: 필수값
*/
export interface ReturnShop extends Omit<Shop, 'returnShop'> {}