{
} isVisible={isToastVisible} toastBottom={30}>
클립보드에 복사되었습니다!
+
+
>
);
diff --git a/src/routes/Router.tsx b/src/routes/Router.tsx
index dad34560..f9f08964 100644
--- a/src/routes/Router.tsx
+++ b/src/routes/Router.tsx
@@ -1,4 +1,5 @@
import Layout from "@components/layout/Layout";
+import TokenRefresher from "@hooks/useTokenRefresher";
import ActionBottomSheetTest from "@pages/ActionBottomSheetTest";
import Apage from "@pages/APage/Apage";
import Book from "@pages/book/Book";
@@ -29,7 +30,7 @@ const router = createBrowserRouter([
{ path: "lookup", element:
},
{ path: "book/complete", element:
},
{ path: "book/:performanceId", element:
},
- { path: "testpage", element:
},
+ // { path: "testpage", element:
},
{ path: "gig-register", element:
},
{ path: "register-complete", element:
},
{ path: "gig/:performanceId", element:
},
@@ -65,9 +66,25 @@ const router = createBrowserRouter([
// path: "/C",
// element:
,
// },
- { path: "/testpage", element:
},
+ {
+ path: "/testpage",
+ element: (
+ <>
+
+
+ >
+ ),
+ },
{ path: "/myregisteredshow", element:
},
- { path: "/main", element:
},
+ {
+ path: "/main",
+ element: (
+ <>
+
+
+ >
+ ),
+ },
{ path: "/myregisteredshow", element:
},
// ...
diff --git a/src/stores/.gitkeep b/src/stores/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/src/typings/api/schema/index.ts b/src/typings/api/schema/index.ts
new file mode 100644
index 00000000..bedfb56b
--- /dev/null
+++ b/src/typings/api/schema/index.ts
@@ -0,0 +1,1012 @@
+/**
+ * This file was auto-generated by openapi-typescript.
+ * Do not make direct changes to the file.
+ */
+
+export interface paths {
+ "/api/tickets/{performanceId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 예매자 목록 조회 API
+ * @description 메이커가 자신의 공연에 대한 예매자 목록을 조회하는 GET API입니다.
+ */
+ get: operations["getTickets"];
+ /**
+ * 예매자 입금여부 수정 API
+ * @description 메이커가 자신의 공연에 대한 예매자의 입금여부 정보를 수정하는 PUT API입니다.
+ */
+ put: operations["updateTickets"];
+ post?: never;
+ /**
+ * 예매자 삭제 API
+ * @description 메이커가 자신의 공연에 대한 예매자의 정보를 삭제하는 DELETE API입니다.
+ */
+ delete: operations["deleteTickets"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/sign-up": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 로그인/회원가입 API
+ * @description 로그인/회원가입하는 POST API입니다.
+ */
+ post: operations["signUp"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/sign-out": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 로그아웃 API
+ * @description 로그아웃하는 POST API입니다.
+ */
+ post: operations["signOut"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bookings/member": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 회원 예매 API
+ * @description 회원이 예매를 요청하는 POST API입니다.
+ */
+ post: operations["createMemberBooking"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bookings/guest": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 비회원 예매 API
+ * @description 비회원이 예매를 요청하는 POST API입니다.
+ */
+ post: operations["createGuestBookings"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bookings/guest/retrieve": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * 비회원 예매 조회 API
+ * @description 비회원이 예매를 조회하는 POST API입니다.
+ */
+ post: operations["getGuestBookings"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/users/refresh-token": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * access token 재발급 API
+ * @description refresh token으로 access token을 재발급하는 GET API입니다.
+ */
+ get: operations["refreshToken"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/schedules/{scheduleId}/availability": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["getTicketAvailability"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/performances/user": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 회원이 등록한 공연 목록 조회 API
+ * @description 회원이 등록한 공연 목록을 조회하는 GET API입니다.
+ */
+ get: operations["getUserPerformances"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/performances/detail/{performanceId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 공연 상세정보 조회 API
+ * @description 공연 상세페이지의 공연 상세정보를 조회하는 GET API입니다.
+ */
+ get: operations["getPerformanceDetail"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/performances/booking/{performanceId}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 예매하기 관련 공연 정보 조회 API
+ * @description 예매하기 페이지에서 필요한 예매 관련 공연 정보를 조회하는 GET API입니다.
+ */
+ get: operations["getBookingPerformanceDetail"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/main": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 전체공연목록, 홍보목록 조회 API
+ * @description 홈화면에서 전체공연목록, 홍보목록을 조회하는 GET API입니다.
+ */
+ get: operations["getHomePerformanceList"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/bookings/member/retrieve": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * 회원 예매 조회 API
+ * @description 회원이 예매를 조회하는 GET API입니다.
+ */
+ get: operations["getMemberBookings"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+}
+export type webhooks = Record
;
+export interface components {
+ schemas: {
+ TicketUpdateDetail: {
+ /** Format: int64 */
+ bookingId?: number;
+ bookerName?: string;
+ bookerPhoneNumber?: string;
+ /** Format: int64 */
+ scheduleId?: number;
+ /** Format: int32 */
+ purchaseTicketCount?: number;
+ /** Format: date-time */
+ createdAt?: string;
+ isPaymentCompleted?: boolean;
+ scheduleNumber?: string;
+ };
+ TicketUpdateRequest: {
+ /** Format: int64 */
+ performanceId?: number;
+ performanceTitle?: string;
+ /** Format: int32 */
+ totalScheduleCount?: number;
+ bookingList?: components["schemas"]["TicketUpdateDetail"][];
+ };
+ SuccessResponseVoid: {
+ /** Format: int32 */
+ status?: number;
+ message?: string;
+ data?: Record;
+ };
+ MemberLoginRequest: {
+ /** @enum {string} */
+ socialType: "KAKAO";
+ };
+ LoginSuccessResponse: {
+ accessToken?: string;
+ refreshToken?: string;
+ nickname?: string;
+ };
+ SuccessResponseLoginSuccessResponse: {
+ /** Format: int32 */
+ status?: number;
+ message?: string;
+ data?: components["schemas"]["LoginSuccessResponse"];
+ };
+ MemberBookingRequest: {
+ /** Format: int64 */
+ scheduleId?: number;
+ scheduleNumber?: string;
+ /** Format: int32 */
+ purchaseTicketCount?: number;
+ bookerName?: string;
+ bookerPhoneNumber?: string;
+ isPaymentCompleted?: boolean;
+ /** Format: int32 */
+ totalPaymentAmount?: number;
+ };
+ MemberBookingResponse: {
+ /** Format: int64 */
+ bookingId?: number;
+ /** Format: int64 */
+ scheduleId?: number;
+ /** Format: int64 */
+ userId?: number;
+ /** Format: int32 */
+ purchaseTicketCount?: number;
+ scheduleNumber?: string;
+ bookerName?: string;
+ bookerPhoneNumber?: string;
+ isPaymentCompleted?: boolean;
+ bankName?: string;
+ accountNumber?: string;
+ /** Format: int32 */
+ totalPaymentAmount?: number;
+ /** Format: date-time */
+ createdAt?: string;
+ };
+ SuccessResponseMemberBookingResponse: {
+ /** Format: int32 */
+ status?: number;
+ message?: string;
+ data?: components["schemas"]["MemberBookingResponse"];
+ };
+ GuestBookingRequest: {
+ /** Format: int64 */
+ scheduleId?: number;
+ /** Format: int32 */
+ purchaseTicketCount?: number;
+ scheduleNumber?: string;
+ bookerName?: string;
+ bookerPhoneNumber?: string;
+ birthDate?: string;
+ password?: string;
+ /** Format: int32 */
+ totalPaymentAmount?: number;
+ isPaymentCompleted?: boolean;
+ };
+ GuestBookingResponse: {
+ /** Format: int64 */
+ bookingId?: number;
+ /** Format: int64 */
+ scheduleId?: number;
+ /** Format: int64 */
+ userId?: number;
+ /** Format: int32 */
+ purchaseTicketCount?: number;
+ scheduleNumber?: string;
+ bookerName?: string;
+ bookerPhoneNumber?: string;
+ isPaymentCompleted?: boolean;
+ bankName?: string;
+ accountNumber?: string;
+ /** Format: int32 */
+ totalPaymentAmount?: number;
+ /** Format: date-time */
+ createdAt?: string;
+ };
+ SuccessResponseGuestBookingResponse: {
+ /** Format: int32 */
+ status?: number;
+ message?: string;
+ data?: components["schemas"]["GuestBookingResponse"];
+ };
+ GuestBookingRetrieveRequest: {
+ bookerName?: string;
+ birthDate?: string;
+ bookerPhoneNumber?: string;
+ password?: string;
+ };
+ GuestBookingRetrieveResponse: {
+ /** Format: int64 */
+ bookingId?: number;
+ /** Format: int64 */
+ scheduleId?: number;
+ performanceTitle?: string;
+ /** Format: date-time */
+ performanceDate?: string;
+ performanceVenue?: string;
+ /** Format: int32 */
+ purchaseTicketCount?: number;
+ scheduleNumber?: string;
+ bookerName?: string;
+ bookerPhoneNumber?: string;
+ bankName?: string;
+ accountNumber?: string;
+ /** Format: int32 */
+ dueDate?: number;
+ isPaymentCompleted?: boolean;
+ /** Format: date-time */
+ createdAt?: string;
+ };
+ SuccessResponseListGuestBookingRetrieveResponse: {
+ /** Format: int32 */
+ status?: number;
+ message?: string;
+ data?: components["schemas"]["GuestBookingRetrieveResponse"][];
+ };
+ AccessTokenGetSuccess: {
+ accessToken?: string;
+ };
+ SuccessResponseAccessTokenGetSuccess: {
+ /** Format: int32 */
+ status?: number;
+ message?: string;
+ data?: components["schemas"]["AccessTokenGetSuccess"];
+ };
+ SuccessResponseTicketRetrieveResponse: {
+ /** Format: int32 */
+ status?: number;
+ message?: string;
+ data?: components["schemas"]["TicketRetrieveResponse"];
+ };
+ TicketDetail: {
+ /** Format: int64 */
+ bookingId?: number;
+ bookerName?: string;
+ bookerPhoneNumber?: string;
+ /** Format: int64 */
+ scheduleId?: number;
+ /** Format: int32 */
+ purchaseTicketCount?: number;
+ /** Format: date-time */
+ createdAt?: string;
+ isPaymentCompleted?: boolean;
+ scheduleNumber?: string;
+ };
+ TicketRetrieveResponse: {
+ performanceTitle?: string;
+ /** Format: int32 */
+ totalScheduleCount?: number;
+ bookingList?: components["schemas"]["TicketDetail"][];
+ };
+ SuccessResponseTicketAvailabilityResponse: {
+ /** Format: int32 */
+ status?: number;
+ message?: string;
+ data?: components["schemas"]["TicketAvailabilityResponse"];
+ };
+ TicketAvailabilityResponse: {
+ /** Format: int64 */
+ scheduleId?: number;
+ scheduleNumber?: string;
+ /** Format: int32 */
+ totalTicketCount?: number;
+ /** Format: int32 */
+ soldTicketCount?: number;
+ /** Format: int32 */
+ availableTicketCount?: number;
+ /** Format: int32 */
+ requestedTicketCount?: number;
+ isAvailable?: boolean;
+ };
+ MakerPerformanceDetail: {
+ /** Format: int64 */
+ performanceId?: number;
+ genre?: string;
+ performanceTitle?: string;
+ posterImage?: string;
+ performancePeriod?: string;
+ };
+ MakerPerformanceResponse: {
+ /** Format: int64 */
+ userId?: number;
+ performances?: components["schemas"]["MakerPerformanceDetail"][];
+ };
+ SuccessResponseMakerPerformanceResponse: {
+ /** Format: int32 */
+ status?: number;
+ message?: string;
+ data?: components["schemas"]["MakerPerformanceResponse"];
+ };
+ PerformanceDetailCast: {
+ /** Format: int64 */
+ castId?: number;
+ castName?: string;
+ castRole?: string;
+ castPhoto?: string;
+ };
+ PerformanceDetailResponse: {
+ /** Format: int64 */
+ performanceId?: number;
+ performanceTitle?: string;
+ performancePeriod?: string;
+ scheduleList?: components["schemas"]["PerformanceDetailSchedule"][];
+ /** Format: int32 */
+ ticketPrice?: number;
+ genre?: string;
+ posterImage?: string;
+ /** Format: int32 */
+ runningTime?: number;
+ performanceVenue?: string;
+ performanceDescription?: string;
+ performanceAttentionNote?: string;
+ performanceContact?: string;
+ performanceTeamName?: string;
+ castList?: components["schemas"]["PerformanceDetailCast"][];
+ staffList?: components["schemas"]["PerformanceDetailStaff"][];
+ };
+ PerformanceDetailSchedule: {
+ /** Format: int64 */
+ scheduleId?: number;
+ /** Format: date-time */
+ performanceDate?: string;
+ scheduleNumber?: string;
+ };
+ PerformanceDetailStaff: {
+ /** Format: int64 */
+ staffId?: number;
+ staffName?: string;
+ staffRole?: string;
+ staffPhoto?: string;
+ };
+ SuccessResponsePerformanceDetailResponse: {
+ /** Format: int32 */
+ status?: number;
+ message?: string;
+ data?: components["schemas"]["PerformanceDetailResponse"];
+ };
+ BookingPerformanceDetailResponse: {
+ /** Format: int64 */
+ performanceId?: number;
+ performanceTitle?: string;
+ performancePeriod?: string;
+ scheduleList?: components["schemas"]["BookingPerformanceDetailSchedule"][];
+ /** Format: int32 */
+ ticketPrice?: number;
+ genre?: string;
+ posterImage?: string;
+ performanceVenue?: string;
+ performanceTeamName?: string;
+ };
+ BookingPerformanceDetailSchedule: {
+ /** Format: int64 */
+ scheduleId?: number;
+ /** Format: date-time */
+ performanceDate?: string;
+ scheduleNumber?: string;
+ /** Format: int32 */
+ availableTicketCount?: number;
+ isBooking?: boolean;
+ };
+ SuccessResponseBookingPerformanceDetailResponse: {
+ /** Format: int32 */
+ status?: number;
+ message?: string;
+ data?: components["schemas"]["BookingPerformanceDetailResponse"];
+ };
+ HomePerformanceDetail: {
+ /** Format: int64 */
+ performanceId?: number;
+ performanceTitle?: string;
+ performancePeriod?: string;
+ /** Format: int32 */
+ ticketPrice?: number;
+ /** Format: int32 */
+ dueDate?: number;
+ genre?: string;
+ posterImage?: string;
+ performanceVenue?: string;
+ };
+ HomePromotionDetail: {
+ /** Format: int64 */
+ promotionId?: number;
+ promotionPhoto?: string;
+ /** Format: int64 */
+ performanceId?: number;
+ };
+ HomeResponse: {
+ promotionList?: components["schemas"]["HomePromotionDetail"][];
+ performanceList?: components["schemas"]["HomePerformanceDetail"][];
+ };
+ SuccessResponseHomeResponse: {
+ /** Format: int32 */
+ status?: number;
+ message?: string;
+ data?: components["schemas"]["HomeResponse"];
+ };
+ MemberBookingRetrieveResponse: {
+ /** Format: int64 */
+ userId?: number;
+ /** Format: int64 */
+ bookingId?: number;
+ /** Format: int64 */
+ scheduleId?: number;
+ performanceTitle?: string;
+ /** Format: date-time */
+ performanceDate?: string;
+ performanceVenue?: string;
+ /** Format: int32 */
+ purchaseTicketCount?: number;
+ scheduleNumber?: string;
+ bookerName?: string;
+ bookerPhoneNumber?: string;
+ bankName?: string;
+ accountNumber?: string;
+ /** Format: int32 */
+ dueDate?: number;
+ isPaymentCompleted?: boolean;
+ /** Format: date-time */
+ createdAt?: string;
+ };
+ SuccessResponseMemberBookingRetrieveResponse: {
+ /** Format: int32 */
+ status?: number;
+ message?: string;
+ data?: components["schemas"]["MemberBookingRetrieveResponse"];
+ };
+ TicketDeleteRequest: {
+ /** Format: int64 */
+ performanceId?: number;
+ bookingList?: number[];
+ };
+ };
+ responses: never;
+ parameters: never;
+ requestBodies: never;
+ headers: never;
+ pathItems: never;
+}
+export type $defs = Record;
+export interface operations {
+ getTickets: {
+ parameters: {
+ query: {
+ memberId: number;
+ scheduleNumber?: "FIRST" | "SECOND" | "THIRD";
+ isPaymentCompleted?: boolean;
+ };
+ header?: never;
+ path: {
+ performanceId: number;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description OK */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "*/*": components["schemas"]["SuccessResponseTicketRetrieveResponse"];
+ };
+ };
+ };
+ };
+ updateTickets: {
+ parameters: {
+ query: {
+ memberId: number;
+ };
+ header?: never;
+ path: {
+ performanceId: number;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["TicketUpdateRequest"];
+ };
+ };
+ responses: {
+ /** @description OK */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "*/*": components["schemas"]["SuccessResponseVoid"];
+ };
+ };
+ };
+ };
+ deleteTickets: {
+ parameters: {
+ query: {
+ memberId: number;
+ };
+ header?: never;
+ path: {
+ performanceId: number;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["TicketDeleteRequest"];
+ };
+ };
+ responses: {
+ /** @description OK */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "*/*": components["schemas"]["SuccessResponseVoid"];
+ };
+ };
+ };
+ };
+ signUp: {
+ parameters: {
+ query: {
+ authorizationCode: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["MemberLoginRequest"];
+ };
+ };
+ responses: {
+ /** @description OK */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "*/*": components["schemas"]["SuccessResponseLoginSuccessResponse"];
+ };
+ };
+ };
+ };
+ signOut: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description OK */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "*/*": components["schemas"]["SuccessResponseVoid"];
+ };
+ };
+ };
+ };
+ createMemberBooking: {
+ parameters: {
+ query: {
+ memberId: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["MemberBookingRequest"];
+ };
+ };
+ responses: {
+ /** @description OK */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "*/*": components["schemas"]["SuccessResponseMemberBookingResponse"];
+ };
+ };
+ };
+ };
+ createGuestBookings: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["GuestBookingRequest"];
+ };
+ };
+ responses: {
+ /** @description OK */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "*/*": components["schemas"]["SuccessResponseGuestBookingResponse"];
+ };
+ };
+ };
+ };
+ getGuestBookings: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["GuestBookingRetrieveRequest"];
+ };
+ };
+ responses: {
+ /** @description OK */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "*/*": components["schemas"]["SuccessResponseListGuestBookingRetrieveResponse"];
+ };
+ };
+ };
+ };
+ refreshToken: {
+ parameters: {
+ query: {
+ refreshToken: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description OK */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "*/*": components["schemas"]["SuccessResponseAccessTokenGetSuccess"];
+ };
+ };
+ };
+ };
+ getTicketAvailability: {
+ parameters: {
+ query: {
+ purchaseTicketCount: number;
+ };
+ header?: never;
+ path: {
+ scheduleId: number;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description OK */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "*/*": components["schemas"]["SuccessResponseTicketAvailabilityResponse"];
+ };
+ };
+ };
+ };
+ getUserPerformances: {
+ parameters: {
+ query: {
+ memberId: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description OK */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "*/*": components["schemas"]["SuccessResponseMakerPerformanceResponse"];
+ };
+ };
+ };
+ };
+ getPerformanceDetail: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ performanceId: number;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description OK */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "*/*": components["schemas"]["SuccessResponsePerformanceDetailResponse"];
+ };
+ };
+ };
+ };
+ getBookingPerformanceDetail: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ performanceId: number;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description OK */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "*/*": components["schemas"]["SuccessResponseBookingPerformanceDetailResponse"];
+ };
+ };
+ };
+ };
+ getHomePerformanceList: {
+ parameters: {
+ query?: {
+ genre?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description OK */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "*/*": components["schemas"]["SuccessResponseHomeResponse"];
+ };
+ };
+ };
+ };
+ getMemberBookings: {
+ parameters: {
+ query: {
+ memberId: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description OK */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "*/*": components["schemas"]["SuccessResponseMemberBookingRetrieveResponse"];
+ };
+ };
+ };
+ };
+}
diff --git a/src/typings/commonType.ts b/src/typings/commonType.ts
new file mode 100644
index 00000000..7caf6cfd
--- /dev/null
+++ b/src/typings/commonType.ts
@@ -0,0 +1,5 @@
+export interface ApiResponseType {
+ status: number;
+ message: string;
+ data: T;
+}
diff --git a/yarn.lock b/yarn.lock
index 7f9d15e9..2236e787 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3400,6 +3400,43 @@ __metadata:
languageName: node
linkType: hard
+"@tanstack/query-core@npm:5.51.1":
+ version: 5.51.1
+ resolution: "@tanstack/query-core@npm:5.51.1"
+ checksum: 10c0/c973965a35fc98ba8e4495f8a50752eb047b7cf2648b8575266ad74708aa219b95f14ea186f341e1f1521cbe586ffd86e0296c91d12e61c23fc4c9e6386cfdf2
+ languageName: node
+ linkType: hard
+
+"@tanstack/query-devtools@npm:5.51.1":
+ version: 5.51.1
+ resolution: "@tanstack/query-devtools@npm:5.51.1"
+ checksum: 10c0/244367572faf5af1dbaf4a64654547fe92e913a888ca889e01ce7715c9834ac1d10107767c45478fe8d890c7b8b43c55c58f97a8db1755f08804623d51d3ec20
+ languageName: node
+ linkType: hard
+
+"@tanstack/react-query-devtools@npm:^5.51.1":
+ version: 5.51.1
+ resolution: "@tanstack/react-query-devtools@npm:5.51.1"
+ dependencies:
+ "@tanstack/query-devtools": "npm:5.51.1"
+ peerDependencies:
+ "@tanstack/react-query": ^5.51.1
+ react: ^18 || ^19
+ checksum: 10c0/39922b3d31c3ef5fcc1b7ecc16b18feeb17955ddc623f3ba688b6a903d284a349d12a8d645024ddb5373f7da80c0090af1aadf8ab0e3164f5c99e94a8bba07de
+ languageName: node
+ linkType: hard
+
+"@tanstack/react-query@npm:^5.51.1":
+ version: 5.51.1
+ resolution: "@tanstack/react-query@npm:5.51.1"
+ dependencies:
+ "@tanstack/query-core": "npm:5.51.1"
+ peerDependencies:
+ react: ^18.0.0
+ checksum: 10c0/08b54812a41ae363e00f090f3b2ff4bf3e4a920b5b46489d26cc4f6cc95021bf91248b0b19f514039eb3b625eb7d720dc851877a6655abd6686b0a898a87db3d
+ languageName: node
+ linkType: hard
+
"@testing-library/dom@npm:10.1.0":
version: 10.1.0
resolution: "@testing-library/dom@npm:10.1.0"
@@ -4842,6 +4879,8 @@ __metadata:
"@storybook/react": "npm:^8.1.11"
"@storybook/react-vite": "npm:^8.1.11"
"@storybook/test": "npm:^8.1.11"
+ "@tanstack/react-query": "npm:^5.51.1"
+ "@tanstack/react-query-devtools": "npm:^5.51.1"
"@types/prettier-linter-helpers": "npm:^1"
"@types/react": "npm:^18.3.3"
"@types/react-dom": "npm:^18.3.0"