- 대기열에 사용자를 추가하고 대기열 토큰을 반환합니다.
- URL:
/v1/queue-tokens/users/{userId}
- Method: POST
- URL Params:
userId
: Long (사용자 ID)
{
"tokenId": 1,
"createdAt": "2024-07-04T10:00:00",
"expiredAt": "2024-07-04T10:10:00"
}
{
"code": 404,
"message": "user not found"
}
- 사용자의 발급된 대기열 토큰 정보를 조회합니다.
- URL:
/v1/queue-tokens/users/{userId}
- Method: GET
- URL Params:
userId
: Long (사용자 ID)
{
"tokenId": 1,
"createdAt": "2024-07-04T10:00:00",
"expiredAt": "2024-07-04T10:10:00"
}
{
"code": 404,
"message": "user not found"
}
- 사용자의 대기열 상태를 조회합니다.
- 클라리언트단에서 폴링으로 현재 대기열 상태를 조회하기 위해 사용됩니다.
-
URL:
/v1/queue-status/users/{userId}
-
Method: GET
-
URL Params:
userId
: Long (사용자 ID)
-
Headers:
TOKEN-ID
: Long (대기열 토큰 ID)
{
"queueId": 1,
"joinAt": "2024-07-04T10:00:00",
"status": "WAITING",
"remainingWaitListCount": 10
}
{
"code": 404,
"message": "user not found"
}
- 특정 콘서트의 예약 가능한 일정을 조회합니다.
- URL:
/v1/concerts/{concertId}/schedules
- Method: GET
- URL Params:
concertId
: Long (콘서트 ID)
- Headers:
TOKEN-ID
: Long (대기열 토큰 ID)
{
"concertId": 1,
"events": [
{
"scheduleId": 1,
"concertAt": "2024-08-04T10:00:00",
"reservationAt": "2024-07-19T10:00:00"
},
{
"scheduleId": 2,
"concertAt": "2024-09-04T10:00:00",
"reservationAt": "2024-07-24T10:00:00"
}
]
}
{
"code": 401,
"message": "invalid token"
}
{
"code": 404,
"message": "user not found"
}
{
"code": 404,
"message": "concert not found"
}
- 특정 콘서트 일정의 좌석 정보를 조회합니다.
- URL:
/v1/concerts/{concertId}/schedules/{scheduleId}/seats
- Method: GET
- URL Params:
concertId
: Long (콘서트 ID)scheduleId
: Long (일정 ID)
- Headers:
TOKEN-ID
: Long (대기열 토큰 ID)
{
"concertId": 1,
"concertAt": "2024-08-04T10:00:00",
"seats": [
{
"seatId": 1,
"seatNumber": 20,
"seatStatus": "AVAILABLE",
"seatPrice": 10000
},
{
"seatId": 2,
"seatNumber": 21,
"seatStatus": "UNAVAILABLE",
"seatPrice": 10000
}
]
}
{
"code": 401,
"message": "invalid token"
}
{
"code": 404,
"message": "user not found"
}
{
"code": 404,
"message": "concert not found"
}
{
"code": 404,
"message": "schedule not found"
}
- 콘서트 좌석을 예약합니다.
- 콘서트와 날짜를 선택한 이후에 진행되므로, 다른 콘서트나 다른 일정을 동시에 예약하는 것은 불가능합니다.
- 좌석을 여러개 예약할 수 있습니다.
-
URL:
/v1/reservations
-
Method: POST
-
Headers:
TOKEN-ID
: Long (대기열 토큰 ID)Content-Type
: application/json
-
Body:
{
"userId": 1,
"concertId": 1,
"scheduleId": 1,
"seatIds": [10, 11]
}
{
"reservationId": 1,
"concertId": 1,
"concertName": "콘서트",
"concertAt": "2024-08-04T10:00:00",
"seats": [
{
"seatNumber": 10,
"price": 10000
},
{
"seatNumber": 11,
"price": 15000
}
],
"totalPrice": 25000,
"reservationStatus": "PAYMENT_PENDING"
}
{
"code": 401,
"message": "invalid token"
}
{
"code": 404,
"message": "user not found"
}
{
"code": 404,
"message": "concert not found"
}
{
"code": 404,
"message": "schedule not found"
}
{
"code": 404,
"message": "seat not found"
}
{
"code": 400,
"message": "reservation failed"
}
- 예약에 대한 결제를 진행합니다.
- 예약을 5분내에 결제하지 않으면 결제할 수 없습니다.
-
URL:
/v1/payments/users/{userId}
-
Method: POST
-
URL Params:
userId
: Long (사용자 ID)
-
Headers:
TOKEN-ID
: Long (대기열 토큰 ID)Content-Type
: application/json
-
Body:
{
"reservationId": 1
}
{
"paymentId": 1,
"amount": 30000,
"paymentStatus": "COMPLETED"
}
{
"code": 401,
"message": "invalid token"
}
{
"code": 404,
"message": "user not found"
}
{
"code": 404,
"message": "reservation not found"
}
{
"code": 400,
"message": "not enough balance"
}
{
"code": 500,
"message": "payment failed"
}
- 사용자의 잔액을 충전합니다.
-
URL:
/v1/balance/users/{userId}/recharge
-
Method: POST
-
URL Params:
userId
: Long (사용자 ID)
-
Headers:
Content-Type
: application/json
-
Body:
{
"amount": 50000
}
{
"userId": 1,
"currentAmount": 40000
}
{
"code": 404,
"message": "user not found"
}
{
"code": 400,
"message": "invalid recharge amount"
}
{
"code": 500,
"message": "recharge failed"
}
- 사용자의 현재 잔액을 조회합니다.
- URL:
/v1/balance/users/{userId}
- Method: GET
- URL Params:
userId
: Long (사용자 ID)
{
"userId": 1,
"currentAmount": 40000
}
{
"code": 404,
"message": "user not found"
}