Skip to content

Commit 556cedd

Browse files
committed
FEAT: (#10) v2.1
1 parent aff3acb commit 556cedd

File tree

12 files changed

+281
-51
lines changed

12 files changed

+281
-51
lines changed

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,10 @@
44
# IDE
55
.idea
66
.vscode
7+
8+
#Only Dev
9+
node_modules
10+
package.json
11+
package-lock.json
12+
.dev/
13+
gotar-rentcar-interface.iml
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* @interface OrderCancelRequestParam
3+
* @description 예약 취소시 사용되는 Request Query DTO
4+
*/
5+
export interface OrderCancelRequestParam {
6+
/**
7+
* @type String
8+
* @description 예약 취소할 주문의 고유 ID
9+
* <br>
10+
* 해당 주문건으로 생성된 예약 ID를 받는다
11+
* OrderCreateResponse에서 받는 `globalApiOrderId`와 동일
12+
* @nullable false
13+
* @required true
14+
* @example 'BLA1111'
15+
* @default N/A
16+
*/
17+
orderId: string;
18+
}

APIs/DTO/Request/OrderCreateRequest.ts

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
import { AvailableShopCombination } from '../../../Vehicle';
2+
13
/**
2-
* @interface OrderCreateRequest
3-
* @description 예약 생성시 사용되는 Request DTO
4+
* @interface OrderCreateRequestBody
5+
* @description 예약 생성시 사용되는 Request Body DTO
46
* <br>
57
* - 2.0기준으로 추가운전자에대한 대응이 안돼있음
68
* - API에서 만약 추가운전자에대한 정보를 요구한다면 수정 필요
79
*/
8-
export default interface OrderCreateRequest {
10+
export default interface OrderCreateRequestBody {
911
/**
1012
* @type String
1113
* @description carmore-common-api에서 식별하는 예약건의 고유 번호
@@ -25,6 +27,30 @@ export default interface OrderCreateRequest {
2527
* @default N/A
2628
*/
2729
id: string;
30+
/**
31+
* @type String
32+
* @description 예약할 차량의 대여업체
33+
* <br>
34+
* 원웨이예약이 아니라면 pickupShop과 returnShop은 항상 같다.
35+
* 차량목록에서 받은 AvailableShopCombination에서 가능한 조합만 상세 조회가 가능하다.
36+
* @nullable false
37+
* @required true
38+
* @example KL_12
39+
* @default N/A
40+
*/
41+
pickupShopId: string;
42+
/**
43+
* @type String
44+
* @description 예약할 차량의 반납업체
45+
* <br>
46+
* 원웨이예약이 아니라면 pickupShop과 returnShop은 항상 같다.
47+
* 차량목록에서 받은 AvailableShopCombination에서 가능한 조합만 상세 조회가 가능하다.
48+
* @nullable false
49+
* @required true
50+
* @example KL_12
51+
* @default N/A
52+
*/
53+
returnShopId: string;
2854
/**
2955
* @type String
3056
* @description Currency (ISO 4217)
@@ -275,16 +301,7 @@ export interface OrderCreateRequestAddOn {
275301
* @default N/A
276302
*/
277303
value: string;
278-
/**
279-
* @type Number
280-
* @description 구매한 선택 가능한 옵션의 갯수
281-
* @nullable false
282-
* @required true
283-
* @example 1
284-
* @default 1
285-
*/
286-
count: number;
287-
};
304+
}[];
288305
/**
289306
* @type Number
290307
* @description 구매한 부가서비스 갯수

APIs/DTO/Request/OrderDetailRequest.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
/**
2-
* @interface OrderDetailRequest
3-
* @description 예약 상세 API Request DTO
2+
* @interface OrderDetailRequestParam
3+
* @description 예약 상세 API Request Param DTO
44
*/
5-
export default interface OrderDetailRequest {
5+
export interface OrderDetailRequestParam {
66
/**
77
* @type String
88
* @description 외부 API에서 전달받은 예약건의 번호

APIs/DTO/Request/VehicleDetailRequest.ts

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
/**
2-
* @interface VehicleDetailRequest
3-
* @description 차량 상세 조회시 사용되는 Request DTO
2+
* @interface VehicleDetailRequestQuery
3+
* @description 차량 상세 조회시 사용되는 Request Param DTO
44
*/
5-
export default interface VehicleDetailRequest {
5+
export interface VehicleDetailRequestParam {
66
/**
77
* @type String
88
* @description 상세 조회할 차량의 ID (Vehicle._id와 동일한 값)
@@ -12,6 +12,13 @@ export default interface VehicleDetailRequest {
1212
* @default N/A
1313
*/
1414
id: string;
15+
}
16+
17+
/**
18+
* @interface VehicleDetailRequestQuery
19+
* @description 차량 상세 조회시 사용되는 Request Query DTO
20+
*/
21+
export interface VehicleDetailRequestQuery {
1522
/**
1623
* @type String
1724
* @description Currency (ISO 4217)
@@ -52,4 +59,28 @@ export default interface VehicleDetailRequest {
5259
* @default N/A
5360
*/
5461
returnDateTime: string;
62+
/**
63+
* @type String
64+
* @description 상세 조회할 차량의 대여업체
65+
* <br>
66+
* 원웨이예약이 아니라면 pickupShop과 returnShop은 항상 같다.
67+
* 차량목록에서 받은 AvailableShopCombination에서 가능한 조합만 상세 조회가 가능하다.
68+
* @nullable false
69+
* @required true
70+
* @example KL_12
71+
* @default N/A
72+
*/
73+
pickupShopId: string;
74+
/**
75+
* @type String
76+
* @description 상세 조회할 차량의 반납업체
77+
* <br>
78+
* 원웨이예약이 아니라면 pickupShop과 returnShop은 항상 같다.
79+
* 차량목록에서 받은 AvailableShopCombination에서 가능한 조합만 상세 조회가 가능하다.
80+
* @nullable false
81+
* @required true
82+
* @example KL_12
83+
* @default N/A
84+
*/
85+
returnShopId: string;
5586
}

APIs/DTO/Request/VehicleListRequest.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
/**
2-
* @interface VehicleListRequest
3-
* @description 차량목록 조회시 사용되는 Request DTO
2+
* @interface VehicleListRequestQuery
3+
* @description 차량목록 조회시 사용되는 Request Query DTO
44
*/
5-
export default interface VehicleListRequest {
5+
export interface VehicleListRequestQuery {
66
/**
77
* @type String
88
* @description Country Code (ISO 3166-1 alpha-2)
@@ -23,7 +23,6 @@ export default interface VehicleListRequest {
2323
* @default N/A
2424
*/
2525
returnCountryCode: string;
26-
2726
/**
2827
* @type String
2928
* @description Currency (ISO 4217)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import CommonResponse from './CommonResponse';
2+
3+
/**
4+
* @interface OrderCancelResponse
5+
* @description 예약 취소 Response DTO
6+
*/
7+
export default interface OrderCancelResponse extends CommonResponse {}

Order.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,18 @@ export default interface Order {
176176
* @default N/A
177177
*/
178178
price: OrderPrice;
179+
/**
180+
* @type Policy[]
181+
* @description free text로 된 결제에 포함되는 기타 정보에 대한 설명들
182+
* <br>
183+
* 외부 API에서 제공하는 결제에 포함되는 기타 정보에대한 설명 따위가 Free Text로 돼있는 경우
184+
* title, description 규격에 맞춰 제공해야한다.
185+
* @nullable false
186+
* @required false
187+
* @example Policy[]
188+
* @default []
189+
*/
190+
reservationDescriptions: Policy[];
179191
/**
180192
* @type Policy[]
181193
* @description 예약된 차량의 대여규정 정보

Readme.md

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# Global OTA RequestAndResponse (GOTAR)
2-
> 글로벌 OTA 렌터카 API들의 대한 통합 규격을 정의하는 Repository
2+
> 글로벌 OTA 렌터카 API들에 대한 통합 규격을 정의 하는 Repository
33
44
## APIs
5-
> 글로벌 OTA 렌터카 API들에대한 DTO Interface
5+
> 글로벌 OTA 렌터카 API들에 대한 DTO Interface
66
77
- `${API Name}`Request
88
- `${API Name}`의 요청 값에 대한 정의
@@ -13,38 +13,38 @@
1313
## Interfaces
1414
> 글로벌 OTA 렌터카 API에 사용되는 Interface
1515
16-
- `Required`: 아래 정의되는 `Interface`의 각 `Key`는 모두 필수 값입니다.
17-
- 작업하는 API에서 Key에대한 Value값을 정의할 수 없다면 아래 기본값을 넣어야합니다. __(Nullable인경우 Null)__
16+
- `Required`: 아래 정의 되는 `Interface`의 각 `Key`는 모두 필수 값 입니다.
17+
- 작업하는 API에서 Key에대한 Value 값을 정의할 수 없다면 아래 기본값을 사용해야 합니다. __(Nullable인경우 Null)__
1818
- 주석 내용 중 __`@required`: true__ 인 경우 기본값을 넣을 수 없는 `Key`입니다.
19-
- 기본값을 할당할 수 없는 `Key`기본값을 상수로 만들어 할당해야합니다.
19+
- 기본 값을 할당할 수 없는 `Key`기본 값을 상수로 만들어 할당 해야 합니다.
2020
- `String` : null or ''
2121
- `Number` : null or 0
2222
- `Boolean` : false
2323
- `Array` : [] (Empty Array)
2424

2525
### Comment Component
2626
- `@type`
27-
- String, Boolean등 Component에대한 타입
27+
- String, Boolean등 Component들의 타입
2828
- `@description`
2929
- Component에대한 설명
3030
- `@nullable`
3131
- Null허용 여부
3232
- `@required`
33-
- Interface에서 기본값이 불가능한 필수적으로 정의해야하는 값인지에대한 여부
33+
- Interface에서 기본값 이 불가능 한 필수적 으로 정의해야 하는 값인지 에대한 여부
3434
- `@example`
35-
- Component 예시값 (실제 값과 최대한 비슷하게), 열거 가능한 값인 경우 열거 가능한 값을 전부 작성.
35+
- Component 예시값 (실제 값과 최대한 비슷 하게), 열거 가능한 값인 경우 열거 가능한 값을 전부 작성.
3636
- `@default`
37-
- Component 기본값, 불가능한 경우 `N/A`
37+
- Component 기본값, 불가능 한 경우 `N/A`
3838

3939
### Interface
4040
- [`Car`](Car.ts)
41-
- 차종에대한 정의 (실제 판매되는 렌터카에대한 `차종` EX: `K5`등)
41+
- 차종에 대한 정의 (실제 판매 되는 렌터카에 대한 `차종` EX: `K5`등)
4242

4343
- [`Vehicle`](Vehicle.ts)
44-
- 차량에대한 정의 (실제 판매되는 렌터카 상품)
44+
- 차량에 대한 정의 (실제 판매 되는 렌터카 상품)
4545

4646
- [`Affiliate`](Affiliate.ts)
47-
- 업체에대한 정의
47+
- 업체에 대한 정의
4848

4949
- [`Vendor`](Vendor.ts)
5050
- `Budget`, `Avis`와 같은 업체 브랜드
@@ -56,24 +56,39 @@
5656
- `Vehicle`에대한 실제 주문 내용
5757

5858
- `Reservation`
59-
- `Carmore` 운영에 사용되는 예약에대한 `Interface`
59+
- `Carmore` 운영에 사용 되는 예약에 대한 `Interface`
6060

6161
### APIs
62-
> Global API에서 필수적으로 제공해야하는 API
62+
> Global API에서 필수적 으로 제공 해야 하는 API
63+
64+
- `APIs Name`
65+
- `APIs Description`
66+
- `API Name`
67+
- `Request` : 해당 API의 Request Query, Param, Body를 포함한 Typescript File
68+
- `Response` : 해당 API의 Response를 Typescript File
69+
- endPoint : 해당 API의 EndPoint 및 Http Method
6370

6471
- `Vehicle`
65-
- `차량 목록`, `차량 상세`제공해야 한다.
72+
- `차량 목록`, `차량 상세`제공 해야 한다.
6673
- `차량 목록`
6774
- [Request](./APIs/DTO/Request/VehicleListRequest.ts)
6875
- [Response](./APIs/DTO/Response/VehicleListResponse.ts)
76+
- endPoint : `GET` `/vehicles`
6977
- `차량 상세`
7078
- [Request](./APIs/DTO/Request/VehicleDetailRequest.ts)
7179
- [Response](./APIs/DTO/Response/VehicleDetailResponse.ts)
80+
- endPoint : `GET` `/vehicles/:id`
7281
- `Order`
73-
- `예약 생성`, `예약 상세`를 제공해야 한다.
82+
- `예약 생성`, `예약 상세`, `예약 취소`를 제공 해야 한다.
7483
- `예약 생성`
7584
- [Request](./APIs/DTO/Request/OrderCreateRequest.ts)
7685
- [Response](./APIs/DTO/Response/OrderCreateResponse.ts)
86+
- endPoint : `POST` `/orders`
7787
- `예약 상세`
7888
- [Request](./APIs/DTO/Request/OrderDetailRequest.ts)
7989
- [Response](./APIs/DTO/Response/OrderDetailResponse.ts)
90+
- endPoint : `GET` `/orders/:id`
91+
- `예약 취소`
92+
- [Request](./APIs/DTO/Request/OrderCancelRequest.ts)
93+
- [Response](./APIs/DTO/Response/OrderCancelResponse.ts)
94+
- endPoint : `PATCH` `/orders/:id/cancelation`

Shop.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ export default interface Shop {
175175
* @type ReturnShop
176176
* @description 반납 업체 정보
177177
* <br>
178-
* 구조는 Shop 그 자체와 동일하다. 차량리스트에서는 해당 객체가 아예 없으며, 차량 상세, 예약 상세에서만 존재할 수 있다.
178+
* 구조는 Shop의 Interface를 그대로 사용한다. 차량목록에서는 해당 객체가 아예 없으며, 차량 상세, 예약 상세에서만 존재할 수 있다.
179179
* @nullable false
180180
* @required true
181181
* @example ReturnShop
@@ -240,6 +240,8 @@ export interface OperationTime {
240240
/**
241241
* @type String
242242
* @description 운영 시작 시간
243+
* <br>
244+
* - 운영시작 시간과 종료시간이 모두 00:00이고, closeNextDay가 false는 휴무일이다.
243245
* @nullable false
244246
* @required true
245247
* @example 00:00
@@ -249,6 +251,7 @@ export interface OperationTime {
249251
/**
250252
* @type String
251253
* @description 운영 종료 시간
254+
* 운영시작 시간과 종료시간이 모두 00:00이고, closeNextDay가 false는 휴무일이다.
252255
* @nullable false
253256
* @required true
254257
* @example 22:00
@@ -304,6 +307,8 @@ export interface SeasonalOperationTime {
304307
/**
305308
* @type String
306309
* @description 운영 시작 시간
310+
* - 운영시작 시간과 종료시간이 모두 00:00이고, closeNextDay가 false는 휴무일이다.
311+
* - 예시: startDate: 2022-01-01, endDate: 2022-01-01, open: 00:00, clsoe: 00:00은 2022-01-01, 01-01은 휴무라는 의미.
307312
* @nullable false
308313
* @required true
309314
* @example 00:00
@@ -313,6 +318,8 @@ export interface SeasonalOperationTime {
313318
/**
314319
* @type String
315320
* @description 운영 종료 시간
321+
* - 운영시작 시간과 종료시간이 모두 00:00이고, closeNextDay가 false는 휴무일이다.
322+
* - 예시: startDate: 2022-01-01, endDate: 2022-01-01, open: 00:00, clsoe: 00:00은 2022-01-01, 01-01은 휴무라는 의미.
316323
* @nullable false
317324
* @required true
318325
* @example 22:00
@@ -634,4 +641,11 @@ export interface ChargedTimePrice {
634641
amount: number;
635642
}
636643

644+
/**
645+
* @interface ReturnShop
646+
* @description 반납업체
647+
* <br>
648+
* 차량목록 : 사용하지 않음
649+
* 차량상세, 예약상세: 필수값
650+
*/
637651
export interface ReturnShop extends Omit<Shop, 'returnShop'> {}

0 commit comments

Comments
 (0)